1. 问题说明

客户端程序如果没有自校验机制的话,攻击者可能会通过篡改客户端程序窃取手机用户的隐私信息。所以在 IOS 基础项测试中往往会对 IOS APP 进行应用完整性的检查,以防止他人修改 APP 内容造成危害。

2. ipa应用完整性检查

2.1 准备

  • 一台越狱的 IOS 手机
  • 电脑上安装 PP 助手(其他连接软件也可以,如爱思助手)
  • ipa 文件(即 IOS 上的软件安装包,没有的话也可以导出)

2.2 修改文件

首先找到目标 APP,将其导出

image.png

等待一段时间后,看到 APP 已被导出,IOS 的安装包是以 ipa 结尾

image.png

接下来我们需要对安装包内的内容进行修改,可以是删除相关的图片或者修改相关的文字,这里我们修改 info.plist 文件,先把该文件解压出来,将其修改后再重新放入压缩包中。

image.png

而修改 plist 文件时使用记事本等会有乱码的问题,所以这里我们需要用到 plistEditor 这个软件,下面我附上该软件。

plistEditor.zip

这里我们把该软件的名字改为 XXX TEST

image.png

2.3 重新安装

替换掉原来的 info.plist

image.png

之后将原 APP 先删除(也可不删除,一般安装后会覆盖原 APP),再通过 pp 助手安装修改后的 APP 文件
image.png

image.png

2.4 检验完整性

打开修改文件后重新安装的 APP,看是否能够正常使用,如果存在闪退,网络连接失败等问题则说明存在完整性校验问题

image.png

3. 另外的方法

3.1 通过 PP 助手修改

这里还有一种简单的方法就是直接通过 pp 助手修改后面的 info.plist 文件,再导出文件,在删除原 app 后重新安装修改后的 ipa 文件
image.png

3.2 通过 ssh 连接修改

首先需要一个 ssh 连接的软件,可以是 Xshell,Putty 等,这里我使用的是一款我自认为是神器的软件— MobaXterm,Mac 端推荐 FinalShell。
这里我也直接附上安装包MobaXterm_Installer_v12.0.zip

手机打开 Cydia 软件,在主页下方找到 「OpenSSH 访问教程」,其主要内容为:

  1. 安装 OpenSSH,可以直接点击 OpenSSH 蓝色字体进行安装
  2. 手机和电脑在同一 wifi 下

image.png
image.png

  1. 使用 MobaXterm 连接手机,账号是「root」,密码是「alpine」。

image.png

  1. 可以通过 ps aux | grep '\.app'来查看 APP 位置,而我们从上面 PP 助手可以看到 APP 的路径在 /var/mobile/Containers/Bundle/Application/

image.png

  1. 修改文件后(也可以将文件导出修改后再导入),重启手机,发现 APP 名字已被修改

4. 修复建议

应用在提交给 Apple Store 后其可执行文件会被修改,所以开发时不能将自身 hash 硬编码进程序中,建议应用通过对关键文件进行服务端 hash 校验的方式判断是否被篡改。