做测试的人员不可能不知道数据抓包,只有抓包分析才能分析出问题和风险点出来,本文将各种协议下面的数据抓包的方法进行了汇总供大家参考
分析场景及问题
APP抓包是最常见到的数据抓包场景,对于APP的数据抓取分为HTTP和HTTPS两种协议,对于HTTP直接手机上设置代理抓取即可,但是对于HTTPS就比较复杂了,大家都知道HTTPS是通道安全的传输,要是能被代理抓到,这个协议本身就出问题了。
-
那么APP使用HTTPS协议咋样抓取呢?
-
智能设备咋样抓包呢?
-
智能设备走的是TCP/IP协议,并且智能设备没办法像APP一样可以设置网络代理,这个咋样抓取呢?
-
对于长连接的通信呢?
-
对于走的是BLE蓝牙协议的咋样抓取呢?
-
短信电话走的GSM协议,这个是不是有方法也可以抓取进行分析呢?
1. burpsuite
2. fiddler
3. charles
4. wireshark
5. tcpdump
6. hcitool、gatttool
其中
-
1、2、3、4、5都可以抓取http及https的协议
-
4、5是可以抓取tcp协议的
-
6是用于蓝牙协议分析的
在抓包中还有一些辅助类程序:
1. xposed框架及模块 (软件)
2. ProxyDroid(软件)
3. create_ap(https://github.com/oblique/create_ap)(软件)
4. ubertooth(硬件)
不同协议的抓取
1. 对于http协议
这个最为简单,只要将app设置为工具的代理地址就可抓取数据包
2. 对于https协议
这个需要导入代理工具的证书,导入后就可以抓取到手机中的https通信,但是对于app有个问题,app若是做了证书的强校验,就对导入的证书不信任,从而导致导入了根证书也是无法获取到https流量的,尤其是在安卓版本7.0以后,已经完全不信任用户导入的证书信息了,这个又是另一个问题。
先看强校验的解决方案:
-
hook方式
这个是反编译app后把强校验的函数更改或者去掉,比较麻烦
-
xposed方式
这个比较方便,需要做的就是root手机以及在手机上安装xposed框架,具体的安装方式网上有很多,需要注意的是需要找到和自己手机内核对应的版本
安装后xposed有个模块市场,里面有很多大神写的模块,为了抓取https的数据包,需要的是JustTrustMe,这个的原理就是把所有的强校验的函数统一hook,之后重启就能抓取https的数据包了
而对于高版本下面的抓包方案可以采用以下方式将证书导入到系统的根证书里面:
openssl x509 -inform PEM -subject_hash -in BurpCA.pem | head -1
cat BurpCA.pem > 9a5ba580.0
openssl x509 -inform PEM -text -in BurpCA.pem -out /dev/null >> 9a5ba580.0
adb root
abd remount
adb push 9a5ba580.0 /system/etc/security/cacerts/
adb shell "chmod 644 /system/etc/security/cacerts/9a5ba580.0"
adb shell "reboot
此时再次设置抓包工具带来,完成抓包
3. 对于tcp流
这个就没办法使用代理程序的方法进行抓取,比较通用的方式是搭建自己的AP,在AP上对流量进行抓取分析,但是有个问题,看到的流量的目的地址都是AP的地址,对于流量的分析是比较不利的
后来发现create_ap,这个配合wireshark和tcpdump简直神了
首先安装create_ap,很简单,直接make就行,安装好后,在主机上运行(测试了双网卡的ubuntu运行最为稳定):
create_ap wlp3s0 enp0s25 aptest test0987
就会开启一个aptest的热点,智能设备或者手机连接这个ap,主机上会增加一个网口,后面用wireshark或tcpdump就可以抓取到数据了,而且源ip是智能设备的ip,目的ip是云端服务器的ip,我记得这种ap模式叫做hostap,自己配置是相当麻烦,这个工具就一条命令
当然这种也可以抓取http的流量,只是分析可能没有代理工具方便
4. socket连接数据包
有的app采用了长连接的方式传递数据,不是http之类的,这种的话burp可以抓取到部分,可能这个功能burp还不完全,这里有个比较好的办法,我是利用ProxyDroid+xposed框架及模块+Charles
首先xposed可以把app的强校验干掉,Charles有socket代理模式,ProxyDroid可以设置手机所有的流量走socket代理,这样就把流量都导入到了Charles中,Charles相对于burp有它的优势所在,他可以向对话似的把socket长链接展示出来。
Burp也可以看到websocket的连接信息,但是我感觉并没有Charles好用。
5. 蓝牙协议的抓取和分析
这个ubuntu下安装了bluz协议栈后就很容易地抓取,这个里面包括了普通蓝牙和BLE协议
利用到的工具就是hcitool,这个可以对蓝牙数据包,ble数据包进行扫描,gatttool可以获取数据包和操作数据包
更为强大的ubertooth,这个是蓝牙分析的利器。
更为方便的是使用安卓手机,这个使用起来也是很方便的。
这个下一篇文章通过案例来具体讲解抓包分析
6. GSM协议的抓取和分析
这个的话就得需要买设备了,比较通用的是伪基站方式,吸附GSM到伪基站上面,然后通过wireshark进行数据的分析,现在这个伪基站是违法的,其他还真没有研究过,有研究的小伙伴欢迎留言交流
原文始发于微信公众号(YY的黑板报):不同协议的数据抓包
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论