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)。 - 然后会展示你将要安装的描述文件概述(下图2)。
- 如果你手机设置密码,就要输入密码(下图3)。
- 安装完成后如下图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
:
- 此时此刻,理论上它会出现一个页面,请放大,点击
顶部
右上角的CA Certificate
按钮(下图1)。 - 然后网站会告诉你
我要显示一个配置描述文件
,你当然就是允许
它啦(下图2)。 - 然后会展示你将要安装的描述文件概述(下图3)。
- 如果你手机设置密码,就要输入密码(下图4)。
- 安装完成后会自动回到页面。
信任根证书
如果你以为到这一步就算完,那么你还是无法在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