← Back to SOC feed Coverage →

Blocked URL Clicks by Workload

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

Hunt Hypothesis

This hypothesis targets adversaries leveraging phishing campaigns (T1566) to deliver malicious payloads via links that are subsequently blocked by Safe Links, indicating active user engagement with suspicious content across various M365 workloads. Proactively hunting for these blocked clicks allows the SOC to identify high-risk users or compromised accounts attempting to bypass security controls, enabling rapid investigation before a successful compromise occurs.

KQL Query

let TimeStart = startofday(ago(30d));
let TimeEnd = startofday(now());
UrlClickEvents
| where Timestamp >= TimeStart
| where ActionType == "ClickBlocked"
| make-series Teams = countif(Workload == "Teams"), Office = countif(Workload == "Office"), Email = countif(Workload == "Email"), Copilot = countif(Workload == "Copilot") default = 0 on Timestamp from TimeStart to TimeEnd step 1d
| render timechart

Analytic Rule Definition

id: 41831d30-f03e-44a9-bd27-f713033393b7
name: Blocked URL Clicks by Workload
description: |
  This query visualises blocked Safe Links URL clicks over time broken down by the workload the click came from (Email, Teams, Office, Microsoft 365 Copilot).
description-detailed: |
  This query visualises Safe Links URL clicks that were blocked (ActionType == "ClickBlocked") over time in Microsoft Defender for Office 365, broken down by the workload the click originated from (Email, Teams, Office, Microsoft 365 Copilot), to show where users most often attempt to reach malicious URLs.
requiredDataConnectors:
- connectorId: MicrosoftThreatProtection
  dataTypes:
  - UrlClickEvents
tactics:
  - InitialAccess
relevantTechniques:
  - T1566
query: |
  let TimeStart = startofday(ago(30d));
  let TimeEnd = startofday(now());
  UrlClickEvents
  | where Timestamp >= TimeStart
  | where ActionType == "ClickBlocked"
  | make-series Teams = countif(Workload == "Teams"), Office = countif(Workload == "Office"), Email = countif(Workload == "Email"), Copilot = countif(Workload == "Copilot") default = 0 on Timestamp from TimeStart to TimeEnd step 1d
  | render timechart
version: 1.0.0

Required Data Sources

Sentinel TableNotes
UrlClickEventsEnsure 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 Click/Blocked URL Clicks by Workload.yaml