像1995年一样伪造Microsoft 365邮件:绕过现代防御的技术解析

本文详细介绍了利用Microsoft Direct Send功能进行邮件伪造的技术方法,包括如何绕过企业邮件安全防护、PowerShell命令示例、Exchange Online保护机制分析,以及防御建议,为安全测试和防护提供实用指南。

像1995年一样伪造Microsoft 365邮件

Steve Borosh //

为什么选择钓鱼攻击?

在安全攻防中,测试客户对钓鱼攻击的韧性是常见任务。根据Verizon 2021年数据泄露调查报告,钓鱼攻击占所有泄露事件的25%,仍是攻击者入侵网络的主要方式之一。

纵深防御

“纵深防御”在信息安全领域已应用多年,意味着防御者采用多层保护而非依赖单一方案。邮件安全尤其需要针对钓鱼攻击采用纵深防御策略。企业可能监控新创建的钓鱼域名、在云端过滤或拦截垃圾邮件、设置SPF、DKIM、DMARC保护记录,以及扫描或阻止文件附件。结合用户意识培训和攻防演练,这些保护措施创建了多重防御层,增加了攻击者的难度。

钓鱼演练类型

常见的企业测试钓鱼演练类型包括:

  • 点击率跟踪:谁点击了?点击了多少次?
  • 凭证收集:密码、Cookie盗窃
  • 负载(附件或链接):恶意Office文档(MalDoc)、可执行文件、压缩文件

许多组织有自动化钓鱼培训程序,但这些可能无法模拟高级攻击者。

攻击视角

钓鱼是获取目标企业访问权限的常见挑战,需要时间和耐心。即使精心设置基础设施、制作钓鱼邮件和负载,一旦用户报告,一切就前功尽弃。如果能跳过基础设施、域名分类和声誉检查,用一条命令绕过所有防御呢?听起来困难?让我们深入探讨。

Microsoft Direct Send

Microsoft有一个名为“direct send”的功能,主要用于企业内打印机等设备发送邮件。它不需要认证,且可以从外部网络发送。 前提条件:Microsoft 365订阅和Exchange Online计划。 Direct send连接到称为“smart host”的MX端点,格式为“company-com.mail.protection.outlook.com”,通过端口25的telnet发送未认证邮件到内部用户,出站邮件被阻止。邮件流如图1所示。

图1 – Direct Send邮件流

设置包括:

  • MX端点:company-com.mail.protection.outlook.com
  • 端口25
  • TLS/StartTLS(可选)
  • 电子邮件地址(不需要邮箱)
  • 推荐SPF设置:v=spf1 ip4:<静态IP> include:spf.protection.outlook.com ~all

伪造邮件

通过Microsoft direct send,如果域名受信任,入站邮件可以进入企业。通常,我们可以从hr@company.com发送邮件到company.com内的其他用户,因为域名信任自身。在许多情况下,如果邮件网关信任外部域名,我们还可以伪造外部地址(如account-security-noreply@accountprotection.microsoft.com)作为发件人。 Direct send不允许向外部发送邮件,因此无法从内部伪造到外部。 伪造的附加好处是发件人字段会显示Microsoft图标。例如,从noreply@bigtimebank.com发送到user@company.com,会显示公司logo。 要测试,可在Exchange管理中心添加“绕过垃圾邮件过滤器”规则(图2),允许内部邮件进入收件箱而非垃圾邮件。

图2 – 为受信任域名绕过垃圾邮件过滤器

测试伪造

发送伪造邮件简单如使用PowerShell命令:

1
Send-MailMessage -SmtpServer company-com.mail.protection.outlook.com -To frank@company.com -From informationsecurity@company.com -Subject "Urgent Update Required" -Body "Frank,<br>We need you to update your Microsoft Office software. Run this update as soon as you can please. No need to let me know when it’s complete. <a href='https://myphishsite.azurewebsites.net/'>Download</a>" -BodyAsHTML

此cmdlet也适用于Linux PowerShell,可从几乎任何地方发送钓鱼邮件,例如Azure Cloud Shell(通过Windows Terminal访问,易于轮换IP地址)。

图3 – Windows Terminal应用 图4 – 从Azure Cloud Shell发送邮件

SPAMHAUS

SPAMHAUS会阻止大多数住宅IP地址发送邮件,因此不要从家中发送钓鱼邮件。

邮件网关

在测试使用第三方邮件网关的企业时,此伪造技术非常成功。默认配置可能信任来自自身域名和*.mail.protection.outlook.com的邮件。

Exchange Online保护

Exchange Online Protection (EOP) 是Microsoft的云邮件过滤器,保护企业免受邮件威胁。EOP默认包含在所有使用Exchange Online邮箱的Microsoft 365企业中。“Microsoft Defender for Office 365”是独立产品,不在此文讨论范围。 入站邮件首先检查发件人声誉(拦截垃圾邮件),然后扫描恶意软件(附件可能在沙箱中检测)。Microsoft提供“常见附件过滤器”,默认禁用,启用后会阻止ace、ani等文件扩展名。 邮件随后通过邮件流规则和内容过滤(反垃圾邮件、反伪造)路由。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记录不匹配发件人域名,邮件会受到更严格审查。例如,用于Microsoft设备代码钓鱼的模板可能被阻止。

Microsoft IP封禁

在钓鱼演练中,IP可能被Microsoft软封禁。可通过https://sender.office.com提交解封请求或更改IP地址。使用Cloud Shell时,重启控制台可获得新IP。

图7 – 解封被禁IP地址

技术分解

通过Microsoft direct send,我们可以代表外部或内部用户向Microsoft 365企业内的其他用户发送邮件,实质上是将伪造邮件送入许多组织。 这之所以有效,是因为Microsoft使用“smart hosts”(如company-com.mail.protection.outlook.com)允许未认证SMTP中继到内部用户。 外部第三方邮件网关能捕获大多数垃圾或伪造尝试,但Microsoft direct send伪造可能绕过这些网关,直达收件箱。 此技术已成功将钓鱼邮件投递到企业收件箱,但常见钓鱼模板或附件可能被阻止。发送前测试基础设施至关重要。

给防御者的建议

防御者应测试通过direct send发送内部邮件的能力,并确保邮件网关正确处理内部收件人邮件流。Microsoft 365没有“禁用Direct Send”功能,需正确设置邮件网关以允许特定IP代表企业发送邮件。参考邮件网关文档。

结语

截至本文撰写时,此发现已提交MSRC并被Microsoft关闭且无修复。希望本文能突出Microsoft direct send在伪造钓鱼攻击中的危险,帮助防御者更好地保护网络,同时为攻击操作员提供测试和增强企业防御的新技术。

特别感谢@ustayready指引此研究方向,查看其Python脚本7发送伪造消息。

参考文献

  1. https://www.verizon.com/business/resources/reports/dbir/2021/results-and-analysis/
  2. 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
  3. https://docs.microsoft.com/en-us/exchange/exchangeonline/media/cb07aae7-ca31-43a7-a468-74c293b37a66.png
  4. https://admin.exchange.microsoft.com/#/transportrules
  5. https://docs.microsoft.com/en-us/microsoft-365/media/tp_emailprocessingineopt3.png?view=o365-worldwide
  6. https://0xboku.com/2021/07/12/ArtOfDeviceCodePhish.html
  7. https://gist.github.com/ustayready/b8314a4a964ff498f7b4682fc66475cc
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计