使用 Caido 和 Frida 拦截移动端应用程序流量

💡 原文中文,约8500字,阅读约需21分钟。
📝

内容提要

作为安全研究员,使用Caido工具拦截IoT设备流量至关重要。Caido是用Rust编写的,内存占用低,适用于Linux。通过ADB连接安卓设备,配置HTTP代理并安装CA证书,最终利用Frida绕过证书绑定,实现流量监控和API漏洞分析。

🎯

关键要点

  • Caido是一个用Rust编写的HTTP代理工具,适用于Linux,内存占用低。
  • 使用实体安卓设备而非模拟器进行IoT设备的安全测试,确保通过BLE与设备通信。
  • 通过USB连接安卓设备并启用开发者模式,确保ADB功能开启。
  • 配置Caido实例以在本地运行,监听localhost和TCP端口8080。
  • 下载并安装移动应用程序,配置Wi-Fi网络使用手动HTTP代理。
  • 将Caido的CA证书添加到安卓设备的信任存储中,以便进行流量拦截。
  • 安卓应用程序可能因证书绑定而不信任CA证书,导致流量无法拦截。
  • 使用Frida工具绕过证书绑定,通过动态插桩修改应用程序。
  • 解包APK文件并添加Frida的Gadget库,修改应用程序以加载该库。
  • 重新打包并签名修改后的APK文件,安装到安卓设备上。
  • 启动修改后的应用程序,使用Frida绕过证书绑定,成功拦截流量。
  • 在Caido中创建范围过滤请求,以便专注于特定的API流量。
  • 使用移动应用程序发现API端点,寻找潜在的安全漏洞。

延伸问答

Caido是什么,它的主要特点是什么?

Caido是一个用Rust编写的HTTP代理工具,适用于Linux,具有低内存占用的特点。

如何通过ADB连接安卓设备进行流量拦截?

需要通过USB连接安卓设备,启用开发者模式并确保ADB功能开启,然后配置Caido实例监听localhost和TCP端口8080。

为什么使用实体安卓设备而不是模拟器进行测试?

实体设备能够通过BLE与IoT设备通信,而模拟器无法实现这一点。

如何解决安卓应用程序的证书绑定问题?

可以使用Frida工具绕过证书绑定,通过动态插桩修改应用程序,使其不执行证书绑定。

如何在Caido中过滤请求以专注于特定API流量?

可以在Caido中创建范围过滤请求,定义哪些请求应该显示在HTTP History窗口中。

使用Frida进行动态插桩的基本步骤是什么?

需要解包APK文件,添加Frida的Gadget库,修改应用程序以加载该库,然后重新打包并签名APK文件。

➡️

继续阅读