【问题标题】:Sniffing SSL packets using Wireshark使用 Wireshark 嗅探 SSL 数据包
【发布时间】:2019-10-03 20:36:23
【问题描述】:

我想对解码器进行逆向工程。所以我正在使用一个android应用程序来控制解码器,我想嗅探应用程序向解码器发出的数据包流。

数据包是通过 SSL 发送的,因此它们都是加密的。除了 Wireshark,我尝试过使用 mitmproxy 和 mitmdump,但没有成功。

知道我不可能从我的解码器中获取私钥,我正在寻找一种使用代理(基本上是中间人)的方法,这将使我能够生成一个新证书,以便我可以使用它Wireshark(而不是我的解码器)上的私钥来解密我的数据包。

有什么办法可以做到吗?我将不胜感激。

【问题讨论】:

    标签: android ssl wireshark packet-sniffers man-in-the-middle


    【解决方案1】:

    如果您想避免更改证书(这不适用于许多应用程序),您可以尝试将代码注入 Android 应用程序以嗅探和转储 SSL 流量。看看https://github.com/5alt/ssl_logger(5alt 的 fork 适用于 Android)。请注意,为此您需要 root

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

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

    • 打开 USB 调试连接手机
    • https://github.com/frida/frida/releases下载frida-server以获得正确的CPU架构
      • 要了解您的设备使用的是哪种 CPU 架构(以获得正确的下载),您可以在手机上运行 getprop ro.product.cpu.abi
    • 推送到 Android 的 /data/local/tmp(以 root 身份),使其可执行 (chmod 755)。
    • 在手机上运行/data/local/tmp/frida-server
    • 在您的计算机上,使用pip install --user frida-tools 安装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 并在 function initializeGlobals 行之前插入一行 var addresses, SSL_get_fd, SSL_get_session, SSL_SESSION_get_id, getpeername, getsockname;

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

    【讨论】:

      【解决方案2】:

      您可能想查看Charles Proxy

      它允许您发送假证书并拦截 SSL 流量。

      但是,如果 android 应用程序使用证书 pining,它将无法工作。

      【讨论】:

      • 谢谢@blue112!我要试试。
      • 文档说我 Wireshark 只会拦截 http 和 https 流量,但我也想要 TCP 数据包。
      • @yosra Wireshark 也能完美显示 tcp 和 udp 数据包
      • 如果使用Charles Proxy,则不需要使用Wireshark
      • @yosra 恰恰相反:AFAIK Charles 代理仅适用于 http/https。 Wireshark 支持所有协议,但是 SSL/TLS 解密需要服务器私钥和不使用完美前向保密的密码。
      猜你喜欢
      • 2023-04-03
      • 2017-08-29
      • 2017-11-24
      • 1970-01-01
      • 2012-01-08
      • 1970-01-01
      • 2016-08-08
      • 2023-03-21
      • 1970-01-01
      相关资源
      最近更新 更多