是否有方法从恶意软件可执行文件(PE/.exe)生成短shellcode ?这意味着有时一些恶意软件可执行文件(PE/.exe)很大,当转换为shellcode时将导致更长的shellcode大小,使分析和混淆变得困难和耗时。想象一下,试图混淆由1.5KB大小的木马生成的shellcode,通过在现有指令之前,之后和之间插入新指令,用替代指令替换现有指令,并插入跳转指令,这将改变执行流程并随机将shellcode划分为单独的块。在如此大的shellcode上执行这些插入操作将花费许多小时。如果有人有一个关于如何缩短这些长shllcode的想法,我将不胜感激。
虽然我讨厌帮助做这种事的人,但我有一种感觉,你无论如何也不会有任何成就。
你的有效载荷就是你的有效载荷。
不要试图最小化有效负载。你找到一种方法来编码它,一种适合你的方法。
你当然可以压缩它,但是你必须把有效负载当作一个完全不透明的数据团,据你所知,它几乎是不可压缩的。
例如,在shellcode中编码任意数据的一种简单方法是对其应用任意转换T
(例如压缩它),然后将结果转换为修改后的base64,其中交换任意字母对。
这可以防止反病毒检测有效载荷(实时检查内存太昂贵,因此不会检查最终有效载荷),只使用可打印字符,允许您减少有效载荷大小,如果可能的话(感谢T
),并且很容易自动化。
如果你需要一个更短的有效负载,那么减少它的大小,而不是有效负载的大小加上引导它的shellcode。
然而,通常所做的是采用众所周知的kill-chain:vector ->滴管→封隔器→恶意软件。
向量是你如何在特定的上下文中获得执行(例如,恶意的MS Office宏或进程注入),滴管是一段代码或可执行文件,将下载负载或有效载荷。
你的shellcode应该作为一个droppper, shellcode通常是非常受限的(在大小和形状上),所以它们通过从其他地方加载有效载荷来保持简短。
如果你需要在shellcode中嵌入有效负载,那么分析约束并处理有效负载。
如果你的有效负载不能满足他们,你需要改变它。
我只在进程注入中见过普通的PE/ELF有效负载,攻击者可以为有效负载和代码(通常称为shellcode,但实际上不是)分配远程内存。
在真正的二进制利用中使用的所有shellcode要么不需要有效负载(例如:生成一个反向shell),要么是drop。