由于对破解版的广泛使用,NVISO 的研究人员发现公网的 Cobalt Strike 服务器中有超过四分之一使用的加密密钥对都是相同的,使用这些密钥就可以对部分加密 Cobalt Strike 流量进行解密。
Cobalt Strike Beacon 与 Cobalt Strike Server 之间的通信使用 AES 进行加密,而 AES 加密的密钥由 Beacon 生成。
.cobaltstrike.beacon_keys
文件中,该文件是在第一次使用 Cobalt Strike Team Server 时生成的。.cobaltstrike.beacon_keys
文件相同,公私钥都相同。.cobaltstrike.beacon_keys
文件也被包含在破解版中共享出去了。.cobaltstrike.beacon_keys
提取了 6 个 RSA 密钥对。其中有 2 个密钥对被广泛使用,发现的 Cobalt Strike 服务器中有 25%(1500 余个)使用的都是这二者之一。1768.py
提取 Cobalt Strike Beacon 的配置时会显示是否为已知的私钥。1768.py
https://blog.didierstevens.com/2021/10/11/update-1768-py-version-0-0-8/
使用 Brad Duncan 在 Malware-Traffic-Analysis.net 上共享的流量文件 2021-02-02-Hancitor-with-Ficker-Stealer-and-Cobalt-Strike-and-NetSupport-RAT.pcap.zip 作为示例。
2021-02-02-Hancitor-with-Ficker-Stealer-and-Cobalt-Strike-and-NetSupport-RAT.pcap.zip
https://www.malware-traffic-analysis.net/2021/02/02/index.html
流量文件中包含 Cobalt Strike Beacon 与 C&C 服务器通信的加密 HTTP 流量。
Stager Shellcode,用于下载 Beacon 的 Shellcode
Beacon,可以反射加载的 PE 文件
http.request.uri matches */....$
进行过滤:GET 请求中下载 Beacon 的路径确为 Cobalt Strike,可以使用 metatool.py
进行检查:
这确实是 32 位 Beacon 下载的有效路径,响应也被捕获:
导出文件:
使用 1768.py
对 EbHm.vir
进行分析:
0x0001
表明这是一个通过 HTTP 进行通信的 Beacon0x0002
表明使用端口 80800x0008
表明使用服务器 192.254.79.710x0008
表明 GET 请求使用/ptj
0x000a
表明 POST 请求使用/submit.php
0x000b
表明解密之前不对数据执行任何操作
不过好消息是该恶意软件使用了已知的私钥,可以进一步解密分析。通过 http and ip.addr == 192.254.79.71
过滤相关流量:
相关的 HTTP 流量中的前两个数据包是下载 Beacon,主要过滤分析后面的流量(http and ip.addr == 192.254.79.71 and frame.number>6703)。
0x0003
表明睡眠时间为 60 秒0x0005
表明抖动系数为 0%
跟随第一个 HTTP 流可见:
对 /ptj
的 GET 请求收到没有任何数据的 200 响应,这意味着 C&C 服务器没有任何相关的命令。
cs-decrypt-metadata.py
即可解密元数据:cs-decrypt-metadata.py
https://blog.didierstevens.com/2021/10/22/new-tool-cs-decrypt-metadata-py/
元数据解密后可以找到原始密钥 caeab4f452fe41182d504aa24966fbd0
,使用该密钥即可解密流量。当然,元数据中还包含计算机名、用户名等信息。
响应数据可以看到是加密的:
过滤掉与 C&C 无关的 HTTP 流量,使用原始密钥进行解密:
9383 数据包中是 SLEEP
指令,睡眠时间为 100 毫秒且抖动系数为 90%。
分析示例使用的是 Brad Duncan 在半年前在沙箱中运行恶意 Cobalt Strike Beacon 生成的流量数据,通过已知的私钥来解密流量。相关的公私钥对可以在提供的工具里查看详情,该研究人员围绕 Cobalt Strike 展开了深入的分析,NVISO 也披露了一系列狩猎 Cobalt Strike 的文章对业界都很有帮助。
NVISO 原文
https://blog.nviso.eu/2021/10/27/cobalt-strike-using-known-private-keys-to-decrypt-traffic-part-2/