APP 抓包 | 支付宝小程序抓包

引用 lulianqi15 师傅的原理:
为了确保设备安全, 安卓系统会有一批自己信任的 CA 公钥列表(根证书),从 Android7.0 以后,系统允许每个应用可以自定义可信 CA 集。有部分应用默认只会信任系统预装的 CA 证书,而不会信任用户安装的 CA 证书,而在 Android 中用户安装的证书都是用户证书,所以无论是 Filddler 还是 Charles 我们都只是把他们的根证书安装到了用户证书,这些应用并不使用他们,所以我们的安装的证书是无效的。

新建安卓系统

我新建了一个 安卓 7.1(64bit) 的系统
image

然后下载了一个支付宝,并尝试打开,确实能打开不会闪退。
image

默认情况下,已经开启了 root,这里可以手动查看一下。
image

开启模拟器 USB 调试

第一步,打开设置,点击关于平板电脑
image

第二步,连续点击安卓版本,即可开启开发者模式
image

第三部,点击多出来的开发者选项
image

第四步,开启 USB 调试
image

开启 adb 调试

我这里用的是逍遥模拟器,其他的模拟器同理
首先来到模拟器的安装目录,D:\xiaoyao_hyper-v\Microvirt\MEmu(依自己安装时位置而定,默认安装的为 D:\Program Files\Microvirt\MEmu
image

开启一个 cmd 或者 powershell,(我这里用的是 powershell,如果用 cmd 那么执行的命令去掉 .\ 即可)输入 .\adb devices,即可看见 adb 调试的端口 (记得先开启模拟器)
image
输入 .\adb connect 127.0.0.1:21523即可成功连接到安卓系统
接下来输入 .\adb root获取 root 权限(通常你已经是 root 权限)
image

输入 .\adb disable-verity关闭系统校验(你可以看到我并没有输入这个命令,但保险起见可以输入)
输入 .\adb remount重新挂载文件系统,这样就可以对系统文件进行读写了
image

有的时候,执行 adb remount 指令也会失败,如下所示
E:>adb remount
remount of /system failed: Read-only file system
remount failed
遇到这种情况的解决方法如下:
E:>adb disable-verity
Verity disabled on /system
Now reboot your device for settings to take effect
E:>adb reboot (重启一下系统)
E:>adb root (此时获取root权限)
E:>adb remount (重新挂载文件系统)
remount succeeded

生成 burp 证书

直接点击按钮下载一个 cacert.der 即可
image

shift + 右键开启一个 linux 子系统(WSL:微软商店即可直接下载安装,挺方便的)(只要是 liunx 即可或者只要是能打开 openssl 即可,你可以把文件传到 kali 中)
输入命令 openssl x509 -subject_hash_old -inform der -in cacert.der
image
可以看到最上方输出了 hash : 9a5ba575 (根据自己的情况继续)
将 cacert.der 文件重命名为 9a5ba575.0
image

将该文件拖放到模拟器中 (直接从 win 桌面拖到 模拟器桌面即可,系统会自动将文件放到 Download 目录下)
image

将证书移动到系统证书目录

回到刚才的 powershell 窗口,输入 .\adb shell,即可进入安卓系统 (linux)
image

接下来涉及的目录都可以通过安卓系统的搜索功能查看到,如果不一样呢,以实际为准
image

接下来输入cd /storage/emulated/0/Download进入到 Download 目录,在这里你能看到我们刚拖入的证书文件
image

接下来移动(复制)证书,cp 9a5ba575.0 /system/etc/security/cacerts/9a5ba575.0
image

然后进入目录cd /system/etc/security/cacerts/,给予文件权限
chmod 644 9a5ba575.0
chgrp root 9a5ba575.0
image
重启安卓系统,直接就可以抓包了

如果这里还是没有权限移动证书,参考下面的命令来手动重新挂载系统
>adb shell
>su root
# 挂载 system 分区, 一般情况 /system 分区是只读的,需要挂载为读写。
>mount -o rw,remount /system

配置 burp 代理

添加一个代理,这里需要确保使用和模拟器在同一个网段的 ip
image

配置模拟器的代理地址
image

成功获取支付宝小程序数据包
image

Reference:

师傅把原理说的清清楚楚的:https://www.cnblogs.com/lulianqi/p/11380794.html#%E8%A7%A3%E5%86%B3%E6%96%B9%E6%B3%95%E5%8F%8A%E6%93%8D%E4%BD%9C%E6%96%B9%E6%B3%95
Openssl 命令出现错误:https://serverfault.com/questions/1021242/4562605504error0909006cpem-routinesget-nameno-start-linecrypto-pem-pem-lib
adb 连接模拟器:https://www.cnblogs.com/mmz-tester/p/10948480.html
adb 调试向系统目录写入文件:https://blog.csdn.net/weixin_37389787/article/details/115368891
posted @ 2022-05-30 18:13  Nestar  阅读(8437)  评论(3编辑  收藏  举报