免杀对抗——第一百六十天
C2远控篇&C&C++&EXE处理&减少熵值&加自签名&详细信息&特征码源码定位
C2远控 - EXE处理-减少熵值&自签名&详细信息
恶意软件会采取许多策略和技巧来从 AV 引擎的扫描中隐藏恶意软件。像shellcode加密,函数调用混淆之类的东西,像这种技术本质上是在加密和压缩数据,因此提高了数据的不可预测性/无序性,也就是提高了熵。所以我们可以根据熵值捕获文件,熵越大,数据就越有可能被混淆或加密,文件也就越有可能是恶意的,熵是一种简单有效的检测技术,但并不能完全识别所有恶意代码。因此,杀毒软件通常使用熵作为其他技术的补充,以更好地识别潜在的威胁。
如何知道文件的熵值呢,我们可以参考这个项目:https://github.com/langsasec/File-Entropy-Calculator
如何降低文件的熵值呢,我们可以使用Restorator这个软件:首发 Restorator 2018 v3.90 Build 1793 Full 汉化版 - 吾爱破解 - 52pojie.cn(破解版下载需谨慎)
比如我们用CS生成一个原生的木马,然后看一下他的熵值:
可以看到熵值是5.23,挺高的,然后这个文件我们放在火绒上肯定是杀的,我们尝试通过Restorator工具降低他的熵值,一般都是添加常用软件以及光标:
然后将生成添加完毕的木马导出来查看他的熵值,发现确实减小了:
但是仍然不免杀,当然这里只是演示有这种手法,至于效果可能不是那么明显
当然,我们也可以加详细信息以及签名,这种方法针对绕过360的杀毒比较好:
- 详细信息的话可以直接用刚才的工具去添加
- 签名的话可以使用网上的工具去窃取正规软件的签名:
- secretsquirrel/SigThief: Stealing Signatures and Making One Invalid Signature at a Time
- thelostworldFree/Sign-Sacker: Sign-Sacker(签名掠夺者):一款数字签名复制器,可将其他官方exe中数字签名复制到没有签名的exe中。
这里我们用第一款工具简单演示一下,输入如下命令:
python .\sigthief.py -i<正版软件名>-t<目标文件名>-o<输出文件名>然后我们就可以看到生成的文件当中有了钉钉的签名:
虽然这样火绒依旧会杀,因为原生的CS木马特征实在是太明显了,但是还是有这个思路即可
C2远控 - EXE处理-特征码定位&汇编或源码修改
杀毒软件最基本的原理就是通过特征码去识别是否是木马,所以我们可以尝试修改这种特征码去绕过杀毒软件
但是目前的杀软都是多角度多方面去判定一个文件是否恶意,所以这个方法只是说结合之前的知识可能会有一定的效果
我们用上节课的UUID加载木马来做这个实验,简单看看原理,首先生成一个木马用特征码定位工具来看杀毒杀的是哪一部分代码:
可以用的特征码定位工具有:
- mattkretz/virtest: header-only unit test framework
- 类人猿特征码定位工具
这里用第一个工具扫描木马的特征码:
等待他扫描完毕之后,就会给出杀软查杀的特征码部分:
但是这里并没有什么东西,有的可能会有明显的特征码,比如:
那就可以直接到源码中修改对应的部分,替换函数或者函数回调来绕过即可,但是这个只能说是绕过一些静态免杀