shellcode免杀加载器
三年前我拿到一个红队样本,杀加杀软全绿,载器但加载器代码只有二十行。杀加当时我盯着那行`VirtualAlloc`看了半小时——原来真正的载器秘密不在shellcode本身,而在它周围那层薄薄的杀加“包装纸”。今天聊的载器就是这层纸怎么糊。 免杀加载器的杀加本质就一句话:让恶意代码看起来像正常数据流。杀软查的载器不是shellcode,是杀加“行为特征”——比如申请可读可写可执行内存、调用CreateThread、载器解密循环里那串高熵字节。杀加所以思路就俩方向:要么把特征藏起来,载器要么把行为拆碎。杀加 我见过最野的载器做法是把shellcode拆成512字节的碎片,混进图片的杀加RGB通道里。加载的时候用GDI+读像素,再按特定顺序拼回内存。这招对静态扫描几乎无敌,因为图片本身是合法的。但有个致命弱点——运行时要读几百张图片,速度慢得像蜗牛。红队行动里,等三秒和等三十分钟完全是两个概念。 另一种思路更实用:用回调函数当跳板。Windows API里有一堆函数接受回调指针,比如`EnumFonts`、`EnumWindows`。把shellcode地址塞进回调参数,系统自己会替你去执行。杀软盯着CreateThread的调用栈,却漏了这些“正经”API。我去年测试过,卡巴斯基和Defender全过,但火绒会拦——因为它直接hook了`EnumFonts`本身,这属于另类防御了。 内存加密也值得玩。不是简单的XOR,而是用AES先加密,运行时再解密。关键在密钥管理——有人硬编码在代码里,那等于没加密。我见过一个样本把密钥藏在PE文件的资源段,运行时才读出来,配合一个简单的反调试:检测`IsDebuggerPresent`,如果是调试状态就解密出垃圾数据。这套组合拳下来,动态分析也得费点功夫。 但说真的,免杀是场军备竞赛。今天能过Defender的技巧,下周可能就被机器学习模型标记了。我认识一个搞免杀的老哥,他的方案永远是“最新鲜的”——比如用WMI的`ExecQuery`配合`ActiveScriptEventConsumer`做异步执行,这种偏门路径往往能躲过主流监控。不过这种技巧生命周期短,写出来三个月就废。 最后提醒一句:免杀加载器本身不违法,但用在哪决定了性质。我写这些纯粹因为技术有趣——就像研究魔术师怎么藏硬币。但如果你拿它去搞破坏,那咱们聊的就不是代码,是手铐了。
-
上一篇
-
下一篇
- 最近发表
- 随机阅读
- 搜索
-
- 友情链接
-