← Back to SOC feed Coverage →

Automatic External Email Forwarding Overview by Type (Mailbox Rule and SMTP)

kql MEDIUM Azure-Sentinel
T1114T1020
EmailEvents
huntingmicrosoftofficial
This rule was pulled from an open-source repository and enriched with AI. Validate in a test environment before deploying to production.
View original rule at Azure-Sentinel →
Retrieved: 2026-09-03T11:00:00Z · Confidence: medium

Hunt Hypothesis

This hypothesis targets adversaries who establish persistent external email forwarding mechanisms, such as mailbox rules or SMTP configurations, to exfiltrate sensitive data or maintain covert communication channels without triggering standard alerting. Proactively hunting for these configurations in Azure Sentinel is critical because they represent a low-noise persistence and exfiltration vector that can remain dormant and undetected until a significant data breach occurs.

KQL Query

EmailEvents
| where Timestamp > ago(30d)
| where EmailDirection == "Outbound" and isnotempty(ForwardingInformation)
| extend Key = strcat(NetworkMessageId, '-', RecipientEmailAddress)
| summarize arg_max(Timestamp, *) by Key
| extend FwdInfo = parse_json(ForwardingInformation)
| extend ForwardingType = tostring(FwdInfo.ForwardingType),
         ForwardingUser = tostring(FwdInfo.ForwardingUser),
         RecipientDomain = tostring(split(RecipientEmailAddress, '@')[1])
| summarize ForwardedMessages = count(),
            ForwardingUsers = dcount(ForwardingUser),
            ExternalRecipients = dcount(RecipientEmailAddress),
            ExternalDomains = dcount(RecipientDomain)
    by ForwardingType
| sort by ForwardedMessages desc

Analytic Rule Definition

id: d05eb85d-16e6-4bb9-a669-78da03ec6417
name: Automatic External Email Forwarding Overview by Type (Mailbox Rule and SMTP)
description: |
  This query summarises automatic external email forwarding across the tenant by forwarding type (mailbox rule versus SMTP forwarding), using the EmailEvents table.
description-detailed: |
  A compromised mailbox is often configured to automatically forward mail to an external address to exfiltrate data. This query summarises outbound messages auto-forwarded to external recipients, split by forwarding type (MbxRule and SmtpForwarding), with the number of forwarding users, external recipients and external domains for each type. Use it to size the auto-forwarding exposure and spot unexpected forwarding activity.
  This query is part of the Microsoft Defender for Office 365 Detections and Insights workbook in Microsoft Sentinel: https://techcommunity.microsoft.com/blog/microsoftdefenderforoffice365blog/part-3-build-custom-email-security-reports-with-power-bi-and-workbooks-in-micros/4490127
requiredDataConnectors:
- connectorId: MicrosoftThreatProtection
  dataTypes:
  - EmailEvents
tactics:
  - Collection
  - Exfiltration
relevantTechniques:
  - T1114
  - T1020
query: |
  EmailEvents
  | where Timestamp > ago(30d)
  | where EmailDirection == "Outbound" and isnotempty(ForwardingInformation)
  | extend Key = strcat(NetworkMessageId, '-', RecipientEmailAddress)
  | summarize arg_max(Timestamp, *) by Key
  | extend FwdInfo = parse_json(ForwardingInformation)
  | extend ForwardingType = tostring(FwdInfo.ForwardingType),
           ForwardingUser = tostring(FwdInfo.ForwardingUser),
           RecipientDomain = tostring(split(RecipientEmailAddress, '@')[1])
  | summarize ForwardedMessages = count(),
              ForwardingUsers = dcount(ForwardingUser),
              ExternalRecipients = dcount(RecipientEmailAddress),
              ExternalDomains = dcount(RecipientDomain)
      by ForwardingType
  | sort by ForwardedMessages desc
version: 1.0.0

Required Data Sources

Sentinel TableNotes
EmailEventsEnsure this data connector is enabled

MITRE ATT&CK Context

References

False Positive Guidance

Original source: https://github.com/Azure/Azure-Sentinel/blob/main/Hunting Queries/Microsoft 365 Defender/Email and Collaboration Queries/Mailflow/Automatic External Email Forwarding by Type.yaml