使用 tshark 嗅探带有 .pem 密钥的 TLS 加密流量时出现问题

使用 tshark 嗅探带有 .pem 密钥的 TLS 加密流量时出现问题

我在使用 tshark(命令行 Wireshark)解密蜜网中的 TLS 加密 syslog-ng 数据包时遇到了问题。目标是能够拦截从蜜罐到蜜罐日志服务器的数据包。我有私钥作为 .pem 文件,格式如下:

-----开始 RSA 私钥-----

{关键就在这里}

-----结束 RSA 私钥------

用于捕获的命令是这样的:

tshark -n -o "ssl.desegment_ssl_records: TRUE" -o "ssl.desegment_ssl_application_data: TRUE" -o "ssl.keys_list: 0.0.0.0,0,data,/root/privkey_new.pem" -o "ssl.debug_file: SSL-Decrypt.log" -i eth1 -R "tcp.port==1999" -T fields -e data.data

这将输出十六进制,但可以通过管道将其格式化为 ASCIIxxd -r -p

问题在于,尽管 tshark 的调试日志文件成功加载了密钥,但加密流量似乎并未解密。

以下是来自 tshark 的调试文件:

ssl_load_key: swapping p and q parameters and recomputing u
ssl_init IPv4 addr '0.0.0.0' (0.0.0.0) port '0' filename '/root/privkey_new.pem' password(only for p12 file) ''
ssl_init private key file /root/privkey_new.pem successfully loaded.
association_add TCP port 0 protocol data handle 0x7f2b49775a50

我设法通过使用 TCPdump 记录流量,然后使用 SSLDump 解密流量来解密流量。但我的目标是能够实时解密流量,而不是通过文件解密。SSLDump 不支持在没有 IP 地址的桥接接口上进行实时捕获。

我希望有人对这个问题有所了解。

答案1

虽然您提供的信息不足以判断您的实例是否属于这种情况,但许多服务器已切换到提供以下方案的方案:“完美前向保密”也就是说,临时对称加密密钥是使用Diffie-Hellman协商的,而不是传统的由一方生成,然后使用证书密钥对进行非对称加密发送的技术。

当然,这意味着如果不直接从客户端或服务器获取临时密钥(不太可能),则无法解密。由于在这种情况下,密钥不是使用证书密钥对加密发送的,因此拥有私钥对您没有帮助。这就是完美前向保密的全部要点。即使您拥有私钥,您仍然无法解密捕获的流量。

如果你需要在自己的测试中进行流量监听,可以通过一个可以输出传输内容的中继来运行流量(就像我在这里写的一样),或者关闭客户端/服务器上的 PFS。这意味着禁用任何提及 DH 密钥交换的协议(例如 DHE 或 ECDHE)。

相关内容