利用Microsoft Direct Send技术实现1995式邮件欺骗攻击
为什么选择钓鱼攻击?
在安全攻防的进攻方,我们经常需要测试客户对钓鱼攻击的抵御能力。根据Verizon 2021年数据泄露调查报告,钓鱼攻击占所有入侵事件的25%。钓鱼仍然是攻击者进入网络的主要方式之一。
纵深防御
“纵深防御"一词在信息安全领域已使用多年,意味着防御者会分层部署防护措施,而不是过度依赖单一解决方案。电子邮件安全尤其需要采用纵深防御方法来应对钓鱼攻击。企业可能会监控新创建的钓鱼域名、在云端过滤或阻止垃圾邮件、设置SPF、DKIM、DMARC保护记录,以及扫描或阻止文件附件。结合用户意识培训和进攻性测试,这些防护措施提供了多层防御,增加了攻击者的难度,降低了他们的成功几率。
钓鱼测试类型
测试企业时常用的几种钓鱼类型包括:
-
点击率跟踪
- 谁点击了?
- 点击了多少次?
-
凭证收集
- 密码
- Cookie窃取
-
有效载荷(附件或链接)
- 恶意Office文档(MalDoc)
- 可执行文件
- 压缩文件
许多组织都有自动化的钓鱼培训。这些程序通常要求用户点击电子邮件中的链接来跟踪他们的"不良"行为。这些培训场景很好地向用户介绍了钓鱼攻击的潜在危险,但在模拟更高级的攻击者时可能不够准确。
进攻视角
钓鱼是许多人在试图进入目标企业时的痛点。钓鱼需要时间和耐心——大量的耐心。如果你在有限的时间和预算内进行攻击,要突破所有防御层并保持在那里需要精确性。即使花费了所有耐心和精力来设置基础设施、制作钓鱼邮件、创建有效载荷并使其通过防御,只要有一个用户报告了钓鱼邮件,一切就都前功尽弃。设置新的基础设施、创建新的借口、生成新的有效载荷,并从新的来源发送而不被检测到,这都需要时间,而且再次需要耐心。
如果我们能通过一个命令就跳过基础设施部分、绕过域名分类和声誉,并"绕过"所有目标企业的防御呢?听起来很难?让我们深入探讨。
Microsoft Direct Send
微软有一个名为"direct send"的功能文档。Direct send最常用于企业内打印或扫描到电子邮件的设备,如打印机。直接扫描不需要身份验证,可以从企业网络外部发送。
先决条件:Microsoft 365订阅和Exchange Online计划。
Direct send连接到一个称为"智能主机"的MX端点。智能主机的格式为"company-com.mail.protection.outlook.com”,并在创建新的Exchange Online计划时默认创建。您的设备或主机通过telnet在端口25上连接到智能主机,并向内部用户发送未经身份验证的电子邮件。出站电子邮件被阻止。请参见下图中的邮件流。
图1 – Direct Send邮件流
Direct send的设置:
-
MX端点,company-com.mail.protection.outlook.com
-
端口25(是的,25)
-
TLS/StartTLS(可选)
-
电子邮件地址(不需要有邮箱)
-
微软推荐的SPF设置
“v=spf1 ip4:<静态IP地址> include:spf.protection.outlook.com ~all”
欺骗
使用Microsoft direct send,如果域名受信任,入站电子邮件将进入企业。因此,在大多数情况下,使用direct send,我们可以从[email protected]发送邮件给company.com内的任何人,因为域名会信任自己。在许多情况下,如果邮件网关信任这些域名,我们还可以欺骗外部电子邮件地址给内部用户——例如,"[email protected]"(用于微软安全电子邮件)可以用作发件人地址。
Microsoft direct send不允许邮件发送到企业外部。因此,无法从内部欺骗到外部。
欺骗的一个额外好处是,“发件人"字段会填充发件人的微软图标。如果我们从[email protected]发送电子邮件到[email protected],发件人字段将显示"noreply"用户的头像,通常是公司徽标。
要针对您新创建的Exchange Online计划测试此功能,请在Exchange管理中心添加"绕过垃圾邮件过滤器"规则。
图2 – 为受信任域名绕过垃圾邮件过滤器
此规则允许内部电子邮件进入收件箱,而不是在默认初始安装时进入"垃圾邮件”。
测试欺骗
发送欺骗电子邮件就像使用PowerShell命令一样简单。
这是一个PowerShell命令示例:
|
|
此PowerShell cmdlet也可以在Linux的PowerShell中找到。考虑到这一点,几乎可以从任何地方发送钓鱼邮件。我最喜欢的方法之一是从Azure Cloud Shell直接发送,这可以从Windows Terminal轻松访问。这样可以轻松轮换IP地址。Azure Cloud Shell可以从Windows Terminal应用程序轻松访问。
图3 – Windows Terminal应用程序
图4 – 从Azure Cloud Shell发送电子邮件
SPAMHAUS
SPAMHAUS会阻止大多数住宅IP地址发送电子邮件。不要从家里发送钓鱼邮件。
邮件网关
在测试使用第三方邮件网关的企业时,使用此技术进行欺骗非常成功。虽然邮件可能仍然通过电子邮件网关,但默认配置可能信任来自其自身域名和*.mail.protection.outlook.com的电子邮件。
Exchange Online Protection
Exchange Online Protection(EOP)是微软的基于云的电子邮件过滤器,保护企业免受电子邮件威胁。EOP默认包含在所有使用Exchange Online邮箱的Microsoft 365企业中。请注意,“Microsoft Defender for Office 365"是一个单独的产品,不在本文讨论范围内。
电子邮件通过Exchange Online的流程如下所述。
图5 – Exchange Online邮件流
入站电子邮件首先经过发件人声誉审查,大多数垃圾邮件被转移或阻止。
接下来,每条消息都会扫描恶意软件。在此处了解更多关于反恶意软件保护的信息。需要注意的是,直接发送的欺骗消息仍然通过这些保护。附件可能在沙箱中引爆。微软提供了一个"常见附件过滤器”,使防御者能够默认阻止特定文件类型。此设置默认禁用,启用时默认阻止这些文件扩展名:ace、ani、app、cab、docm、exe、iso、jar、jnlp、reg、scr、vbe、vbs。
然后消息继续通过邮件流规则。
最后,消息通过内容过滤(反垃圾邮件、反欺骗)并相应路由。
有关EOP可用功能的完整列表,请访问:https://docs.microsoft.com/en-us/microsoft-365/security/office-365-security/exchange-online-protection-overview?view=o365-worldwide#eop-features。
图6 – 高风险投递池标准
不幸的是,如果我们通过代理发送欺骗邮件,且该代理的A和MX记录与发件人域名不匹配,我们的邮件将受到更严格的审查。当前用于微软设备代码钓鱼的钓鱼模板在发送时会进入未知的深渊。
微软IP封禁
在钓鱼测试期间,您的IP可能会被微软软封禁。不用担心,您可以提交解封请求或更改IP地址。如果您使用Cloud Shell发送钓鱼邮件,重新启动控制台将为您提供新的IP地址。如果您想解封IP,只需几分钟即可恢复业务。访问https://sender.office.com并输入详细信息以解封。
图7 – 解封被禁IP地址
分解
通过Microsoft direct send,我们能够代表外部或内部用户向使用Microsoft 365的企业内部的其他内部用户发送电子邮件;本质上,欺骗电子邮件进入许多组织。
这是因为微软为Exchange使用"智能主机",通常位于类似company-com.mail.protection.outlook.com的地址,允许未经身份验证的SMTP中继到内部用户。
外部第三方电子邮件网关是捕获大多数垃圾邮件或欺骗尝试的好方法。使用Microsoft direct send进行欺骗可能会绕过许多这些网关,使邮件进入收件箱。
这种欺骗技术在将钓鱼邮件投递到企业收件箱方面非常成功。然而,虽然简单的电子邮件可能进入收件箱,但常见的钓鱼模板或附件可能会被阻止。一如既往,在向目标企业发送实时电子邮件之前测试您的基础设施非常重要。
给防御者的建议
防御者应测试通过direct send发送内部电子邮件的能力,并确保任何电子邮件网关遵守内部收件人的正确邮件流。Microsoft 365中没有"禁用Direct Send"功能。必须正确设置邮件网关设置,以允许特定IP地址代表企业发送电子邮件。请参考您的邮件网关文档。
结语
在撰写本文时,此发现已提交给MSRC,并被微软关闭且未修复。我希望这篇博客文章能突出Microsoft direct send在欺骗钓鱼攻击方面带来的危险,使防御者能够更好地保护他们的网络,同时为进攻操作员提供另一种测试和增强企业防御的技术。
特别感谢@ustayready指引我进行这项研究。查看他方便的Python脚本,用于发送欺骗消息。
参考文献
- https://www.verizon.com/business/resources/reports/dbir/2021/results-and-analysis/
- https://docs.microsoft.com/en-us/exchange/mail-flow-best-practices/how-to-set-up-a-multifunction-device-or-application-to-send-email-using-microsoft-365-or-office-365
- https://docs.microsoft.com/en-us/exchange/exchangeonline/media/cb07aae7-ca31-43a7-a468-74c293b37a66.png
- https://admin.exchange.microsoft.com/#/transportrules
- https://docs.microsoft.com/en-us/microsoft-365/media/tp_emailprocessingineopt3.png?view=o365-worldwide
- https://0xboku.com/2021/07/12/ArtOfDeviceCodePhish.html
- https://gist.github.com/ustayready/b8314a4a964ff498f7b4682fc66475cc