如何测试开放邮件中继
Carrie Roberts // *客座博客
确保外部邮件服务器正确配置以不支持开放邮件中继至关重要。开放邮件中继可能被垃圾邮件发送者滥用,耗尽您的资源并使您被列入黑名单。如今完全开放的邮件中继并不常见,因为它们会被滥用,从而促使管理员修复它们。
但常见的是我称之为“部分开放邮件中继”的情况。当邮件中继可用于执行以下操作之一时,就会发生这种情况:
- 从外部源地址发送电子邮件到内部目标地址
- 从内部源地址发送电子邮件到内部目标地址
这对于针对内部用户开发电子邮件钓鱼活动的攻击者非常有用。想象一下,一封看似来自CSO的电子邮件发送给所有员工。利用部分开放邮件中继使电子邮件看起来真实,员工没有视觉指示表明这并非真正来自CSO。如果员工的电子邮件客户端告诉他们它来自CSO,并且源电子邮件地址确认了这一点,他们更可能信任它确实如此。没有通常的“这是钓鱼邮件”的线索,例如使用类似域名。
不幸的是,漏洞扫描器在检测此漏洞方面做得不好,即使它们检测到它。因此,为了确保,您需要自己测试,以下是您可以如何操作。
使用telnet或netcat客户端连接到邮件服务器端口。这里有一个需要注意的问题。邮件服务器端口通常是端口25,许多家庭互联网服务提供商会阻止此端口。这意味着当您尝试连接时,它会超时。以下是两个因此原因连接失败的示例。第一个是使用telnet客户端的尝试,第二个是使用netcat客户端的尝试。
您可以使用以下PowerShell命令检查Windows上的端口25是否开放用于通信。
|
|
如果您得到的响应不是“Yep, port 25 is open”,您可能正在进行过滤,需要从不同的网络位置进行此测试。
现在我们知道我们可以在端口25上通信,我们可以使用以下命令测试开放邮件中继。在下面的示例中,蓝色文本显示您应在命令行中输入的内容,绿色文本显示命令输出或服务器响应。
上面的命令只是一个示例,结果证明对于测试开放邮件中继来说是一个不好的示例。这是因为example.com实际上是一些邮件服务器中配置的特殊情况用于测试。它会假装接受消息进行传递,但实际上并不传递。因此,当您想测试开放邮件中继时,请使用不同于example.com的域。您应首先检查是否可以从外部电子邮件地址中继邮件到外部电子邮件地址,如下所示。
测试:外部源地址,外部目标地址
|
|
接下来,检查您是否可以使用外部源电子邮件地址和内部目标地址中继邮件。
测试:外部源地址,内部目标地址
|
|
最后,检查您是否可以使用内部源电子邮件地址和内部目标地址中继邮件。
测试:内部源地址,内部目标地址
|
|
您应重复此最后测试,以确保您使用了既有的内部源地址和不存在的内部源地址。这是因为一些邮件服务器可能配置为要求对现有用户进行身份验证,但可能通过使用不存在的内部源地址(例如在我们的示例中does.not.exist@blackhillsinfosec.com)来绕过此保护。
在所有邮件服务器上检查此问题,因为每个服务器可能配置不同。以下是您可以使用Linux dig命令列出域的邮件服务器的方法。或在Windows上,尝试nslookup。
|
|
还有一个Metasploit模块可以测试邮件中继此处。
最后,以下是一些关于如何修复您发现的任何问题的建议。简单的答案是配置您的邮件服务器不中继邮件,但业务要求可能需要从受信任的第三方中继邮件。在这种情况下,考虑实施以下控制措施之一,首选第一个解决方案:
- 要求使用用户帐户进行身份验证并通过STARTTLS进行加密。
- 配置电子邮件网关仅允许电子邮件网关本身和授权的IP地址发送。
您可以在Carrie的课程中了解更多! 在此处查看: 攻击模拟工具:Atomic Red Team、CALDERA等 PowerShell for InfoSec 提供实时/虚拟和点播!