Cobalt Strike:内存转储 - 第 6 部分

博文系列:Cobalt Strike:解密流量

  • Cobalt Strike:使用已知私钥解密流量 - 第 1 部分
  • Cobalt Strike:使用已知私钥解密流量 - 第 2 部分
  • Cobalt Strike:使用进程内存解密流量 - 第 3 部分
  • Cobalt Strike:解密混淆流量 - 第 4 部分
  • Cobalt Strike:解密 DNS 流量——第 5 部分
  • Cobalt Strike:内存转储 - 第 6 部分(当前)
  • Cobalt Strike:概述 – 第 7 部分

这是创建和分析 Cobalt Strike 信标的内存转储的不同方法的概述。

本系列博文介绍了解密 Cobalt Strike 流量的不同方法。在 本系列的第 1 部分中,我们揭示了在恶意 Cobalt Strike 包中发现的私有加密密钥。在 第 2 部分中,我们从 RSA 私钥开始解密 Cobalt Strike 流量。在 第 3 部分中,如果您不知道私有 RSA 密钥但确实有进程内存转储,我们将解释如何解密 Cobalt Strike 流量。在 第 4 部分中,我们处理使用可塑性 C2 数据转换混淆的流量。在 第 5 部分中,我们处理 Cobalt Strike DNS 流量。

对于之前博客文章中讨论的一些 Cobalt Strike 分析方法,进行内存转储很有用:系统 RAM 的内存转储,或托管 Cobalt Strike 信标的进程的进程内存转储。

我们概述了制作和/或使用内存转储的不同方法。

完整的系统内存转储

有几种方法可以获得 Windows 机器的完整系统内存转储。由于这些方法大多涉及商业软件,我们不会详细介绍获取完整内存转储的细节。

当您有一个未压缩的完整系统内存转储时,首先要检查的是内存中是否存在 Cobalt Strike 信标。这可以使用工具1768.py来完成,该工具用于提取和分析 Cobalt Strike 信标的配置。确保使用 64 位版本的 Python,因为未压缩的完整内存转储很大。

发出以下命令:

1768.py -r 内存转储

例子:
请添加图片描述

图 1:在完整的系统内存转储上使用 1768.py
在这个例子中,我们很幸运:1768.py 不仅检测到信标配置的存在,而且该配置也包含在单个内存页面中。这就是我们获得完整配置的原因。通常,配置会重叠内存页面,然后您会得到部分结果,有时甚至是 Python 错误。但是我们从这个命令中得到的最重要的信息是,系统上运行了一个信标,我们对其进行了完整的内存转储。

假设我们的命令产生了部分结果。然后,为了获得完整的配置,我们必须做的是使用Volatility生成托管信标的进程的进程内存转储。由于我们不知道哪个进程托管信标,我们将为所有进程创建进程内存转储。

我们使用以下命令执行此操作:

vol.exe -f memorydump -o procdumps windows.memmap.Memmap -dump

例子:
请添加图片描述

图 2:使用 Volatility 提取进程内存转储 - 命令开始
请添加图片描述

图 3:使用 Volatility 提取进程内存转储 - 命令结束

procdumps 是将写入所有进程内存转储的文件夹。

此命令需要一些时间才能完成,具体取决于内存转储的大小和进程数。

命令完成后,我们再次使用工具 1768.py 来分析每个进程转储:
请添加图片描述

图 4:使用 1768.py 分析所有提取的进程内存转储 - 命令开始
请添加图片描述

图 4:使用 1768.py 分析所有提取的进程内存转储 - 检测进程 ID 2760
我们看到文件 pid.2760.dmp 包含一个信标配置:这意味着进程 ID 为 2760 的进程托管一个信标。如果我们需要提取更多信息,例如加密密钥,我们可以使用此进程内存转储(请参阅本系列的博客文章 3 )。

进程内存转储

存在不同的方法来获取 Windows 机器上的进程内存转储。我们将解释几种不需要商业软件的方法。

任务管理器

可以使用内置的 Windows 任务管理器进行完整的进程内存转储。
这样的进程内存转储包含所选进程的所有进程内存。

要使用此方法,您必须知道哪个进程正在托管信标。然后在任务管理器中选择这个进程,右键,选择“创建转储文件”:
请添加图片描述

图 6:任务管理器:选择托管信标的进程
请添加图片描述

图 7:创建一个完整的进程内存转储

进程内存转储将被写入临时文件夹:
请添加图片描述

图 8:进程内存转储完成后的任务管理器对话框
图 9:包含转储文件 (.DMP) 的临时文件夹

Sysinternals 的 Process Explorer

Process Explorer可以进行进程内存转储,就像任务管理器一样。选择托管信标的进程,右键单击并选择“创建转储/创建完整转储”。
请添加图片描述

图 10:使用 Process Explorer 创建完整的进程内存转储
不要选择“Create Minidump”,因为使用此选项创建的进程内存转储不包含进程内存。

使用 Process Explorer,您可以选择保存转储的位置:
请添加图片描述

图 12:使用 Process Explorer,您可以选择保存转储文件的位置

Sysinternals 的 ProcDump

ProcDump是一个从命令行创建进程内存转储的工具。您为它提供一个进程名称或进程 ID,它会创建一个转储。确保使用选项 -ma 创建完整的进程内存转储,否则转储将不包含进程内存。
请添加图片描述

图 12:使用 procdump 创建一个完整的进程内存转储

使用 ProcDump,将转储写入当前目录。

使用进程内存转储

与完整系统内存转储一样,工具1768.py可用于分析进程内存转储并提取信标配置。
如本系列的第 3 部分所述,工具cs-extract-key.py可用于从进程内存转储中提取密钥。
如果密钥被混淆,工具cs-analyze-processdump.py可用于尝试破解混淆,如本系列的第 4 部分所述。

结论

内存转储可用于检测和分析信标。
我们开发了从内存转储中提取信标配置和密钥的工具。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值