ciw_blue吧 关注:22贴子:259
  • 2回复贴,共1

ios越狱的原理

只看楼主收藏回复

iOS设备的启动顺序是:通电后,从bootrom中执行代码映射到内存空间的特定地址里,然后载入设备 NOR芯片中的Low Level
Bootloader,并对iBoot进行签名检查。如果iBook通过了检查,它将被载入并对iOS Kernel进行签名检查。成功的话载入iOS
Kernel并由其对文件系统及所有程序进行签名检查。
任何一步签名检查的失败都会导致启动过程的中止。足够敏锐的话,你会发现在这个不断检查的过程中,bootrom加载LLB并没有进行签名检查。这
就是越狱工具Pwnage
1.0做的事,载入一个修改过的LLB并停止一系列的签名检查。在Pwnage2.0中,利用了一个证书解析过程中的溢出来打断认证链。而且
bootrom与firmware无关,除非更新硬件设计否则这个设备将一直被越狱。所有的MB型号设备都存在bootrom漏洞,甚至一些MC型号的
3GS也存在这种漏洞。


1楼2011-11-29 22:05回复



    2楼2011-11-29 22:06
    回复
      iOS的越狱分为tethered(非完美)和untethered两种。非完美越狱意味着用户拥有了一个修改后的iBoot却没有一个修改后的
      LLB,以致于无法通过签名检查而停止。这种情况下设备会进入DFU模式试图恢复,所以可以连接电脑利用越狱工具直接引导iBoot而不进行恢复。
      直到新的bootrom漏洞被发现后新的完美越狱才成为可能。09年初发现了一个24kpwn漏洞。具体是:在恢复的时候并不会检查被刷入NOR芯
      片的LLB镜像文件。因此刷入一个超过0x24000
      byte大小限制的LLB将导致一个溢出,以致bootrom的签名检查取消并且载入一个修改过的LLB。苹果终于试图拿出一个强大的防御方案来,在修补
      24kpwn漏洞的同时加入了ECID检查。恢复设备时不再允许降级且利用每个设备的ECID(设备相关的一个芯片ID)返回一个签名(SHSH)来添加
      到固件中进行恢复。如果签名没有成功,那么刷新过程将失败。
      看起来很牢固的一个服务端签名方案。致命的一点在于还是返回了SHSH到本地,那么就可以将这个签名保存下来用于再次越狱或降级了。这就是利用TinyUmbrella之类的工具备份SHSH可以进行的事。
      在3.0-3.1.2阶段发现了两个重要的iBoot漏洞:iBoot Environment Variable
      Overflow和usb_control_msg漏洞。但是从3.1.3开始所有的iBoot漏洞都被填补了。目光被放到了Kernel上。利用了恢复
      过程中了一个允许未签名代码执行的漏洞,可以在不修改iBoot的前提下运行修改后的kernel了。
      4.0发布时,利用了全系列存在的一个safari中的pdf字体漏洞导致解析时堆栈溢出而破解。之后又发现了SHAtter bootrom漏洞。
      


      3楼2011-11-29 22:07
      回复