乌鸦安全的技术文章仅供参考,此文所提供的信息只为网络安全人员对自己所负责的网站、服务器等(包括但不限于)进行检测或维护参考,未经授权请勿利用文章中的技术资料对任何计算机系统进行入侵操作。利用此文所提供的信息而造成的直接或间接后果和损失,均由使用者本人负责。
乌鸦安全拥有对此文章的修改、删除和解释权限,如转载或传播此文章,需保证文章的完整性,未经允许,禁止转载!
本文所提供的工具仅用于学习,禁止用于其他,请在24小时内删除工具文件!!!
本文作者:ANoBoDy,本文已获得作者授权!
准确来说入职新公司一年多 从红队转开发已经感觉很久没有聊过免杀的内容了。
在职期间也遇到不少朋友问免杀的事情和入门的事情 所以今天就浅谈一下免杀 给有基础的人简单入个门以下仅个人观点大佬勿喷
1.概述
本文的杀软不针对国内杀软,360
、火绒
、电脑管家
没测试;
本文的原始马全是cs
的(非二开cs
);
本文的内容主要针对cs
;
2. 免杀概括
说直白就是对抗杀软就2
个点:
- 流量对抗
- 行为对抗
2.1 网络层
我不是专家,有大佬有对网络层进行过特别的设计,包括怎么不被杀软记录流量特征等等(主要是我太菜了不会
)
2.2 行为对抗
我认为的核心就是让你的马看上去像一个正常的程序,不一定要去进程注入。
其实在我的工作中项目的对接上,我认为模拟原生的一些操作指令比起shell
命令更好,至少我接触的商用c2
或者自己写的c2
都是这样实现的。
shell
命令个人感觉基本上已经成为一个必杀的特点(针对国外的杀软),这几天正好在挖白程序,挖到某国际知名杀软的白程序加载cs
原生的beacon
(本文提到的所有cs
马都是只修改过profile
文件 未作二开等),正常的上线和执行cs
命令。
但是当我在卡巴和eset
上测试时,一但执行shell
命令,白程序被kill
而非查杀(注意这里是kill
没有任何报毒提示),但当我采用模拟化命令策略就是完全正常的。
说到这里我觉得有必要提一下r3
层unhook
问题,其实这个unhook
是否有必要,根据项目经验来讲不一定用,但是得有!原因其实是无非就是将av
对你函数挂钩解除然后你可以正常大胆的去使用一些高危函数(解释的有点模糊不懂的可以Google
)。
3. 静态查杀
接着讲一下静态查杀前面说了r3
层unhook
,然后你可以大胆使用高危函数,但是静态查杀并不会去运行你的程序,而是直接分析你的pe
文件对你的导出导入表等进行分析。你的危险函数依旧是存在于的导入表中的,那么杀软有大概率认为你的这个文件有问题。
最简单的方式就是就是使用动态调用
的方式去隐藏你的导入表的高危函数(方法不止一种这里只是举个例子)。除开导入表这些,其次就是字符串问题,绝大多数的git
或者网上的例子都是将shellcode
直接写入程序内部,那么你的pe
文件内容中就会存在你的这个字符串。
不加密对于绝大多数杀软来说,它能查看到你的字符串,并进行特征匹配。cs
、msf
的字符串特征98%
的厂商都是记录的。
其次就字符串的加密,使用xor
或者说一些弱加密
,依旧会被查杀。所以建议使用强加密。
这里我使用静态最强(我个人认为)赛门铁克进行测试发现,强加密会被100%
查杀,甚至使用一些复杂的算法依旧被查杀。
目前对赛门的分析,我个人得出的一些结论就是:它有其它杀软没掌握的特征值(被查杀为单一的exe
,而非dll
或是bin
),总结来讲就是:导出导入表和字符串算是静态分析的主要查杀点;当然还有熵值这个,这个我没有太多的关注,所以不做讲解,目前我自研的c2
,依旧是bypass
所有杀软(bypass
的主要原因样本量过少),这里不包含三大edr
(fireeye
、cs
、gb
)。
4. 动态查杀
其实动态查杀的东西就很多了,还是我之前的思路:模仿原生的操作是最好的,不要去轻易使用cmd
或者powershell
,或者说去使用插件的形式去获取你想要的,尽量规避使用cs
自带的一些函数获取信息东西 (syscall
一定要学习)。
内存查杀是目前杀软的一些重点,不管你使用多么花里胡哨的手法和技巧,你最终都需要将你的马写入内存并执行它,在内存里面你的马是明文,内存查杀发现特征立马查杀了,当然内存查杀有一定的偶然性,因为它不会随时进行内存扫描,这样会影响用户的体验。这里可以去看一下:
代码语言:javascript复制https://www.blackhillsinfosec.com/avoiding-memory-scanners/
这个文章里面的技术可塑性很强,升级思路也很多。
5. 手法(白 黑)
目前的情况来说,非自研c2
,类似cs
这种的,白 黑
应该是最优的解法了,hvv
期间厉害的攻击队都不会只使用cs
,更多是使用自己的c2
。原生cs
早就被厂商分析的很透彻了,cs
更多可能只是作为小马。
推荐文章:白程序挖掘
代码语言:javascript复制https://github.com/ConsciousHacker/WFH
6. 杀软
分析了不少c2
:当然做免杀,分析杀软我认为是必要的;
卡巴这几年,尤其是静态上不太注重,整体上来说eset
更好;静态层面赛门不用质疑,国外很多大公司都是必装赛门的 。
反而这几年趋势在亚太地区、我国台湾等使用较多,而麦咖啡实际上并没有用到很多,准确来说动态层面上基本你过了eset
,基本上其它也就差不过了。
说说很多人在b
站上看到的那些二开,或者说的所谓的原创c2
为什么能过杀软吧:最关键的是在于样本量和特征还未被杀软录入或者被完整分析。
个人建议还是多去看一些好的文章比被割韭菜好,大灰狼这种c2
你认为如果能用来hvv
。我只能说还是告别免杀吧,还有一些魔改的,如果说你未来的目标是大厂方向就还是好好学习吧,这些没营养的魔改都是卖给hc
的,本身毫无营养。我保证这些c2
压根过不了企业级杀软。
7. 学习思路
c/c
我认为是必须要会的 顶级商业c2
,马的核心不是汇编就是c
写的。loader
、c/c
、rust
、反射dll
。- 切勿使用易语言和python进行免杀!
- 学会使用
ida
、xdbg
和windbg
进行一定分析,看得懂汇编,不需要你去破解,而是逆向流程,抓住特征。 - 免杀不是小白能懂的,切记免杀绝对不是一件很简单的事情,如果有人告诉你免杀和玩一样这种的人 这种大概率是割韭菜(
360
的大佬都不敢这么说)。 c
->c
->windows
核心编程-> 恶意代码分析、windows
操作系统原理
8. 自研c2
首先我不认为一个人能够完全的实现一套完整的商业c2链,真正的顶级c2是需要各层面的人来实现的。这里推荐大家去参考havoc
这款开源c2
,这个目前是国外很多红队使用的,可塑也比较高, 有兴趣的可以拉着朋友一起二开。
9. 杂项
我认为学习免杀其实完全不需要花钱,我个人是踩过坑的,后面你发现许多技术基本上市面上都是公开,包括驱动的东西。
看雪上有很多好的文章可以学习,大部分所谓的免杀课程真的能教你一些核心或者未公开的技术吗?
公开的东西很容易被查杀,请记住免杀的思路才是重要的,希望各位不要被割韭菜,就这么多,很多东西都没有谈到也请大家谅解!