关于Cobalt Strike检测方法与去特征的思考
字数 1363 2025-08-15 21:31:44
Cobalt Strike检测方法与去特征化技术详解
1. Cobalt Strike服务器检测方法概述
Cobalt Strike服务器的发现途径主要有以下几种:
- 样本分析:通过分析恶意样本发现回连地址
- 中马回连:从已感染的机器上获取C2服务器信息
- 黑客连主控端:监控攻击者连接Teamserver的行为
- 扫描发现:通过特征扫描发现暴露的C2服务器
其中扫描发现是最常用的方法,主要基于Cobalt Strike的默认特征进行识别。
2. 默认SSL/TLS证书特征检测
Cobalt Strike默认的SSL/TLS证书具有明显特征,这是最常见的检测指标:
2.1 默认证书特征
O=cobaltstrike
OU=AdvancedPenTesting
CN=Major Cobalt Strike
2.2 检测方法
-
FOFA搜索语法:
protocol=="cobaltstrike" 或 cert="Major Cobalt Strike" -
增强时效性:
cert="Major Cobalt Strike" && after="2020-01-01" -
证书指纹搜索:
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" -
Censys搜索:
443.https.tls.certificate.parsed.fingerprint_sha256:87f2085c32b6a2cc709b365f55873e207a9caa10bffecf2fd16d3cf9d94d390c
2.3 证书类型区分
Cobalt Strike使用两种不同的证书:
-
Teamserver主控端证书:
- 默认端口50050使用
- 可通过keytool修改
-
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实现:
-
自签名证书:
在profile中使用Self-signed Certificates with SSL Beacon部分 -
合法证书:
使用Valid SSL Certificates with SSL Beacon部分配置真实证书
示例配置:
https-certificate {
set keystore "path/to/keystore";
set password "password";
}
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地址,由于数量过多,此处不一一列举,建议参考原文中的完整列表进行防御配置。