进行手机软件接口数据检查、移动端网页登录调试或者核对请求参数的时候,经常会碰见BurpSuite怎么抓手机流量,以及BurpSuite手机证书安装后为什么还是抓不到这两个让人头疼的问题,其实手机抓包的工作并不是只把一个证书装上就能大功告成,这当中至少要让三个基础条件同时成立才行。
一、BurpSuite怎么抓手机流量
关于BurpSuite抓取手机数据流量的底层思路,无非就是让手机把网络请求直接转发给电脑里运行的代理服务,然后由电脑负责接收这些来自手机的请求,再把请求顺手转交给目标服务器,所以大家在配置的时候千万不要死盯着手机证书这一个地方,把代理监听先设置好才是第一步。
1、配置BurpSuite代理监听
我们要先在BurpSuite软件里依次点击【Settings】→【Tools】→【Proxy】,然后在里面找到【Proxy listeners】这个功能列表,去新建或者修改一个用来听流量的端口。
这个端口数值选8080或者8082等其他没被电脑别的程序占用的数字都可以,不过最关键的一点是【Bind to address】绝对不能光勾选127.0.0.1,必须把它改成【All interfaces】。
2、配置手机Wi-Fi代理
我们需要把手机和电脑同时连在同一个局域网里面,要先在电脑的命令行或者网络设置里查一下局域网IP地址,比如查到的是192.168.1.23,然后就可以去手机的无线网络设置里面,把原本自动的代理模式手动切换成手动填写的模式。
3、安装BurpSuite CA证书
当我们的代理都配置稳妥之后,就可以用手机上的浏览器去访问http://burpsuite这个网址,从而把BurpSuite CA证书下载下来。
(1)苹果手机在下载完毕后绝对不能只把操作停留在“已下载描述文件”这一个提示上,我们还必须亲自进入手机的【设置】去执行描述文件的安装,紧接着还要在【设置】→【通用】→【关于本机】→【证书信任设置】的路径里面,手动把Portswigger CA的完全信任开关给勾选打开才行。
(2)安卓系统的证书安装路径,它往往会因为手机系统版本的差异、各个手机厂商定制的系统ROM不同以及模拟器环境的变化而发生变动。另外因为BurpSuite每次安装或者换电脑都会生成它自己特有的CA证书来对HTTPS流量进行解密处理,所以一旦我们更换了电脑、重新调整了BurpSuite的配置或者点击过重新生成CA证书的按钮,手机端就必须要把对应的全新证书给重新安装一遍。
二、BurpSuite手机证书安装后为什么还是抓不到
很多人经常遇到证书明明装好了却依然抓不到包的情况,其实这时候常见的原因往往不是证书文件本身坏了,反而是网络代理压根就没走通。我们在排查这些故障的时候,完全可以按照“看有没有流量记录、测HTTP能不能抓、瞧HTTPS是不是报错、检查软件是不是单独失败”这样的先后顺序来进行逐步推断。
1、BurpSuite里完全没有请求记录
如果我们发现在【Proxy】→【HTTP history】这个历史表格里面连一条来自手机的请求都看不到,这就足以说明问题大半是出在代理的链路传输上。这时候我们需要仔细检查一下手机Wi-Fi代理里填写的IP是不是真的属于电脑的局域网IP,填的端口和BurpSuite里正在监听的端口到底对不对得上,手机和电脑有没有真正处于同一个网络网络之下。
2、能看到请求但HTTPS打不开
如果我们在软件里能看到HTTP请求跳出来,但是手机在打开HTTPS页面时却一直提示证书错误,这就说明网络代理的链路其实已经通了,矛盾现在集中在证书信任这一个环节上,在苹果系统里大家最容易漏掉的就是“完全信任”这最后一步,光安装了描述文件可不等于系统已经信任了该证书。而在安卓系统里,大家则需要反复确认自己安装进去的是不是CA证书,而不是把普通的证书文件随随便便点开、最后导致它根本没被系统用于网络安全的信任体系中。
3、浏览器能抓,App抓不到
要是手机自带的浏览器可以正常抓到HTTPS的数据,但是一换到某个特定的软件上就什么都抓不到了,这通常就不是BurpSuite的基础配置有什么问题了,而是软件自己加了证书校验的限制,自从安卓7版本之后,许多软件在默认情况下都是不信任由用户自己安装的第三方CA证书的;甚至还有一些软件会采用SSL Pinning这种技术,也就是它们只去信任自己内部写死或者指定的证书链。
三、手机抓包不稳定还要检查哪些细节
在进行手机抓包的时候,最让人头疼的就是只改动了一个不起眼的地方就去反反复复地盲目重试,比较稳妥且不容易出错的做法是进行分层式的排查:第一步先看手机能不能顺利访问到BurpSuite,第二步去抓普通的HTTP流量,第三步再用浏览器打开HTTPS页面试试,最后才去对付目标软件,这样一步步来,就能非常快地弄清楚到底是卡在具体哪一层了。
1、检查手机能不能访问BurpSuite
当我们在手机上配置好了代理之后,可以先打开手机里的浏览器去访问http://burpsuite这个地址,如果页面能够顺利把证书下载页显示出来,就证明从手机到电脑BurpSuite的网络路途是畅通无阻的;反之,要是这个网页怎么都打不开,大家就先不要在证书上面白费力气了,应该立刻回过头去检查IP地址、端口号、防火墙设置、监听地址以及网络有没有被隔离。
2、检查是否被VPN或其他代理抢走
如果手机里面正开启着VPN、游戏加速器、公司的安全客户端或者是其他的代理软件,那么网络流量很可能就根本不会去走Wi-Fi里面手动设置的代理了,特别需要注意的是,某些软件内部自己就带有代理功能、或者是直接连接固定的域名、甚至强制去走QUIC或者一些特殊的传输通道,这时候BurpSuite自然就没办法看到完整的请求数据了。
想要排查这个问题,我们可以先把手机里的VPN、代理工具还有加速器全部手动关闭掉,只用系统自带的浏览器去随便访问一个普通的HTTPS网站看看情况,等到确认了浏览器确实能够抓到包之后,再把目标软件打开进行测试。
3、检查Intercept状态和过滤条件
有些时候其实并不是软件没有抓到手机的请求,而是这些请求全被拦截在了【Intercept】这个功能选项里面,或者是因为我们在【HTTP history】历史记录里不小心设置了什么过滤的条件,所以界面上看起来就像是完全没有抓到记录一样。
遇到这种情况,我们可以先去把【Intercept is on】这个亮着的按钮切换成【Intercept is off】的状态,好让所有的请求都能直接放行通过,然后再去【HTTP history】里面仔细瞧瞧。。
总结
关于BurpSuite怎么抓手机流量,以及BurpSuite手机证书安装后为什么还是抓不到的这些疑问,解决的核心关键往往不在于孤立地去安装一个证书,而是必须把网络代理、端口监听、证书信任还有软件自身的校验这几个不同的层面拆分开来逐一去排除故障。要是发现证书明明装上去了却还是抓不到东西,大家首先就得去看看HTTP history里面到底有没有请求痕迹,如果连一条痕迹都没有,那就去查网络代理链路通不通。
