4

我一直在阅读很多关于嗅探whatsapp 流量的内容,并且我已经知道已经超过了 ssl。但是,一旦我不知道 whatsapp 用于加密的私钥是什么,我需要知道是否有任何方法可以解密此 ssl 流量。

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

我不想阅读任何人的聊天记录,我的意图是通过网络查看协议消息。为了理解,进行逆向工程并为个人工作目的详细说明一个简单的 JAVA api。

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

捕获whatsapp 聊天的屏幕截图

4

5 回答 5

8

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

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

证书固定:
https ://security.stackexchange.com/questions/29988/what-is-certificate-pinning

于 2013-09-17T21:15:08.217 回答
4

除非您控制服务器(RSA 身份验证套件、服务器应用程序或程序内存的私钥)或客户端(应用程序或内存)(好吧,或者两者都协商弱密码,但那是不同的主题),否则您无法解密消息

最简单但最具侵入性且易于发现服务器和客户端的方法:ssl/tls man-in-the-middle with fake certs。由于这正在更改客户端应用程序看到的服务器证书,因此客户端应用程序可能只是拒绝连接(证书固定,硬固定)。如果没有,对您有好处,您可以控制服务器,您可以访问协商的密钥。

为什么? 客户端和服务器都协商一个共享的主密钥,它们从中派生一组客户端和服务器会话密钥(使用在相应的 rfc 中指定的 tls prf,例如 rfc2246 - tls1.0)。

也就是说,如果您不想或不能弄乱服务器并且您可以访问客户端进程,您可以找到一种方法从内存中提取主密钥并重新计算客户端/服务器会话密钥,如RFC。提取可以通过调试应用程序、搜索内存工件或修补它并随后解密协议消息来完成。请注意,主密钥会时不时地重新生成,因此您还必须跟踪导致主密钥协商的客户端问候(客户端随机)或确切时间,以允许wireshark 将密钥与重新协商匹配。密钥仅对此客户端会话有效,您可以解密密码不受限制以 RSA 身份验证作为主密钥是双方在 tls 密钥协商完成后同意的最终秘密。

一旦你有了主密钥并将其映射到客户端你好,你可以将它以nss keylog 格式输入到wireshark 。

下面是一个如何在内存中找到 master_key 的示例: pymemscrape是一个 PoC,它演示了如何从进程内存映像中找到 master_key。

于 2015-10-23T18:31:58.910 回答
3

使用会话密钥记录,您可以访问会话的密钥。之后,wireshark 可以用它解析数据包。

  1. 在机器上启用会话日志记录。

    对于 Windows:“高级系统设置”->“环境变量”

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

    Linux、MAC 操作系统:

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

  2. 将会话日志文件添加到 Wireshark

    编辑 -> 首选项 -> 协议 -> 选择 SSL

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

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

于 2016-03-17T13:48:26.017 回答
1

这是不可能的。虽然每个人都有服务器证书和公钥,但要解密信息需要私钥。私钥仅存在于服务器(whatsapp)上。

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

于 2013-09-17T06:46:15.933 回答
1

如果你有钥匙,也许这个插件可以帮助你!看一看

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

于 2015-11-06T04:25:44.243 回答