CobaltStrike4.5 与 RedGuard 快速部署
2023-8-25 11:40:53 Author: mp.weixin.qq.com(查看原文) 阅读量:50 收藏

△△△点击上方“蓝字”关注我们了解更多精彩
0x00 前言

每次都是使用CS的时候,都是临时部署,大部分都没有做任何防护。
这就导致 如果CS没有改特征,用两天就被云沙箱标记,改了特征的全是沙箱上线,然后继续被标记。
有时候真的鱼儿上钩了都不知道是不是沙箱。
想了想还是得安排一个C2反向代理来部署,所以这两天又拿起了吃灰CS4.5
对比了很多版本,从更新维护状态、易用性、等方面考虑,最终选择了风起大佬的 RedGuard。

0x01 RedGuard 简述
RedGuard 是一个专用于C2前置的反向代理,可以使用多种方式阻断非预期来源的流量分析。
RedGuard 支持多种方式进行访问过滤:
1 基于 沙箱JA3指纹库限制 [默认开启]2 基于 沙箱IP库限制 [默认开启]3 基于 来源IP白名单限制4 基于 来源IP归属地限制5 基于 访问时间段限制6 基于 C2 配置文件限制7 基于 样本指纹限制
更多的配置详情请查看:
wikiZ/RedGuard: https://github.com/wikiZ/RedGuard
其中对于我这种懒惰的安全服务工程师而言,直接的自动的沙箱IP和JAS指纹自动黑名单拦截功能就已经足够。

0x02 RedGuard 快速部署
以RedGuard联动CS为例,简单的部署一般分为几个步骤:
1、下载并配置RedGuard  1.1 配置基础拦截动作  1.2 配置监听端口号  1.3 配置被反向代理的端口地址  1.4 其他的自定义限制配置(如白名单、时间段等)2、修改C2Profile设置获取真实IP3、云防火墙阻止对被代理端口的访问4、CS启动与监听配置
由于RedGuard的配置文件是自动存储在用户目录下, 编辑文件稍微有点不方便.
最好就是通过命令行快速配置:
# 添加可执行权限chmod +x RedGuard 
# 根据参数生成配置文件./RedGuard -u -DropAction reset -http :80 -https :443  -host "{\"360.net\":\"http://127.0.0.1:9090\",\"360.com\":\"https://127.0.0.1:9443\"}"
# 启动./RedGuard
# 参数解释:-DropAction reset 配置拦截动作为重置连接-http :80 -https :443  在80443监听HTTP和HTTPS
-host "{\"360.net\":\"http://127.0.0.1:9090\",  \"360.com\":\"https://127.0.0.1:9443\"}"
# 请求头为360.net 转发到 127.0.0.1:9090端口,# 请求头为360.com 转发到 127.0.0.1:9443端口,
注意:
-http/-https参数 指定的端口 是CS设置的监听端口-host参数 指定的端口号 是CS设置绑定端口
0x03 CS Profile配置

1、由于RedGuard是使用HOST进行流量转发,所以C2Profile中不建议配置HOST头相关参数,而是在配置监听器时设置[HTTP host Header]

2、由于配置了反向代理,导致所有上线IP都是[127.0.0.1],因此需要在C2Profile中设置 trust_x_forwarded_for

http-config {    set trust_x_forwarded_for "true";}

不配置trust_x_forwarded_for每次上线都是取127.0.0.1:

注:远程IP显示/127.0.0.1是正常情况。因为InetAddress 对象的 toString() 方法返回的字符串形式通常包含一个斜杠 /,后跟IP地址。

建议直接参考和修改如下C2Profile文件:

wikiZ/CobaltStrike-Malleable-Profile:https://github.com/wikiZ/CobaltStrike-Malleable-Profile
0x04 CS监听器配置

CS4.5下 具体的端口监听置如下:
HTTP监听器:
HTTPS监听器:
0x05 屏蔽访问反向代理监听端口
由于CS默认启动监听器时,监听所有IP,导致外部还是能直接访问绑定端口,因此需要进行屏蔽。
常见方案:
1:在iptabels下限制外部IP访问端口 [本文是9090,9443端口]2:在云服务防火墙下限制外部IP访问端口 [本文是9090,9443端口]3:C2程序支持配置监听器绑定IP
CS默认是不支持设置监听IP功能的.其他部分C2可能支持该功能.
个人觉得配置拦截功能比较麻烦,因此最终选择了继续二开CS4.5代码,增加对应功能.
0x06 CS4.5.14.X功能介绍
1 去除完整性和javaAgent调试限制2 CS漏洞和BUG修复  1、修补 CS <= 4.5错误URI信息泄露漏洞   2、未成功修复XSS RCE, 请配置Agent修复  3、修复CS4.5 foreign派生错误  4、修复C2配置读取编码问题  5、修复C2配置set compile_time 服务器和客户端本地时间格式差异问题  修改后支持时间格式:  set compile_time   "14 08 2022 11:55:33"  #建议使用,与本地时间无关  set compile_time   "14 Apr 2022 11:55:33";  # 英语系统是这个|一般是Linux|       set compile_time   "14 八月 2022 11:55:33";  # 中文系统是这个|一般是windows|   6、修复netview UI不可用问题,修改cna里的bnetvie为bnet。  3 CS自身安全增强  1、自定义和或基于host|mac随机化客户端配置文件名  # (cobaltstrike.conf=home|mac|xxx)  2、支持双因子认证  # (cobaltstrike.totp=false|mac|day|any)  3、支持简单XSS过滤(基本没用)  # (cobaltstrike.fix=false|min|max)  4、自定义TeamServer.Prop配置文件名   # (-Dcobaltstrike.sever_prop=TeamServer.prop)   4 修改已知特征  1、自定义 teamserver 认证头   2、自定义 HTTP Server默认返回  3、自定义 URI checksum8值  4、修改默认XOR KEY和bypass BeaconEye等  5、修改默认的NonaHTTP服务器响应内容,增加其他响应头
5 功能增强  1、开启旧功能 2、修改内置UA 3、替换winvnc.dll文件,并内置到jar包中 测试可用  4、回显编码控制功能  #使用 beacon命令 setchar UTF-8或UI内的setchar调用  5、注入行为修改功能  #使用 beacon命令 bypass360true或UI内的bypass360调用  6、增加主题设置UI按钮和UI颜色支持   #(cobaltstrike.color=dark|prime|light)  # 使用原始颜色prime后,跳转其他主题透明度会变高。  7、增加beacons统计  8、自定义CS版本号  # (cobaltstrike.version=4.5)  9、自定义认证服务器监听IP  #(cobaltstrike.server_bindto=0.0.0.0)  10、自定义上线服务器监听IP  #(cobaltstrike.server_listen_ipv4=0.0.0.0)  11、将所有-D命令参数转为配置文件支持 #(cobaltstrike.server_port) # 认证服务监听端口  #(javax.net.ssl.keyStore)   # store文件 #(javax.net.ssl.keyStorePassword) # store文件密钥
目前支持的配置参数:
配置命令注意事项:1、所有参数支持命令行配置如-Dcobaltstrike.color=dark2、除cobaltstrike.sever_prop外,都可通过TeamServer.prop配置3、命令行配置参数优先级高于配置文件4、TeamServer.prop可通过命令行-Dcobaltstrike.sever_prop修

