如何记录 tls 加密的 smtp 流量?

Joh*_*nst 3 ssl smtp netcat tls starttls

我想知道我的本地 postfix 在 STARTTLS 之后对 Amazon SES smtpd 说了什么。纯文本,所以我可以理解。Amazon SES 需要 TLS,所以我暂时无法关闭它。

我目前用这个技巧记录流量的两条腿:

mkfifo proxypipe
cat proxypipe | nc -l 11111 | tee -a inflow | nc email-smtp.us-east-1.amazonaws.com smtp | tee -a outflow 1>proxypipe
Run Code Online (Sandbox Code Playgroud)

然后我与 localhost:11111 进行 postfix 对话,而不是 email-smtp.us-east-1.amazonaws.com:25。只要他们用明文交谈,这就会产生一个很好的成绩单。一旦 STARTTLS 出现,当然一切都会变得乱七八糟。

有什么技巧可以通过openssl或使用openssl或类似的东西进行后处理,以弄清楚他们彼此之间到底说了些什么?谷歌搜索没有产生任何答案。

Mic*_*ton 9

不要打扰嗅探网络连接;正如@voretaq7 所解释的,你不能。相反,有后缀记录连接通过将远程SMTP服务器的IP地址debug_peer_list

如果这不能让您获得足够的细节来了解正在发生的事情,您可以设置smtp_tls_loglevel 4为获得所有通过网络传输的完整转储。

完成后,请务必将配置改回。您不想让调试超过绝对必要的时间。

  • 不,但我刚刚编辑的令人作呕的把戏会做到这一点。:) (2认同)

vor*_*aq7 5

请允许我重新表述您的问题:

我想在 TLS 加密连接的中间插入一些东西,以显示正在发送的明文。

. . . 那么它现在不会很安全,是吗?我的意思是 TLS 的全部意义在于准确防止您尝试做的事情!-- 所以,不,你所要求的是不可能的,也不是任何理智的管理员想要的日志记录级别。
您只想知道您连接到谁(远程系统)、您告诉他们什么(从 A 到 B 的邮件)以及他们说了什么(OK、Deferred、Rejected)。


如果你真的想窃听 TLS 连接,你必须欺骗你的服务器连接到一个提供虚假 SSL 证书(你有密钥)的代理,然后代理可以解密数据(并记录它),并且然后重新加密它以转发到亚马逊的真实服务器。
您可以使用 OpenSSLs_clients_server子系统来装配这样一个野兽,但这种野兽的实现留给读者作为练习。

  • @JohannesErnst Apples 和 Velociraptors 我的朋友 - 如果您可以访问密钥读取任何加密通信是微不足道的。密码学的一个核心假设是攻击者(您)将无法访问密钥(除非您已经破坏了亚马逊并且没有告诉我们,否则就是这种情况)。如果没有密钥(或 NSA 的密码分析部门),您将无法观察线路上的明文 - 您必须依靠能够为您记录通信的一半或另一半。 (3认同)