一文读懂Android APP抓包和反编译&frida脱壳&APP单/双向认证&Root隐藏绕过技巧
字数 2890 2025-11-21 13:12:20
Android APP安全测试全面指南:抓包、反编译与防护绕过
0x1 前言
移动安全测试已成为渗透测试工程师必备技能,本指南详细讲解Android APP抓包、反编译、frida脱壳、单/双向认证绕过及Root隐藏等核心技术。
0x2 APP抓包技术
一、抓包基础概念
- 常用工具:Burpsuite、mitmproxy、Fiddle、Reqable(小黄鸟)
- 抓包方式:系统代理、AP热点抓包、透明代理
- 核心挑战:SSL Pinning、不走系统代理等对抗技术
二、Android各版本抓包区别
- Android<7:证书可直接导入"用户证书"
- Android≥7:只信任"系统证书"(格式为xxxx.0)
三、Move Certificate模块安装
- 模块作用:将用户证书移动到系统证书
- 支持版本:Android 7-15
- 安装步骤:
- 下载地址:https://github.com/ys1231/MoveCertificate
- 通过Magisk进行本地模块安装
- 重启设备生效
四、Magisk面具安装
- 推荐测试机:Google Pixel 3-4、小米8-10(安卓10-13版本)
- 安装方法:
- GitHub下载:https://github.com/topjohnwu/Magisk
- 通过adb安装APK文件
- 狐狸面具:功能相同,界面差异
五、证书生成与导入
Burpsuite证书处理:
# 下载der证书转pem格式
openssl x509 -inform DER -in cacert.der -out cacert.pem
# 计算hash值
openssl x509 -inform PEM -subject_hash_old -in cacert.pem
# 重命名为hash.0格式
mv cacert.pem <hash>.0
# 推送至设备
adb push <hash>.0 /data/local/tmp/cert/
Yakit证书处理:
- 导出证书后计算hash值
- 重命名为xxxx.0格式
- 通过Move Certificate模块导入系统证书
六、抓包测试配置
- 代理设置:
- Burpsuite监听局域网IP(如192.168.x.x:9090)
- 设备网络配置手动代理指向监听地址
- 验证方法:启动APP观察流量捕获情况
0x3 真机抓包实战
一、Reqable(小黄鸟)配置
- 官网:https://reqable.com/zh-CN/
- 证书安装:
- 电脑端一键安装根证书
- 手机端通过Magisk模块或手动导入系统证书
- 连接方式:USB调试+ADB连接
二、Brook代理配置
- 特点:小众Socks5代理,避免被检测
- GitHub:https://github.com/txthinking/brook
- 配置方法:
- 安装Android客户端
- 添加Socks5代理服务
- 设置与抓包工具相同的IP和端口
0x4 APP反编译与脱壳
一、APK查壳工具
- 工具要求:Java环境
- 使用方法:拖拽APK文件自动识别加壳类型
二、静态反编译
APK文件结构:
assets/:原生资源文件res/:图片、布局等资源lib/:native库文件META-INF/:签名信息AndroidManifest.xml:应用配置classes.dex:可执行文件resources.arsc:资源索引
反编译步骤:
- dex2jar转换:
d2j-dex2jar.sh classes.dex - jadx-gui分析:拖入生成的JAR文件查看源码
三、BlackDex脱壳
- GitHub:https://github.com/CodingGay/BlackDex
- 支持版本:Android 5.0-12
- 使用方法:
- 安装对应架构的APK
- 选择目标应用脱壳
- 通过adb pull导出dex文件
四、Frida动态脱壳
环境搭建:
- 版本选择:推荐Frida 16.1.0(高版本可能存在兼容问题)
- 服务端安装:
# 上传frida-server adb push frida-server /data/local/tmp/ adb shell chmod 777 /data/local/tmp/frida-server adb shell /data/local/tmp/frida-server &
frida-dexdump脱壳:
# 查找目标进程
frida-ps -U
# 脱壳执行
frida-dexdump -U -p <PID>
0x5 单向证书校验绕过
一、LSPosed框架安装
- 作用:Xposed框架的高版本实现,支持Android 8.0+
- 安装方法:
- 通过Magisk安装LSPosed模块
- 重启后安装Manager APK
- 激活模块并配置目标应用
二、绕过插件集合
- TrustMeAlready:基础绕过插件
- JustTrustMe:经典SSL验证绕过
- JustMePlush:增强版绕过工具
- JustTrustMePP:针对特殊校验的改进版
- GitHub:https://github.com/JunGe-Y/JustTrustMePP
三、配置方法:
- 安装APK插件到设备
- 在LSPosed中激活并勾选目标应用
- 重启应用测试抓包效果
0x6 双向证书校验绕过
一、识别特征
- 错误信息:"400 No required SSL certificate was sent"
- 表现:开启抓包后应用无网络连接
- 验证:即使使用单向绕过插件仍无法抓包
二、r0capture工具使用
- GitHub:https://github.com/r0ysue/r0capture
- 支持版本:Android 7-14
- 特点:无视证书校验、通杀应用层协议
环境准备:
- Frida版本:推荐16.1.0
- 应用权限:开启存储卡读写权限
- 脚本执行:
python r0capture.py -U -f <包名> -v
证书导出:
- 导出路径:
/sdcard/Download/<包名>.p12 - 默认密码:
r0ysue - 导出方法:adb pull或文件管理器分享
三、证书导入配置
Burpsuite导入:
- 用户选项→SSL证书→导入
- 选择P12文件,输入密码
- 配置通配符域名(*)
Reqable导入:
- 客户端证书:用于双向验证场景
- 注意事项:导入可能导致证书混乱,建议备份
0x7 Root检测与隐藏
一、Root检测方法
- 文件检查:/system/bin/su、/system/xbin/su
- 权限判断:/system目录可写性
- 命令测试:id、su命令执行
- 属性查看:ro.secure属性值
- 工具检测:RootBeer等专业工具
二、Magisk隐藏方案
- Zygisk激活:Magisk设置中启用
- 排除列表:勾选需要隐藏Root的应用
- 强制使用:确保排除列表生效
三、Shamiko模块
- 作用:增强Root隐藏能力
- 版本推荐:0.6版本(高版本可能报错)
- 安装条件:关闭"遵守排除列表"开关
- 配置方法:
- 通过Magisk安装模块
- 重启设备
- 在排除列表中勾选目标应用
0x8 实战注意事项
一、环境准备要点
- 测试设备:推荐真机(Pixel、小米系列)
- 系统版本:Android 10-13为最佳测试范围
- 工具备份:证书和配置文件定期备份
二、常见问题解决
- adb连接失败:检查USB调试和网络连接
- 证书导入失败:确认系统证书格式和权限
- 抓包无数据:检查代理设置和防火墙规则
- 模块不生效:重启设备并检查激活状态
三、最佳实践建议
- 工具组合:Reqable+Burpsuite二级代理
- 脚本版本:保持Frida和工具版本兼容
- 测试流程:从简单应用到复杂应用逐步测试
- 问题排查:优先检查证书和Root隐藏配置
本指南涵盖了Android APP安全测试的核心技术环节,通过系统化的工具配置和实战方法,为移动安全测试提供完整解决方案。在实际测试中应根据目标应用的具体防护措施灵活调整技术方案。