攻防演练 | 记一些常用的反制红队CS的思路
字数 1273 2025-08-10 16:34:34
Cobalt Strike反制技术详解
1. Cobalt Strike上线流程分析
Cobalt Strike (CS)是红队常用的C2工具,其上线流程如下:
- 攻击者利用CS Server生成新的Beacon监听器(包含一对非对称公私钥)并生成Stager
- 攻击者将Stager投递到受控主机
- 受控主机执行小巧的Stager
- Stager根据URL特征向Beacon Staging Server请求下载体积更大的Stage
- Beacon Staging Server校验URL合法性
- Stage解密并解析Beacon配置信息(包括公钥PublicKey、C2 Server信息)
- Stage用公钥加密主机元数据并发送至C2 Server
- C2 Server用私钥解密获取主机元数据
2. 反制核心点
从流程中提取两个关键反制点:
- Stager Url校验算法
- Beacon配置的解密算法
掌握这两个算法等同于获得与CS/C2 Server合法通信的凭据:
CS/C2 Server合法通信 = (Stager Url校验算法, Beacon解密算法)
2.1 Stager Url校验算法
校验码生成示例(以"7vv9"为例):
55+118+118+57-256=92
相关函数说明:
- checksum8:计算数据的8位校验和,用于验证数据传输完整性
- MSFURI:处理Metasploit框架中的URL(解析、提取参数等)
- isStager:判断脚本或数据是否为Stager
2.2 Beacon配置解密算法
可使用工具解密Beacon配置:
3. 反制方法详解
方法1:爆破CS弱口令
步骤:
-
收集红队teamserver真实IP信息
-
扫描开放端口(默认50050,但可能修改)
sudo masscan -p1-65535 192.168.10.158示例输出:
Discovered open port 8800/tcp on 192.168.10.158 Discovered open port 50666/tcp on 192.168.10.158 -
访问可疑端口并抓包,寻找特殊字符特征
-
使用爆破工具:
python csbruter.py -p 50666 192.168.10.158 top1000.txt -
成功获取密码后连接teamserver
工具:
方法2:利用CVE-2022-39197 RCE漏洞
适用版本: Cobalt Strike < 4.7.1
原理:
- Java Swing中某控件存在RCE漏洞
- CS使用了该控件
- 利用方式:通过hook修改进程名加载远程恶意jar包
利用步骤:
-
下载利用工具:
-
使用IDEA修改jar包,植入后门代码
-
使用Maven打包恶意jar:
mvn clean compile assembly:single -
执行攻击
4. 防御建议
-
CS服务器防护:
- 使用强密码
- 修改默认端口
- 及时更新到最新版本
-
监控与检测:
- 监控异常端口开放
- 检测checksum8等特征算法调用
- 监控Java Swing控件异常行为
-
应急响应:
- 发现可疑活动时立即隔离受控主机
- 检查teamserver日志
- 重置所有凭据和密钥
5. 总结
反制Cobalt Strike的关键在于理解其通信机制和漏洞利用点。通过分析Stager URL校验算法和Beacon配置解密算法,结合爆破和RCE漏洞利用,可以有效反制红队的CS基础设施。防御方应加强防护措施,及时修补漏洞,并建立完善的监控体系。