Iphone取证(一)

  • A+
所属分类:逆向工程

越来越多的高帅富使用iphone,频频模仿陈老师在恶劣的环境下利用iphone进行各种自拍,小编做为一个使用电信冲话费送手机的极品屌丝,今天来介绍一下如何绕过iphone的密码限制,并中提取数据。

取证模式iPhone4的GSM模式,系统为iOS5。

目标:从iPhone中提取数据,并且不改变设备上的信息。

之前国外sogeti公司的实验室的研究人员之前发布了开源的取证工具(支持iOS5),下文会介绍一下该工具使用以及iphone取证的方法。

在iphone上取证涉及的步骤包括:

1:安装取证工具包
2:建立设备与计算机的通信
3:绕过iphone的密码限制
4:阅读加密的文件系统
5:恢复已删除的文件

想象一下,一个密码保护os级别的计算机,我们仍然可以启动一个liveCD访问,当我们取证iphone时,它是一个嵌入式设备,所以不容易拿到它硬盘的转储数据,执行iphone的取证,我们使用liveCD的方法。由于iPhone只有一个串口,我们要通过usb加载自定义的操作系统访问硬盘设备。这里的问题是:iphone只加载固件。

取证之前,我们首先要了解iphone操作系统级别的功能,iOS(前身为iPhone OS)是所有的iphone、ipod、苹果电视、ipd等设备上运行的操作系统。iOS是一个zip文件(扩展名为.ipsw),它包含引导装载程序、内核、系统软件、共享库和内置的应用程序。

一个iPhone启动时,它会有一个特定的顺序进行所有软件组件之间的RSA签名检查,如下图

Iphone取证(一)

bootrom是只读存储器(ROM),它是系统启动第一阶段的引导iOS设备,bootrom包含所有根证书签名检查。
iphone运行有3种模式-普通模式、恢复模式、DFU模式

在正常模式下,bootrom在开始会关闭一些初始化的东西,加载低级别的引导程序(LLB)并验证它的签名是否正常。之后加载第二阶段的引导程序(iBoot)。iBoot签名检查内核和设备树,而内核签名检查会遍历用户所有的应用程序。

在DFU模式下(固件的强制升降级模式),设备越狱等之类必须要进入DFU模式才能进行。在该模式下,iphone引导顺序如下图:


Iphone取证(一)

如何取证:

建立你一个自定义的Ramdisk
首先,我们将建立以个自定义的RAM磁盘,使用我们的取证工具和内核RAM磁盘签名检查,后面我们将使用越狱相关工具加载内核。

1:安装所有的依赖关系包

curl -O http://networkpx.googlecode.com/files/ldid
chmod +x ldid
sudo mv ldid /use/bin

2:下载LDID和OSXfuse,给予执行权限,并移动到/usr/bin目录

curl -O https://github.com/downloads/osxfuse/osxfuse/OSXFUSE-2.3.4.dmg
hdiutil mount OSXFUSE-2.3.4.dmg
sudo installer -pkg /Volumes/FUSE\for\OS\X\install\OSXFUSE\2.3.pkg -target /
hdiutil eject /Volumes/FUSE\for\OS\X/

sudo ARCHFLAGS='-arch i386-arch x86_64' easy_install pycrypto
sudo easy_install M2crypto construct progressbar

3:下载和安装python模块-pycrypto, M2crypto, construct和progressbar

hg close https://code.google.com/p/iphone-dataprotection/
cd iphone-dataprotection
make -C img3fs/

4:下载并安装Mercurial(http://mercurial.selenic.com/

curl -O -L https://sites.google.com/a/iphone-dev.com/files/home/redsn0w_mac_0.9.9b8.zip
unzip redsn0w_mac_0.9.9b5.zip
cp redsn0W_mac_0.9.9b5/redsn0W.app/Contents/MacOS/Keys.plist

5: 下载redsn0w来获取Ramdisk的加密密钥并解密

python python_scripts/kernel_patcher.py IOS5_IPSW_FOR_YOUR_DEVICE

6:内核打上补丁,如下:

sh ./make_ramdisk_n88ap.sh

上面的python脚本创建了一个内核的补丁和一个自定义的Ramdisk。注意:如果已经创建了打了补丁的内核和定制的iphone4的Ramdisk,你可以直接跳过上述的步骤,直接下载这些文件。

加载取证工具包

1:usb设备连接到计算机,并运行下面的命令,

./redsn0W_mac_0.9.9b5/redsn0w.app/Contents/MacOS/redsn0W -i
IOS5_IPSW_FOR_YOUR_DEVICE -r myramdisk.dmg -k kemnelcache.release.n88.patched

如果这个过程失败和无标识数据提示错误,请确保电脑主机连接到互联网,redsn0w完成后,在详细模式下启动ramdisk。

2:建立设备与计算机之间的通信,如下:

python usbmuxd-python-client/tcprelay.py -t 22:2222 1999:1999

一旦使用了定制的Ramdisk引导系统,网络功能(如Wi-Fi)模式是不能使用的,因此我们使用Tcprelay.py脚本开启2222端口来重定向22端口的流量,如下

ssh -p 2222 root@localhost
password:alpine

目前我们已经可以访问文件系统,但是iOS4默认有数据保护机制,当访问受保护的文件和keychain项目时,设备就会被锁定。该数据保护机制是基于硬件的加密和软件加密密钥一起使用的组合,每一个iPhone都包含一个特殊的硬件(AED processor)的密钥集(UID、GID),OS设备室无法读取到该密钥的。因此,为了访问受保护的文件,首先我们必须得绕过密码限制。

绕过iPhone的密码限制

從2009年的iPhone 3GS开始,苹果在手机中加入了一颗硬件加密芯片,不过最初并沒有投入使用。 去年伴随着iOS 4操作系统的推出,苹果终于启用了这项“数据保护”功能。 在iPhone 4/3GS、第三/四代iPod touch和iPad上,只要启用密码,所有数据都会通过256bit硬件加密进行存储。

最初(<iOS 4)的系统,密码是直接被存储在一个可以通过ssh直接删除的文件里面,iOS4之后推出数据保护机制,该密码无法删除。因此,未了对数据进行解密,必须提供有效的解锁密码。我们可以收集用户设备信息(序列号、UDID等),唯一的设备键值(keys 0×835 and 0x89B),然后通过彩虹表等来进行碰撞破解。

未完待续。

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: