T1016

System Network Configuration Discovery

Adversaries may look for details about the network configuration and settings, such as IP and/or MAC addresses, of systems they access or through information discovery of remote systems. Several operating system administration utilities exist that can be used to gather this information, including ipconfig/ifconfig, arp, nbtstat, route, and netstat. Adversaries use this information during automated discovery to shape follow-on behaviors, including determining access within the target network and planning lateral movement paths. On ESXi hosts, esxcli commands such as 'esxcli network nic list' and 'esxcli network ip interface ipv4 get' are used. Network device CLIs may also be leveraged (e.g., 'show ip route', 'show ip interface'). Threat actors including Mustang Panda, HEXANE, and malware families such as Pikabot, Dyre, and Olympic Destroyer routinely perform this technique as part of initial reconnaissance after compromise.

Microsoft Sentinel / Defender
kusto
let NetworkDiscoveryBinaries = dynamic([
  "ipconfig.exe", "arp.exe", "nbtstat.exe", "route.exe", "netstat.exe",
  "netsh.exe", "hostname.exe", "tracert.exe", "pathping.exe"
]);
let NetworkDiscoveryKeywords = dynamic([
  "ipconfig", "ifconfig", "ip addr", "ip route", "ip link",
  "arp -a", "arp -n", "netstat -r", "route print", "nbtstat",
  "netsh interface", "Get-NetIPConfiguration", "Get-NetAdapter",
  "Get-NetRoute", "Get-DnsClientServerAddress", "gwmi Win32_NetworkAdapterConfiguration",
  "Win32_NetworkAdapter", "esxcli network", "show ip route", "show ip interface",
  "networksetup", "system_profiler SPNetworkDataType"
]);
DeviceProcessEvents
| where Timestamp > ago(24h)
| where (
    FileName in~ (NetworkDiscoveryBinaries)
    or (FileName in~ ("powershell.exe", "pwsh.exe", "cmd.exe", "wscript.exe", "cscript.exe", "python.exe", "python3.exe")
        and ProcessCommandLine has_any (NetworkDiscoveryKeywords))
  )
| extend IsNativeDiscoveryTool = FileName in~ (NetworkDiscoveryBinaries)
| extend IsScriptedDiscovery = FileName in~ ("powershell.exe", "pwsh.exe", "cmd.exe", "wscript.exe", "cscript.exe")
| extend SuspiciousParent = InitiatingProcessFileName in~ (
    "winword.exe", "excel.exe", "powerpnt.exe", "outlook.exe",
    "mshta.exe", "wscript.exe", "cscript.exe", "rundll32.exe",
    "regsvr32.exe", "msiexec.exe", "svchost.exe"
  )
| extend CommandArgs = ProcessCommandLine
| project Timestamp, DeviceName, AccountName, AccountDomain,
    FileName, ProcessCommandLine, InitiatingProcessFileName,
    InitiatingProcessCommandLine, InitiatingProcessAccountName,
    IsNativeDiscoveryTool, IsScriptedDiscovery, SuspiciousParent
| sort by Timestamp desc
low severity medium confidence

Data Sources

Process: Process Creation Command: Command Execution Microsoft Defender for Endpoint

Required Tables

DeviceProcessEvents

False Positives

  • System administrators and helpdesk staff running ipconfig, arp, or netstat during routine troubleshooting
  • IT monitoring agents (SolarWinds, PRTG, Nagios, Datadog) that enumerate network interfaces and routing tables on a schedule
  • Software installers and configuration management tools (SCCM, Ansible, Puppet, Chef) that query network settings to configure applications
  • Security scanners and vulnerability assessment tools that collect host network configuration as part of asset inventory
  • Developer workstations where developers routinely use PowerShell Get-NetIPConfiguration or ip addr for network testing

Unlock Pro Content

Get the full detection package for T1016 including response playbook, investigation guide, and atomic red team tests.

Response PlaybookInvestigation GuideHunting QueriesAtomic Red Team TestsTuning Guidance

Related Detections