安卓模拟器+BURP 实现 app 抓包
注:软件下载地址皆为官方地址
模拟器抓包
-
下载一个安卓模拟器( 夜神 等都行)
-
查看本机 IP(CMD+ipconfig)
-
BURP 设置监听本机 IP 及端口
注:设置IP为127.0.0.1
无法抓取到流量,需要设置为本机实际 IP -
给模拟器指定代理(这里以夜神模拟器为例)
将模拟器代理设置为 BURP 监听的 IP 及端口
-
模拟器下载 BURP 证书
打开浏览器,输入http://burp
,回车即可
-
安装证书
安卓系统无法安装.der
后缀的证书,所以需要用文件管理器更改下载的证书后缀为.cer
注:安装过程中可能会提示需要设置模拟器的锁屏密码,随便设置个密码就行了 -
开启愉快的抓包之旅
局域网内抓包
方法一
-
电脑与手机连接同一个 WIFI
-
查看电脑 IP,BURP 设置监听该 IP
-
给手机指定代理(代理设置为刚刚 BURP 监听的 IP 及端口),访问
http://burp
下载证书
-
安装证书,完工
方法二
-
开启电脑的 WIFI 热点
-
查看 WIFI 热点的 IP,并且在 BURP 中监听该 IP,并设置一个端口
-
手机连接该热点,并且配置代理(代理的 IP 为 WIFI 热点的 IP),然后下载安装证书
跟方法一后续步骤无异
ps:不知道是我的网卡问题还是什么,这一步失败了,还是太菜了
安装证书时的坑
注意点:
-
苹果安装证书后,需要完全信任证书;
设置->通用->关于本机->证书信任设置->开启针对根证书启用完全信任
-
安卓 7.0 及以上版本安装默认不信任用户自身安装的证书,解决办法有:
- 导出 burp 证书 cacert.der
- 将 der 格式转为 pem:
openssl x509 -inform DER -in cacert.der -out cacert.pem
- 计算证书 MD5:
openssl x509 -inform PEM -subject_hash_old -in cacert.pem | head -1
burp 的证书计算结果为9a5ba575
- 修改证书名:
mv cacert.pem 9a5ba575.0
- 默认 /system 分区为 Read-only,执行以下三条即可解除限制、才可添加证书到 system 分区
adb root # 很多时候会发现用不了,需要 adb shell 后执行 " mount -o remount, rw /system ",复制完证书之后记得恢复 " mount -o remount, ro /system "
adb disable-verity
adb reboot
- 重新挂载分区
adb root
adb remount
- push 证书:
adb push ./9a5ba575.0 /system/etc/security/cacerts/
- 给证书加权限,并重启
adb shell
chmod 644 /system/etc/security/cacerts/9a5ba575.0
reboot
小 tips:可以直接安装证书为用户证书,然后在 magisk 中安装 MagiskTrustUserCerts 插件即可,这样可以有效解决 安卓 10 采用了的安全策略-将系统分区 /system 挂载为只读,就算你 root 了也没用这种情况
绕过证书验证(SSL Pinning)抓包
有时候使用 BURP 抓包时,即使安装证书等一系列操作都正确,仍旧会出现无法抓包的情况。甚至进入应用会出现闪退的情况。此时就可能是 APP 做了证书验证。
工具:Xposed + JustTrustMe
条件:手机需要 root,建议在模拟器内操作
步骤:
- 安装 Xposed,Android 4.0.3 up to Android 4.4 下载地址,安卓 5.0 以上下载地址,点击框架,安装更新。安装完后重启
- 安装 JustTrustMe apk,并在 Xposed 中勾选激活该模块
- 后续就是设置代理等基本操作
注:
- 遇到卡死情况重启手机即可
- 遇到如下情况,显示未激活时,打开右上角黄色开关后重启设备即可
玄学问题
- 局域网内,死活抓不到包怎么办
明明证书什么的都配置好了,仍旧抓不到包?可以试一试将监听端口改大一点!!即使小端口没被占用