我读了很多关于嗅探 Whatsapp 流量的文章,我已经知道是通过 ssl 进行的。 但我需要知道,一旦我不知道 Whatsapp 用于加密的私钥是什么,是否有任何方法可以解密此 ssl 流量。
那么我如何才能发现正在使用哪个证书或者是否存在另一种方法来解密这些消息?
我不想阅读任何人的聊天记录,我的目的实际上是通过网络查看协议消息。要理解,请进行逆向工程并根据个人工作目的详细阐述一个简单的 JAVA api。
我正在使用wireshark来读取ssl流量。
您可以尝试使用可以生成虚假 SSL 证书的代理软件进行中间人攻击,但它并不总是有效。 其中一些应用程序使用证书固定来防止此类攻击。
HTTP 代理:
http://fiddler2.com/get-fiddler
该软件会生成一个“明显”的假证书,如果应用程序允许,您就可以接受该证书。
证书固定:
https://security.stackexchange.com/questions/29988/what-is-certificate-pinning
对于服务器和客户端来说,最简单但最具侵入性且易于发现的方法:
ssl/tls 带有假证书的中间人。 由于这会更改客户端应用程序看到的服务器证书,因此客户端应用程序可能会拒绝连接(证书固定、硬固定)。如果没有,对你有好处,你控制服务器,你可以访问协商的密钥。
为什么?客户端和服务器都协商一个共享的主密钥,从中派生出一组客户端和服务器会话密钥(使用相应 rfc 中指定的 tls prf,例如 rfc2246 - tls1.0)。 也就是说,如果您
不想或不能扰乱服务器并且您可以访问客户端进程,您可以以某种方式找到一种方法从内存中提取主密钥并重新计算客户端/ rfc 中指定的服务器会话密钥。提取可以通过调试应用程序、搜索内存工件或修补它并随后解密协议消息来完成。请注意,主密钥会时不时地重新生成,因此您还必须跟踪导致主密钥协商的客户端问候(客户端随机)或确切的时间,以便允许wireshark将密钥与重新协商进行匹配。密钥仅对此客户端会话有效,您可以将密码不限于解密为 RSA 身份验证,因为主密钥是双方在 tls 密钥协商完成后达成一致的最终密钥。 一旦您获得了主密钥并将其映射到客户端,您就可以将其以
nss 键盘日志格式pymemscrape
对于 Windows:“高级系统设置”->“环境变量”
添加名称为“SSLKEYLOGFILE”的新变量并指定文件 /path/to/sslkeylog.log。
Linux、MAC 操作系统:
$ 导出 SSLKEYLOGFILE=~/path/to/sslkeylog.log
编辑 -> 首选项 -> 协议 -> 选择 SSL
浏览“sslkeylog.log”文件到(Pre)-Master-Secret 日志文件名,然后保存。
解密此信息的唯一方法是侵入 Whatsapp 服务器并窃取他们的私钥(请不要这样做)