← Back to SOC feed Coverage →

Phishing URL Detections Trend

kql MEDIUM Azure-Sentinel
T1566
EmailEvents
huntingmicrosoftofficialphishing
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-04T11:00:00Z · Confidence: medium

Hunt Hypothesis

This hypothesis targets adversary exploitation of T1566 (Phishing) by identifying inbound emails where URL-based detection engines flag malicious links, a common vector for initial access. Proactively hunting for these detections in Azure Sentinel allows the SOC to correlate emerging phishing trends with user engagement, enabling rapid isolation of compromised accounts before attackers leverage valid credentials for lateral movement.

KQL Query

let TimeStart = startofday(ago(30d));
let TimeEnd = startofday(now());
EmailEvents
| where Timestamp >= TimeStart
| where OrgLevelPolicy != "Phishing simulation" and OrgLevelPolicy != "SecOps Mailbox"
| extend Key = strcat(NetworkMessageId, "-", RecipientEmailAddress)
| summarize arg_max(Timestamp, *) by Key
| where DetectionMethods has "Phish"
| mv-expand PhishMethod = parse_json(DetectionMethods).Phish to typeof(string)
| where PhishMethod contains "URL"
| make-series Count = count() default = 0 on Timestamp from TimeStart to TimeEnd step 1d by PhishMethod
| render timechart

Analytic Rule Definition

id: 53278c60-3354-4452-a032-d2e239bed34b
name: Phishing URL Detections Trend
description: |
  This query visualises inbound email phishing detections attributed to URL-based detection technologies over time.
description-detailed: |
  This query visualises inbound email phishing detections in Microsoft Defender for Office 365 over time, limited to URL-based phishing detection technologies (for example URL detonation, URL malicious reputation). Messages are de-duplicated to the latest record per NetworkMessageId and recipient, and deliveries to the SecOps mailbox and by the phishing simulation system are excluded.
requiredDataConnectors:
- connectorId: MicrosoftThreatProtection
  dataTypes:
  - EmailEvents
tactics:
  - InitialAccess
relevantTechniques:
  - T1566
query: |
  let TimeStart = startofday(ago(30d));
  let TimeEnd = startofday(now());
  EmailEvents
  | where Timestamp >= TimeStart
  | where OrgLevelPolicy != "Phishing simulation" and OrgLevelPolicy != "SecOps Mailbox"
  | extend Key = strcat(NetworkMessageId, "-", RecipientEmailAddress)
  | summarize arg_max(Timestamp, *) by Key
  | where DetectionMethods has "Phish"
  | mv-expand PhishMethod = parse_json(DetectionMethods).Phish to typeof(string)
  | where PhishMethod contains "URL"
  | make-series Count = count() default = 0 on Timestamp from TimeStart to TimeEnd step 1d by PhishMethod
  | render timechart
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/URL/Phishing URL Detections Trend.yaml