Google SMTP 如何工作?

Google SMTP 如何工作?

我正在对一个发送电子邮件的恶意软件进行分析。该恶意软件包含一些硬编码的电子邮件地址。它使用 Google SMTP 发送电子邮件,我不确定它是如何工作的

首先,恶意软件发送DNS请求来解析Google的SMTP服务器IP。 DNS 查询

然后它与谷歌的服务器发起三次握手 TCP 握手 与谷歌 SMTP 服务器进行三次握手

然后恶意软件发送一封电子邮件,但我不确定它如何通过谷歌服务器进行身份验证或确定将电子邮件发送到哪里。 服务器与恶意软件之间的 TCP 通信流

这是原始的 pcapng 文件:wetransfer 中的 pcap 文件

我的问题是 Google SMTP 如何解析电子邮件发送给谁?此外,是否有可能拥有一个类似于 fakedns 的虚假 Google SMTP 服务器,以便我可以接收电子邮件?

答案1

然后恶意软件会发送一封电子邮件,但我不确定它如何与谷歌服务器进行身份验证

它没有明确进行身份验证,因为它使用服务器到服务器的“邮件交换”端口,该端口在本例中用于从其他域与 Gmail 收件人之间可以互相发送邮件。域之间的邮件交换不需要身份验证;电子邮件是一个开放的系统,任何人都可以加入。

但是 Google 的 SMTP 服务器会拒绝此邮件,认为它是伪造的,因为它知道声称“来自 gmail.com”的外部邮件通常是假的(我的垃圾邮件文件夹中有几个这样的例子;它们都显示橙色的伪造警告)。合法邮件Gmail 用户不会到达 MX 端口 - 他们将通过 SMTP“消息提交”端口 465 或 587 由邮件应用程序提交,这需要使用命令进行明确的用户身份验证AUTH

(如果合法邮件从 Gmail 转发出去,然后通过 MX 转发回 Gmail 服务器,那么它至少会有一个 Gmail 可以识别的 DKIM 签名。)

此外,许多域使用 SPF 来指定允许哪些 IP 地址“从”该域发送邮件,这是带外身份验证(MAIL FROM如果检查失败,服务器将拒绝您的命令)。因此,如果您的示例声称来自不同的系统(例如,如果它说“发件人:@yahoo.com”),Gmail 会拒绝该邮件,因为未通过 SPF 检查。

我的问题是 Google SMTP 如何解析将电子邮件发送给谁?

客户端使用RCPT TO:SMTP 命令通知它,如您的 Wireshark 捕获中所示。

这两个命令与 一起MAIL FROM构成了邮件的“信封”,控制着邮件的投递地点(独立于“发件人:/收件人:/抄送:”标头,后者仅用于显示)。

另外,是否可以拥有类似于 fakedns 的虚假 Google SMTP 服务器,以便我可以接收电子邮件?

当然,您可以安装一个真正的 SMTP 服务器并将其配置为将 gmail.com 作为“本地”域处理,或者编写一个自定义响应程序,根据需要仅响应 220/250/354。(不幸的是,我不知道任何现有的“假”SMTP 服务器软件,但从头开始制作一个可能需要 15 行 Python/Perl/Ruby。)

相关内容