← Back to SOC feed Coverage →

Device network events w low count FQDN

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-07T23:00:00Z · Confidence: medium

Hunt Hypothesis

Adversaries may be using low-count FQDNs to exfiltrate data or establish covert command-and-control channels by leveraging underutilized domains. SOC teams should proactively hunt for this behavior in Azure Sentinel to identify potential lateral movement or data exfiltration attempts that evade traditional detection methods.

KQL Query

DeviceNetworkEvents
| where Timestamp > ago(1h)
| where InitiatingProcessFileName !in~ ('iexplore.exe','chrome.exe','opera.exe','safari.exe') // Remove web browsers
    and isnotempty(RemoteUrl)
| extend FQDN = iff(RemoteUrl matches regex "^([a-zA-Z0-9._-])+$", tostring(RemoteUrl), parse_url(RemoteUrl).domain)
| top-nested 100 of FQDN by dcount(DeviceId) asc
| join kind=inner (
    DeviceNetworkEvents
    | where Timestamp > ago(1h)
    | where isnotempty(RemoteUrl)
    | extend FQDN = iff(RemoteUrl matches regex "^([a-zA-Z0-9._-])+$", tostring(RemoteUrl), parse_url(RemoteUrl).domain)
) on FQDN
| order by aggregated_FQDN asc

Analytic Rule Definition

id: df02a1ed-9019-40fc-9be1-c32ac4a016c0
name: Device network events w low count FQDN
description: |
  Device Network Events Involving Low Count FQDNs.
  This query reduces network events to only those with the RemoteURL column populated,.
  Then parses the DNS name from the URL (if needed) and finds the least prevalent.
  FQDNs.  The result is then joined with DeviceNetworkEvents to highlight anomalous.
  Network communication.
requiredDataConnectors:
- connectorId: MicrosoftThreatProtection
  dataTypes:
  - DeviceNetworkEvents
query: |
  DeviceNetworkEvents
  | where Timestamp > ago(1h)
  | where InitiatingProcessFileName !in~ ('iexplore.exe','chrome.exe','opera.exe','safari.exe') // Remove web browsers
      and isnotempty(RemoteUrl)
  | extend FQDN = iff(RemoteUrl matches regex "^([a-zA-Z0-9._-])+$", tostring(RemoteUrl), parse_url(RemoteUrl).domain)
  | top-nested 100 of FQDN by dcount(DeviceId) asc
  | join kind=inner (
      DeviceNetworkEvents
      | where Timestamp > ago(1h)
      | where isnotempty(RemoteUrl)
      | extend FQDN = iff(RemoteUrl matches regex "^([a-zA-Z0-9._-])+$", tostring(RemoteUrl), parse_url(RemoteUrl).domain)
  ) on FQDN
  | order by aggregated_FQDN asc

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/Command and Control/Device network events w low count FQDN.yaml