我正在反转一个封闭的平台,尝试使用漏洞利用(堆栈溢出)来执行执行。有人告诉我(因为没有调试器),最好的方法是使用RAM转储(我有)尝试了解缓冲区有多长时间,缓冲区后的链接寄存器在哪里,调用约定如何工作。 ..这样我就可以成功创建攻击了。

有关平台的更多信息。


ARM体系结构(ARM9和ARM11处理器)
NX位但是没有ASLR(这就是为什么我还需要知道可执行哪些内存页面才能获得ROP小工具的原因)
我没有调试器。仅RAM转储

我想知道如何识别内存中的堆栈(尽管可能有多个堆栈)以及如何识别内存页,并知道哪些页面可执行。 />

评论

你有几个垃圾场?获得这些转储的时间表是什么(是否有被紧密处理的转储?这些转储的大小是多少?

我可以根据需要有尽可能多的转储。它们的大小为128mb,我可以将它们靠近。如果需要,我也可以在系统中进行更改。

你如何得到垃圾场?是JTAG吗?您知道设备的内存映射是什么吗?

在实际情况下,我将依靠硬件黑客来获得RAM转储,但是在这种情况下,我将使用相同的漏洞转储整个FCRam。基本上,我试图自己理解漏洞利用程序(好像被告知,在X中有一个漏洞利用,没有更多信息),我不确定内存映射是什么,但是肯定我不知道。

所以@ws有什么想法或想法吗?

#1 楼

我唯一的想法是比较转储。所有转储中的位置都是代码或只读数据。从一个转储到另一个转储的位置都是堆栈或像.bss这样的部分。找到不变的地方后,我将尝试分解这些地方,以便在代码和数据之间进行划分。我无法正式证明它。

此外,您可能还应考虑以下因素:直接从Flash执行。 RAM中的代码可能不完整。
启动过程中,代码可能会自行解压缩。我已经在itcmdtcm存储区中看到了这种情况。查找有关这些地址的信息的最佳方法是查找数据表并仔细阅读,它可能包含系统的内存映射。

通常来说,我不太确定使用RAM是最好的解决方案,如果我要处理这样的事情,我会尝试将初始图像焊接到闪存中,读取并进行静态反向工程。

评论


您有个好主意,让我们看看能否有所收获。首先,RAM Dump是我唯一需要处理的事情。该平台具有一个NAND芯片,其内容已加密。另外,当我说FCRam时,我只是指RAM,但这些芯片实际上是Fast Cycle DRam。除NAND外,没有闪存或类似存储器。如果您必须在这样的平台上反向/发现漏洞(使用特殊硬件进行加密,因此甚至不要尝试静态反向NAND的内容),并且您知道RAM转储未加密,您该怎么办?我的想法是分析RAM转储,但也许还有其他方法。

– PJF
16 Dec 27 '18:56

接下来的一点是,它同时具有ARM9和ARM11处理器。我只是猜测堆栈具有允许我们在内存中识别它们的模式,这种情况在某些平台上会发生,我相信在ARM上也是一样。另外,由于系统运行多个进程和应用程序,因此可能会有多个堆栈。只是为了澄清一些事情;我想学习如果某人没有系统的任何技术细节,而不依赖于他人的工作,该如何利用封闭的平台。

– PJF
16-12-27 19:00

此外。当您说代码段的熵可能比数据高时,这是因为代码应该“始终相同”并且数据可以更改,对吗?

– PJF
16/12/27在19:04

一般来说,在这种情况下,我没有其他想法。如果您的NAND是加密的(顺便说一句,您是如何得出这个结论的?从规范中得出?从分析NAND的内容开始?),唯一简单的方法实际上就是分析RAM转储。关于熵:代码看起来比数据更具随机性。我从自己的观察中知道(在我使用的所有转储/二进制文件/固件中总是如此),此结论的直觉如下:处理器设计人员试图尽可能有效地打包指令定义,但程序员从未尝试有效地存储数据。

– w s
16 Dec 28'7:21

实际上,此漏洞已被利用,但尚未发布任何公共信息。这就是为什么我试图自己学习和利用它。一个表明NAND已加密并可能也已签名的示例是,您可以使用硬件攻击将设备NAND转储,但是如果将其注入到另一设备中,它将无法运行。所以是的,它们以某种方式通过每个设备的唯一密钥进行加密。熵的话题也确实很有趣而且广泛。我们有什么办法可以发消息吗?评论还不够。这样可以加快找到解决方案的速度。

– PJF
16年12月28日在14:05