从开始到完成:配置安卓手机进行渗透测试
背景
除非持续进行移动应用渗透测试,否则方法论很容易过时。每个新版本的安卓都会带来需要绕过的额外安全功能,使三年前使用的测试设备配置流程变得过时。
本文记录了在Android 12(2022年10月)上经过验证的有效流程,使用工厂未Root的Pixel 4A设备,逐步配置渗透测试环境,包括应对越来越普遍的证书绑定绕过。
操作步骤概述
- 启用开发者模式、解锁Bootloader和USB调试
- 解锁Bootloader
- 使用Magisk修改工厂启动镜像
- 刷入新镜像到Bootloader,获取Root权限
- 转换Burp证书为Android所需格式
- 使用Magisk模块模板安装Burp证书为受信任CA
- 在手机上安装和运行Frida服务器
- 通过Runtime Mobile Security前端连接Frida服务器代理
- 在RMS挂钩进程中运行目标应用
- 使用自定义RMS插件绕过证书绑定
Root手机
所需工具
- Android Debug Bridge (adb)
1
# apt install adb
- fastboot
1
# apt install fastboot
解锁Bootloader
- 启用开发者模式:设置 → 关于手机 → 点击"版本号"7次
- 启用USB调试和OEM解锁:设置 → 系统 → 高级 → 开发者选项
- 测试adb连接:
1
$ adb devices -l
- 重启到fastboot模式:
1
$ adb reboot bootloader
- 解锁Bootloader:
1
$ fastboot flashing unlock
安装Magisk应用
从GitHub下载最新Magisk APK并使用adb安装:
|
|
使用Magisk修改启动镜像
- 下载匹配的设备镜像
- 提取boot.img文件
- 推送到手机:
1
$ adb push boot.img /storage/self/primary/Download
- 使用Magisk应用修补镜像文件
- 拉取修补后的镜像:
1
$ adb pull /storage/self/primary/Download/magisk_patched-*.img
- 刷入修补后的镜像:
1
$ fastboot flash boot magisk_patched-*.img
安装Burp证书
导出和转换证书
- 从Burp导出证书:
1
$ curl http://burp/cert -x localhost:8080 > /tmp/cacert.der
- 转换为PEM格式:
1
$ openssl x509 -inform DER -in /tmp/cacert.der -out /tmp/cacert.pem
- 重命名为哈希格式:
1 2
$ HASH=$(openssl x509 -inform PEM -subject_hash_old -in /tmp/cacert.pem | head -1) $ mv /tmp/cacert.pem /tmp/$HASH.0
使用MMT创建模块
- 克隆MMT-Extended仓库:
1
$ git clone https://github.com/Zackptg5/MMT-Extended
- 创建目录结构并复制证书
- 修改customize.sh脚本
- 打包并推送到手机:
1 2
$ zip -9 -r MMT.zip . $ adb push MMT.zip /storage/self/primary/Download/
在Magisk中安装模块
- 启用Zygisk
- 从存储安装模块
- 重启手机验证证书安装
通过USB代理流量
建立反向代理:
|
|
在手机网络设置中配置代理服务器为localhost:8080
绕过证书绑定
所需工具
- Frida工具:
pip install frida-tools
- nodeJS & npm
- Runtime Mobile Security (RMS):
npm install -g rms-runtime-mobile-security
安装Frida服务器
- 下载匹配版本的Frida服务器
- 推送到手机:
1
$ adb push frida-server-*.android-arm64 /data/local/tmp
- 设置权限并运行:
1 2
$ chmod 777 ./frida-server-* $ ./frida-server-* &
使用RMS
- 启动RMS web界面:
1
$ rms
- 访问http://localhost:5000
- 选择Android操作系统
- 设置包名(如com.facebook.katana)
- 选择spawn方式和绕过脚本(ssl_pinning_multi_bypass.js)
- 启动RMS开始拦截流量
结语
本文收集了配置安卓设备进行渗透测试的完整流程,随着Android系统的持续更新,这些步骤最终会过时,但在2022年10月时已验证有效。感谢Lance Pendergrass的技术分享和Carrie Roberts的指导启发。