← Back to SOC feed Coverage →

Defender for Endpoint Telemetry

kql MEDIUM Azure-Sentinel
DeviceNetworkEvents
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-05-23T23:00:00Z · Confidence: medium

Hunt Hypothesis

Adversaries may exfiltrate data or establish command-and-control channels by leveraging Defender for Endpoint telemetry URLs to communicate covertly. SOC teams should proactively hunt for unusual or unexpected telemetry connections in Azure Sentinel to identify potential exfiltration or C2 activities.

KQL Query

let TargetURLs = dynamic(['winatp-gw-cus.microsoft.com', 'winatp-gw-eus.microsoft.com', 'winatp-gw-weu.microsoft.com',
    'winatp-gw-neu.microsoft.com', 'winatp-gw-uks.microsoft.com', 'winatp-gw-ukw.microsoft.com', 'winatp-gw-usgv.microsoft.com',
    'winatp-gw-usgt.microsoft.com', 'eu.vortex-win.data.microsoft.com', 'us.vortex-win.data.microsoft.com',
    'uk.vortex-win.data.microsoft.com', 'events.data.microsoft.com', 'settings-win.data.microsoft.com', 'eu-v20.events.data.microsoft.com',
    'uk-v20.events.data.microsoft.com', 'us-v20.events.data.microsoft.com', 'us4-v20.events.data.microsoft.com',
    'us5-v20.events.data.microsoft.com', 'ctldl.windowsupdate.com']);
DeviceNetworkEvents
//scope here by MachineGroup, etc.
| where isnotempty(RemoteUrl)
| extend Domain = case(RemoteUrl contains "//", parse_url(RemoteUrl).Host, RemoteUrl)
| where Domain in(TargetURLs)
| summarize Connections = dcount(DeviceId) by ActionType, bin(Timestamp, 1d)
| render linechart

Analytic Rule Definition

id: 676912f9-0e47-4599-889a-7b90a3542382
name: Defender for Endpoint Telemetry
description: |
  View Defender for Endpoint telemetry URLs and their connection status, view trendline over 30 days.
  Use to investigate possible telemetry and/or connectivity issues.
  [email protected].
requiredDataConnectors:
- connectorId: MicrosoftThreatProtection
  dataTypes:
  - DeviceNetworkEvents
query: |
  let TargetURLs = dynamic(['winatp-gw-cus.microsoft.com', 'winatp-gw-eus.microsoft.com', 'winatp-gw-weu.microsoft.com',
      'winatp-gw-neu.microsoft.com', 'winatp-gw-uks.microsoft.com', 'winatp-gw-ukw.microsoft.com', 'winatp-gw-usgv.microsoft.com',
      'winatp-gw-usgt.microsoft.com', 'eu.vortex-win.data.microsoft.com', 'us.vortex-win.data.microsoft.com',
      'uk.vortex-win.data.microsoft.com', 'events.data.microsoft.com', 'settings-win.data.microsoft.com', 'eu-v20.events.data.microsoft.com',
      'uk-v20.events.data.microsoft.com', 'us-v20.events.data.microsoft.com', 'us4-v20.events.data.microsoft.com',
      'us5-v20.events.data.microsoft.com', 'ctldl.windowsupdate.com']);
  DeviceNetworkEvents
  //scope here by MachineGroup, etc.
  | where isnotempty(RemoteUrl)
  | extend Domain = case(RemoteUrl contains "//", parse_url(RemoteUrl).Host, RemoteUrl)
  | where Domain in(TargetURLs)
  | summarize Connections = dcount(DeviceId) by ActionType, bin(Timestamp, 1d)
  | render linechart

Required Data Sources

Sentinel TableNotes
DeviceNetworkEventsEnsure this data connector is enabled

References

False Positive Guidance

Original source: https://github.com/Azure/Azure-Sentinel/blob/main/Hunting Queries/Microsoft 365 Defender/Network/Defender for Endpoint Telemetry.yaml