破解版密钥相同,部分CobaltStrike加密流量可解

VSole2021-11-01 08:20:09
由于对破解版的广泛使用,NVISO 的研究人员发现公网的 Cobalt Strike 服务器中有超过四分之一使用的加密密钥对都是相同的,使用这些密钥就可以对部分加密 Cobalt Strike 流量进行解密。

Cobalt Strike Beacon 与 Cobalt Strike Server 之间的通信使用 AES 进行加密,而 AES 加密的密钥由 Beacon 生成。

Beacon 使用 RSA 公钥加密元数据块(默认为 Cookie),C&C 服务器通过私钥进行解密。

公钥和私钥都存在 .cobaltstrike.beacon_keys 文件中,该文件是在第一次使用 Cobalt Strike Team Server 时生成的。

通过对公网暴露的 Cobalt Strike 服务器进行分析识别,发现许多服务器使用相同的公钥,这意味着他们使用的 .cobaltstrike.beacon_keys 文件相同,公私钥都相同。

因为这些人使用的都是 Cobalt Strike 的破解版,而在第一次使用时生成的 .cobaltstrike.beacon_keys 文件也被包含在破解版中共享出去了。

通过 VirusTotal 进行样本检索,发现了 10 个破解版 Cobalt Strike 的 ZIP 压缩包,这些压缩包中 根据 .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/

通过这些私钥可以用来解密元数据和 C&C 流量:

使用 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 流量。

首先使用 Wireshark 打开文件,通过 Stager Shellcode 查找完整 Beacon 的下载。Beacon 有多种形式,主要可分为两类:

  • Stager Shellcode,用于下载 Beacon 的 Shellcode
  • Beacon,可以反射加载的 PE 文件

使用 http.request.uri matches */....$ 进行过滤:

GET 请求中下载 Beacon 的路径确为 Cobalt Strike,可以使用 metatool.py 进行检查:

这确实是 32 位 Beacon 下载的有效路径,响应也被捕获:

导出文件:

使用 1768.py 对 EbHm.vir 进行分析:

  • 0x0001 表明这是一个通过 HTTP 进行通信的 Beacon
  • 0x0002 表明使用端口 8080
  • 0x0008 表明使用服务器 192.254.79.71
  • 0x0008 表明 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)。

这也可以发现网络行为与配置文件是吻合的,每分钟都发起一个 GET 请求。

  • 0x0003 表明睡眠时间为 60 秒
  • 0x0005 表明抖动系数为 0%

跟随第一个 HTTP 流可见:

对 /ptj 的 GET 请求收到没有任何数据的 200 响应,这意味着 C&C 服务器没有任何相关的命令。

Cookie 看起来像是一个 base64 字符串,通过配置文件也可知这是 RSA 公钥加密的元数据。通过 cs-decrypt-metadata.py 即可解密元数据:

cs-decrypt-metadata.py
https://blog.didierstevens.com/2021/10/22/new-tool-cs-decrypt-metadata-py/

元数据解密后可以找到原始密钥 caeab4f452fe41182d504aa24966fbd0,使用该密钥即可解密流量。当然,元数据中还包含计算机名、用户名等信息。

跟踪 9379、9383 数据包的 HTTP 流,可以发现攻击者发送的第一个命令:

响应数据可以看到是加密的:

过滤掉与 C&C 无关的 HTTP 流量,使用原始密钥进行解密:

9383 数据包中是 SLEEP 指令,睡眠时间为 100 毫秒且抖动系数为 90%。

9707 数据包中包含未知指令,但从 9723 数据包中包含目录输出猜测未知的命令应该是查看目录的命令。

流量已经解密,后续的命令就不再赘述。最后一个命令是查看进程:

分析示例使用的是 Brad Duncan 在半年前在沙箱中运行恶意 Cobalt Strike Beacon 生成的流量数据,通过已知的私钥来解密流量。相关的公私钥对可以在提供的工具里查看详情,该研究人员围绕 Cobalt Strike 展开了深入的分析,NVISO 也披露了一系列狩猎 Cobalt Strike 的文章对业界都很有帮助。

beacon流量
本作品采用《CC 协议》,转载必须注明作者和本文链接
STATEMENT声明由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测及文章作者不为此承担任何责任。雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。
web、PC、DC都处于同一域环境内,需要手动开启weblogic服务
CS的流量行为特征
2022-07-21 13:45:40
雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。
由于对破解版的广泛使用,NVISO 的研究人员发现公网的 Cobalt Strike 服务器中有超过四分之一使用的加密密钥对都是相同的,使用这些密钥就可以对部分加密 Cobalt Strike 流量进行解密。
WebServer特征本文简单介绍了Cobalt Stike 4.4版本的一些特征以及缓解措施。webser
CobaltStrike被广泛利用于渗透攻击中,可以与其他攻击工具(如Mimikatz、Metasploit和PowerShell Empire)联合使用,支持在网络中横向移动。
攻防演练场景下的加密流量分为入联、横向、出联三个类别,本文将从不解密的前提下对三类流量检测展开介绍。
正文CS 分段木马与无分段木马大同小异,本次以较为典型的分段木马为例来分析其与 C2 的通信过程。对下载的 payload 进行解码后查看其内容可以看到详细的C2 通信配置,包括主机 IP、公钥、端口等信息。
如前文所述,Cobalt Strike 网络流量可以使用正确的 AES 和 HMAC 密钥进行解密。之前也讲述了如何通过解密 Cobalt Strike 元数据的方法获取密钥,本文将会重点描述从内存 Dump 中提取密钥的方法。
需求配置vps一台域名CDNCobalt Strike4.0?0x02. 服务器设置禁ping服务器禁ping从某种意义上来说,算是不存活的主机,但nmap是依然能够扫描出来的。设置禁ping命令:vim /etc/sysctl.conf 打开后按i进入编辑模式,在任意位置新增以下内容。0x03. 修改Cobalt Strike默认端口号在服务端的teamserver文件末尾处修改修改之后再次启动teamserver的时候即可看到端口已经更改。修改证书标准并应用> keytool -importkeystore -srckeystore cobaltstrike.store -destkeystore cobaltstrike.store -deststoretype pkcs12
VSole
网络安全专家