【问题标题】:How can I find the proper zone_map offset for v0rtex exploit on iOS 9.3.5?如何在 iOS 9.3.5 上找到适合 v0rtex 漏洞利用的 zone_map 偏移量?
【发布时间】:2021-12-04 20:39:12
【问题描述】:

我正在借助 siguza 的 v0rtex 漏洞利用构建一个 APNonce setter 工具,目前,我拥有我需要的大部分偏移量,但无论我做什么,zone_map 偏移量似乎都是错误的。

我尝试了什么:

我解密了内核并将其加载到 macOS 上的 IDA 中。搜索了zone_map 的字符串,没有发现任何相关内容。

我在搜索zone_init 时有点运气,但我关注的xref 并没有领先任何地方。

我的设备是 iPod Touch 5 和 iOS 9.3.5。我找到的偏移量是0xffffffff0070d1aa4,但它会使内核恐慌,所以它不正确。

【问题讨论】:

  • v0rtex 需要在偏移量之外进行一些更改才能在 iOS 9 上运行,最值得注意的是一种触发 zalloc 垃圾收集的新方法。这是一个研究项目,还是有其他原因您没有使用 Phœnix 漏洞?
  • @Siguza 我也想知道,我认为他们可能是故意这样做的。
  • 我试过但根本无法让它工作,它会恐慌

标签: ios c jailbreak exploit


【解决方案1】:

ZONE_MAP 偏移量不是很容易找到,但我将在下面详细说明应该可行的方法。

一个警告:我为此使用了 Hopper,而不是 IDA Pro。不过,您可以使用 Hopper 的演示版。

第 1 步:解密您的 KernelCache。确保它已被解密,否则所有其余步骤将基本上失败。您可以为此使用 Decrypt0r。当Decrypt0r 发出以下输出时,你就知道你很好了:

Enter key for /Users/geosn0w/Desktop/kernelcache.release.n78: 87aa19c72db6e662d6c3dbcf74da88026fda5a66469baa7e271725918133cd2f
Enter key IV for /Users/geosn0w/Desktop/kernelcache.release.n78: 2692e6004e6240aab57f2affa0daedc0
[DEBUG] Opening /Users/geosn0w/Desktop/kernelcache.release.n78
Parsed TYPE element
Parsed DATA element
Parsed SEPO element
Parsed KBAG element
Parsed KBAG element
File opened successfully
Setting Img3 Key and IV
Fetching KBAG element from image
Found KBAG element in image
KBAG Type = 256, State = 1
Decrypting Img3 file
Fetching DATA element from image
Found DATA element in image
Setting keys to decrypt with
Performing decryption...
magic = 0x706d6f63
Image compressed, decompressing
signature = 0x706d6f63
compression_type = 0x73737a6c
Found LZSS compression type
Found output file listed as /Users/geosn0w/Desktop/kernelcache.release.n78.dec
Image claims it's decrypted, dump raw data
Closing Img3 file
/Users/geosn0w/Desktop/kernelcache.release.n78.dec copied to the root of IPSW folder

第 2 步: 打开 Hopper Disassembler 并弹出解密后的KernelCache 里面的文件。内核很大,所以给它时间来分析它。它 可能需要几分钟。

步骤 3: 成功分析内核文件后,导航到 Hopper 中的字符串选项卡并搜索 zone_init: kmem_suballoc failed

第四步:双击出现的单个结果,然后双击DATA XREF: subXXXXXXXXXXX子例程交叉引用。

第 5 步:如果您完成了上述所有操作,您将跳转到包含 ; :lower16:(0x803bde69 - 0x80036856), "\\\"zone_init: kmem_suballoc failed\\\"", CODE XREF=sub_80032808+6204 之类的子程序。双击最右侧的CODE XREF=sub_XXXXXXXX 部分。

第 6 步:您的偏移量是您跳转到的位置的第一个 QWORD。就我而言,它是0x8003684a,这是ZONE_MAP 的偏移量。

【讨论】:

  • 谢谢先生,但我可以在radare2或ida中这样做吗?
  • 虽然我确信这两者都可以完成,但只要你有正确的插件和反编译器(毕竟这是 arm 而不是所有的反汇编程序都能处理它),我不能指导您,因为我不使用 IDA Pro,但是,您可以使用免费版本的 Hopper。
猜你喜欢
  • 2021-12-04
  • 2021-01-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-02
  • 2017-11-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多