固定iOS设备中的IPA证据

download

IPA简介

类似于安卓上的APK安装包,IPA文件本质是zip压缩包,包含一个ARM平台可执行文件和音乐、图片等资源文件,可以将.ipa后缀改成.zip查看包内容。

出于对IPA证据的功能性分析鉴定目的,对IPA文件进行证据固定。

IPA类型

在取证和鉴定工作中由于固定方法不同,IPA包含的内容会产生巨大的差异,例如固定的IPA如果没有砸壳解密可执行文件,或者存在一些AppleID信息,后续会产生一些无法修正的问题。

所以现在将不同类型的IPA文件分类并总结固定方法。

类型一 官方IPA包

官方包就是直接从苹果商店下载下来的包,通常情况下会包含Payload、iTunesMetadata.plist、iTunesArtwork、META-INF四种文件,以TikTok为例解压查看包内容。

image-20230208015006517

Payload:里面只有一个以“应用名.app”命名的文件夹,是软件的主程序,这个文件夹在IPA安装时会被移动到/var/containers/Bundle/Application/XXXX-XXX-XX/下,里面的内容很乱,图片视频什么都有。

image-20230207232440608

将文件按大小降序,一般第一个就是可执行文件,它的名字和应用名相同,苹果为了控制数字版权(FairPlay DRM),会将这个文件加密,类似于安卓的加壳。

image-20230207232823494

把它拖到IDA,提示文件已加密。

image-20230207234643705

iTunesMetadata.plist:为了控制数字版权,控制对单个Apple ID重新分发,IPA中最上层目录的iTunesMetadata.plist文件会记录此IPA购买者的身份信息、应用信息等,包括APPLE ID(邮箱手机号)、用户名、应用名、版本号、版本ID等,取证信息量丰富。

image-20230207234955172

iTunesArtwork:应用图标的高清大图,尺寸600x600,后缀添加.png即可查看。

image-20230207235553265

META-INF:元数据?两个二进制文件。

固定方法

适用场景:

1.目标应用没有在应用商店下架,可以正常下载。

2.目标应用已下架但是在AppleID的已购项目中可以找到并且下载。

需要检材:涉案AppleID或者委托方提供的AppleID。

使用工具:iTunes v12.6.5.3,最后一个可以下载应用的版本。

1
2
3
4
##官方下载地址64位(推荐)
https://secure-appldnld.apple.com/itunes12/091-87819-20180912-69177170-B085-11E8-B6AB-C1D03409AD2A6/iTunes64Setup.exe
##官方下载地址32位
https://secure-appldnld.apple.com/itunes12/091-87820-20180912-69177170-B085-11E8-B6AB-C1D03409AD2A5/iTunesSetup.exe

打开iTunes v12.6.5.3,登录AppleID。

image-20230208001814186

进入应用商店页面

image-20230208002144745

搜索目标应用并且下载

image-20230208002449817

查看资料库文件。

image-20230208002618356

定位IPA位置,在C:\Users\用户名\Music\iTunes\iTunes Media\Mobile Applications底下。

image-20230208003004630

计算一下IPA哈希值,由于IPA中记录了不同AppleID信息,所以不同账号下载的IPA哈希值也不同。

安装方法

爱思助手导入IPA安装,显示类型为苹果正版,主流iPhone都能装上。

image-20230208225552864

注意事项

如此固定的IPA安装后,需要登录固定时用的AppleID才能使用,否则这个IPA没有作用。

image-20230208005954051

所以为了保证账号连续可用,请不要用淘宝买的共享AppleID,由于IPA中存有隐私信息,也不要使用私人AppleID!还需要及时提醒委托方修改涉案AppleID的绑定信息,保证以后可用。

类型二 硬拉IPA包

硬拉版IPA包意思是仅将安装目录/var/containers/Bundle/Application/XXXX-XXX-XX/下的“应用名.app”复制出来,外面套个Payload文件夹,然后压缩成ZIP包,后缀改成IPA。

像爱思助手或者一些商业取证软件可以自动实现上述步骤,前提是手机先越狱,或者让商业取证软件在拉取时自动提权。

固定方法

适用场景:目标应用已经完全不能下载,但是检材手机上安装了还在,并且手机已经越狱。

使用工具:爱思助手

找到爱思助手的备份功能。

image-20230210012737841

备份结果如下

image-20230210012809237

安装方法

爱思助手导入安装。

image-20230210013022990

比对官方包和硬拉包

解压出官方包和硬拉包IPA中的.app目录进行比对,不同之处仅在于硬拉包中的SC_Info目录写入了一些文件。

image-20230210013227103

注意事项

这种方法实现了应用的备份,可以让APP卸载后还能恢复回来。但是很难装到别的手机上,因为不修改IPA的一些文件的话,会有机型和iOS版本限制,并且也需要AppleID存活,有时候装上了也用不了,会频繁闪退。

还有一个缺点,硬拉下来的IPA包的二进制文件是加密的,没办法实现代码分析,经过测试,这种方法是不推荐的,最好不要用,只知道这种类型就好。

类型三 脱壳IPA包

脱壳IPA包和硬拉IPA相比,脱壳IPA包的二进制文件是解密过的,可以进行重新签名安装到其他手机,并且我用trollstore测试安装砸壳IPA包几乎没出现过问题。

解密后的二进制文件可以直接使用IDA分析,操作空间比较大。固定后也不再需要AppleID参与,是我认为比较好的固定方法。

固定方法一

适用场景:

1.目标应用没有在应用商店下架,可以正常下载。

2.目标应用已下架但是在AppleID的已购项目中可以找到并且下载。

使用工具:frida-ios-dump、MacOS的电脑、越狱的iPhone测试手机

1
2
##frida-ios-dump代码仓库
https://github.com/AloneMonkey/frida-ios-dump

首先参照公众号上两篇文章越狱iPhone测试手机并安装Frida Server

1
2
3
4
##《iOS15.0-16.3越狱 (A8-A11)》
https://mp.weixin.qq.com/s/WACcmnvNBAanlWJzT2dy2A
##《两种方法在iOS上安装Frida Server》
https://mp.weixin.qq.com/s/MRkepGP2F2fBPPbBmC4QSg

使用委托方提供的AppleID登陆测试手机的应用商店下载目标应用

image-20230210040318548

去frida-ios-dump代码仓库下载

image-20230210033617349

解压ZIP,进入命令行

image-20230210041937262

安装依赖环境

1
sudo pip install -r requirements.txt --upgrade

image-20230210042023079

USB连接iPhone测试机,转发端口

1
iproxy 2222 22

image-20230210042139593

手动打开需要脱壳的APP,开始脱壳

1
2
##./dump.py 应用名
./dump.py Stream

固定方法二

适用场景:同上,只是工具不同。

使用工具:CrackerXI

1
2
##Cydia插件源地址
http://cydia.iphonecake.com

安装方法

注意事项

总结

取证鉴定中AppStore的应用有很强的时效性,一点风吹草动很有可能会直接导致目标APP突然死亡,所以要把握好固定的时机,一般下架之后App的鉴定难度会增大或者做不了。固定前可以多找几部手机模拟当前情况进行测试,确保固定过程万无一失。提前确定好IPA固定的目的,维护好检材AppleID,达到可持续鉴定的效果。保护好取证鉴定人员隐私,不使用私人AppleID和手机号码,不能涉及任何真实信息。

加密的二进制文件可以用静态脱壳工具Clutch等,通过主动调用iOS解密对二进制解密,或者已知了加密算法对其解密,但是使用条件有点苛刻,我测了很多次都没成功,就放弃了静态砸壳这条路,不好的地方请私信我改正~