whatsapp 使用wireshark 嗅探ssl 流量

问题描述 投票:0回答:6

我读了很多关于嗅探 Whatsapp 流量的文章,我已经知道是通过 ssl 进行的。 但我需要知道,一旦我不知道 Whatsapp 用于加密的私钥是什么,是否有任何方法可以解密此 ssl 流量。

那么我如何才能发现正在使用哪个证书或者是否存在另一种方法来解密这些消息?

我不想阅读任何人的聊天记录,我的目的实际上是通过网络查看协议消息。要理解,请进行逆向工程并根据个人工作目的详细阐述一个简单的 JAVA api。

我正在使用wireshark来读取ssl流量。

screenshot of a capture of a whatsapp chat

networking ssl reverse-engineering wireshark whatsapp
6个回答
8
投票

您可以尝试使用可以生成虚假 SSL 证书的代理软件进行中间人攻击,但它并不总是有效。 其中一些应用程序使用证书固定来防止此类攻击。

HTTP 代理:
http://fiddler2.com/get-fiddler
该软件会生成一个“明显”的假证书,如果应用程序允许,您就可以接受该证书。 证书固定:

https://security.stackexchange.com/questions/29988/what-is-certificate-pinning


5
投票

对于服务器和客户端来说,最简单但最具侵入性且易于发现的方法:

ssl/tls 带有假证书的中间人

。 由于这会更改客户端应用程序看到的服务器证书,因此客户端应用程序可能会拒绝连接(证书固定、硬固定)。如果没有,对你有好处,你控制服务器,你可以访问协商的密钥。

为什么?

客户端和服务器都协商一个共享的主密钥,从中派生出一组客户端和服务器会话密钥(使用相应 rfc 中指定的 tls prf,例如 rfc2246 - tls1.0)。 也就是说,如果您

不想或不能扰乱服务器

并且您可以访问客户端进程,您可以以某种方式找到一种方法从内存中提取主密钥并重新计算客户端/ rfc 中指定的服务器会话密钥。提取可以通过调试应用程序、搜索内存工件或修补它并随后解密协议消息来完成。请注意,主密钥会时不时地重新生成,因此您还必须跟踪导致主密钥协商的客户端问候(客户端随机)或确切的时间,以便允许wireshark将密钥与重新协商进行匹配。密钥仅对此客户端会话有效,您可以将密码不限于解密为 RSA 身份验证,因为主密钥是双方在 tls 密钥协商完成后达成一致的最终密钥。 一旦您获得了主密钥并将其映射到客户端,您就可以将其以

nss 键盘日志格式

输入到wireshark中。 以下是如何在内存中查找 master_key 的示例:

pymemscrape

是一个 PoC,演示如何从进程内存映像中查找 master_key。


3
投票

    在计算机上启用会话日志记录。
  1. 对于 Windows:“高级系统设置”->“环境变量”

    添加名称为“SSLKEYLOGFILE”的新变量并指定文件 /path/to/sslkeylog.log。

    Linux、MAC 操作系统:

    $ 导出 SSLKEYLOGFILE=~/path/to/sslkeylog.log

  2. 将会话日志文件添加到 Wireshark
  3. 编辑 -> 首选项 -> 协议 -> 选择 SSL

    浏览“sslkeylog.log”文件到(Pre)-Master-Secret 日志文件名,然后保存。

  4. 详细步骤在这里:
https://jimshaver.net/2015/02/11/decrypting-tls-browser-traffic-with-wireshark-the-easy-way/


1
投票

解密此信息的唯一方法是侵入 Whatsapp 服务器并窃取他们的私钥(请不要这样做)


1
投票

https://github.com/davidgfnet/wireshark-whatsapp


0
投票

© www.soinside.com 2019 - 2024. All rights reserved.