吉沃运营专员 发表于 2022-8-19 15:33:07

一个存活的 C2 中 Cobalt Strike Beacon 分析

大家好!今天将讨论一个真实的恶意软件,它被归类于 TA578 和 IcedID/Bokbot。

在撰写本文时,感谢 @Malware_traffic 的 Brad,我能够找到真实的 Cobalt Strike 样本。如果你不熟悉他和他的工作,他在 Palo Alto Unit 42 工作,并提供在他的实验室中运行的恶意软件的 PCAP 样本。这是一件了不起的事情,我希望将来其他人也能效仿。

今天,我和我的同事正在对发布的这个 特定恶意软件样本 PCAP 进行一些分析,一些有趣的东西引起了我们的注意。我们能够确定对手使用 Powershell 下载了另一个导致 Cobalt Strike 的 stage,这是对手命中的特定 URL:

hxxps[://]solvesalesoft[.]com:8080/coin

我还在 Archive.org 上保存了这个 URL,单击 此处,风险自负。

我启动了我的 Kali 虚拟机并访问了上面提到的 URL,令我惊讶的是 —— 该 URL 仍然存在。我们有一个存活的 C2 服务器!



这里有一个 base64 编码 glob,一直向下滚动到文件的底部,看看下面还隐藏着什么。



Decoding Base64 + GZIP

因吹斯汀,我们有一个 Base64 编码的 GZIP 流需要解压缩。到目前为止,这对于 Cobalt Strike 来说是相当标准的。让我们将 base64 复制到 CyberChef 并对其进行解码。解码配方可以在 这里 找到。



PowerShell 脚本当然没有说谎 …… 这是我们去混淆的 PowerShell 脚本!老实说,我会跳过很多。这是从 PowerShell 运行 EXE 的所有标准方法。如果你仔细查看截图,可能已经注意到脚本底部出现了更多的 Base64,这就是我们所追求的。这是包含用于与 Cobalt Strike C2 服务器本身通信的 shellcode 的块。

Decoding Base64 + XOR
不幸的是,这不是直接的 Base64,我们不能只解码 shellcode,一切都会好起来的,从来没有那么简单。幸运的是,它几乎和我们的 "From Base64, Gunzip" 一样简单。我们只需向下滚动到底部,就可以发现 shellcode 实际上是用 35 的键进行了异或运算。



转到 CyberChef,我们可以轻松删除 "Gunzip" 并用 XOR 替换它。关于 XOR,我一直觉得棘手的一件事是关键的格式。在 PowerShell 中,它的十进制,而不是十六进制。 你可以在 这里 找到。



将密钥设置为 Decimal 后,我们应该会看到一个 MZ 标头 …… 或者有人会这么想?哦,等等,它就在那里!只是少了几个字节 …… 但是这些字节到底是什么?



保存和解析 Beacon
oh,这非常有趣,是一个 NOP Sled!我想我以前从未见过。无论如何 - 现在我们有了二进制可执行文件,让我们通过单击 "将输出保存到文件" 图标从 CyberChef 下载它。



系统将提示命名文件,我将其保留为 "download.bin"。在 Kali 上,我克隆了 Sentinel One 的 Cobalt Strike Beacon Parser,它可以在 GitHub 上找到。这个工具可以用来做到这一点!解析 Cobalt Strike Beacon 配置,让我们针对我们的可执行文件运行它,看看会发生什么。



而且 …… 它有效!我们可以看到 beacon 将数据发送到的位置 (solvesalesoft[.]com:8080/af)。

知道了这一点,我们可以做很多有趣的事情。不幸的是,解码流量不是其中之一。PCAP 包含未经 MITM 处理的 SSL/TLS 流,因此我们的分析到此停止 …… 不幸的是,我们永远无法确切知道哪些数据被盗。不过,我想向 Didier Stevens 致敬,因为他制作了一些很棒的工具来解析 Cobalt Strike beacon、PCAP、内存转储等中的信息。这在最近的 CTF 中有所帮助,我们确实有一个 PCAP,可以在其中读取到 C2 服务器的流量。我将很快发布有关该挑战的文章 - 将这篇文章视为入门。

无论如何 - 我希望你喜欢并且可能学到了一些新东西!

页: [1]
查看完整版本: 一个存活的 C2 中 Cobalt Strike Beacon 分析