APP攻防-云真机Frida Hook信息提取

在移动应用渗透测试中,突破抓包限制后,下一步是深入分析应用行为、提取加密密钥、绕过更复杂的防护Frida作为强大的动态插桩框架,结合云真机自动化提取工具,可高效完成资产收集。本笔记从实战视角,系统梳理云真机使用、Frida环境搭建、Hook绕过SSL Pinning、以及综合资产提取工具链。


1. 云真机:解决真机稀缺与模拟器检测

当本地设备不足或应用检测模拟器时,可使用云真机平台进行远程测试。

平台

特点

使用场景

Testin

支持主流Android/iOS真机,提供远程调试。

临时租用,快速测试特定机型。

腾讯优测

提供云真机、自动化测试。

回归测试、兼容性测试。

阿里MQC

企业级移动测试平台。

批量测试、性能分析。

个人云真机

自建真机池(如使用STF框架)。

长期、私有化测试。

推荐:红手指云手机|十年云手机老品牌,手游托管专用虚拟云手机,你的另一台云手机_红手指官网(需自行注册使用)。

操作要点

  • 选择已root的Android真机,便于安装Frida。
  • 确保支持USB调试或ADB远程连接。
  • 上传APK后,通过Web ADB执行命令。

2. Frida Hook技术:动态绕过与信息提取

Frida支持Java层和Native层Hook,可绕过SSL Pinning、动态修改返回值、追踪加密函数等。

2.1 环境搭建

步骤

命令/操作

说明

本地安装

pip install frida frida-tools

确保Python环境。

下载frida-server

从 GitHub releases 下载与本地版本一致的frida-server

选择对应架构:frida-server-xx-android-arm(真机)或x86(模拟器)。

查看设备架构

adb shell getprop ro.product.cpu.abi

输出如arm64-v8a,选择相应版本。

推送并运行

``bash<br>adb push frida-server /data/local/tmp/<br>adb shell<br>cd /data/local/tmp/<br>chmod 777 frida-server<br>./frida-server &<br>``

后台运行。

端口转发

adb forward tcp:27042 tcp:27042

使本地Frida连接设备。

验证连接

frida-ps -U(USB设备)或frida-ps -R(远程)

显示进程列表即成功。

2.2 绕过SSL Pinning(常见场景)

使用现成脚本SSLUnpinning.js,直接注入目标应用。

# 启动应用并注入脚本 frida -U -f ddns.android.vuls -l SSLUnpinning.js --no-pause # 针对已运行的应用 frida -U com.p1.mobile.putong -l SSLUnpinning.js

脚本示例SSLUnpinning.js):

Java.perform(function() { var X509TrustManager = Java.use('javax.net.ssl.X509TrustManager'); X509TrustManager.checkServerTrusted.implementation = function(chain, authType) { console.log('SSL Pinning bypassed!'); }; });

2.3 常用Frida脚本资源

  • FridaScripts – 收集常用脚本(SSL绕过、Root检测、模拟器检测等)。

2.4 高级Hook:拦截加密函数

// Hook AES加密函数,打印明文和密钥 Java.perform(function() { var Cipher = Java.use('javax.crypto.Cipher'); Cipher.doFinal.overload('[B').implementation = function(input) { console.log('Plaintext: ' + bytesToString(input)); var result = this.doFinal(input); console.log('Ciphertext: ' + bytesToString(result)); return result; }; });

3. 综合资产提取工具

自动化提取APK中的域名、IP、URL、API密钥等敏感信息。

工具

功能

使用方法

apkleaks

扫描APK中的URL、IP、邮件、密钥等。

apkleaks -f app.apk -o output.txt

AppMessenger

提取APP通信域名、证书信息。

python app_messenger.py -i app.apk

MobSF

静态+动态分析,生成完整安全报告。

运行./run.sh,上传APK自动扫描。

jadx

反编译为Java,手动搜索关键词。

jadx-gui app.apk,搜索http://api_key等。

自动化信息提取示例(apkleaks)

pip install apkleaks apkleaks -f target.apk -o results.json cat results.json | grep "http"

4. IOS端双向认证绕过

对于iOS应用,使用SSL Kill Switch 2绕过SSL Pinning(需越狱)。

安装与使用

  1. 在Cydia中添加源:https://github.com/nabla-c0d3/ssl-kill-switch2
  2. 安装插件,重启设备。
  3. 在设置中启用“Disable SSL Pinning”即可。

教程:testerhome.com/topics/17249


5. 渗透测试实战 Checklist
1. 环境准备 - [ ] 准备一台root真机(或云真机),安装Magisk/LSPosed。 - [ ] 安装Frida及frida-server,确认版本一致。 - [ ] 下载常用Frida脚本(SSLUnpinning.js、root-detection.js)。 2. 动态分析 - [ ] 使用Frida注入目标应用,绕过SSL Pinning。 - [ ] Hook关键函数(加密、签名、网络请求),记录参数。 - [ ] 导出网络请求、内存中的敏感数据。 3. 静态资产提取 - [ ] 使用apkleaks扫描APK,提取域名、API端点。 - [ ] 使用MobSF进行深度静态分析。 - [ ] 手动反编译搜索`http`、`api`、`token`、`secret`。 4. 组合利用 - [ ] 将提取的API接口导入Burp,测试未授权访问、越权。 - [ ] 使用提取的密钥解密加密流量或数据。 5. 报告输出 - [ ] 记录资产清单(域名、IP、API、证书、密钥)。 - [ ] 提供修复建议(加固、混淆、动态检测)。

6. 总结

APP资产收集是移动渗透测试的基石。云真机解决硬件短缺,Frida Hook突破SSL Pinning和动态追踪,自动化提取工具快速沉淀静态信息。三者结合,可高效完成从抓包到深入分析的全流程。掌握这些技术,能让你在面对复杂防护的移动应用时游刃有余。