检测并修正 Outlook 规则和自定义Forms注入攻击

提示

你知道可以免费试用Office 365计划 2 Microsoft Defender XDR 中的功能吗? 在 Microsoft Defender 门户试用中心使用 90 天Defender for Office 365试用版。 在此处了解谁可以注册和试用条款。

总结了解如何识别和修正 Outlook 规则以及Office 365中的自定义Forms注入攻击。

什么是 Outlook 规则和自定义Forms注入攻击?

攻击者获得对组织的访问权限后,会尝试建立一个立足点,以便在发现他们后继续留守或重新进入。 此活动称为 建立持久性机制。 攻击者可以通过两种方式使用 Outlook 建立持久性机制:

  • 利用 Outlook 规则。
  • 通过将自定义窗体注入 Outlook。

重新安装 Outlook,甚至为受影响的人提供新计算机都无济于事。 当 Outlook 的全新安装连接到邮箱时,所有规则和表单将从云同步。 规则或表单通常设计为在本地计算机上运行远程代码和安装恶意软件。 恶意软件窃取凭据或执行其他非法活动。

好消息是:如果将 Outlook 客户端修补到最新版本,则不会受到威胁,因为当前 Outlook 客户端默认会阻止这两种机制。

攻击通常遵循以下模式:

规则攻击

  1. 攻击者窃取用户的凭据。
  2. 攻击者登录到该用户的 Exchange 邮箱 (Exchange Online 或本地 Exchange) 。
  3. 攻击者在邮箱中创建转发收件箱规则。 当邮箱从攻击者那里收到与规则条件匹配的特定邮件时,将触发转发规则。 规则条件和消息格式是彼此定制的。
  4. 攻击者将触发电子邮件发送到受入侵的邮箱,不受戒备的用户仍然正常使用该邮箱。
  5. 当邮箱收到与规则条件匹配的邮件时,将应用规则的操作。 通常,规则操作是在远程 (WebDAV) 服务器上启动应用程序。
  6. 通常,应用程序会在用户的计算机上安装恶意软件, (例如 PowerShell Empire) 。
  7. 恶意软件允许攻击者从本地计算机窃取 (或再次窃取) 用户的用户名和密码或其他凭据,并执行其他恶意活动。

Forms攻击

  1. 攻击者窃取用户的凭据。
  2. 攻击者登录到该用户的 Exchange 邮箱 (Exchange Online 或本地 Exchange) 。
  3. 攻击者将自定义邮件表单模板插入到用户的邮箱中。 当邮箱收到来自攻击者的特定邮件,要求邮箱加载自定义表单时,将触发自定义表单。 自定义窗体和邮件格式是彼此定制的。
  4. 攻击者将触发电子邮件发送到受入侵的邮箱,不受戒备的用户仍然正常使用该邮箱。
  5. 邮箱收到邮件时,邮箱将加载所需的表单。 窗体在远程 (WebDAV) 服务器上启动应用程序。
  6. 通常,应用程序会在用户的计算机上安装恶意软件, (例如 PowerShell Empire) 。
  7. 恶意软件允许攻击者从本地计算机窃取 (或再次窃取) 用户的用户名和密码或其他凭据,并执行其他恶意活动。

规则和自定义Forms注入攻击Office 365可能是什么样子的?

用户不太可能注意到这些持久性机制,他们甚至可能看不到这些机制。 以下列表描述了指示需要修正步骤 (入侵) 指示器的标志:

  • 规则泄露的指标

    • 规则操作是启动应用程序。
    • 规则引用 EXE、ZIP 或 URL。
    • 在本地计算机上,查找源自 Outlook PID 的新进程启动。
  • 自定义表单泄露的指示器

    • 自定义窗体呈现为其自己的邮件类。
    • Message 类包含可执行代码。
    • 通常,恶意表单存储在个人Forms库或收件箱文件夹中。
    • 表单名为 IPM。注意。[自定义名称]。

查找此攻击迹象并确认其步骤

可以使用以下方法之一来确认攻击:

  • 使用 Outlook 客户端手动检查每个邮箱的规则和表单。 此方法非常全面,但一次只能检查一个邮箱。 如果有许多用户要检查,并且还可能感染正在使用的计算机,则此方法可能非常耗时。

  • 使用 Get-AllTenantRulesAndForms.ps1 PowerShell 脚本自动转储组织中所有用户的所有邮件转发规则和自定义表单。 此方法最快且最安全,开销最少。

    注意

    从 2021 年 1 月起,脚本 (,存储库) 中的其他所有内容都是只读和存档的。 第 154 行到 158 行尝试使用由于 2023 年 7 月弃用远程 PowerShell 连接而不再支持的方法连接到 Exchange Online PowerShell。 在运行脚本之前,请删除第 154 行到 158 行并连接到 Exchange Online PowerShell

