查找谁在使用过时的 TLS 处理 SMTP 流量

Posted

技术标签:

【中文标题】查找谁在使用过时的 TLS 处理 SMTP 流量【英文标题】:Find who is using outdated TLS for SMTP traffic 【发布时间】:2022-01-09 11:23:11 【问题描述】:

我正在尝试从 Exchange 协议日志中收集信息,以在从 2016 升级到 Exchange 2019 之前识别使用过时 TLS 1.0 的系统。我可以使用 get-childitem 和 select-string 来搜索 smtpreceive 日志文件以查找SP_PROT_TLS1_0_SERVER 字符串,但是我最终想做的是在 Exchange smtpreceive 传输日志中搜索字符串 SP_PROT_TLS1_0_SERVER。从 SP_PROT_TLS1_0_SERVER 的点击中,我想使用会话 ID 来收集 EHLO 和 MAIL FROM 信息并将所有三个值记录在 csv 文件中,以便可以在传输日志中验证它们的准确性。到目前为止,我已经尝试将 smtpreceive 文件的所有字段加载到一个变量中,但是有些不对劲,我没有得到任何输出。

【问题讨论】:

展示你所拥有的,以及一个简短的数据样本。 我可以使用 logparser 从日志中获取会话 ID,但我不知道如何使用这些值从行中返回 ehlo 和邮件。 '.\logparser.exe -i:csv -q:on -nskiplines:4 "从 'C:\Program Files\Microsoft\Exchange Server\V15\TransportRoles\Logs\FrontEnd\ProtocolLog\SmtpReceive* 中选择 DISTINCT 会话 ID。 log' WHERE context LIKE '%TLS protocol SP_PROT_TLS1_0_SERVER%'"' 给我的 session-id 为 08D9A473F614FB0B 08D9A473F614FB12 08D9A473F614FBE1 08D9A473F614FBED。我尝试过使用变量,但是它们只为每个会话 ID 返回一行。 【参考方案1】:

您需要通过 Exchange 协议日志扫描发送和接收的流量(通过 SMTP 日志记录的邮件流)

Exchange Server TLS 指南第 2 部分:启用 TLS 1.2 并识别未使用它的客户端https://techcommunity.microsoft.com/t5/exchange-team-blog/exchange-server-tls-guidance-part-2-enabling-tls-1-2-and/ba-p/607761

Exchange Server:搜索邮件跟踪日志 https://docs.microsoft.com/en-us/Exchange/mail-flow/transport-logs/search-message-tracking-logs?view=exchserver-2019

分析 Exchange 2013 中的协议日志和邮件跟踪日志 https://social.technet.microsoft.com/wiki/contents/articles/23182.analyzing-the-protocol-logs-and-message-tracking-logs-in-exchange-2013.aspx

Exchange Server 2010 的示例条目

使用 TLS 1.2 的服务器发送邮件到另一个系统:

2018-02-22T13:53:10.494Z,<CONNECTORNAME>,08D578EB9C3F6C39,28,10.0.0.240:15443,192.168.1.42:25,*,,"TLS protocol SP_PROT_TLS1_2_CLIENT negotiation succeeded using bulk encryption algorithm CALG_AES_256 with strength 256 bits, MAC hash algorithm CALG_SHA_384 with strength 384 bits and key exchange algorithm CALG_ECDHE with strength 384 bits"

服务器接收来自另一个使用 TLS 1.2 的系统的邮件

2018-02-22T13:50:37.681Z,SERVERNAME\CONNECTORNAME Internet,07C578BB0E912319,22,10.0.0.241:25,192.168.1.102:63767,*,,"TLS protocol SP_PROT_TLS1_2_SERVER negotiation succeeded using bulk encryption algorithm CALG_AES_256 with strength 256 bits, MAC hash algorithm CALG_SHA_384 with strength 384 bits and key exchange algorithm CALG_ECDHE with strength 256 bits"

SMTP 日志解析脚本网站

https://scriptolog.blogspot.com/2007/08/smtp-log-parsing.html

https://www.axigen.com/community/t/made-a-powershell-script-to-parse-smtp-receiving-log/512

【讨论】:

到目前为止,借助您提供的链接,我已经能够做到以下几点。我使用唯一的会话 ID 作为 3 个文件之间的常量标识符。我们有一个负载均衡器,它不显示客户端 IP,我们需要收集 TLS1.0 消息的会话 ID,然后收集 Mail From 字段以及 EHLO 命令。 Logparser 函数,通过查找 WHERE LIKE "whatever" 语句中指定的内容并丢弃其他内容。这使得无法使用它从 TLS 行中获取会话 ID,然后使用它来搜索其余信息。

以上是关于查找谁在使用过时的 TLS 处理 SMTP 流量的主要内容,如果未能解决你的问题,请参考以下文章

tls 流量画像——直接使用图像处理的思路探索,待进一步观察

使用 TLS 使用来自 DELPHI(Indy) 的 Gmail 传出 SMTP

Java 邮件无法使用 tls 或 ssl 连接到 smtp

无法使用 SMTP 发送电子邮件(获取 javax.mail.MessagingException:无法将套接字转换为 TLS;)

将JavaMail与TLS结合使用

将 JavaMail 与 TLS 一起使用