0x00 摘要
在逆向分析以及移动端开发的时候,总会需要对APP的网络行为进行监控测试,本文总结一些抓包思路,并对其使用方法进行实践
在抓包界,Wireshark 应该算是综合排名第一的工具(其实 Wireshark 自带的命令行工具 tshark 更牛逼)
本文总结记录了 5 种抓包方式,掌握其一即可进行实践,欢迎大家一起交流分享
0x01 基于 Wireshark
实验步骤:
1.1 在电脑主机上使用猎豹 Wifi之类的工具,开启热点,将所要测试的手机连接该热点,记录其IP地址
![b2a386a49dff3a25f408e65596cf6d39.png](https://i-blog.csdnimg.cn/blog_migrate/c23ca4f4b0e6deed9b91a873ad39c8d6.png)
1.2 使用 Wireshark 对以上 IP 地址进行捕获
Capture——Options
![ca183e8803e5aab4af0b648480e29117.png](https://i-blog.csdnimg.cn/blog_migrate/dac6d38a30ffaee5d0e732b5ac7f4905.png)
![e7cbc671a05ce7f699cb999009496ebd.png](https://i-blog.csdnimg.cn/blog_migrate/24f4914bd32331494da51099200780c9.png)
1.3 总结
该方法简单粗暴高效,可以将捕获的数据包随时保存下来,便于后续分析或者进行 PCAP 可视化分析。
关于命令行工具 tshark 在此不做赘述,感兴趣的读者自行研究。
0x02 基于 tcpdump
实验环境:
下载安装 Genymotion 安卓虚拟机,在该模拟器环境种进行实践操作(基于实体手机亦然,前提是手机必须得 ROOT)
笔者仅在 Android 系统下测试,未在 iOS 系统下实验
实验步骤:
2.1 说明
模拟器中自带的 tcpdump 工具,位于:/system/xbin/ 目录下
2.2 数据包捕获
可以通过 adb shell 命令在 CMD 模式下连接模拟器,su 到 root 模式进行抓包
#!bash
tcpdump -vv -s 0 -i eth1 -w /sdcard/capture.pcap
参数说明:
-vv:获取详细的包信息(注意是两个 v 不是 w)
-s 0:不限数据包的长度,如果不加则只获取包头
-w xxx.pcap:捕获数据包名称以及存储位置(本例中保存在 sdcard 路径下,数据包名为 capture.pcap)
-i eth1:捕获制定的网卡(在 genymotion 虚拟机中,使用 busybox ifconfig 命令可以查看相关信息,一般 genymotion 的 ip 地址都为 10.xx.xx.x)
如果你想指定捕获的数据包长度,可以使用 -c 参数(例如 -c 128) 捕获结束,直接按 Ctrl + C 即可
2.3 数据分析
将捕获到的数据包拖到本地使用 Wireshark 进行查看:
#!bash
adb pull /sdcard/capture.pcap C:\tmp
TIPS:将数据包文件 push 到手机上命令为
#!bash
adb push C:\tmp\capture.pcap /sdcard/
0x03 基于 Fiddler 4
实验步骤:
3.1 下载 FIddler 4
3.2 设置 Fiddler 4
打开Fiddler,Tools-> Fiddler Options (配置完成记得重启 Fiddler)
![a035c846143d969845e7c6ee8df803ba.png](https://i-blog.csdnimg.cn/blog_migrate/28cec4929855e6dc537b871592f9fb6a.png)
![b7763f4d300439d33197acee2d42948f.png](https://i-blog.csdnimg.cn/blog_migrate/02526fdd30d07e0d17b470cb2402a648.png)
3.3 设置手机代理
首先,获取安装 Fiddler 4 的 PC 对应的 IP 地址(ipconfig):
![4b54a988e7094b470e89399a1f124906.png](https://i-blog.csdnimg.cn/blog_migrate/6fbe80a64013d71143b849a2e426b729.png)
确保手机和 PC 是连接在同一个局域网中!!!
下面对手机进行设置(笔者使用小米测试机):点击手机中“设置”——Wi-Fi——选择已经连接的wifi——代理设置改为手动
![21b8438523ee455865e4dd2edc750840.png](https://i-blog.csdnimg.cn/blog_migrate/2b082edb8d66fdef4d37c1f6b08df7d7.png)
下载 Fiddler 的安全证书
使用手机浏览器访问:http://10.2.145.187:8888,点击"FiddlerRoot certificate",然后安装证书即可。
至此,已经全部设置完毕。
3.4 数据包捕获
重新打开 Fiddler 4,然后打开手机中的浏览器,访问任意网址,Fiddler 抓包信息如下:
![1334959726392121420e3449d60ee504.png](https://i-blog.csdnimg.cn/blog_migrate/0f13c7a07b6a883b321923d5b297bb6a.png)
Enjoy!
0x04 基于 Charles
实验环境:
win7 + Charles v3.11
一般使用 Charles 都是基于 MAC OS ,笔者在 mac 平台以及 windows 平台均试验过,操作过程和思路基本一致,因此,本文以 win7 为测试环境
实验步骤:
4.1 捕获 http 数据包
手机设置代理:
![66707d45adaef92c22fb647f70c760e5.png](https://i-blog.csdnimg.cn/blog_migrate/dc5591ff572ec7e6152b4a5e65748683.png)
打开 Charles 即可捕获数据包(Proxy —— Proxy Settings):
![47843f6a9f93bf8f2abd96818de443d3.png](https://i-blog.csdnimg.cn/blog_migrate/0d41d3140c046e90de8dda20f9090c7a.png)
![e773444edd686ccfb04d7bbefe908f19.png](https://i-blog.csdnimg.cn/blog_migrate/062ac681d3c2cee278c12e130c4b0329.png)
4.2 捕获 https 数据包
手机端安装证书:
Android 手机或者 iPhone 均可直接访问 http://www.charlesproxy.com/ssl.zip ,然后根据图示点击证书安装
![6516453d2cf042082170523d9f039a37.png](https://i-blog.csdnimg.cn/blog_migrate/e566d8108fc18cebb5564c044a96dfda.png)
![1c9954fb1201e9367231d2193d159aeb.png](https://i-blog.csdnimg.cn/blog_migrate/c8b121e5c4cc9e029007c9fb3aefb563.png)
![71b4a4a7a3705d6191419d475cc2613b.png](https://i-blog.csdnimg.cn/blog_migrate/577e5443351c36bbafa5ae906d5c7c51.png)
设置 Charles:
选择 Proxy —— SSL Proxying Settings —— Locations —— Add
在弹出的表单中填写 Host 域名(也就是你想要抓包链接的主机名),以及对应的 Port 端口(此处相当于过滤作用)
当然,你可以采用更加粗暴的方式:使用通配符,例如你想要捕获所有的 https 包,这里也可以直接都为空,表示捕获所有的主机和端口;或者都分别填“*”星号,匹配所有的字符,捕获所有的 https。
![204ce189b3ec54089547d47eee0d725c.png](https://i-blog.csdnimg.cn/blog_migrate/215ed2bc30d48d0ca78d88a5bf3b4fb8.png)
![8f48c91c7821e743afae6e98b9e0e427.png](https://i-blog.csdnimg.cn/blog_migrate/ca9e5ef260320e29211efa7ce26a8227.png)
![d58fc04f6c590fb003a6c18410d75767.png](https://i-blog.csdnimg.cn/blog_migrate/620777b250f7f5b75e77639e9bbb8e08.png)
0x05 基于 Burpsuite
实验步骤:
5.1 捕获 http 数据包
PC 端 Burpsuite 设置:
![b8a09ef92f5cd326aa86dcd42c4fd5d5.png](https://i-blog.csdnimg.cn/blog_migrate/79727ce099678b9ba85334d36263c7fe.png)
手机端代理设置方法同以上 3.3 4.1
打开 Burpsuite 即可捕获 http 数据包:
![f1d31a53c91c5bdb39c132b2dcfb659b.png](https://i-blog.csdnimg.cn/blog_migrate/700858982aba8e54093495574af501e1.png)
5.2 捕获 https 数据包
手机端设置好代理之后,使用浏览器访问:http://burp/
![e4c9a09ec880eee454fffc460872b1ab.png](https://i-blog.csdnimg.cn/blog_migrate/9f6782336fb7f84baaa9d18ce4968e3f.png)
![ebdd07e81a45b5d050378c3e14c3e5f1.png](https://i-blog.csdnimg.cn/blog_migrate/4a4cf16eb069ac61a96ed24169aa620e.png)
此处存在一个问题:下载的证书是 der 格式的,我们手机端安装的是 crt 格式的,需要使用 firefox 浏览器转一下格式:可以首先在 Brupsuite 中导出 der 格式证书,然后导入火狐浏览器,然后从火狐浏览器导出证书格式为 crt
![fc388a90c47cdf1e4269dadd13872f0c.png](https://i-blog.csdnimg.cn/blog_migrate/e74de7bbc4ec3f6c485795f360692a37.png)
打开火狐浏览器:工具——选项——高级——证书——查看证书
![1f5f79ce83e62000be0b160cf188e9db.png](https://i-blog.csdnimg.cn/blog_migrate/8ee27bdb7f2d89200cf649dc121b1218.png)
![75ab34512f1bd262d3e06e3643eaf37a.png](https://i-blog.csdnimg.cn/blog_migrate/4c9013726de595ee5481ee98b0a3090a.png)
![4aaf60e57e767c959c0dd37c26e59bbb.png](https://i-blog.csdnimg.cn/blog_migrate/8a9b3c9fe2c6ca2e2e0753fe6545e6d1.png)
成功捕获 https 数据包
![cd5f8768c15a29a61dc3503a45af77ef.png](https://i-blog.csdnimg.cn/blog_migrate/76cad4f861b36ad3e1dfd1dc48a8c743.png)
0x06 总结
当我们停止捕获数据包时,将Fiddler 或 Charles 关闭,此时手机端是无法正常访问网络的,因为设置了代理,这时候需要将代理关闭,即可正常浏览网页
对于大多数走代理的应用可以选择 Fiddler 或 Charles,无需 root,一次配置,终身使用;对于不走代理的 App 可以利用 tcpdump 捕包,然后使用 Wireshark 查看;最简单便捷的便是第一种方法「0x01. 基于 Wireshark」
以上所有工具各有优劣,读者可以根据工作环境,按需使用,个人觉得一般情况下使用 Wireshark + Fiddler 或者 Wireshark + Charles 即可完成各平台的抓包分析任务
以上工具中只有BurpSuite可以对抓包过程进行交互式操作;Wireshark支持的协议最多,也更底层,功能强大,但过于沉重
对于本文涉及的相关工具的安装、设置、破解、详细使用,不在本文讨论范围之内(Charles 免费版其实还比较厚道,如果重度需要,建议购买正版),本文旨在浅析捕获移动终端数据包的方法和思路。
原文地址:https://wooyun.kieran.top/#!/drops/1024.浅析手机抓包方法实践
你好,我是厂长谭庆波,就读于哈工大,计算机系博士生,曾经的学渣,现在的学霸,拿过各路编程大奖 。
求学20载,从农村到C9博士,上学期间通过副业收入超 100 万,点击蓝字查看我的成长之路。
同时,我也是知乎博主:谭庆波,日常分享高质量程序员认知,学习资料、技术干货等,欢迎围观。
最后说一件重要的事,我最近建了一个【晋级的程序员】社群,旨在帮助新手小白快速上手找到编程的乐趣,里面沉淀了大量编程相关经验教程以及学习资料,目前社群人数已经超过1500人,欢迎大家加入:
👇点击阅读原文直达宝藏基地