iOS-Security[11]-网络请求

通过对网络流量进行分析,可以帮助我们分析 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

可以抓到设备的网络请求。

iOS-Security-Network-Wireshark

TcpDump

通过 Cydia 安装后,通过 SSH 执行命令:

1
tcpdump -i en0 -w /tmp/capture.pcap

操作完成后,可以在 /tmp 目录下看到生成的 capture.pcap 文件:

iOS-Security-Network-TcpDump

将其导出到 Mac 上,即可以用 Wireshark 查看。

Burpsuite

Burpsuite 是一款可以创建代理,并通过代理进行网络拦截的软件。

Http

打开 Burpsuite 后,操作路径:

1
Proxy -> Options -> Edit -> Binding -> All interfaces

这一步是由于我们要让设备连接到代理从而监听,因此要监听所有的 interfaces :

iOS-Security-Network-Burp-Proxy

然后切换到 Certificate 并点击 OK :

iOS-Security-Network-Burp-Proxy-Certificate

然后切换到 Intercept 确保其是 off 状态,免得被转发的包所困扰:

iOS-Security-Network-Burp-Proxy-Intercept

完成后,在设备上设置代理:

iOS-Security-Network-Burp-Proxy-Device

然后,操作想要监控的 App,既可以得到其 Http 网络交互包:

iOS-Security-Network-Burp-Proxy-Result

Https

上面的流程,对于 Https 的网络请求是不行的,因为没有对应的证书,例如,在设备上打不开百度首页。

解决办法是,让设备安装 Burpsuite 的自生成证书,首先,设备访问 http://burp ,点击右上角的证书。

iOS-Security-Network-Burp-Proxy-Https-Install

安装证书:

iOS-Security-Network-Burp-Proxy-Https-Cer

接着到,设置->通用->关于->Certificate Trust Settings 下面信任证书:

iOS-Security-Network-Burp-Proxy-Https-Trust

然后,操作想要监控的 App,既可以得到其 Https 网络交互包:

iOS-Security-Network-Burp-Proxy-Https-Result

SSL Kill switch

从 Burpsuite 使用中可以看出, Https 是会遭受中间人攻击的,例如,一个代理,冒充设备与服务端交互,又冒充服务端与设备交互,从中窃取信息。为了规避中间人共计,有些 App 采用了将证书硬编码到代码中的方式。例如,上面 Burpsuite 的方式,App Store 就无法获取到信息。

iOS-Security-Network-Disable

但是我们仍然可以通过 Runtime 的特性来绕开其判断的方法,例如 fishhook,iOS SSL Kill Switch 正是一个这样的工具。

下载其 Release 包,并发布到设备上,流程参考:iOS-Security[8]-插件开发

确保设备上安装了:

  • dpkg
  • MobileSubstrate
  • PreferenceLoader

安装命令:

1
2
dpkg -i com.nablac0d3.SSLKillSwitch2_0.11.deb 
killall SpringBoard

iOS-Security-Network-SSLKill-Install

完成后,可以在设置中看到:

iOS-Security-Network-SSLKill-Setting

打开开关:

iOS-Security-Network-SSLKill-Open

App Store 可以正常使用了。