0%

高级一点的免杀

 之前的免杀被腾讯电脑管家的引擎拦下来了, 好像也过不去win10下面的360. 这两天研究了一波, 现在又可以无伤过国内杀软了. 1/72的杀软引擎报毒

思路

 具体步骤想了想还是不公开了吧, 这里只说一下思路. 之前那篇文章里的检测手法确实有效, 但是过于古老. 这次被杀后我测试了几遍, 不管再复杂的加密, 只要程序内置了解密的方法, 杀软就能跟进拦截. 所以估计杀软是采用了类似angr这类工具的符号执行来探测出整个程序的实际内存状态. 我也测试了使用类似于

1
2
3
4
if (key=1):
decode();
else:
print('hi');

这样的选择语句, 但是杀软照样gank.
 所以我现在的解决方法是不在程序里写密钥, 直接把密钥在程序执行的时候动态传入, 这样杀软就无从得知密钥从而躲过gank. 执行的时候A程序放出内置的B程序到硬盘上, 由于B被加密过了, 所以杀软会认为B是正常的. 然后通过A来执行B, 在执行的过程中给B需要的解密密钥. 由于杀软大多为了性能因素不会对每个进程的内存进行扫描, 所以就能躲过杀软执行木马.
 经过测试这个思路确实是可行的. 至少国内的杀软全倒. 又能愉快的玩msf和cs了

6/20上午更新

 呜呜呜微软爸爸牛逼, 行为检测牛逼, 这个我是真的过不去了.

 过了全世界, 就是过不去你. 顺便国内常见杀软有一个算一个和Windows Defender比都是弟弟.
 用以前patch pwn题的在内存中来回jmp的手法也许能打散payload躲过去, 但是首先过于麻烦, 得找到对应的特征点. 其次我之前写的脚本只能拿来patch elf文件, patch Windows下的文件对我来说是知识的荒漠… 归根结底还是我太菜了, 遇到内存检测我就gg.

6/20晚上更新

 👴过去了, msf自带的rc4加密的payload就可以绕过, 看起来defender杀的是msf的二阶段payload, 加密过后或者直接用stageless版本的payload就可以了