内存转储分析

逆向工程 二元分析 固件 内存转储
2021-06-12 10:47:28

我正在尝试学习固件分析。我选择的设备是我的摩托罗拉 SBG901 调制解调器。我设法使用 FlashcatUSB 适配器通过 JTAG 转储内存内容。内存转储大小约为 8MB。现在这是我迷路的地方,我正在尝试分析转储。但我不知道从哪里开始。我在它上面使用了 binwalk,我相信这会带来误报,因为输出如下:

DECIMAL       HEXADECIMAL     DESCRIPTION
--------------------------------------------------------------------------------
67434         0x1076A         Certificate in DER format (x509 v3), header length: 4, sequence length: 803
68243         0x10A93         Certificate in DER format (x509 v3), header length: 4, sequence length: 1024
70361         0x112D9         Certificate in DER format (x509 v3), header length: 4, sequence length: 808
71175         0x11607         Certificate in DER format (x509 v3), header length: 4, sequence length: 988
81036         0x13C8C         Certificate in DER format (x509 v3), header length: 4, sequence length: 866
81908         0x13FF4         Certificate in DER format (x509 v3), header length: 4, sequence length: 983
82897         0x143D1         Certificate in DER format (x509 v3), header length: 4, sequence length: 864
89278         0x15CBE         Certificate in DER format (x509 v3), header length: 4, sequence length: 803
90087         0x15FE7         Certificate in DER format (x509 v3), header length: 4, sequence length: 1024
92205         0x1682D         Certificate in DER format (x509 v3), header length: 4, sequence length: 808
93019         0x16B5B         Certificate in DER format (x509 v3), header length: 4, sequence length: 988
102880        0x191E0         Certificate in DER format (x509 v3), header length: 4, sequence length: 866
103752        0x19548         Certificate in DER format (x509 v3), header length: 4, sequence length: 983
104741        0x19925         Certificate in DER format (x509 v3), header length: 4, sequence length: 864
111122        0x1B212         Certificate in DER format (x509 v3), header length: 4, sequence length: 803
111931        0x1B53B         Certificate in DER format (x509 v3), header length: 4, sequence length: 1024
114049        0x1BD81         Certificate in DER format (x509 v3), header length: 4, sequence length: 808
114863        0x1C0AF         Certificate in DER format (x509 v3), header length: 4, sequence length: 988
124724        0x1E734         Certificate in DER format (x509 v3), header length: 4, sequence length: 866
125596        0x1EA9C         Certificate in DER format (x509 v3), header length: 4, sequence length: 983
126585        0x1EE79         Certificate in DER format (x509 v3), header length: 4, sequence length: 864

我相信 binwalk 给出了错误的正输出,因为转储可能不是打包图像。我这样说是因为我还在转储上运行了字符串并收到了很多可读的字符串,一个片段如下所示:

从转储上运行字符串中退出

我正在尝试提取固件,以便我可以使用 QEMU 并尝试进行一些漏洞发现。我这样做是为了知识,但我没有阅读转储文件的经验。有人可以指出我如何破译内存转储并最终提取固件的方向。我真的很想学习如何阅读转储,因为我打算分析其他固件,因此我想学习基本知识。例如,我知道有些固件是打包/解包和/或加密/未加密的。它们通常由引导加载程序、操作系统、文件系统、库和应用程序(例如网络服务器)组成。有人可以指出一些有用的资源的方向,这些资源将教我如何读取转储并确定如何使用所有正确的文件(文件系统、引导加载程序、应用程序等)获取固件?

提前致谢

2个回答

我相信 binwalk 给出了错误的正输出

输出很可能不是误报。您可以看到证书中使用的字符串。

例如,我知道有些固件是打包/解包和/或加密/未加密的

这是您要检查的方向。Binwalk 有一个熵分析选项,它可以显示它的图形。加密或打包的文件将具有高且均匀的熵。

我正在尝试提取固件,以便我可以使用 QEMU 并尝试进行一些漏洞发现。

虽然 CPU 架构可能是众所周知的,但像这样的设备可能会有一个定制的 SoC,几乎没有可用的文档。我认为您不会对设备进行完整的仿真,因此静态分析可能是首选。

有人能指出我的方向吗

如果你真的有 JTAG 访问权限,你可以尝试转储 RAM,因为它可能包含解包/解密的代码。但是,我怀疑这实际上是 SPI 闪存芯片的转储。实际 JTAG 访问可能已被制造商禁用。

如果您只想要固件,可以在此链接中找到这个链接可能有用。显然,你的盒子上的芯片是 BCM3361,根据博通的说法是 MIPS32。我认为你可以用 QEMU 模拟它,那里没有明显的问题。

您的转储更有可能是代码和数据的混合。将数据与代码分离非常困难;您必须进行大量的熵分析(数据和代码熵非常不同)。你可以在这里查看不同的 Binwalk 选项,解释非常清楚。