转载

iOS抓包(使用BurpSuite和tcpdump)

Introduce

开发过程中我们经常会需要对网络请求抓包,本次介绍的是使用BurpSuite抓取HTTP/HTTPS包,以及不越狱使用tcpdump抓取iPhone的网络包。

使用BurpSuite对HTTP/HTTPS抓包

开发中我们经常会需要对HTTP/HTTPS请求进行抓包。

抓包实际上是在中间机器开了一个代理服务,让需要抓包的请求经过代理,我们就可以看到这些请求了。本质上是中间人攻击。

BurpSuite是一个常用的调试工具。

1. 下载BurpSuite

从 BurpSuite 官网下载jar包,右键点击,运行:

iOS抓包(使用BurpSuite和tcpdump)

2. Burp设置

先从菜单Burp->Remember settings中检查是否All options都记录设置了,以便下次打开不用重新配置:

iOS抓包(使用BurpSuite和tcpdump)

在选项卡的Proxy->Options中,选择代理规则,点击Edit:

iOS抓包(使用BurpSuite和tcpdump)

在弹出的对话框中选择All interfaces,再点击OK,来监听所有的网卡:

iOS抓包(使用BurpSuite和tcpdump)

至此已经可以通过代理来监听手机的HTTP请求了。现在我们再制作CA让手机信任,来解密被加密的HTTPS请求。

回到选项卡的Proxy->Options中,重新生成证书,以防被拥有相同的证书的人中间人攻击。生成后需要重启Burp:

iOS抓包(使用BurpSuite和tcpdump)

重启Burp后,回到选项卡的Proxy->Options中,导出证书为Der格式:

iOS抓包(使用BurpSuite和tcpdump)

然后将Der证书通过HTTP服务器或邮件发给手机,在手机上安装证书:

iOS抓包(使用BurpSuite和tcpdump) iOS抓包(使用BurpSuite和tcpdump) iOS抓包(使用BurpSuite和tcpdump)

第一次用,先关闭排除规则,抓取全部的包。在Proxy->Intercept选项卡中,点击按钮,使其显示‘Intercept is off’:

iOS抓包(使用BurpSuite和tcpdump)

3. 设置手机/模拟器代理

先看下Mac的网卡地址:

iOS抓包(使用BurpSuite和tcpdump)

然后在手机的wifi详情中设置手动代理:

iOS抓包(使用BurpSuite和tcpdump)

如果是模拟器,在网卡的高级设置中,设置HTTP和HTTPS代理为127.0.0.1:8080:

iOS抓包(使用BurpSuite和tcpdump)

在手机或模拟器中发送请求,然后在Burp选项卡的Proxy->HTTP history中可以查看到结果:

iOS抓包(使用BurpSuite和tcpdump)

4. 测试完成后删除手机的Der

不删除一旦私钥泄露会被中间人攻击,保险起见,调试完就赶紧从手机删掉证书。

在系统设置->通用->描述文件中找到刚才安装的证书,然后删除:

iOS抓包(使用BurpSuite和tcpdump) iOS抓包(使用BurpSuite和tcpdump)

使用tcpdump抓包

我们经常会用tcpdump抓取各种协议的网络包。iOS5之后,可以使用Remote Virtual Interface(RVI)建立虚拟网卡进行抓包,好处是:

  • 新版的Macbook/Air/Pro只有一块Wifi,没有RJ45接口,我们用USB线连接手机就可以完成抓包。
  • 使用RVI不管是蜂窝数据还是Wifi,网络报文都能抓的到,而以往用Wifi把流量导入电脑抓包无法抓取蜂窝数据下的报文。

1. 建立RVI

首先将手机用数据线连接到电脑。

使用ifconfig -l命令查看当前网卡:

$ ifconfig -l lo0 gif0 stf0 en0 en1 en2 p2p0 awdl0 bridge0 en4 

查看手机的udid,然后使用rvictl命令建立rvi:

$ rvictl -s a1fad5xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxc60b Starting device a1fad59f135e2cd8f7dda951a15c01cd2220c60b [SUCCEEDED] with interface rvi0 

再次使用ifconfig -l查看网卡:

$ ifconfig -l lo0 gif0 stf0 en0 en1 en2 p2p0 awdl0 bridge0 en4 rvi0 

我们发现多出了一个rvi0,这个就是新建立的rvi。

2. 抓包

$ sudo tcpdump -i rvi0 -w trace.pcap 

然后在手机上进行操作,操作结束后在terminal里按control+c,结束抓包。然后trace.pcap就是生成的抓包记录。

之后断开rvi连接:

$ rvictl -s a1fad5xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxc60b Stopping device a1fad59f135e2cd8f7dda951a15c01cd2220c60b [SUCCEEDED] 

我们可以将pcap文件转换成纯文本格式查看:

tcpdump -n -e -x -vvv -r trace.pcap > trace.txt 

不过一般还是用wireshark直接打开pcap文件查看比较方便。

Over

原文  http://openfibers.github.io/blog/2016/03/18/debug-ios-traffic/
正文到此结束
Loading...