如何制作0到1木马免卡巴杀软检测的免杀技巧?

摘要:目录 静态免杀篇 动态免杀篇 流量混淆篇 免杀实战案例(一步步带你从0过卡巴) 结语 静态免杀篇 静态查杀原理 想要了解如何进行静态免杀,首先就得了解杀毒软件一般是如何查杀木马的,下面我列出常见的几种检测方式: 特征码比对:杀软会在云端或本
目录 静态免杀篇 动态免杀篇 流量混淆篇 免杀实战案例(一步步带你从0过卡巴) 结语 静态免杀篇 静态查杀原理 想要了解如何进行静态免杀,首先就得了解杀毒软件一般是如何查杀木马的,下面我列出常见的几种检测方式: 特征码比对:杀软会在云端或本地存储大量的病毒库,当一个木马被杀软扫描时,会将木马的某些特征片段进行hash运算,与病毒库进行比较,如果木马多个片段与病毒库比对成功,该木马就会被查杀。 静态启发式分析:杀软会直接分析木马的PE结构,对各种区段,例如资源,导入函数等进行分析,如果存在多个可疑的点,该木马就会被查杀 近些年因为AI爆火,很多杀软都会加入AI进行木马分析,但是分析的原理也无非是上面两种(可能有新技术但大差不差) 静态免杀思路 根据上面的原理,我们针对木马的静态免杀思路也就很明了了,我们只需要打破杀软所认定是木马的特征,就能很轻松的过静态免杀。 现在单纯只用下面某个思路去免杀,很难有好的效果,由于现在的杀软都用多种检测方式同时检测。我们希望免杀简单点,可以结合下面的多种思路同时运用进行免杀 一,对shellcode进行编码/加密 主要是过特征码比对,目的是消除shellocde中的木马特征。 这里经过实践,某些加密很难取得好的效果,比如说简单的xor加密,奇偶换位等 解决方法: 使用强加密比如AES,RSA等,或多种密码混合使用。 使用奇怪的编码,比如说将shellocde编码成ip,uuid,或者有某些ctf中的杂项编码佛曰等等(这个可以一定程度上骗过ai) 二,对shellocde中加上自解密壳 主要是过特征码比对,目的是消除shellocde中的木马特征。(某些情况下可能比直接在loader中写解密效果要好) 三,分离免杀 把shellcode和loader分开,进行加载(网络加载/文件加载/隐写),这个在免杀中的效果是真的好。 原理:如果把shellcode放在loader中一起编译,大概率会报毒(杀软的静态启发式查杀会检查到data段中有一大段不正常数据,专业点叫信息熵太高了) 四,变换shellcode 反编译shellcode替换某些指令,加上某些花指令等等。例如: 替换同义指令 xor eax, eax => mov eax, 0x0 更改指令顺序 push eax push ebx ... pop ebx pop eax ------------------ push ebx push eax ... pop eax pop ebx 添加花指令 jnz label jz label emit 0xe8 label: 五,替换资源 静态启发式分析中会分析区段内容,添加或窃取一些资源可以让杀软认为这是一个普通的程序 工具: restorator 六,添加证书 某些杀软,比如说360,对于证书来说非常看重,一般检测到某些合规白名单证书会放宽检测,我们可以通过窃取证书来瞒天过海 工具链接: https://github.com/secretsquirrel/SigThief 七,更换编译器或配置 某些编译器编译出来的比较容易被杀,比如说msvc,可以换成clang或llvm等等,编译器的优化参数也会有影响(可能把你混淆的代码给优化了) 八,更换语言 不同语言的免杀效果也会大不相同,比如说同样的逻辑,在c中被杀和在rush中免杀 九,对代码进行混淆 可以使用开源库如Obfuscator-LLVM等,对代码进行混淆,膨胀保护 十,更换一些api/动态导入api 杀软会检查导入表的某些api进行静态查杀 这里我用mfc做了一个免杀工具,工具完全开源,可以学习到PE结构和自解密壳的原理 链接: https://github.com/NOOB-P/My_re_tools 动态免杀篇 动态查杀原理 动态查杀一般是杀软的最后一道防线,杀软会主动检测并拦截运行中的木马的恶意行为,要绕过检测,就需要了解杀软在运行中是如何检测木马的。
阅读全文