Skip to content
Kurisu
Go back

App 与小程序渗透:抓包、证书绑定绕过与反编译

移动端渗透的第一个门槛不是找不到洞,而是根本抓不到包。本文从 TLS 握手讲清”为什么抓不到”与”怎么让它能抓”,再落到小程序完整测试流程;参考资料 小程序渗透指北,工具清单在文末。

0x01 为什么抓不到包:从 TLS 握手说起

正常 HTTPS 握手:

① Client Hello      → 客户端发支持的加密套件 + 随机数
② Server Hello      → 服务端选套件 + 返回证书 + 随机数
③ 证书校验          → 客户端用内置 CA 根证书链验证服务端证书
④ 密钥协商          → 客户端用服务端公钥加密 pre-master 随机数(RSA 场景)
⑤ 对称加密通信      → 双方用协商出的会话密钥 AES 加密传输

Burp 等抓包工具靠 MITM:对客户端冒充服务端、对服务端冒充客户端;装了 Burp 证书后步骤③能骗过普通应用,浏览器和大多数 App 都能抓。

安全要求高的 App 会再加一层SSL 证书绑定(SSL Pinning):把预期的服务端证书/公钥硬编码进客户端,握手时额外比对——这就是”装了证书还是抓不到”的原因。分两档:

0x02 绕过证书绑定

单向绑定:Frida Hook 校验函数

思路是 Hook 证书校验逻辑让它永远返回 true,方案按省事程度排序:

# 方案一:objection 一条命令
objection -g 包名 explore
android sslpinning disable

# 方案二:JustTrustMe / 自写 Frida 脚本(Xposed 亦可)
frida -U -f com.target.app -l ssl_pinning_bypass.js

自写脚本通常盯 X509TrustManager.checkServerTrusted、OkHttp CertificatePinner.check、SSLSocketFactory 这几个点。

双向绑定:两条路

  1. R0capture:在 Java 层(SSLSocket 之上)抓加密前的明文,不跟 TLS 握手纠缠,双向绑定最省事;
  2. 提取客户端证书:从 APK 资源/资产目录找带口令的 p12/pfx 客户端证书,装进 Burp(Options → TLS → Client TLS Certificates),让 Burp 代表客户端过校验。

抓包失败先排查环境:先退代理、切无代理模式验证基线,再逐个排除干扰源(本机是浏览器代理插件在捣乱)。

0x03 反编译审计:比抓包看得更全

抓包只看运行时接口,反编译能看到全部接口与硬编码秘密:

jadx-gui target.apk          # 打开即看 Java 源码
# 全局搜索关键词(推荐清单):
#  token / key / secret / AK / SK / jdbc / api.
#  http://(找内网接口和测试环境)
#  encrypt / RSA / AES(加密逻辑定位)

高频产出:云厂商 AK/SK、第三方 API key、JWT 签名密钥、数据库连接串、未鉴权内部管理接口;找到加密函数后配合抓包密文还原算法,即可篡改参数测越权。

典型链路:抓包 → 富文本编辑器接口 → Ueditor 未授权文件上传(controller.ashx?action=catchimage 一类)→ 文件包含 → RCE。

0x04 微信小程序测试全流程

小程序 = 逻辑层 JS + 视图层 WXML/WXSS,测试对象为 app.js、app.json、各页面 js/json 配置。

抓包:Proxifier 转发 PC 微信

PC 版小程序流量用 Proxifier 转 Burp 最省事:

  1. Proxifier 添加代理服务器指向 Burp 端口;
  2. 代理规则的目标进程填:
    WeChat.exe;WeChatAppEx.exe;WeChatPlayer.exe;WechatBrowser.exe;WeChatAppEx*.exe
  3. Burp 能抓普通网页流量即成功,同一套规则连微信内置浏览器也能抓。

Proxifier 不行就用 fiddler 中转:根证书装到”受信任的根证书颁发机构”,再挂 Burp 为二级代理。

解包与反编译

小程序包落盘在 微信文件目录/Applet/ 下 wx 开头的文件夹,__APP__.wxapkg 为加密包:

# 一键 scan + 解包(推荐):
wxapkg scan -r "D:\WeChat Files\Applet"
# 或传统两步:UnpackMiniApp 解密 → CrackMinApp 反编译

产物用小程序开发工具或任意编辑器打开做全局搜索(关键词同 0x03);产物常有缺失,能搜索查看即可。

调试模式:给小程序开 F12

WeChatOpenDevTools 用 hook 偏移地址把小程序窗口当浏览器调出 DevTools(版本敏感、偏移会随更新变;有封号风险,用小号):

pip3 install -r requirements.txt
python main.py -x    # 小程序 F12
python main.py -c    # 微信内置浏览器 F12

0x05 三个实战突破口(脱敏整理)

① 敏感信息泄露:2022 年 6 月后小程序已能检测 AppSecret/云 key 泄露,纯靠它越来越难;但反编译里的正则匹配(http://、phone、token、key)依然高产。

② 弱口令横移:抓到的 xxxxx.com 接口域名很多浏览器直接能打开——小程序端测不动时把域名丢进浏览器,看有没有 Web 端后台;案例:图形验证码复用 + 忘记密码处用户枚举 → 爆破进后台。

③ 未授权访问的迂回:接口全 403 也别急着放弃——响应头 Access-Control-Allow-Origin 里可能藏着另一个可用域名;405 页面可能写着客服联系方式(案例里加 QQ 客服,对方说”仅限某省 IP 访问”,改省内 IP 后打通)。拿到未授权接口后,任意文件下载可按”下载行为”与”信息泄露”拆成两个漏洞提交。

0x06 延伸:AI 时代的安全岗

趋势判断:AI 让自动化渗透(反编译、扫描、payload 构造)效率大幅提升、攻击门槛下降 → 防守覆盖面与难度远高于单点攻击 → 安全岗位更多向防守倾斜(WAF/安全策略/AI 对抗)。

工具清单

用途工具
流量转发Proxifier、fiddler
证书绑定绕过Frida + JustTrustMe、objection、R0capture
反编译jadx-gui
小程序解包wxapkg(wux1an)、UnpackMiniApp、CrackMinApp
小程序调试WeChatOpenDevTools-Python

Share this post:

Previous Post
一次真实渗透测试的完整流程
Next Post
AI Agent 渗透测试:MCP 协议与工具调用