← Back to SOC feed Coverage →

Top Sender Domains Delivering Threats via Override

kql MEDIUM Azure-Sentinel
T1566
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 leveraging social engineering to bypass automated email security controls by inducing users or administrators to override threat detections, a common tactic in targeted phishing campaigns (T1566). Proactively hunting for this behavior in Azure Sentinel allows the SOC to identify specific sender domains with high override rates, revealing potential blind spots in user training or policy enforcement that could lead to successful initial access.

KQL Query

// Sender domains with the most threats delivered via an admin or user override, with the override share and type breakdown.
EmailEvents
| where Timestamp > ago(30d)
| where EmailDirection == "Inbound" and isnotempty(ThreatTypes) and OrgLevelPolicy != "Phishing simulation" and OrgLevelPolicy != "SecOps Mailbox"
| extend Key = strcat(NetworkMessageId, "-", RecipientEmailAddress)
| summarize arg_max(Timestamp, *) by Key
| extend OverrideType = case(
    OrgLevelAction == "Allow" and OrgLevelPolicy != "" and OrgLevelPolicy != "SecOps Mailbox", OrgLevelPolicy,
    UserLevelAction == "Allow", strcat("User: ", UserLevelPolicy),
    "(none)")
| summarize PerType = count() by SenderFromDomain, OverrideType
| summarize TotalThreats = sum(PerType),
            OverriddenThreats = sumif(PerType, OverrideType != "(none)"),
            OverrideTypes = strcat_array(make_set_if(strcat(OverrideType, " (", PerType, ")"), OverrideType != "(none)"), "; ")
        by SenderFromDomain
| where OverriddenThreats > 0
| extend OverridePercent = round(OverriddenThreats * 100.0 / TotalThreats, 1)
| top 10 by OverriddenThreats
| project SenderDomain = SenderFromDomain, TotalThreats, OverriddenThreats, OverridePercent, OverrideTypes

Analytic Rule Definition

id: 8c2aeb94-ecd0-4b14-ad8c-a6e2986f6b50
name: Top Sender Domains Delivering Threats via Override
description: |
  This query lists the sender domains whose threats were most often delivered because of an admin or user override, with the share overridden and a breakdown of override types, using the EmailEvents table.
description-detailed: |
  A sender domain with a high share of its threats delivered because of an admin or user override (allow policies, safe-sender lists, Exchange transport rules, quarantine release) is bypassing Microsoft Defender for Office 365 protection. This query ranks sender domains by the number of threats delivered via an override, showing the total threats, the overridden count, the override percentage, and which override types were responsible. High override rates are strong candidates for policy review or a Tenant Allow/Block List (TABL) block.
  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:
  - InitialAccess
relevantTechniques:
  - T1566
query: |
  // Sender domains with the most threats delivered via an admin or user override, with the override share and type breakdown.
  EmailEvents
  | where Timestamp > ago(30d)
  | where EmailDirection == "Inbound" and isnotempty(ThreatTypes) and OrgLevelPolicy != "Phishing simulation" and OrgLevelPolicy != "SecOps Mailbox"
  | extend Key = strcat(NetworkMessageId, "-", RecipientEmailAddress)
  | summarize arg_max(Timestamp, *) by Key
  | extend OverrideType = case(
      OrgLevelAction == "Allow" and OrgLevelPolicy != "" and OrgLevelPolicy != "SecOps Mailbox", OrgLevelPolicy,
      UserLevelAction == "Allow", strcat("User: ", UserLevelPolicy),
      "(none)")
  | summarize PerType = count() by SenderFromDomain, OverrideType
  | summarize TotalThreats = sum(PerType),
              OverriddenThreats = sumif(PerType, OverrideType != "(none)"),
              OverrideTypes = strcat_array(make_set_if(strcat(OverrideType, " (", PerType, ")"), OverrideType != "(none)"), "; ")
          by SenderFromDomain
  | where OverriddenThreats > 0
  | extend OverridePercent = round(OverriddenThreats * 100.0 / TotalThreats, 1)
  | top 10 by OverriddenThreats
  | project SenderDomain = SenderFromDomain, TotalThreats, OverriddenThreats, OverridePercent, OverrideTypes
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/Overrides/Top Sender Domains Delivering Threats via Override.yaml