1. 前言
本次文章主要讲解和展示cobalt strike
在对抗主流国外edr
和主流大型杀软的测试效果。
-
本文使用的 cobalt strike
马分别为:cobalt strike 4.5二开
(完全抹除特征版 ),cobalt strike 4.7
以及cobalt strike 4.9
。 -
测试 edr sentelone
。杀软kb endpoint
,eset smart
。 -
shellcode
的加载形式为:loader
+shellcode
以及白加黑
。
2. 静态规避
之前的两期文章我说过(闲谈免杀1、闲谈免杀2):cs
目前在对抗这些杀软上完全处于一个极其糟糕的情况,这里我再次指出问题的主要原因:特征码!
不管是静态层面还是动态层面上,几乎可以说是被各大厂商研究透彻。但是在静态层面上面,如果你对shellcode
采用强加密和分离式,或者白加黑的方法,是完全可以绕过静态检测的,这里我们排除赛门铁克(这个杀软在静态层查杀不太一样)。
3. 动态规避
3.1 卡巴查杀测试
这个作为整个shellcode
运行链最关键的一环, 首先我们测试卡巴,目前三个版本都是可以上线的。
我之前说过卡巴在你的loader
中没有使用特别敏感操作api
的情况下,基本上都是可以正常上线的,但是为什么上线一段时间之后就被查杀了(这里我未做任何操作)?
答案是内存扫描发现了cs
特征码,即便是使用堆栈混淆sleep
操作cs4.5
二开和cs4.7
依旧是被查杀,目前只有cs4.9
的混淆睡眠较为稳定。
简单的分析一下:
很多睡眠混淆的大部分基于一叫做SystemFunction032
函数实现的混淆,该函数很可能被hook
了或者说通过卡巴的栈回溯定位该函数的返回地址,然后追踪到了我们的恶意代码上。
在这里loader
使用了dll hollow
技术,或许也可能是hollow
的行为导致其被卡巴查杀,但基于cs4.9
在没有在sleep
时就被查杀,所以这个暂时也不太好说。
3.2 eset查杀测试
在上线测试中,shellcode
和loader
均未被查杀,只是提示某个线程存在联网的情况。有可能是我在局域网内进行测试,没有使用代理或是eset
将当前的地址直接当作一个非法链接的地址,只是阻止了连接,但未报毒。
当我换成代理或者一个《合法地址》的时候,eset
并未查杀;同时执行sleep
混淆操作,3
个版本的cs
都可以正常上线。但当我执行shell
命令的时却立马被查杀,这也就是我之前所说的,eset
是一个对行为操作极其敏感的杀软。所以在对抗行为检测类杀软的时候,cs
尽量使用模块化插件的方式去获取cmd
或者pw
回显信息。
3.3 sentinelone edr查杀测试
这个sentinelone edr
和CrowdStrike
是齐名的,在国外的大型公司很受欢迎。在这里使用cs4.9
的shellcode
直接成功上线,但cs4.9
在我执行了一些操作之后也是被查杀了。
但是二开的4.5
和cs4.7
是直接落地无法运行,并在一段时间被杀软删除。
在这里需要补充一下一个前置知识:
-
edr
和正常的杀软的查杀模式不太一样,虽然整体上都是大差不差的。但是edr
会使用userland hook
或者对接etwti
进行日志行为分析,由于现在市面上绕过userland hook
的手法太多了,edr
渐渐都会以内核层的etwti
作为主流的日志行为进行分析,如果在r3
层你想要对抗etwti
,是非常的困难的,至少目前市面上很多开源的c2
都只是尝试的bypass
。
回到查杀原因,我认为在流量层面和行为层面都是查杀的原因,但具体的原因我并未细究,因为用cs
(差不多算是开源了。。。)去挑战顶级edr
,本身就是不太现实的,分析这个比较浪费时间,所以这也就是为什么顶级红队使用自研c2
的原因。
4. 简单的总结
以下仅属于个人观点:
-
cs
目前已经不能在作为主流的c2
了,建议放弃,可以选择使用其它的小众的c2
或者使用最新的版本c2
,也可以是带有源码的二开版本c2
,cs
的特征非常明显,在各大厂商的特征库中更新极快。 -
edr
和传统的杀软存在一定的差异,它们或许对于cs
静态和动态不一定非常敏感,而是更多根据你的行为操作,作为跳板进行日志分析和回溯,进一步确定你的行为操作。所以堆栈欺骗的重要性就显得较为重要,其次对于bypass etwti
在r3
层或许对于cs
来说是一个无法绕过的问题了,最好的方法就是使用自研c2
,但是自研的c2
依旧需要进行一些必要的混淆欺骗的操作! -
本文不会去重点讲解
sentinelone
,鉴于大部分安全人员无法拿到该杀软的实体以及对windows
系统的安全日志机制可能了解不太多,所以这里只是作为一个杀软的参照。 -
自研
c2
对于大部分安全人员来说太困难了,这个我在以前就说过了,完成一套商用版的c2
仅仅靠一个人是很难完成的。如果不想自己去自研的话,我建议还是使用havoc
来进行二开。项目地址:
https://github.com/HavocFramework/Havoc/tree/main
这是可以自己编译的源码,在这里推荐的主要原因是
havoc
的qt
的界面比起sliver
c2
的更好。
文章来源:乌鸦安全
黑白之道发布、转载的文章中所涉及的技术、思路和工具仅供以安全为目的的学习交流使用,任何人不得将其用于非法用途及盈利等目的,否则后果自行承担!
如侵权请私聊我们删文
END
原文始发于微信公众号(黑白之道):闲谈免杀三
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论