编码逆转的另一项练习

我还为这篇博文录制了一个视频。在这篇博文中,我将展示如何通过执行统计分析和猜测一些“明文”来解码以十六进制编码变体编码的有效载荷。我现在也有解码器(.NET 程序集),但在这里我将展示如何 […]

来源:Didier Stevens _恶意软件

我还为这篇博文录制了视频。

我还为这篇博文录制了视频 视频

在这篇博文中,我将展示如何通过执行统计分析和猜测一些“明文”来解码以十六进制编码变体编码的有效载荷。

我现在也有解码器(.NET 程序集),但在这里我将展示如何在没有解码器的情况下尝试解码这样的有效载荷。

有效载荷如下所示:

有效载荷

看到所有这些字母,我想:这是小写的 Netbios 名称编码。这是一种编码,其中每个字节由 2 个十六进制字符表示,但字符都是字母,而不是数字和字母。由于我的工具 base64dump.py 可以处理 netbios 名称编码,我让它尝试所有编码:

Netbios 名称编码 base64dump.py

失败:未找到 netbios 编码。只有 base64 和 2 种 base85 变体,但解码后无法识别任何内容。此外,对于最后 2 次解码,只找到了 17 个唯一字符。这使得它确实是 base64 或 base85 的可能性非常小。

接下来,我使用我的工具 byte-stats.py 来生成有效载荷内找到的字节的统计信息:

byte-stats.py

有 17 个唯一字节用于编码此有效载荷。范围是:

这可能是十六进制编码(16 个字符)的某种变体形式,带有一个额外的字符(总共 17 个)。

为了分析并尝试解码此代码,我根据用于处理二进制文件的 Python 模板制作了一个自定义 Python 程序。

用于处理二进制文件的 Python 模板

您将在模板中找到此默认处理代码:

我用以下代码替换此默认代码(我将在本博文末尾发布完整程序的链接):

文件的内容在变量数据中。 这些是字节。

由于我实际上只处理字母,因此我将这些字节转换为字符并将其存储到变量codedpayload中。

这实际上并没有让我变得更聪明。

此代码产生以下输出:

4d5a9q03qq04