← Back to SOC feed Coverage →

Network info of machine

kql MEDIUM Azure-Sentinel
apthuntingmicrosoftofficial
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-22T23:00:00Z · Confidence: medium

Hunt Hypothesis

Adversaries may gather network adapter information to identify internal network structures and potential targets. SOC teams should proactively hunt for this behavior to detect reconnaissance activities that could lead to lateral movement or data exfiltration in Azure Sentinel.

KQL Query

let DeviceIdParam = "c0bfefec0bfefec0bfefec0bfefec0bfefecafe";
let pivotTimeParam = datetime(2018-07-15T19:51);
DeviceNetworkInfo
// Query for reports sent +-15 minutes around the time we are interested in
| where Timestamp between ((pivotTimeParam-15m) .. 30m) and DeviceId == DeviceIdParam and NetworkAdapterStatus == "Up"
// IPAddresses contains a list of the IP addresses configured on the network adapter, their subnets, and more.
// Here we expand the list so that each value gets a separate row. All the other columns in the row, such as MacAddress, are duplicated.
| mvexpand parse_json(IPAddresses)
| project IPAddress=IPAddresses.IPAddress, AddressType=IPAddresses.AddressType, NetworkAdapterType, TunnelType, MacAddress, 
ConnectedNetworks, Timestamp, TimeDifference=abs(Timestamp-pivotTimeParam)
// In case multiple machines have reported from that IP address arround that time, start with the ones reporting closest to pivotTimeParam
| sort by TimeDifference asc, NetworkAdapterType, MacAddress

Analytic Rule Definition

id: 86fb56b4-3a10-443b-8345-d00a45046d15
name: Network info of machine
description: |
  Get information about the netwotk adapters of the given computer in the given time.
  This could include the configured IP addresses, DHCP servers, DNS servers, and more.
requiredDataConnectors:
- connectorId: MicrosoftThreatProtection
  dataTypes:
  - DeviceNetworkInfo
query: |
  let DeviceIdParam = "c0bfefec0bfefec0bfefec0bfefec0bfefecafe";
  let pivotTimeParam = datetime(2018-07-15T19:51);
  DeviceNetworkInfo
  // Query for reports sent +-15 minutes around the time we are interested in
  | where Timestamp between ((pivotTimeParam-15m) .. 30m) and DeviceId == DeviceIdParam and NetworkAdapterStatus == "Up"
  // IPAddresses contains a list of the IP addresses configured on the network adapter, their subnets, and more.
  // Here we expand the list so that each value gets a separate row. All the other columns in the row, such as MacAddress, are duplicated.
  | mvexpand parse_json(IPAddresses)
  | project IPAddress=IPAddresses.IPAddress, AddressType=IPAddresses.AddressType, NetworkAdapterType, TunnelType, MacAddress, 
  ConnectedNetworks, Timestamp, TimeDifference=abs(Timestamp-pivotTimeParam)
  // In case multiple machines have reported from that IP address arround that time, start with the ones reporting closest to pivotTimeParam
  | sort by TimeDifference asc, NetworkAdapterType, MacAddress

References

False Positive Guidance

Original source: https://github.com/Azure/Azure-Sentinel/blob/main/Hunting Queries/Microsoft 365 Defender/General queries/Network info of machine.yaml