红队基础建设:隐藏你的C2 server
字数 1728 2025-08-26 22:11:15
红队基础建设:隐藏C2服务器的技术指南
1. 概述
本文档详细记录如何在不修改Cobalt Strike(CS) class文件的情况下,通过多种技术手段隐藏C2服务器的所有特征,包括被动式(受控端与C2交互泄露的地址)和主动式(扫描C2特征指纹)的信息隐藏。
2. Agent交互信息隐藏 - Domain Fronting技术
2.1 原理介绍
Domain Fronting利用CDN通过Host头进行流量转发的特性:
- 当两个网站使用同一家CDN时,修改HTTP包的Host头字段可以将请求发送给Host指向的域名
- 该技术可以隐藏真实的C2服务器地址
2.2 实施步骤
-
寻找合适的CDN:
- 选择同一CDN下的两个域名进行测试
- 示例测试:
- 请求yt.cmgou.cn返回302
- 请求i4.cctcdn.com返回403
- 修改Host头后,请求指向i4.cctcdn.com
-
利用CDN特性:
- 直接向CDN的IP发起请求,避免DNS查询暴露行踪
- 借用高信誉域名(如带有CDN特征的域名)
-
特殊技巧:
- 当源站IP为某云服务器时,跳过对加速域名的校验
- 可申请伪造高信誉域名(如test.microsoft.com)
2.3 Cobalt Strike配置
-
使用并修改Malleable-C2-Profile(如amazon.profile):
- 修改Host为申请的域名(test.microsoft.com)
- 示例配置要点:
set useragent "Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) like Gecko"; http-get { set uri "/s/ref=nb_sb_noss_1/167-3294888-0262949/field-keywords=books"; client { header "Host" "test.microsoft.com"; metadata { base64; prepend "session-token="; prepend "skin=noskin;"; append "csm-hit=s-24KU11BB82RZSYGJ3BDK|1419899012996"; header "Cookie"; } } }
-
启动teamserver时指定Profile配置
-
添加Listener:
- Host使用CDN地址
- 端口选择申请域名时配置的(80或443)
2.4 Payload生成问题解决
CS默认payload generator会直接向Listener的host发起请求,不遵守C2 Profile设置:
-
问题表现:
- 发起四位随机字母路径的请求
- 若返回内容不符合预期则异常
-
解决方案:
- 使用CACTUSTORCH项目生成脚本类agent
- 该agent直接连接而不进行存活确认
- 生成HTA类型agent示例
3. HTTP Listener交互信息隐藏
3.1 技术思路
利用流量转发隐藏服务端:
- 使用Apache的mod_rewrite或Nginx反向代理
- 根据特定特征判断URL重写
- 符合特征的指向服务端,否则跳转其他网站
3.2 实施步骤
-
使用cs2modrewrite脚本生成web容器配置:
- 设置C2SERVER为本地端口(如65534)
- 将生成内容放入web目录的.htaccess文件
-
配置iptables:
- 禁止端口65534的入口流量
- 仅允许服务器自身访问teamserver的HTTP服务
-
添加Listener:
- 登录teamserver添加HTTP Listener(端口65534)
- Host设置为CDN的host
- 通过脚本添加监听80端口的Listener(绕过UI限制)
-
生成agent:
- 使用CACTUSTORCH选择80端口的http Listener生成agent
- 忽略端口被占用的报错
4. 关键工具和资源
-
工具:
- CACTUSTORCH:生成不进行存活检查的agent
- cs2modrewrite:生成web容器重写配置
-
参考资源:
- Malleable-C2-Profiles:https://github.com/harmj0y/Malleable-C2-Profiles
- CACTUSTORCH项目
- 流量重定向技术参考:https://bluescreenofjeff.com/2016-06-28-cobalt-strike-http-c2-redirectors-with-apache-mod_rewrite/
5. 注意事项
- 实战中避免使用奇怪域名,防止DNS请求暴露行踪
- 直接向CDN IP请求比使用域名更隐蔽
- 利用高信誉域名提高隐蔽性
- 注意CS默认payload generator的行为差异
- 确保iptables正确配置,限制对teamserver的直接访问
通过以上技术组合,可以有效隐藏C2服务器的应用层特征,并将C2置于多层保护之后,显著降低被检测和溯源的风险。