最新版安卓x信小程序抓包fiddler

查看 146|回复 11
作者:turk   
最新版x信小程序抓包fiddler
环境
x信:8.0.27
安卓(root)版本:12
前言
参考https://icode.best/i/44023036283895
原文作者的思路是:获取root->在android中安装根证书->突破ssl pinning->burp抓包
笔者采用fiddler抓包(相比原文不需要自己做一个root证书),在尝试原文“突破ssl pinning步骤”时,发现Xposed官网已炸,搜索发现Xposed是一个hook框架,考虑用frida替代,而JustTrustMe功能如此便利,肯定也有人用frida实现过,果然找到了写好的js脚本
为了回馈社会,特把自己的实现思路和踩坑填坑历程分享出来
思路
安卓7.0以上有了network-security-config选项,可以让app只信任系统级证书,x信7.0以上则只信任微信自己信任的证书(ssl pinning)。
所以要用fiddler实现对微信小程序的抓包(https),必须
[ol]
  • 将fiddler证书加入系统证书中
  • 绕过x信的ssl pinning
    [/ol]
    要将fiddler证书加入系统证书,需要
    [ol]
  • 安卓有root权限
  • 转换并安装证书
    [/ol]
    要绕过x信的ssl pinning,需要
    [ol]
  • hook x信
  • 实现unpinning
    [/ol]
    遇到的问题和解决方法
    adb与emulator相关
    无法打开shell
    使用非发行版的模拟器(没有app store)
    模拟器无法联网
    冷启动:
    .\emulator.exe -avd [avd_name] -no-snapshot-load
    多设备下adb指定单个设备
    获得设备列表,使用-s选项指定其中一个:
    adb -devices
    adb -s [device_name] ...
    只有一个设备但adb显示有多个设备
    打开任务管理器,找到设备的残留进程(qemu_system...),终止
    frida相关
    pip安装frida失败
    不用科学上网下载太慢而失败,用全局科学上网报错而失败
    下载时指定proxy:
    pip install frida --proxy='socks5://127.0.0.1:[kexue_port]'
    frida连接模拟器
    将相应版本的frida_server上传至模拟器并启动
    端口映射:
    adb forward tcp:27042 tcp:27042
    显示模拟器进程:
    frida-ps -R
    转换和安装
    参考:http://wiki.cacert.org/FAQ/ImportRootCert
    安装失败
    获取hash名:
    openssl x509 -inform DER -subject_hash_old -in root_X0F.crt
    先上传crt,添加crt为用户级证书,再用find找到/storage/emulated/0/cacert/root_X0f.crt
    直接重命名,不用转换
    cp root_X0f.crt [hash].0
    复制到/system/etc/security/cacerts/中
    清除所有用户级证书
    无法使/system可写
    mount: '/system' not in /proc/mounts:
    > emulator -avd Pixel_3a_XL_API_30 -writable-system
    > adb shell avbctl disable-verification
    > adb disable-verity
    > adb root
    > adb remount
    > adb shell "su 0 mount -o rw,remount /system
    重启后证书消失
    打开模拟器时使用 -writable-system选项:
    > emulator -avd Pixel_3a_XL_API_30 -writable-system -no-snapshot-load
    fiddler相关
    https连接失败,错误:TimeOut(0x274c)
    原因1:未把fiddler证书设置为系统证书
    ​        祥见证书的转换和安装部分
    原因2:ssl问题
    ​        在所有使用CONNECT方法的请求中加上x-OverrideSslProtocols项,值设置为ssl3
    成功过程
    确保代理证书存在于系统证书中,开启代理,使用bypass ssl pinning hook x信,成功打开小程序并抓到https的包
    效果
    证书加载成功:


    Snipaste_2022-09-19_16-51-25.jpg (55.59 KB, 下载次数: 0)
    下载附件
    证书加载成功
    2022-9-19 22:13 上传

    ssl unpinning成功:


    Snipaste_2022-09-19_17-21-45.jpg (33.86 KB, 下载次数: 0)
    下载附件
    unpinning成功
    2022-9-19 22:13 上传

    用最近火热的某羊测试,https抓包成功:


    Snipaste_2022-09-19_.jpg (7.93 KB, 下载次数: 0)
    下载附件
    抓包成功
    2022-9-19 22:17 上传

    证书, 模拟器

  • Tonyha7   

    xp模块 TrustMeAlready也可以解决微信证书
    turk
    OP
      


    tianchining 发表于 2022-9-28 09:09
    ssl unpinning成功
    你是自己写的插件吗?
    还是frida里面别人写的 还是xposed

    别人写的js脚本,frida能直接用,github上搜搜就有了
    bgwu666   

    这种指定proxy的方法第一次见,学习到了
    Jackamy   

    安卓12可以的话,那11也可以吧?
    cris0451   

    感谢分享,必须支持!!鼓励
    turk
    OP
      


    Jackamy 发表于 2022-9-20 13:08
    安卓12可以的话,那11也可以吧?

    没试过,理论上可行
    iGreenMind   

    要是有一个视频版的配合就更好了O(∩_∩)O哈哈~
    hlbandcy   

    感谢分享,正愁没有解决思路。
    ouyang8888   

    感谢分享
    您需要登录后才可以回帖 登录 | 立即注册

    返回顶部