Android APP抓包与逆向分析完全指南
0x1 前言
移动安全测试已成为渗透测试工程师必备技能,本文详细讲解Android APP抓包、反编译、frida脱壳、单/双向认证绕过及Root隐藏等核心技术。
0x2 APP抓包基础
一、抓包工具概述
常用抓包工具:Burpsuite、mitmproxy、Fiddle、Reqable(小黄鸟)
抓包方式:系统代理、AP热点抓包、透明代理
二、Android版本差异
- Android < 7:证书可直接导入"用户证书"
- Android ≥ 7:只信任"系统证书"(格式为xxxx.0)
三、Move Certificate模块
作用:将用户证书移动到系统证书
支持版本:Android 7-15
GitHub地址:https://github.com/ys1231/MoveCertificate
安装步骤:
- 下载MoveCertificate-v1.5.5.zip
- 通过adb推送到手机:
adb push MoveCertificate-v1.5.5.zip /sdcard/Download/ - Magisk中本地安装模块
- 重启设备生效
四、Magisk面具安装
推荐测试机:Google Pixel 3-4、小米8-10(Android 10-13)
安装方法:
- 下载Magisk APK:https://github.com/topjohnwu/Magisk
- adb安装:
adb install Magisk.apk
替代方案:狐狸面具(功能相同)
五、证书生成与安装
Burpsuit证书处理:
# 转换格式
openssl x509 -inform DER -in cacert.der -out cacert.pem
# 获取hash值
hash=$(openssl x509 -inform PEM -subject_hash_old -in cacert.pem | head -n 1)
# 重命名
mv cacert.pem "${hash}.0"
# 推送证书
adb push "${hash}.0" /system/etc/security/cacerts/
Yakit证书处理:
openssl x509 -inform PEM -subject_hash_old -in yakit证书.crt.pem
# 重命名为hash.0格式
证书存放路径:/data/local/tmp/cert
六、抓包测试配置
- Burpsuite设置监听(如192.168.x.x:9090)
- 模拟器网络设置手动代理
- 导入证书后即可抓包
0x3 真机抓包实战
一、Reqable(小黄鸟)配置
官网:https://reqable.com/zh-CN/
证书处理:
openssl x509 -in reqable-ca.crt -out reqable-ca.pem
openssl x509 -inform PEM -subject_hash_old -in reqable-ca.pem
# 重命名为hash.0格式
替代方案:直接使用Magisk安装Reqable证书模块
二、抓包流程
- 电脑端设置监听IP和端口
- 手机端扫码连接
- 开启增强模式抓包
- 流量转发到Burpsuite(二级代理)
0x4 小众代理工具Brook
一、工具介绍
特点:支持多平台、Socks5代理、UDP转发
GitHub:https://github.com/txthinking/brook
二、配置使用
- 下载Android APK
- 添加Socks5代理服务
- 设置与抓包工具相同的IP和端口
0x5 APP反编译与脱壳
一、APK查壳工具
工具下载:包含多种查壳工具的集成包
使用方法:拖入APK文件自动识别壳类型
二、静态反编译
APK结构分析:
- assets/:原生资源文件
- res/:编译后的资源文件
- lib/:SO库文件
- AndroidManifest.xml:应用配置信息
- classes.dex:可执行文件
- resources.arsc:资源索引表
反编译步骤:
- APK重命名为ZIP解压
- 使用dex2jar处理classes.dex:
cd dex-tools-2.1
sh d2j-dex2jar.sh classes.dex
- 使用jadx-gui查看反编译代码
三、静态脱壳 - BlackDex
支持版本:Android 5.0-12
特点:无需依赖环境,快速脱壳
使用:安装APK后选择目标应用脱壳,输出dex文件
四、动态脱壳 - Frida
环境配置:
# 安装指定版本(兼容性最佳)
pip install frida==16.1.0
pip install frida-tools==12.1.3
pip install hexdump
服务端部署:
- 查询手机架构:
getprop ro.product.cpu.abi - 下载对应frida-server
- 推送并执行:
adb push frida-server /data/local/tmp/
adb shell
chmod 777 /data/local/tmp/frida-server
./frida-server
脱壳命令:
# 方法一:包名脱壳
frida-dexdump -U -f com.package.name
# 方法二:PID脱壳
frida-dexdump -U -p PID
0x6 单向认证绕过
一、LSPosed框架安装
作用:基于Xposed的模块化框架,支持Android 8.0+
安装:通过Magisk模块安装,重启后安装Manager APK
二、绕过插件
常用插件:
- TrustMeAlready.apk
- JustTrustMe.apk
- JustMePlush.apk
- JustTrustMePP(增强版)
配置方法:
- 安装插件APK
- LSPosed中启用并勾选目标应用
- 重启应用测试
0x7 双向认证绕过
一、识别特征
响应中出现"400 No required SSL certificate was sent"表明存在双向证书校验
二、r0capture工具
项目地址:https://github.com/r0ysue/r0capture
特点:通杀各种证书校验、支持多协议、无视加固
使用前提:
- Frida 16.1.0版本
- 应用开启存储权限
操作流程:
- 启动frida-server
- 运行脱壳脚本:
python r0capture.py -U -f com.package.name -v
- 导出证书(位置:/sdcard/Download/包名.p12)
- 密码:r0ysue
三、证书配置
Burpsuite导入:
- Proxy设置 - SSL证书导入
- 选择导出的P12文件
- 设置密码r0ysue
Reqable导入:
- SSL证书设置 - 客户端证书
- 导入P12文件避免证书混乱
0x8 Root检测绕过
一、Root检测原理
- 检查系统文件(/system/bin/su)
- 目录权限检测
- 命令执行检测
- 属性验证
- 签名校验
二、隐藏方法
Magisk自带功能:
- 开启"遵守排除列表"
- 配置"排除列表"勾选目标应用
- 重启生效
Shamiko模块:
- 关闭"遵守排除列表"
- 安装Shamiko模块
- 配置排除列表
- 重启设备
注意:模拟器隐藏效果可能不理想,真机测试更佳
0x9 实战技巧总结
一、环境准备
- 推荐使用真机(Pixel系列最佳)
- 保持工具版本兼容性
- 备份重要证书和配置
二、故障排除
- 抓包失败:检查证书安装、代理设置
- 脱壳失败:确认Frida版本、应用权限
- 模块不生效:重启设备、检查勾选状态
三、进阶技巧
- 多工具协同使用(Reqable + Burpsuite)
- 脚本自动化处理重复任务
- 及时更新工具和插件版本
本指南涵盖了Android APP安全测试的核心技术栈,通过系统化的学习和实践,可有效提升移动安全测试能力。