关于iOS11的HTTPS抓包演示(Charles&Burp)

iOS的抓包对于调试移动端,或者搜寻iOS应用的流信息非常关键。本文通过Charles和Burp来演示抓取iOS11的HTTPS来演示。

Charles抓包

通常在iOS的wifi代理中设置了开启Charles的Mac主机以及端口号,在Charles就能抓取iOS的数据。如下图所示。

但是如果涉及到一些https连接的时候,比如访问百度,就会出现红框框。非常简单的说是因为https连接在常规上无法在通讯过程被截取。

那么我们可以通过信任一个Charles的证书,来截取https。

安装证书

点击Charles的顶部菜单栏中的Help=>SSL Proxying=>Install Charles Root Certificate On a Mobile Device or Remote Browser

他会告诉你,首先你要把你的手机的wifi设置的代理设置成你安装Charles的Mac的IP地址,然后端口设置成Charles监听的HTTP端口
然后,然后在这台设备上浏览chls.pro/ssl(每个人都一样),取安装一个证书。

So,你要在手机上用Safari浏览器浏览它:

  1. 此时此刻,理论上它会弹出一个框,告诉你我要显示一个配置描述文件,你当然就是允许它啦(下图1)。
  2. 然后会展示你将要安装的描述文件概述(下图2)。
  3. 如果你手机设置密码,就要输入密码(下图3)。
  4. 安装完成后如下图4所示。

信任根证书

如果你以为到这一步就算完,那么你还会继续在Charles中看到无尽的红色框框。
原因是这个证书只是被安装了,但还没有被根证书启用完全信任,简单来说就是,这个证书的权限还不够,要完全信任才能拿到完整的权限(包括截取https的权限)。

所以你需要打开系统的设置=>通用=>关于本机=>证书信任设置(拉到最下面)=>信任该证书
进入如下图所示的页面,对刚刚安装的Charles进行信任。

设置需要抓取的HTTPS网站

然后,此时此刻,你的手机已经具备了抓取HTTPS的能力了。
但是你需要在Mac的Charles中设置,我们系统最终要抓取哪一些HTTPS网站。
点击Charles 的顶部菜单栏中的Proxy=>SSL Proxying Settings

首先勾选Enable SSL Proxying,代表你要启用抓取Https的功能。

然后点击下面的Add添加你要抓取的HTTPS网站,可以使用通配符
例如,我要抓去所有的使用HTTPS的百度页面,可以在Host中写入*.baidu.com,然后Port写入443(一般HTTPS网站都是443端口),点击ok就行。

如果你想简单粗暴一点,可以在Host中写*,然后Port写入443。代表抓取所有的https连接。

然后点击ok,那么就可以抓取HTTPS连接了。

Enjoy it~

Ps. iOS9因为ATS的安全限制未开放根证书信任的原因,不能抓取HTTPS。

Burp抓包

现在来讲一下Burp的抓包(Burp改请求真的是贼好用哈哈哈!)

添加手机端的监听设置

进入Proxy=>Options,查看现在的监听接口,发现现在只是监听127.0.0.1:8080,说明只接受Mac本机的监听。我们要添加手机端的监听,点击左边的Add按钮。

首先在Bind to port写入8080,表示监听8080端口。然后下面Bind to address中选择第三个Specific address,然后在下拉框中选择你的Mac在当前局域网的IP地址,表示我们新增一个接口,监听来自当前局域网的请求,点击OK。

退出就能看到2个了。

这就算配置完对手机端监听的添加设置。

安装Burp根证书

在iOS的设置=>wifi设置=>HTTP配置代理=>手动,然后服务器填入装有Burp的Mac机的IP地址,端口填写上面看到的端口(我这里是8080).
然后,要在手机上用Safari浏览器浏览地址http://burp:

  1. 此时此刻,理论上它会出现一个页面,请放大,点击顶部右上角的CA Certificate按钮(下图1)。
  2. 然后网站会告诉你我要显示一个配置描述文件,你当然就是允许它啦(下图2)。
  3. 然后会展示你将要安装的描述文件概述(下图3)。
  4. 如果你手机设置密码,就要输入密码(下图4)。
  5. 安装完成后会自动回到页面。

信任根证书

如果你以为到这一步就算完,那么你还是无法在Burp中看到HTTPS的信息。
原因是这个证书只是被安装了,但还没有被根证书启用完全信任,简单来说就是,这个证书的权限还不够,要完全信任才能拿到完整的权限(包括截取https的权限)。

所以你需要打开系统的设置=>通用=>关于本机=>证书信任设置(拉到最下面)=>信任该证书
进入如下图所示的页面,对刚刚安装的PortSwigger SA进行信任。

你回到Burp,看到Proxy=>Intercept已经能够拦截HTTPS请求,并且内容不是乱码,可以对Params进行修改了。

Enjoy it~

Ps1.如果你想在Mac本机进行HTTPS抓包,同样先浏览http://burp进行证书安装,然后在钥匙串访问.app中对该证书进行完全信任,然后把系统代理设置成127.0.0.1:8080就可以抓包了。
Ps2. iOS9因为ATS的安全限制未开放根证书信任的原因,不能抓取HTTPS。

原理解释

抓包工具其实就是实行了一次由用户发起的中间人攻击(man-in-the-middle, 本博客前面关于ettercap的文章就是使用这个原理进行渗透)。
简单来讲,对于你的浏览器,抓包工具会伪装成一个请求目标的HTTPS服务器,而在真正的请求目标的HTTPS服务器面前,抓包工具又会伪装成一个浏览器。抓包工具为了伪装成一个服务器,它会自己动态的生成HTTPS证书。(摘自Fiddler的第一个Q&A

其他推荐

  • Windows: 可以使用Fiddler
  • iOS单机:推荐使用Thor