实战复盘:如何从混杂的Web流量中揪出Cobalt Strike Beacon?一份完整的解密指南
2026/6/7 3:51:12 网站建设 项目流程

从混杂流量中解密Cobalt Strike信标的实战手册

当安全团队在例行流量审计中发现异常HTTP请求时,往往意味着内网已经存在失陷主机。最近处理的一起案例中,攻击者通过Laravel框架的已知漏洞植入Webshell后,在服务器上遗留了包含Cobalt Strike信标密钥的压缩包。本文将完整还原从流量识别到最终解密C2通信的全过程。

1. 初始线索发现与关键文件提取

在分析pcap文件时,首先需要关注异常HTTP POST请求。某次案例中,攻击者上传的Webshell响应包包含以下特征字符串:

AAA*VGhpcyBpcyBhIHRlc3Q=*AAA

这类经过伪装的Base64字符串通常需要特殊处理:

  1. 去除AAA*前缀和*AAA后缀
  2. =替换为00
  3. 进行标准Base64解码

通过反复解码多个类似字符串,最终发现了服务器上的关键文件线索:

cd /d "D:\phpstudy_pro\WWW\secret"&"C:\Program Files\7-Zip\7z.exe" x secret.zip -pP4Uk6qkh6Gvqwg3y

关键文件特征对比表

文件类型识别特征提取工具典型位置
secret.zipPK文件头被Webshell输出包裹WinHex修复/tmp或Web目录
.cobaltstrike.beacon_keysRSA密钥对特征7z解压攻击者指定目录

2. 压缩包修复与密钥提取

受损的压缩包需要通过十六进制编辑器手动修复。以下是使用WinHex的标准操作流程:

  1. 从原始流量中导出被污染的zip文件片段
  2. 搜索50 4B 03 04(PK头)和50 4B 05 06(中央目录结束记录)
  3. 删除头尾的非zip数据
  4. 保存为标准zip格式

使用之前获得的密码P4Uk6qkh6Gvqwg3y解压后,得到.cobaltstrike.beacon_keys文件,其内容结构如下:

# 公钥 -----BEGIN PUBLIC KEY----- MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx6QZ6OZ7O8Z6O8Z6O8Z6 ... -----END PUBLIC KEY----- # 私钥 -----BEGIN RSA PRIVATE KEY----- MIIEowIBAAKCAQEAx6QZ6OZ7O8Z6O8Z6O8Z6O8Z6O8Z6O8Z6O8Z6O8Z6O8Z6O8Z ... -----END RSA PRIVATE KEY-----

3. C2流量解密实战

获得密钥对后,可以开始解密Cobalt Strike的通信流量。典型C2流量包含两种类型:

  1. 心跳包(元数据):GET请求/en_US/all.js,密钥通过Cookie传输
  2. 数据回传:POST请求/submit.php?id=xxxxxx,包含加密的失陷主机信息

3.1 解密元数据获取AES密钥

使用Python脚本解密元数据:

from Crypto.PublicKey import RSA from Crypto.Cipher import PKCS1_v1_5 private_key = RSA.import_key(open('beacon_keys').read()) cipher = PKCS1_v1_5.new(private_key) aes_key = cipher.decrypt(encrypted_metadata, None)

关键参数说明

  • encrypted_metadata:从HTTP Cookie中提取的Base64编码数据
  • aes_key:解密后得到的32字节AES密钥

3.2 解密主机回传数据

获得AES密钥后,可以解密POST请求中的实际数据:

from Crypto.Cipher import AES import base64 def decrypt_c2_data(encrypted_data, aes_key): iv = encrypted_data[:16] cipher = AES.new(aes_key, AES.MODE_CBC, iv) return cipher.decrypt(encrypted_data[16:]) raw_data = base64.b64decode(http_post_data) decrypted = decrypt_c2_data(raw_data, aes_key)

典型解密结果示例

{ "hostname": "DC01.corp.local", "username": "admin", "process": "lsass.exe", "data": "收集的凭证数据..." }

4. 防御建议与检测增强

基于多次事件响应的经验,建议在安全设备上部署以下检测规则:

Suricata规则示例

alert http any any -> any any (msg:"Cobalt Strike Beacon Metadata Request"; http.method; content:"GET"; http.uri; content:"/en_US/all.js"; http.cookie; content:".cobaltstrike.beacon_keys"; sid:1000001;)

网络设备配置建议

  1. 对出站HTTP流量实施TLS拦截检查
  2. 限制服务器发起的异常HTTP POST请求
  3. 监控Web目录下的.zip文件创建行为

在一次实际事件中,攻击者在解密后的数据中泄露了其C2服务器的真实IP,这成为溯源突破的关键。通过交叉分析多个解密数据包的时间戳,我们还成功还原了攻击者在失陷主机上的完整操作链条。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询