有关平台的更多信息。
ARM体系结构(ARM9和ARM11处理器)
NX位但是没有ASLR(这就是为什么我还需要知道可执行哪些内存页面才能获得ROP小工具的原因)
我没有调试器。仅RAM转储
我想知道如何识别内存中的堆栈(尽管可能有多个堆栈)以及如何识别内存页,并知道哪些页面可执行。 />
#1 楼
我唯一的想法是比较转储。所有转储中的位置都是代码或只读数据。从一个转储到另一个转储的位置都是堆栈或像.bss
这样的部分。找到不变的地方后,我将尝试分解这些地方,以便在代码和数据之间进行划分。我无法正式证明它。此外,您可能还应考虑以下因素:直接从Flash执行。 RAM中的代码可能不完整。
启动过程中,代码可能会自行解压缩。我已经在
itcm
和dtcm
存储区中看到了这种情况。查找有关这些地址的信息的最佳方法是查找数据表并仔细阅读,它可能包含系统的内存映射。通常来说,我不太确定使用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
评论
你有几个垃圾场?获得这些转储的时间表是什么(是否有被紧密处理的转储?这些转储的大小是多少?我可以根据需要有尽可能多的转储。它们的大小为128mb,我可以将它们靠近。如果需要,我也可以在系统中进行更改。
你如何得到垃圾场?是JTAG吗?您知道设备的内存映射是什么吗?
在实际情况下,我将依靠硬件黑客来获得RAM转储,但是在这种情况下,我将使用相同的漏洞转储整个FCRam。基本上,我试图自己理解漏洞利用程序(好像被告知,在X中有一个漏洞利用,没有更多信息),我不确定内存映射是什么,但是肯定我不知道。
所以@ws有什么想法或想法吗?