一文读懂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模块安装

  1. 模块作用:将用户证书移动到系统证书
  2. 支持版本:Android 7-15
  3. 安装步骤
    • 下载地址: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模块导入系统证书

六、抓包测试配置

  1. 代理设置
    • Burpsuite监听局域网IP(如192.168.x.x:9090)
    • 设备网络配置手动代理指向监听地址
  2. 验证方法:启动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:资源索引

反编译步骤:

  1. dex2jar转换
    d2j-dex2jar.sh classes.dex
    
  2. jadx-gui分析:拖入生成的JAR文件查看源码

三、BlackDex脱壳

  • GitHub:https://github.com/CodingGay/BlackDex
  • 支持版本:Android 5.0-12
  • 使用方法
    • 安装对应架构的APK
    • 选择目标应用脱壳
    • 通过adb pull导出dex文件

四、Frida动态脱壳

环境搭建:

  1. 版本选择:推荐Frida 16.1.0(高版本可能存在兼容问题)
  2. 服务端安装
    # 上传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+
  • 安装方法
    1. 通过Magisk安装LSPosed模块
    2. 重启后安装Manager APK
    3. 激活模块并配置目标应用

二、绕过插件集合

  1. TrustMeAlready:基础绕过插件
  2. JustTrustMe:经典SSL验证绕过
  3. JustMePlush:增强版绕过工具
  4. 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
  • 特点:无视证书校验、通杀应用层协议

环境准备:

  1. Frida版本:推荐16.1.0
  2. 应用权限:开启存储卡读写权限
  3. 脚本执行
    python r0capture.py -U -f <包名> -v
    

证书导出:

  • 导出路径:/sdcard/Download/<包名>.p12
  • 默认密码:r0ysue
  • 导出方法:adb pull或文件管理器分享

三、证书导入配置

Burpsuite导入:

  1. 用户选项→SSL证书→导入
  2. 选择P12文件,输入密码
  3. 配置通配符域名(*)

Reqable导入:

  1. 客户端证书:用于双向验证场景
  2. 注意事项:导入可能导致证书混乱,建议备份

0x7 Root检测与隐藏

一、Root检测方法

  1. 文件检查:/system/bin/su、/system/xbin/su
  2. 权限判断:/system目录可写性
  3. 命令测试:id、su命令执行
  4. 属性查看:ro.secure属性值
  5. 工具检测:RootBeer等专业工具

二、Magisk隐藏方案

  1. Zygisk激活:Magisk设置中启用
  2. 排除列表:勾选需要隐藏Root的应用
  3. 强制使用:确保排除列表生效

三、Shamiko模块

  • 作用:增强Root隐藏能力
  • 版本推荐:0.6版本(高版本可能报错)
  • 安装条件:关闭"遵守排除列表"开关
  • 配置方法
    1. 通过Magisk安装模块
    2. 重启设备
    3. 在排除列表中勾选目标应用

0x8 实战注意事项

一、环境准备要点

  1. 测试设备:推荐真机(Pixel、小米系列)
  2. 系统版本:Android 10-13为最佳测试范围
  3. 工具备份:证书和配置文件定期备份

二、常见问题解决

  1. adb连接失败:检查USB调试和网络连接
  2. 证书导入失败:确认系统证书格式和权限
  3. 抓包无数据:检查代理设置和防火墙规则
  4. 模块不生效:重启设备并检查激活状态

三、最佳实践建议

  1. 工具组合:Reqable+Burpsuite二级代理
  2. 脚本版本:保持Frida和工具版本兼容
  3. 测试流程:从简单应用到复杂应用逐步测试
  4. 问题排查:优先检查证书和Root隐藏配置

本指南涵盖了Android APP安全测试的核心技术环节,通过系统化的工具配置和实战方法,为移动安全测试提供完整解决方案。在实际测试中应根据目标应用的具体防护措施灵活调整技术方案。

相似文章
相似文章
 全屏