Android (4.4+) SSL 无线嗅探,无需更改证书

逆向工程 安卓 apk https协议
2021-06-10 09:55:45

我希望分析使用证书锁定的 Android APK 发送的 SSL 未加密数据。

这个可疑的 APK 用于配置无线设备。

我需要确定两件事:

  • 首先,APK与设备建立的WPA密钥
  • 然后,APK 用于配置设备的 HTTPS API 调用序列。

配置过程为:

  • 从公司网站下载混淆的 APK
  • 在他们的服务器上创建帐户,
  • 然后,APK 使用 WPA 私钥连接到设备 SSID
  • 有一个原生的 .so 可以对密钥进行一些计算

到 Internet 服务器的 HTTPS 会话使用固定证书,尝试代理会导致证书错误。

理想情况下,我想使用仿真环境,并挂钩库调用(类似于“Droidbox”似乎所做的),但我找不到更新的版本。

3个回答

iSEC 合作伙伴的Android SSL TrustKiller使用 Cydia 基板可以提供的钩子来破解证书锁定。

(我在 Stack Overflow 上给出的答案的副本)

您可以尝试将代码注入 Android 应用程序以嗅探和转储 SSL 流量。看看https://github.com/5alt/ssl_logger(5alt的 fork 适用于 Android)。请注意,您需要 root 才能执行此操作

这是通过在 OpenSSL 中挂钩函数来实现的,以便可以在加密之前/解密之后转储原始流量。

您必须安装 Frida Android 服务器:https : //www.frida.re/docs/android/

  • 用USB调试连接手机
  • frida-serverhttps://github.com/frida/frida/releases下载正确的 CPU 架构
    • 要了解您的设备正在使用哪种 CPU 架构(以获得正确的下载),您可以getprop ro.product.cpu.abi在手机上运行
  • 推送到/data/local/tmpAndroid(以 root 身份),使可执行文件 ( chmod 755)。
  • /data/local/tmp/frida-server在电话上运行
  • 在您的计算机上,frida-tools使用pip install --user frida-tools. (必须是 Python2,而不是 Python3!)
  • 通过frida-ps -U在连接手机的计算机上运行列出进程以查看是否一切正常
  • 转发 Frida 的端口: adb forward tcp:27042 tcp:27042; adb forward tcp:27043 tcp:27043
  • 进入ssl_logger你的电脑
  • python ssl_logger.py -pcap log.pcap -remote com.android.package.name在您的计算机上运行(请注意,-remote自述文件中没有解释,但这是必要的!。)
    • 您可以添加-verbose以查看实时流量输出。
    • 让它运行直到完成,按 Ctrl+C 退出。然后你就有了一个log.pcap可以在 Wireshark 中分析的文件
    • 注意:如果您遇到 JavaScript 错误,您必须编辑ssl_logger.py并在带有 的行var addresses, SSL_get_fd, SSL_get_session, SSL_SESSION_get_id, getpeername, getsockname;之前插入一行function initializeGlobals

在 Android 上使用 Frida 的教程:https : //11x256.github.io/

对于嗅探 https 调用,我使用Charles proxy,当您在设备上安装 Charles 证书时,您将能够嗅探整个 apk<-> 服务器流量。