这里的网络分析工具可以归为两大类:
-
网络代理: 用的最多的是 Fiddler
-
分析工具: 比较熟悉的是Wireshark
代理类
Fiddler
以Android客户端抓包为例,主要步骤为:
- [Tools]-[Options], 检查Connections和HTTPS选项,开启代理模式
- 安卓浏览器访问 <YOUR_IP>:8888, 下载并安装根证书
- 设置安卓WIFI代理为以上地址和端口
Charles (付费)
- 默认端口8888
- [Proxy]-[SSL Proxy Settings]-[SSL Proxying],添加location。
- 访问 [Help]-[SSL Proxying]-[Install Charles Root Certificate on a Mobile Device or Remote Browser],找到代理地址和端口。
注: 如果response中文显示乱码,需要确保本地已安装证书。[Help]-[SSL Proxying]-[Install Charles Root Certificate]即可。
在华为手机,需要把证书文件扩展名从pem改成crt。
限制:
从Android 7开始,需要修改app配置信任用户证书,才能显示HTTPS内容。
如果targets API为24+或应用使用了certificate pinning(使用okhttp等),也可能不工作。
步骤如下:
在应用工程添加文件 res/xml/network_security_config.xml:
<network-security-config>
<debug-overrides>
<trust-anchors>
<!-- Trust user added CAs while debuggable only -->
<certificates src="user" />
</trust-anchors>
</debug-overrides>
</network-security-config>
然后添加到应用的manifest文件:
<?xml version="1.0" encoding="utf-8"?>
<manifest>
<application android:networkSecurityConfig="@xml/network_security_config" >
...
</application>
</manifest>
Mac Chrome
钥匙串访问 - Charles Proxy CA - 信任 - 使用此证书时下拉列表选择"始终信任"
Mock Response
- 方式1: Tools - Rewrite 增加重写规则
- 方式2: Proxy - Enable Breakpoints, Proxy - Breakpoints Settings
- 方式3: Map Local 使用本地文件替换响应
Burp Suite
默认端口8080
mitmproxy
Python写的开源调试工具, 解析/修改/重放/保存。
mitmproxy -b PORT -w outfile
mitmdump -w outfile
# -n 不绑定代理端口
# 过滤所有POST
mitmdump -nr outfile -w outfile2 "-m post"
# 客户端重放, -c filename
mitmdump -nc outfile
Android全局抓包分析(HTTP/HTTPS+TCP)
最近遇到的问题是,App也使用了TCP协议,如果使用Fiddler这类HTTP代理工具会造成应用使用问题。
所以要同时抓取HTTP/HTTPS和TCP数据,安卓自带的WiFi代理便局限了。
抓包方案有2个:
Android机已ROOTED
手机端安装tcpdump,因为安卓本身就是基于*Nix的嘛,在电脑用Wireshark抓包。
其实就是一条命令:
adb exec-out "tcpdump -i any -U -w - 2>/dev/null" | wireshark -k -S -i -
电脑建立WiFi热点
由于是公司的手机,不能随便ROOT。思路是通过电脑的无线网络建立一个代理WiFi热点。
在Windows7/10都可以,如果是台式机,需要自备无线网卡。
# 确定 Hosted network supported/支持的承载网络为 Yes/是
netsh wlan show drivers
# 建立虚拟WiFi
netsh wlan set hostednetwork mode=allow ssid=testWiFi key=password
# 设置网络连接共享: 右键点击正在使用的以太网络连接,[属性]-[共享]标签-勾选 [Internet共享连接]并从下拉列表选择刚创建的网络。
# Windows10位置:[Windows Settings]-[Network&Internet]-[Change Adapter Options]
#开启无线AP
netsh wlan start hostednetwork