![做红队你需要学习“如何挖掘战壕”(三) 做红队你需要学习如何挖掘战壕(三)]()
0x00 前言
在前两篇的文章中,我们先是分析了红队基础设施架构,并指出构成的3大元素:ip和域名、C2工具、前置器,然后我们在第二篇文章中针对ip和域名的选择做了分享。这是第三篇,我们将是分析C2工具,这儿的C2工具主要使用的是CobaltStrike。CobaltStrike功能强大,此处仅分析和我们红队基础设施相关的部分。
0x01 Payload加载流程
为什么红队基础设施要讲Payload加载呢?因为这涉及到Payload分段加载和放置位置的问题。如果Payload使用分段加载一定要注意远程下载Payload的时候。Payload不一定是放置在TeamServer服务器上的,也有可能是其他公开服务上,例如:阿里云代码库、Github、QQ空间等等。因此明白了CS关于植入体的加载流程,既能方便我们定制化植入体,也能方便基础设施灵活部署。
关于CS的Payload加载,首先我们需要知道CS植入体的组成,CS植入体的组成抽象出来就是Loader+shellcode的组合。在CS中loader包含2种:
一种是powershell,也就是你使用Attacks-->Packages-->Payload Generator->Output(PowerShell/PowerShell Command),这样生成的是一个植入体(Loader+shellcode),不过Loader是一段Powershell代码。上面路径中Output如果选其他的语言,那么生成的就仅仅是shellcode了,需要自行编写Loader执行shellcode。
另外一种是可执行的文件,使用Attacks-->Packages-->Windows Executeable/Windows Executeable(S)生成的植入体,使用的是C编写的Artifact作为Loader,形式上可以是exe、DLL,作者也提供了ArtifactKit的源码,方便我们编写这个Loader。
这样的植入体,在目标机器上执行的时候,都会去下载Beacon.dll。而Windows Executeable(S)生成的植入体为Stageless植入体,也就是说包含了Beacon.dll,这样的植入体就不会去下载Beacon.dll了。具体如图所示:
![做红队你需要学习“如何挖掘战壕”(三) 做红队你需要学习如何挖掘战壕(三)]()
在CS中还提供了Scripted Web Delivery功能,允许URL远程下载可以执行文件或脚本。CS在植入体这块儿提供了极大的灵活性和自定义性,方便我们和多种外部技术结合,例如:白利用、自研Loader、Word宏等等。
0x02 CS的通信协议
在CS中包含了HTTP(S)、DNS、TCP、SMB四种协议,同时也支持自定义协议。在这儿主要分析HTTP(S)、DNS的使用,因为TCP、SMB主要用作内网横向使用,自定义协议也不在本文分析范畴。
DNS协议
首先是DNS协议,这个协议在当前的CS4.3版本中做了强化,我们看下具体参数,来源:https://www.cobaltstrike.com/help-malleable-c2:
![做红队你需要学习“如何挖掘战壕”(三) 做红队你需要学习如何挖掘战壕(三)]()
首先我们关注默认参数,默认参数必须修改,这一定是防御产品的重要指标。从防御的角度出发,DNS通道的防御,主要以频率、数据特征、数据大小等异常行为为主,现在再加入机器学习,就更是难搞了,因此默认指标必须修改,下面说几个特别重要的:
-
dns_idle,没有任务时解析的IP,解析到一个任意白IP,什么叫白IP,请阅读上一篇文章
-
dns_max_txt,DNS TXT的大小,我是建议100以下。
-
dns_sleep,DNS请求间隔时间,我个人是2-5秒之间。
-
maxdns,hostname最大长度,我一般是60以下。
-
其他指标,模仿正常数据,例如:子域名经常出现api、cdn、js等等,TXT记录中,经常出现SPF、DKIM之类的。
如果按照我建议的设置DNS通道,你会发现奇慢无比,可能一条命令,半个小时。在第一篇中我就说过,DNS记录容易被检测,不要用作命令通道,可以用作潜伏通道,但是也有例外,就是实战中,只有DNS出网,没有办法,在确认了防御设备情况后,再使用DNS做命令通道,做命令通道时调整以上参数的大小,加快DNS通道的速度。DNS通道绝对不适合做数据通道,数据密取一般量都不小,你搞DNS通道传,基本等于自杀。
HTTP(S)协议
HTTP(S)协议才是CS的主要协议,你基本90%的时间在使用这个协议。CS提供了强大的流量自定义功能,主要是在C2profile中配置。相对于DNS协议的配置,HTTP(S)的配置大家应该熟悉不少,因为目前情况下,不配置C2prodile,基本不可能过防御设备。网上公布的C2profile也是防御设备提取特征的重要来源,因此也不能用。所以学习C2profile的配置非常重要。具体配置,各位去https://www.cobaltstrike.com/help-malleable-c2学习。我这里只说一些重要的和一些注意事项。
![做红队你需要学习“如何挖掘战壕”(三) 做红队你需要学习如何挖掘战壕(三)]()
其他的应该都很好理解,就不多说了。还有涉及到HTTP包的一些编码解码,header自定义、ssl证书等等,请阅读https://www.cobaltstrike.com/help-malleable-c2。还是那句话,CS发展到现在,默认情况下的特征被防御软件提取的死死的。但是CS依旧能够活跃,依旧是当今世界红队使用最多的C2工具,是因为它的高度自定义性。同样的CS在不同人手里会是2个工具。
在这部分有2个tips:
最后,配置HTTP请求和响应都应遵循尽量模仿真实用户访问web的交换流程和数据格式,以混淆视听,真假美猴王的原则制作自己的c2profile,自己常用的c2profile,一定不要公开,或多人共用,一不小心被定义成某APT你就扯淡了。
CS4.3加入了回连主机轮询的功能,使用不同策略轮询回连,例如:随机选一个主机回连,顺序轮询等等。在这儿我想说,深刻理解CS,定制化CS,比自己去写C2是更好的选择,毕竟每个人自己的一线打仗经验比不上一群人的一线打仗经验。
0x03 总结
“如何挖战壕”的这一部分,没有太多新奇内容,考验的是细致和对C2工具的理解深度,以及流量设备防御手法的研究。重头戏还是前置器,前置器才是和目标直接接触的组件。各种各样的前置方案也是一线对抗最激烈的部分之一。前置器也是这个系列的最后一个篇文章,希望下周末能够写出来。
![做红队你需要学习“如何挖掘战壕”(三) 做红队你需要学习如何挖掘战壕(三)]()
最后介绍一下【公鸡队之家】知识星球,一个攻击者之家,一个专业、前沿、原创、不违法的红队/蓝军讨论社区,不水贴、不搬运链接,杜绝广告与招聘,做纯粹的技术分享和技术交流。
星球服务:
1. 专享一线实时攻击技术解读 #红队技巧# #CobaltStrike# #杀软对抗# #流量对抗# #红队工具赏析# #攻击技术解读#
2. 分阶段的技术打造,由浅入深分为 #新手村# #进阶营# #精英社#
3. 不定期专题系列更新,由浅入深讲解专项技术研究。
4. 积极参加互动、分享,可获得免费专项直播培训和答疑活动。
5. 线下闭门会议入场资格,探究真实的一线攻防。
6. 加入微信社群,一起成长,与众多攻击队小伙伴相互学习,没有娱乐圈里的陋习,实时讨论你遇到的各种疑惑。
7. 展示自己,炫出能力,你会得到意想不到的收获。
8. 专属周边购买资格,做独一无二。
![做红队你需要学习“如何挖掘战壕”(三) 做红队你需要学习“如何挖掘战壕”(三)]()
原文始发于微信公众号(我需要的是坚持):做红队你需要学习“如何挖掘战壕”(三)
评论