目前支持的配置参数:cobaltstrike.version=4.5.14.9 # 版本号
cobaltstrike.color=dark  # 默认主题cobaltstrike.conf=TeamClient.prop # 客户端配置文件名# cobaltstrike.conf=host # 基于host半随机生成
cobaltstrike.server_bindto=0.0.0.0 #认证服务监听IPcobaltstrike.server_port=27000 # 认证服务监听端口
cobaltstrike.server_listen_ipv4=0.0.0.0 # web服务监听IPcobaltstrike.session_num=32  # web服务最大会话数量
cobaltstrike.fix=false # 是否修复XSS漏洞,无效修复cobaltstrike.totp=false # 是否开始双因子认证
javax.net.ssl.keyStore= # store文件javax.net.ssl.keyStorePassword=# store文件密钥
cobaltstrike.auth_num_1= #客户端与服务器认证时的第1次密钥cobaltstrike.auth_num_2= #客户端与服务器认证时的第2次密钥
cobaltstrike.stage_32_sum=432 # 32位URI的checksumcobaltstrike.stage_64_sum=464 # 64位URI的checksumcobaltstrike.stage_uri_len=16   # URI的长度要求cobaltstrike.stage_divisor=1024 checksum被除底数
cobaltstrike.return_header= # 自定义响应头部, 使用<--> 分割 cobaltstrike.return_400= 自定义web服务器的400响应内容cobaltstrike.return_403= 自定义web服务器的403响应内容cobaltstrike.return_404= 自定义web服务器的404响应内容cobaltstrike.return_500= 自定义web服务器的500响应内容cobaltstrike.return_502= 自定义web服务器的502响应内容cobaltstrike.return_503= 自定义web服务器的503响应内容
自定义服务器配置文件名称(命令行):-Dcobaltstrike.sever_prop=xxx.prop
如需获取本工具,阅读免责协议联系作者获取。
0x07 总结
本文主要是研究一下常态化配置CS4.5和 RedGuard  红卫兵,避免没有必要的C2上线。
感谢 RedGuard 作者 风起 开源并维护提供这么好的工具。
感谢CS研究过程中提供技术参考的 [爱吃臭豆腐] 和 [outman]等大佬及大量公众号文章作者的技术文章。
0x99 免责声明

在学习本文技术或工具使用前,请您务必审慎阅读、充分理解各条款内容。

1、本团队分享的任何类型技术、工具文章等文章仅面向合法授权的企业安全建设行为与个人学习行为,严禁任何组织或个人使用本团队技术或工具进行非法活动。

2、在使用本文相关工具及技术进行测试时,您应确保该行为符合当地的法律法规,并且已经取得了足够的授权。如您仅需要测试技术或工具的可行性,建议请自行搭建靶机环境,请勿对非授权目标进行扫描。

3、如您在使用本工具的过程中存在任何非法行为,您需自行承担相应后果,我们将不承担任何法律及连带责任。

4、本团队目前未发起任何对外公开培训项目和其他对外收费项目,严禁任何组织或个人使用本团队名义进行非法盈利。

5、本团队所有分享工具及技术文章,严禁不经过授权的公开分享。

如果发现上述禁止行为,我们将保留追究您法律责任的权利,并由您自身承担由禁止行为造成的任何后果。

END

如您有任何投稿、问题、建议、需求、合作、后台留言NOVASEC公众号!

或添加NOVASEC-酒零(本文作者) 以便于及时回复。

感谢大哥们的对NOVASEC的支持点赞和关注

加入我们与萌新一起成长吧!

本团队任何技术及文件仅用于学习分享,请勿用于任何违法活动,感谢大家的支持!


文章来源: https://mp.weixin.qq.com/s?__biz=MzUzODU3ODA0MA==&mid=2247489019&idx=1&sn=e3dd1c029474e94397192bdfb199f478&chksm=fad4c8eccda341fa47ec2b792d6a8c77653610c75a518e7b325f1a45e8594f968937476ba187&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh