从APK中提取HTTP请求的方法指南

6次阅读
没有评论

案例研究:从 APK 中提取 HTTP 请求

背景简介

用户提出了一处问题,询问如何从一个名为 com.shopify.arrive 的 APK 里找到所有 HTTP 请求相关的代码,特别是这些请求触发的具体位置或存储在何处。由于 APK 包含了一些用 React Native 编写的库,在尝试使用普通反编译工具后未见明显效果。

分析步骤

  1. 初步检测:用户尝试通过 Android 虚拟机(AVD)和一些静态分析工具来查看应用运行时的行为,但未能获得显著的成效。这意味着,可能需要采取更深入且细致的方法才能定位到 HTTP 请求的相关代码。

  2. 反编译与搜索

  3. 手动反编译:将 APK 在 AAPT2 中转化成 Dex 文件,并利用 Fernflower 或 CFR 等工具进行进一步的解码以获得可读性更高的 Java 代码。通过正则表达式或搜索引擎查找所有的 URL, http , https 关键字等。
  4. 自动化分析:使用自动化工具如 MobSF,这类工具能自动识别并提取 APK 中涉及 HTTP 请求的 URL 地址。

  5. 动态分析

  6. 使用中间人攻击(MitM)技术抓取真实环境中应用产生的网络流量。这可以通过配置 DNS 服务器来实现,当有请求发出时,你可以获取到这些流量信息。
  7. 分析抓取的数据,尝试找到这些 HTTP 请求是由哪个 APK 文件或类触发的。

  8. 逆向工程与静态分析

  9. 利用 IDA Pro、Ghidra 等工具进行反汇编/反汇编操作。特别是针对可能使用 Java Native Interface (JNI) 实现的部分进行深入分析。

  10. 综合结论

  11. 结合上述方法,可以比较全面地覆盖 APK 内代码执行路径及HTTP请求实现细节的发现。

案例解决方案

  1. 手工提取潜在 HTTP 请求代码
    shell
    # 使用 AAPT2 将 APK 转换成 dex 并进行反编译
    aapt2 d badging apkPath.apk > apkInfo.txt

然后使用 Java 语言工具如 Fernflower 或 CFR 进行解码,再通过正则表达式或者简单的grep命令来搜索 https://http:// 关键字在解码后的代码中出现的位置。

  1. 自动化工具辅助
  2. 部署并配置 MobSF 在本地环境上进行静态分析:
    shell
    git clone https://github.com/MobSF/Mobile-Security-Framework-MobSF.git
    cd Mobile-Security-Framework-MobSF
    python ./mobSF.py --target apkPath.apk
  3. 跟踪并记录应用在网络上的行为,定位具体的网络请求。

  4. 动态捕获

  5. 在安全环境下使用中间人代理(如 Burp Suite)监视流量:
    shell
    # 使用burp suite 作为攻击目标的MitM攻击代理
    burpsuite
  6. 开始对 app 进行访问,并捕获实际请求信息。

  7. 逆向代码分析

  8. 如果发现某些逻辑或函数可能隐藏了URL相关的参数,使用 IDA Pro 或 Ghidra 对疑似源码进行反编译:
    shell
    # 比较常用配置文件下载与反汇编入口点
    cd GhidraR9-R2-Update1-GA-linux-x86_64
    python Ghidra_Ras.py -c "ghidraRun /home/user/gf.gfd"

总结与建议

通过上述方法,用户可以较为系统和高效地寻找应用中的潜在 HTTP 请求实现位置及触发源头。需要注意的是,某些复杂案例可能仍需结合代码审计等更高级技术手段来全面覆盖所有可能性。最后,希望此方案能够为用户提供帮助。

正文完