首页 > 解决方案 > 如何在加密前拦截应用程序通信?

问题描述

我正在尝试对 Windows 应用程序用于通过网络进行通信的协议进行逆向工程。它使用 TLS 加密连接与服务器通信。

我想拦截应用程序的相关调用(对 TLS 库或安全套接字 API),并查看其纯文本消息。

完全披露:这不是为了任何丰富的目的,而是为了改进一个开源项目。

我已经尝试在 Linux 上的 Wine 下运行该应用程序,上面的内容相当于一个 LD_PRELOAD 技巧,用于拦截对 send() 的调用。 https://rafalcieslak.wordpress.com/2013/04/02/dynamic-linker-tricks-using-ld_preload-to-cheat-inject-features-and-investigate-programs/ https://www.kernel.org/ doc/html/latest/networking/tls.html

那没有用。这就是为什么我现在试图在 Windows 上拦截此类调用。

标签: c++windowsssl

解决方案


向@Cybran 的解决方案添加细节:

  1. 安装 mitmproxy。运行一次,找到它生成的 CA 证书 ( mitmproxy-ca.p12) 并将其安装为 Windows 中的根 CA。mitmproxy 提供了如何做到这一点的说明。
  2. 启动mitmdump -w outfile。它通常在端口 8080 上运行。弄清楚在什么接口/IP 上。
  3. 在 Windows 中,在“设置”->“网络设置”下,有一个手动配置代理的选项。将其指向运行 mitmdump 的接口/ip 和端口。
  4. 启动 Windows 应用程序并在 mitmdump 终端中观察流量 url。输出文件将以几乎人类可读的格式包含纯文本流量本身。

推荐阅读