使用 Outlook 客户端确认规则攻击

  1. 以用户身份打开用户 Outlook 客户端。 用户可能需要你的帮助来检查其邮箱上的规则。

  2. 有关如何在 Outlook 中打开规则界面的过程,请参阅 使用规则管理电子邮件 一文。

  3. 查找用户未创建的规则,或任何具有可疑名称的意外规则或规则。

  4. 在规则说明中查找启动和应用或引用 .EXE、.ZIP 文件或启动 URL 的规则操作。

  5. 查找开始使用 Outlook 进程 ID 的任何新进程。 请参阅 查找进程 ID

使用 Outlook 客户端确认Forms攻击的步骤

  1. 以用户身份打开用户 Outlook 客户端。

  2. 按照用户版本的 Outlook 显示“开发人员”选项卡中 的步骤操作。

  3. 在 Outlook 中打开“现在可见的开发人员”选项卡,然后选择 “设计窗体”。

  4. 从“查找范围”列表中选择“收件箱”。 查找任何自定义窗体。 自定义窗体非常罕见,如果有任何自定义窗体,值得更深入地了解。

  5. 调查任何自定义窗体,尤其是标记为隐藏的窗体。

  6. 打开任何自定义窗体,在 “窗体 ”组中,选择“ 查看代码 ”以查看加载窗体时运行的内容。

使用 PowerShell 确认规则和Forms攻击的步骤

验证规则或自定义表单攻击的最简单方法是运行 Get-AllTenantRulesAndForms.ps1 PowerShell 脚本。 此脚本连接到组织中的每个邮箱,并将所有规则和表单转储到两个 .csv 文件中。

先决条件

你需要是 Microsoft Entra ID 中的全局管理员角色的成员或 Exchange Online 中的组织管理角色组的成员,因为脚本会连接到组织中的每个邮箱来读取规则和表单。

  1. 使用具有本地管理员权限的帐户登录到要运行脚本的计算机。

  2. Get-AllTenantRulesAndForms.ps1 脚本的内容从 GitHub 下载或复制到易于查找和运行脚本的文件夹。 该脚本在 文件夹中创建两个带有日期戳的文件: MailboxFormsExport-yyyy-MM-dd.csvMailboxRulesExport-yyyy-MM-dd.csv

    从脚本中删除第 154 行到 158 行,因为该连接方法自 2023 年 7 月起不再有效。

  3. 连接到 Exchange Online PowerShell

  4. 在 PowerShell 中导航到保存脚本的文件夹,然后运行以下命令:

    .\Get-AllTenantRulesAndForms.ps1
    

解释输出

  • MailboxRulesExport-yyyy-MM-dd.csv:检查每行 (一个规则,) 包含应用程序或可执行文件的操作条件:
    • ActionType (列 A) :如果此列包含值 ID_ACTION_CUSTOM,则规则可能是恶意的。
    • IsPotentiallyMalicious (列 D) :如果此列包含值 TRUE,则规则可能是恶意的。
    • ActionCommand (G) 列 :如果此列包含以下任何值,则规则可能是恶意的:
      • 应用程序。
      • .exe 或 .zip 文件。
      • 引用 URL 的未知条目。
  • MailboxFormsExport-yyyy-MM-dd.csv:一般情况下,很少使用自定义表单。 如果在此工作簿中找到任何信息,请打开该用户的邮箱并检查表单本身。 如果你的组织没有故意将其放在其中,则可能是恶意的。

如何停止和修正 Outlook 规则和Forms攻击

如果发现任何这些攻击的证据,修正很简单:只需删除邮箱中的规则或表单即可。 可以使用 Outlook 客户端或使用 Exchange PowerShell 删除规则或表单。

使用 Outlook

  1. 标识用户已使用 Outlook 的所有设备。 它们都需要清除潜在的恶意软件。 在清理所有设备之前,不允许用户登录并使用电子邮件。

  2. 在每个设备上,按照 删除规则中的步骤操作。

  3. 如果不确定是否存在其他恶意软件,可以在设备上格式化并重新安装所有软件。 对于移动设备,可以按照制造商的步骤将设备重置为出厂映像。

  4. 安装最新版本的 Outlook。 请记住,默认情况下,当前版本的 Outlook 会阻止这两种类型的攻击。

  5. 删除邮箱的所有脱机副本后,请执行以下步骤:

    • 使用高质量值重置用户密码, (长度和复杂性) 。
    • 如果未为用户启用多重身份验证 (MFA) ,请按照为用户设置多重身份验证中的步骤操作

    这些步骤可确保用户凭据不会通过其他方式公开, (例如网络钓鱼或密码重用) 。

