关于Cobalt Strike检测方法与去特征的思考
字数 1363 2025-08-15 21:31:44

Cobalt Strike检测方法与去特征化技术详解

1. Cobalt Strike服务器检测方法概述

Cobalt Strike服务器的发现途径主要有以下几种:

  1. 样本分析:通过分析恶意样本发现回连地址
  2. 中马回连:从已感染的机器上获取C2服务器信息
  3. 黑客连主控端:监控攻击者连接Teamserver的行为
  4. 扫描发现:通过特征扫描发现暴露的C2服务器

其中扫描发现是最常用的方法,主要基于Cobalt Strike的默认特征进行识别。

2. 默认SSL/TLS证书特征检测

Cobalt Strike默认的SSL/TLS证书具有明显特征,这是最常见的检测指标:

2.1 默认证书特征

O=cobaltstrike
OU=AdvancedPenTesting
CN=Major Cobalt Strike

2.2 检测方法

  1. FOFA搜索语法

    protocol=="cobaltstrike"
    或
    cert="Major Cobalt Strike"
    
  2. 增强时效性

    cert="Major Cobalt Strike" && after="2020-01-01"
    
  3. 证书指纹搜索

    cert="73:6B:5E:DB:CF:C9:19:1D:5B:D0:1F:8C:E3:AB:56:38:18:9F:02:4F" && after="2020-01-01"
    
  4. Censys搜索

    443.https.tls.certificate.parsed.fingerprint_sha256:87f2085c32b6a2cc709b365f55873e207a9caa10bffecf2fd16d3cf9d94d390c
    

2.3 证书类型区分

Cobalt Strike使用两种不同的证书:

  1. Teamserver主控端证书

    • 默认端口50050使用
    • 可通过keytool修改
  2. HTTPS上线证书

    • 用于Beacon通信
    • 需要通过Malleable C2 profile修改

3. Cobalt Strike去特征化方法

3.1 修改Teamserver证书

使用keytool修改默认证书信息:

keytool -keystore cobaltstrike.store -storepass 密码 -keypass 密码 -genkey -keyalg RSA -alias cobaltstrike -dname "CN=自定义, OU=自定义, O=自定义"

3.2 修改HTTPS上线证书

通过修改Malleable C2 profile实现:

  1. 自签名证书
    在profile中使用Self-signed Certificates with SSL Beacon部分

  2. 合法证书
    使用Valid SSL Certificates with SSL Beacon部分配置真实证书

示例配置:

https-certificate {
    set keystore "path/to/keystore";
    set password "password";
}

3.3 其他去特征建议

  1. 避免使用默认端口50050
  2. 使用CDN或域前置技术隐藏真实IP
  3. 配置安全组限制访问
  4. 使用高信誉域名进行伪装

4. 高级检测技术 - JA3/JA3S指纹

当证书特征被修改后,仍可通过TLS指纹进行检测:

4.1 JA3工作原理

JA3通过收集Client Hello数据包中的以下字段创建指纹:

  • 版本
  • 可接受的密码
  • 扩展列表
  • 椭圆曲线密码
  • 椭圆曲线密码格式

将这些值用","分隔字段,用"-"分隔字段中的值,生成唯一指纹。

4.2 检测优势

  1. 即使修改证书,TLS握手特征可能保持不变
  2. 主流沙箱和IDS已支持JA3/JA3S检测
  3. 可检测客户端和服务端的TLS特征

5. 防御建议

5.1 蓝队防御建议

  1. 定期扫描网络中的Cobalt Strike特征
  2. 部署JA3/JA3S检测能力
  3. 监控异常SSL/TLS连接
  4. 关注IOC列表中的恶意IP

5.2 红队安全建议

  1. 全面修改所有默认特征,不仅限于Teamserver证书
  2. 使用自定义Malleable C2 profile
  3. 避免使用云服务直接暴露C2服务器
  4. 实施多层隐藏技术(CDN、域前置等)

6. IOC列表

文档中提供了大量已知的Cobalt Strike服务器IP地址,由于数量过多,此处不一一列举,建议参考原文中的完整列表进行防御配置。

7. 参考资源

  1. Cobalt Strike官方Malleable C2文档
  2. JA3项目GitHub
  3. NCC Group关于Cobalt Strike检测的研究
  4. Cobalt Strike遗留漏洞分析
Cobalt Strike检测方法与去特征化技术详解 1. Cobalt Strike服务器检测方法概述 Cobalt Strike服务器的发现途径主要有以下几种: 样本分析 :通过分析恶意样本发现回连地址 中马回连 :从已感染的机器上获取C2服务器信息 黑客连主控端 :监控攻击者连接Teamserver的行为 扫描发现 :通过特征扫描发现暴露的C2服务器 其中 扫描发现 是最常用的方法,主要基于Cobalt Strike的默认特征进行识别。 2. 默认SSL/TLS证书特征检测 Cobalt Strike默认的SSL/TLS证书具有明显特征,这是最常见的检测指标: 2.1 默认证书特征 2.2 检测方法 FOFA搜索语法 : 增强时效性 : 证书指纹搜索 : Censys搜索 : 2.3 证书类型区分 Cobalt Strike使用两种不同的证书: Teamserver主控端证书 : 默认端口50050使用 可通过keytool修改 HTTPS上线证书 : 用于Beacon通信 需要通过Malleable C2 profile修改 3. Cobalt Strike去特征化方法 3.1 修改Teamserver证书 使用keytool修改默认证书信息: 3.2 修改HTTPS上线证书 通过修改Malleable C2 profile实现: 自签名证书 : 在profile中使用 Self-signed Certificates with SSL Beacon 部分 合法证书 : 使用 Valid SSL Certificates with SSL Beacon 部分配置真实证书 示例配置: 3.3 其他去特征建议 避免使用默认端口50050 使用CDN或域前置技术隐藏真实IP 配置安全组限制访问 使用高信誉域名进行伪装 4. 高级检测技术 - JA3/JA3S指纹 当证书特征被修改后,仍可通过TLS指纹进行检测: 4.1 JA3工作原理 JA3通过收集Client Hello数据包中的以下字段创建指纹: 版本 可接受的密码 扩展列表 椭圆曲线密码 椭圆曲线密码格式 将这些值用","分隔字段,用"-"分隔字段中的值,生成唯一指纹。 4.2 检测优势 即使修改证书,TLS握手特征可能保持不变 主流沙箱和IDS已支持JA3/JA3S检测 可检测客户端和服务端的TLS特征 5. 防御建议 5.1 蓝队防御建议 定期扫描网络中的Cobalt Strike特征 部署JA3/JA3S检测能力 监控异常SSL/TLS连接 关注IOC列表中的恶意IP 5.2 红队安全建议 全面修改所有默认特征,不仅限于Teamserver证书 使用自定义Malleable C2 profile 避免使用云服务直接暴露C2服务器 实施多层隐藏技术(CDN、域前置等) 6. IOC列表 文档中提供了大量已知的Cobalt Strike服务器IP地址,由于数量过多,此处不一一列举,建议参考原文中的完整列表进行防御配置。 7. 参考资源 Cobalt Strike官方Malleable C2文档 JA3项目GitHub NCC Group关于Cobalt Strike检测的研究 Cobalt Strike遗留漏洞分析