免入土(四)静态免杀
一、前言
在免杀上也学习了一段时间,也是做出了几个不错的免杀马,是时候把静态免杀上的内容写一下了。
在静态免杀层面上,要做的工作就是尽可能使杀软不能够从字符串(shellcode和各种字符串)层面检测到,所以只要把字符串的工作做好,基本过静态就没什么问题;剩下的就是锦上添花,增加程序可信度和反调试、反沙箱的工作。
本文主要是给出学习过程中遇到的一些好用的工具,以及在静态免杀上所需要做的一些工作。
静态免杀在只要到位就行,不需要深究,因为无论你在静态免杀上做多大的功夫,遇上行为检测都是过不了的。
二、静态免杀
2.1 概述
静态免杀(Static AV Evasion)是攻击者在构造恶意程序或 Payload 时,为了绕过杀毒软件、EDR、WAF、沙箱等防御系统的静态检测机制,所采取的一系列文件级、结构级、内容级和逻辑级的隐藏与伪装手段。
本质目标是:在不运行文件的前提下,让恶意载荷在磁盘上看起来像“正常程序”,以此骗过静态扫描引擎的查杀逻辑。
以下是一些检测机制的一些检测点,我们主要就是要对这些检测点的静态特征进行编码、加密、删除或修改;
检测机制 | 描述 |
---|---|
YARA规则匹配 | 静态签名规则,通过字节序列、字符串、正则、节偏移等匹配判断 |
PE结构分析 | 检查节数量、IAT异常、入口点特征、导入表错位、异常节大小 |
签名哈希识别 | 直接比对已知病毒样本的哈希、壳加密模板或通用工具特征 |
敏感字符串检测 | 检查是否包含关键函数、命令片段、URL、域名等(如 powershell、cmd.exe) |
模型分类识别 | 基于训练模型判断结构是否异常、是否包含常见攻击组件 |
主要思路就是对各种字符串进行编码加密、对资源图标和签名进行替换或添加、对敏感 api 进行手动编写以及对程序加壳,除此之外,可以还可以通过现成的工具添加垃圾代码扰乱静态分析,完成这些,在静态方面基本已经能够实现免杀。
- 字符串:shellcode、变量名、key、api 函数名等等;
- 签名、资源块、程序图标:设置或者替换,使杀软无法通过这些进行识别;
- 敏感 Windows Api 函数:通过自实现 Windows Api 函数的查找和调用绕过(严格来说算动态,在动态里也会说);
- 添加垃圾代码扰乱静态分析,降低熵值;
2.2 编码与加密
编码方式:Base64、UUID、ipv4、ipv6、mac、字节翻转等等
加密方法:xor、AES、RC4、SHA、RSA 等等
- shellcode
对于 shellcode 的编码和加密,首先先推荐一个项目 sgn:https://github.com/EgeBalci/sgn,直到目前位置该项目所进行编码后的 shellcode 仍然是不可预测的,因此很好的避免了杀软对 shellcode 的检测;
因此,shellcode 的编码和加密采用sgn +
的方式进行即可,无论加什么都能够达到一个非常好的效果!(即使sgn + Null
也一样)
不需要花太多精力在编码和加密上,sgn 真的够用,结合一种加密或编码方式即可。
有那精力不如放在如何绕过杀软的行为检测上……
- 变量名和文件名
杀软对变量名的检测主要在于一个特别引人注目的变量名,如 shellcode、payload、LoadLibrary 等 api 函数等等;对于此类问题的防检测方法就是使用现成的或自己编写的混淆项目对我们编写好的代码进行混淆,这里也列举一些混淆的项目供大家参考:
- https://github.com/obfuscator-llvm/obfuscator
- https://tigress.wtf/
- https://gitcode.com/gh_mirrors/cp/cpp-obfuscator
- https://github.com/KomiMoe/Arkari
2.3 签名、图标 ico、资源节替换
字面意思,很容易理解,网上也能搜索到一大堆文章;这里推荐几个工具和项目
- https://github.com/langsasec/Sign-Sacker(签名+ico 替换)
- https://raw.githubusercontent.com/TideSec/BypassAntiVirus/master/tools/mimikatz/sigthief.py(签名工具)
- https://github.com/TideSec/BypassAntiVirus/blob/master/tools/mimikatz/ResHacker.zip(资源节替换)
2.4 软件加壳
软件加壳原本的目的使为了反调试和反逆向的,在免杀中软件加壳可以用来防止静态查杀以及沙箱;软件加壳同样会带来一些特征,容易被杀软识别。
因此,如果能够加一些比较好的商业壳,那对免杀肯定是大有益处的。如果没有商业壳,一些免费的软件壳也可以用来进行尝试,不保证有效果;
常见的软件壳:UPX、VMP、Themida (Oreans Technology)、Armadillo (Silicon Realms)、Enigma Protector、Obsidium、ASPack、Enigma Virtual Box
加壳工具:
- https://down.52pojie.cn/Tools/Packers/
- https://www.52pojie.cn/thread-2026356-1-1.html
- https://www.vmprotect.com.cn/download/
参考内容
- https://blog.csdn.net/syg6921008/article/details/146990142
- https://github.com/EgeBalci/sgn
- https://github.com/obfuscator-llvm/obfuscator
- https://tigress.wtf/
- https://gitcode.com/gh_mirrors/cp/cpp-obfuscator
- https://github.com/langsasec/Sign-Sacker
- https://github.com/KomiMoe/Arkari
- https://raw.githubusercontent.com/TideSec/BypassAntiVirus/master/tools/mimikatz/sigthief.py
- https://github.com/TideSec/BypassAntiVirus/blob/master/tools/mimikatz/ResHacker.zip
- https://down.52pojie.cn/Tools/Packers/