做红队你需要学习如何挖掘战壕(三)

admin 2022年5月4日22:42:52评论112 views字数 3364阅读11分12秒阅读模式

做红队你需要学习如何挖掘战壕(三)

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学习。我这里只说一些重要的和一些注意事项。

做红队你需要学习如何挖掘战壕(三)

  • data_jitter,调整数据回传的大小为随机。

  • jitter,随机心跳

  • pipename和pipname_stager,这个必须改成市面上没有被特征提取过的,不然你想使用SMB做内网横向的时候基本都会失败,不过由于445被各种搞,smb beacon内网横向效果大不如从前,还是直接使用TCP beacon为好,配置tcp_frame_header,效果还是不错的。

其他的应该都很好理解,就不多说了。还有涉及到HTTP包的一些编码解码,header自定义、ssl证书等等,请阅读https://www.cobaltstrike.com/help-malleable-c2。还是那句话,CS发展到现在,默认情况下的特征被防御软件提取的死死的。但是CS依旧能够活跃,依旧是当今世界红队使用最多的C2工具,是因为它的高度自定义性。同样的CS在不同人手里会是2个工具。

在这部分有2个tips:

  • 如果前置用了CDN,此表中的uri、uri_x86、uri_x64中的文件后缀不要用js、css等会被CDN缓存的静态文件,导致通信出问题。

  • 使用HTTPS的时候,付费证书>免费证书>自签名证书(如果使用Cloudflare,证书就是CF的证书),使用CDN证书和免费证书前,最好测试是否被防御设备拦截,我有一次就遇到过拦截cf免费证书的case。

最后,配置HTTP请求和响应都应遵循尽量模仿真实用户访问web的交换流程和数据格式,以混淆视听,真假美猴王的原则制作自己的c2profile,自己常用的c2profile,一定不要公开,或多人共用,一不小心被定义成某APT你就扯淡了。
CS4.3加入了回连主机轮询的功能,使用不同策略轮询回连,例如:随机选一个主机回连,顺序轮询等等。在这儿我想说,深刻理解CS,定制化CS,比自己去写C2是更好的选择,毕竟每个人自己的一线打仗经验比不上一群人的一线打仗经验。

0x03 总结

“如何挖战壕”的这一部分,没有太多新奇内容,考验的是细致和对C2工具的理解深度,以及流量设备防御手法的研究。重头戏还是前置器,前置器才是和目标直接接触的组件。各种各样的前置方案也是一线对抗最激烈的部分之一。前置器也是这个系列的最后一个篇文章,希望下周末能够写出来。


做红队你需要学习如何挖掘战壕(三)

最后介绍一下【公鸡队之家】知识星球,一个攻击者之家,一个专业、前沿、原创、不违法的红队/蓝军讨论社区,不水贴、不搬运链接,杜绝广告与招聘,做纯粹的技术分享和技术交流。

星球服务:

1. 专享一线实时攻击技术解读 #红队技巧# #CobaltStrike# #杀软对抗# #流量对抗# #红队工具赏析# #攻击技术解读#

2. 分阶段的技术打造,由浅入深分为 #新手村# #进阶营# #精英社#

3. 不定期专题系列更新,由浅入深讲解专项技术研究。

4. 积极参加互动、分享,可获得免费专项直播培训和答疑活动。

5. 线下闭门会议入场资格,探究真实的一线攻防。

6. 加入微信社群,一起成长,与众多攻击队小伙伴相互学习,没有娱乐圈里的陋习,实时讨论你遇到的各种疑惑。

7. 展示自己,炫出能力,你会得到意想不到的收获。

8. 专属周边购买资格,做独一无二。

做红队你需要学习“如何挖掘战壕”(三)



原文始发于微信公众号(我需要的是坚持):做红队你需要学习“如何挖掘战壕”(三)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年5月4日22:42:52
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   做红队你需要学习如何挖掘战壕(三)http://cn-sec.com/archives/908419.html

发表评论

匿名网友 填写信息