看越狱黑客如何大战iOS系统

时间:2022-09-05 03:52:30

看越狱黑客如何大战iOS系统

2013年1月25日,一个名为Evad3rs的新团队成立,其主要任务就是完成iOS6的完美越狱。令人惊异的是,Evad3rs团队仅仅只用了10天的时间,就完成了完美越狱工具的开发工具(后来还陆续了一些兼容性更新)。那么,Evad3rs团队是如何完成iOS完美越狱的呢?

此次iOS6.0的完美越狱主要是通过软件的漏洞进行破解。越狱主要包括了寻找漏洞、注入、提权、修改、欺骗系统等步骤。

需要多个漏洞才能完美越狱

黑客需要从iOS系统找到漏洞,通过这个漏洞将代码注入到缓存,并通过另外一个漏洞将此代码提权,也就是说黑客至少需要2个以上的漏洞才能实现非完美越狱。如果是实现不需要计算机引导的完美越狱,漏洞自然是越多越好。

借道Symbolic Link

Symbolic Link类似于Windows系统下的快捷方式,通过Symbolic Link,可以将连接转到某个特定的Socket中,让不同程序之间可以互通信息。整个iOS系统中的Launch Daemon后台进程的启动程序都存放在“/System/Library/LaunchDaemon”目录下,这里有许多.plist文件。这些程序会在设备启动时率先启动,也就是说具备Root权限,可以启动其他应用。从Mac OS 10.4开始,苹果就采用Launch来管理整个操作系统的Services和Processes。

Evasi0n通过Libimobiledevice发现了iOS系统的一个移动备份漏洞,可以进入某个本该无法进入的设置选项,并在这个Time zone文件插入一个Symbolic Link,它会连接到某个接口,使之可以与Launch Daemon进行交流。这就意味着,当iOS设备进行备份时,就会自动让所有程序和文件都能访问Time zone,这样就将系统中的访问请求转移到了其他指定的位置,由此将越狱程序通过Symbolic Link连接到Time zone,让所有程序可以连接Launch Daemon。

绕过Code-signing

苹果用户都知道,如果你的iOS设备没有越狱,那么是无法安装破解版本的软件的。这主要是iOS拥有一个名为Code-signing的安全保障机制,它可以阻止非授权应用访问Launch。

在iOS设备上运行的代码都需要通过苹果的审核,并附带上有效的签名。一般开发者开发的程序,在正式到App Store之前,都需要使用苹果颁发的证书进行签名,然后由苹果进行审核,审核成功之后,苹果会对程序进行一次签名。

Evasi0n创建了一个没有代码的新应用,当用户启动这个新应用,它会利用Unix的Shebang获取已获签名认证的应用代码,从而通过Code-signing的审查。此后,它就可以再调用上文提到的Launch执行Root级的命令了,Evad3rs通过这种方式,来对RFS(Root文件系统)的只读权限使用remount命令变为可写,从而达到每次启动设备时都可以运行更改后的程序命令,从而实现越狱的永久性,即完美越狱。

破解AMFID防护机制

在iOS的系统内核中,还有一层名为AMFID(Apple Mobile File Integrity Daemon)的防护机制,它是用来监测移动文件完整性的守护进程。AMFID会校验代码签名,防止非授权应用的运行。

Evasi0n利用launchd.conf文件,在AMFID内部加载一个Library,每当AMFID开始验证代码签名时,同时运行的Library功能会帮助应用返回一个“Approved”的肯定回答。

通过异常处理向量萃取内核地址

除了内核级的应用签名之外,苹果为了防止黑客在内核级的内存中随意修改,iOS还有最后一道名为ASLR(Address Space Layout Randomization,地址空间布局随机化)的防护功能,当系统加载时,ASLR会利用随机方式配置资料地址,防止某些内容总是存储在内存的特定部分,不让攻击者寻找规律。

Evad3rs团队使用了ARM exception vector(异常处理向量)这个核武器,模拟出异常情况,等待ARM异常向量给出崩溃的内存地址,从而拿到足够多的信息,即系统核心内存的配置信息,这样整个内核的内容也就被抓到了。

夺取内核控制权

搞定ASLR之后,Evad3rs利用iOS连接USB的一个漏洞,把内核内存的某个地址传给一个应用,而应用返回来的内容就可以用来改写这部分内存地址,这样Evad3rs就可以修改内核任何部分的内容了。对于Evad3rs这样的团队来说,当拿到内核的权限之后,整个系统自然就是一个不设防的城池……

上一篇:六盘山地区柠条露天营养杯育苗技术 下一篇:彭阳县集体林权制度改革探讨