逆向抓包实战:用ADB命令把Burp证书塞进逍遥模拟器,搞定那些难缠的App
逆向工程实战突破SSL Pinning的Burp证书系统级注入指南当你在分析某个移动应用时突然遇到Client SSL handshake failed的错误提示那种挫败感每个安全研究员都深有体会。这往往是SSL Pinning技术在作祟——现代应用最基础的防御手段之一。本文将带你深入Android系统证书体系通过ADB命令行这把手术刀精准完成Burp Suite证书的系统级植入为后续的流量分析铺平道路。1. 环境配置构建移动安全分析实验室逆向工程的第一步永远是搭建一个可控的实验环境。我们需要三个核心组件协同工作Burp Suite Professional作为中间人代理的核心工具社区版也能完成基础抓包逍遥模拟器基于Android 7.1内核的轻量级模拟器支持完整的ARM转译Android Debug Bridge (ADB)与模拟器通信的瑞士军刀提示建议使用逍遥模拟器7.5.3版本其ADB默认端口为21503且root权限开启更为稳定配置Burp监听端口时记住这两个关键参数Proxy Listeners → Add → Binding → 127.0.0.1:8080模拟器的网络代理设置需要与Burp严格对应Wi-Fi → 修改网络 → 高级选项 → 手动代理 主机名127.0.0.1 端口80802. 证书手术从用户域到系统域的跨越Android 7.0引入的证书信任链变更是许多抓包工具失效的根本原因。系统不再自动信任用户安装的CA证书除非将其放入系统证书仓库。这个仓库位于/system/etc/security/cacerts/2.1 证书格式转换三部曲从Burp导出的默认证书是DER格式需要转换为系统识别的PEM格式访问http://burp下载cacert.der使用OpenSSL进行格式转换openssl x509 -inform DER -in cacert.der -out burp.pem获取证书哈希值openssl x509 -subject_hash_old -in burp.pem2.2 证书部署的ADB交响乐连接逍遥模拟器的ADB需要特殊姿势adb connect 127.0.0.1:21503 adb root adb remount将转换后的证书推送到系统区域adb push 9a5ba575.0 /system/etc/security/cacerts/ adb shell chmod 644 /system/etc/security/cacerts/9a5ba575.0注意证书文件名必须是由哈希值加.0后缀组成权限必须设置为6443. 验证与排错确认证书植入成功完成推送后通过以下命令验证adb shell ls -la /system/etc/security/cacerts/ | grep 9a5ba575在模拟器设置中查看设置 → 安全 → 信任的凭证 → 系统应该能看到PortSwigger的证书条目。常见问题排查表现象可能原因解决方案adb连接超时模拟器ADB服务未启动检查模拟器设置中的ADB选项remount失败未正确获取root权限执行adb root后重试证书不生效文件权限不正确确认chmod 644已执行4. 进阶对抗当SSL Pinning升级时基础证书注入只是开始现代应用可能采用更复杂的防御策略证书固定Certificate Pinning应用内置证书指纹验证双向SSL认证要求客户端提供特定证书运行时检测通过反射检查证书存储对于这些情况可以考虑使用Frida框架进行运行时hook逆向修改APK的网络安全配置基于Xposed模块的全局证书信任# 示例使用Frida绕过证书检查 Interceptor.attach(Module.findExportByName(libssl.so, SSL_CTX_set_verify), { onEnter: function(args) { args[2] ptr(0); # 修改验证回调为NULL } });5. 构建持续分析环境为防止每次重启模拟器都需要重复操作建议创建自定义系统镜像adb pull /system/build.prop修改ro.secure0和ro.debuggable1重新打包系统镜像并刷入对于频繁的分析工作可以编写自动化脚本#!/bin/bash adb connect 127.0.0.1:21503 adb root adb remount adb push $1 /system/etc/security/cacerts/ adb shell chmod 644 /system/etc/security/cacerts/$1在真实的移动应用分析中证书注入只是万里长征第一步。我曾遇到一个金融类应用即使在系统证书正确安装的情况下仍然会检测代理的存在。最终发现它通过检测Wi-Fi的代理设置来阻止流量外泄解决方案是在路由器层面做透明流量劫持。