通过对网络流量进行分析,可以帮助我们分析 App 的网络行为。Wireshark, TcpDump, Burpsuite, SSL Kill switch 都是常用的分析工具。
Wireshark
通过设备连接到 Mac 的共享 Wifi,再通过 Wireshark 可以进行定向的 IP 抓包,但是如果网络状况不好,可能出现丢包的现象。
例如,命令:
1 | ip.src==192.168.2.9 or ip.dst==192.168.2.9 |
可以抓到设备的网络请求。
TcpDump
通过 Cydia 安装后,通过 SSH 执行命令:
1 | tcpdump -i en0 -w /tmp/capture.pcap |
操作完成后,可以在 /tmp 目录下看到生成的 capture.pcap 文件:
将其导出到 Mac 上,即可以用 Wireshark 查看。
Burpsuite
Burpsuite 是一款可以创建代理,并通过代理进行网络拦截的软件。
Http
打开 Burpsuite 后,操作路径:
1 | Proxy -> Options -> Edit -> Binding -> All interfaces |
这一步是由于我们要让设备连接到代理从而监听,因此要监听所有的 interfaces :
然后切换到 Certificate 并点击 OK :
然后切换到 Intercept 确保其是 off 状态,免得被转发的包所困扰:
完成后,在设备上设置代理:
然后,操作想要监控的 App,既可以得到其 Http 网络交互包:
Https
上面的流程,对于 Https 的网络请求是不行的,因为没有对应的证书,例如,在设备上打不开百度首页。
解决办法是,让设备安装 Burpsuite 的自生成证书,首先,设备访问 http://burp ,点击右上角的证书。
安装证书:
接着到,设置->通用->关于->Certificate Trust Settings 下面信任证书:
然后,操作想要监控的 App,既可以得到其 Https 网络交互包:
SSL Kill switch
从 Burpsuite 使用中可以看出, Https 是会遭受中间人攻击的,例如,一个代理,冒充设备与服务端交互,又冒充服务端与设备交互,从中窃取信息。为了规避中间人共计,有些 App 采用了将证书硬编码到代码中的方式。例如,上面 Burpsuite 的方式,App Store 就无法获取到信息。
但是我们仍然可以通过 Runtime 的特性来绕开其判断的方法,例如 fishhook,iOS SSL Kill Switch 正是一个这样的工具。
下载其 Release 包,并发布到设备上,流程参考:iOS-Security[8]-插件开发。
确保设备上安装了:
- dpkg
- MobileSubstrate
- PreferenceLoader
安装命令:
1 | dpkg -i com.nablac0d3.SSLKillSwitch2_0.11.deb |
完成后,可以在设置中看到:
打开开关:
App Store 可以正常使用了。