扫码领资料
获黑客教程
免费&进群
1.简介
在安全厂商日趋成熟的背景下,编写免杀马的难度和成本日益增长。
好用新兴的开源项目在短时间内就被分析并加入特征库。
调研了部分开源项目,其中也有项目做了类似的分析 ,目前能够免杀的项目初步统计,其特征一是star数不过千,二是发布时间不会很长。
尽管以上开源测试项目已经无法免杀,也有两种可以发展的方向,一个是学习其思想,自己实现并去特征免杀;
二是改造原有项目,自己查特征、去特征,经过测试也能达到免杀。
免杀方法和思路很多,但据笔者观察,目前免杀分为两大流派。
一是二进制流,利用汇编配合上C++,调用系统底层函数进内核的方式免杀。
杀软如果直接在用户态检测其行为特征会比较困难。
二是新工具新项目、小众工具流,其主要思想是寻找反病毒厂商未覆盖的方法和工具,一个是寻找新的语言工具和项目,跟厂商比速度。
另一个是偏僻语言,用户量小,厂商一直并未发现或者工作重心不在上面。
举个例子,可以用各种语言二次编译,配合上一些语言特性如python反序列化达成免杀。
通过现有工具的组合有效
提高复杂度,在反病毒人员的盲区里进行。
两种各有优劣,后续若有文章会测试更多的免杀用例。
这里推荐一个静态免杀学习项目和52pojie上的免杀项目,利用了大部分后文中提到的免杀技术。
2.杀毒软件检测方法
以下的内容多为前人总结。因为云查杀本质上也是基于特征查杀,顾不单独列出。
2.1特征码检测
2.1.1关联检测
2.2行为检测
-
延时,部分沙箱存在运行时间限制
-
沙箱检测,对诸如硬盘容量、内存、虚拟机特征做检测
-
部分沙箱会对文件重命名,可以检测自身文件名是否被更改
2.3小结
以上是对杀软检测做的一个小结,目前学术界对恶意代码的检测集中在机器学习上,已经有部分杀软已经应用落地了,如微软。对杀软检测手法更多的了解有助于我们写免杀马。
3.绕过技术
3.1经典技术
-
特征码修改
-
花指令免杀
-
加壳免杀
-
内存免杀
-
二次编译
-
分离免杀
-
资源修改
-
白名单免杀
3.2修改特征
一个加载器存在两个明显的特征,一个是shellcode和硬编码字符串。
我们需要消除这些特征,比较方便的方案,使用base64等对上述特征进行编码,最好使用多种编码手段。
对于shellcode,使用base64并不安全,所以更安全的方案是加密,一个简单的异或加密就能消除shellcode的特征。
第二个是加载器的关联特征也需要消除,对于代码中出现连续调用的virtualAlloc,virtualProtect进行插入花指令,通过加入无意义的代码干扰反病毒引擎。
笔者的一点想法,进一步混淆源代码,在不加壳的情况下稍微增加静态分析难度。也有论文提出可以使用ROP来提高代码的分析难度,因为现存的代码分析引擎对间接跳转和调用的支持存在瑕疵,复杂逻辑的代码更需要人工分析。
3.3内存免杀
3.4修改资源
3.5隐藏IAT
每调用一个系统函数就会在导入表中存在,这对于反病毒人员是个很好的特征,直接通过检测导入表中有没有调用可疑函数。
这里就需要隐藏我们的导入函数。一个比较通用的办法是直接通过getProcessAddress函数获取所需要函数的地址。
知道地址也就能直接调用,这样整个程序内除了getProcessAddress其他函数都不会出现在IAT表中。
尽管这样已经能绕过上面的检测,但还有种更保险的做法,用汇编从Teb里找到kernel32.dll的地址,再从其导出表中获取所需系统函数。
出自(https://www.52pojie.cn/thread-1360548-1-1.html)
3.6分离免杀
整个shellcode加载器分为两个部分,分离下载shellcode和执行。
加载器处在stage0阶段,其作用除了加载大马外并无其他作用。
但是直接执行大马会被检测到,所以需要用到分离免杀。
出自(https://www.anquanke.com/post/id/190354)
通常杀软只检测一个进程的行为,所以如果存在两个恶意进程通过进程间通信就能逃过检测、达到免杀。
分离免杀的方法多种多样,既可以用windows的管道,也可以用socket通信。
3.7二次编译免杀
像msf或者cs的shellcode在各个厂商里都盯的比较严,对于这些shellcode已经提取好特征只要使用就会被检测出。
所以会使用各种编码器进行免杀。
编码器有很多种,这里仅推荐msf的shikata_ga_nai,是一种多态编码器,每次生成的
payload都不一样。
3.7.1其他语言编译免杀
3.8系统函数白名单免杀-uuid方式
3.9某数字公布的stage uri检测
以上总结了主流的免杀方式,后文的免杀就是以上技术的混合使用。
本文还未涉及到诸如加壳,dll以及使用powershell免杀等,这些会在之后的文章中提出。
[1] https://github.com/TideSec/BypassAntiVirus
[2] https://github.com/Rvn0xsy/BadCode
[3] https://www.52pojie.cn/thread-1360548-1-1.html
[4] https://payloads.online/archivers/2019-11-10/4
[5] https://payloads.online/archivers/2019-11-10/5
[6] https://www.anquanke.com/post/id/190354
[7] https://cloud.tencent.com/developer/article/1512006
[8] https://mp.weixin.qq.com/s/gZ28MvCPTQbTAVtQjO7T8w
[9] https://mp.weixin.qq.com/s/1DvYNDiZc2iV1pXEn7GZEA
[10] https://mp.weixin.qq.com/s/fhcTTWV4Ddz4h9KxHVRcnw
[11] https://www.secpulse.com/archives/151899.html
[12] https://arxiv.org/pdf/2012.06658.pdf
本文转自作者:icecream,现在b站安全负责红蓝对抗蓝军方向工作
欢迎加我微信:zkaq99、实时分享安全动态
2021-05-12
2021-04-15
2021-02-02
2021-01-30
2021-01-29
2021-01-07
原文始发于微信公众号(白帽子左一):干货 | Windows下免杀思路总结
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论