使用 PowerShell

连接到所需的 Exchange PowerShell 环境:

连接到所需的 Exchange PowerShell 环境后,可以对用户邮箱中的收件箱规则执行以下操作:

  • 查看邮箱中的收件箱规则

    • 查看所有规则的摘要列表

      Get-InboxRule -Mailbox laura@contoso.onmicrosoft.com
      
    • 查看特定规则的详细信息

      Get-InboxRule -Mailbox laura@contoso.onmicrosoft.com -Identity "Suspicious Rule Name" | Format-List
      

    有关详细语法和参数信息,请参阅 Get-InboxRule

  • 从邮箱中删除收件箱规则

    • 删除特定规则

      Remove-InboxRule -Mailbox laura@contoso.onmicrosoft.com -Identity "Suspicious Rule Name"
      
    • 删除所有规则

      Get-InboxRule -Mailbox laura@contoso.onmicrosoft.com | Remove-InboxRule
      

    有关详细语法和参数信息,请参阅 Remove-InboxRule

  • 关闭收件箱规则以供进一步调查

    Disable-InboxRule -Mailbox laura@contoso.onmicrosoft.com -Identity "Suspicious Rule Name"
    

    有关详细语法和参数信息,请参阅 Disable-InboxRule

如何尽量减少将来的攻击

首先:保护帐户

规则和Forms攻击仅在攻击者窃取或破坏用户帐户后使用。 因此,防止对组织使用这些攻击的第一步是积极保护用户帐户。 帐户被泄露的一些最常见方式是通过网络钓鱼或 密码喷射攻击

保护用户帐户 (尤其是管理员帐户) 的最佳方法是 为用户设置 MFA。 还应:

  • 监视用户帐户 的访问和使用方式。 你可能无法阻止初始违规,但可以通过更快地检测漏洞来缩短该漏洞的持续时间和影响。 可以使用以下Office 365 云应用安全策略来监视帐户,并提醒你注意异常活动:

    • 多次失败的登录尝试:当用户在单个会话中针对所学基线执行多个失败的登录活动时触发警报,这可能指示尝试的违规行为。

    • 不可能的行程:在两个位置之间的预期旅行时间短的时间段内,从不同位置的同一用户检测到活动时,触发警报。 此活动可能指示其他用户使用相同的凭据。 检测此异常行为需要 7 天的初始学习期才能了解新用户的活动模式。

    • 用户) (异常模拟活动 :当用户在单个会话中针对所学基线执行多个模拟活动时,触发警报,这可能指示企图泄露。

  • 使用Office 365安全功能分数等工具来管理帐户安全配置和行为。

第二:使 Outlook 客户端保持最新状态

Outlook 2013 和 2016 的完全更新和修补版本默认禁用“启动应用程序”规则/表单操作。 即使攻击者违反帐户,也会阻止规则和表单操作。 可以按照安装 Office 更新中的步骤 安装最新的更新和安全修补程序。

以下是 Outlook 2013 和 2016 客户端的修补程序版本:

  • Outlook 2016:16.0.4534.1001 或更高版本。
  • Outlook 2013:15.0.4937.1000 或更高版本。

有关各个安全修补程序的详细信息,请参阅:

第三:监视 Outlook 客户端

即使安装了修补程序和更新,攻击者也有可能更改本地计算机配置以重新实现“启动应用程序”行为。 可以使用高级组策略管理在客户端设备上监视和强制实施本地计算机策略。

可以使用 如何使用 64 位版本的 Windows 查看系统注册表中的信息,查看是否已通过注册表中的替代重新启用“启动应用程序”。 检查以下子项:

  • Outlook 2016HKEY_CURRENT_USER\Software\Microsoft\Office\16.0\Outlook\Security\
  • Outlook 2013HKEY_CURRENT_USER\Software\Microsoft\Office\15.0\Outlook\Security\

查找键 EnableUnsafeClientMailRules

  • 如果值为 1,则 Outlook 安全修补程序已被重写,并且计算机容易受到表单/规则攻击。
  • 如果值为 0,则禁用“启动应用程序”操作。
  • 如果注册表项不存在,并且安装了 Outlook 的更新和修补版本,则系统不会受到这些攻击。

安装本地 Exchange 的客户应考虑阻止没有可用修补程序的旧版 Outlook。 有关此过程的详细信息,请参阅 配置 Outlook 客户端阻止一文。

另请参阅: