我正在对一个发送电子邮件的恶意软件进行恶意软件分析。该恶意软件包含一些硬编码的电子邮件地址。它使用 Google SMTP 发送电子邮件,我不确定它是如何工作的
首先,恶意软件发出一个 DNS 请求来解析谷歌的 SMTP 服务器 IP。 DNS查询
然后它启动 3 次握手 TCP 与 google 的服务器 握手 3 次与 google SMTP 服务器握手
然后恶意软件发送一封电子邮件,但我不确定它如何通过谷歌服务器进行身份验证或识别将电子邮件发送到哪里。 服务器和恶意软件之间的 TCP 通信流
这是原始的 pcapng 文件:wetransfer 中的 pcap 文件
我的问题是 Google SMTP 如何解决将电子邮件发送给谁的问题?还有可能有一个类似于 fakedns 的假 google SMTP 服务器,以便我可以接收电子邮件吗?
它没有明确地进行身份验证,因为它使用服务器到服务器的“邮件交换”端口,在这种情况下,该端口用于将邮件从另一个域传递给 Gmail 收件人。域之间的邮件交换不需要身份验证;电子邮件是一个任何人都可以加入的开放系统。
但是 Google 的 SMTP 服务器将拒绝此邮件作为欺骗,因为它知道声称“来自 gmail.com”的邮件的外部传递通常是假的(我的垃圾邮件文件夹中有几个这样的示例;它们都显示橙色欺骗警告)。来自Gmail 用户的合法邮件不会到达 MX 端口——它们将由邮件应用程序通过 SMTP“邮件提交”端口 465 或 587 提交,这需要使用该
AUTH
命令进行明确的用户身份验证。(如果合法邮件从 Gmail 转发出去,然后通过 MX 转发回 Gmail 服务器,那么它至少会有一个 Gmail 可以识别的 DKIM 签名。)
此外,许多域使用 SPF 来指定允许哪些 IP 地址“从”该域发送邮件,这是带外身份验证(
MAIL FROM
如果检查失败,服务器将拒绝您的命令)。因此,如果您的示例声称来自不同的系统(例如,如果它说“发件人:@yahoo.com”),Gmail 将拒绝该邮件,因为该邮件未通过 SPF 检查。客户端使用 SMTP 命令告诉它
RCPT TO:
,如您的 Wireshark 捕获中所示。与 一起
MAIL FROM
,这两个命令构成了消息的“信封”,它控制消息的传递位置(独立于“From:/To:/Cc:”标头,这些标头仅用于显示)。当然,您可以安装一个真正的 SMTP 服务器并将其配置为将 gmail.com 作为“本地”域来处理,或者编写一个自定义响应器,根据需要只回答 220/250/354。(不幸的是,我不知道任何现有的“假” SMTP 服务器软件,但从头开始制作一个可能需要 15 行 Python/Perl/Ruby。)