T1590.004

Network Topology

Adversaries may gather information about the victim's network topology that can be used during targeting. This includes physical and logical arrangement of external-facing and internal network environments, network devices such as gateways and routers, and routing infrastructure. Threat actors like Volt Typhoon and Salt Typhoon have conducted extensive network topology reconnaissance to identify critical infrastructure paths, upstream/downstream network segments, and inter-network connectivity before executing intrusion campaigns. Detection focuses on two surfaces: (1) network discovery tool execution on managed endpoints indicating an insider or post-compromise enumeration phase, and (2) external scanning patterns visible in perimeter logs indicating pre-compromise reconnaissance by external actors.

Microsoft Sentinel / Defender
kusto
let NetworkDiscoveryTools = dynamic([
  "nmap", "masscan", "zmap", "unicornscan",
  "netdiscover", "angry ip scanner", "advanced ip scanner",
  "lansweeper", "angry", "nbtscan", "arp-scan"
]);
let NetworkTopoCmds = dynamic([
  "tracert", "traceroute", "pathping", "tracepath",
  "route print", "netstat -r", "ip route",
  "arp -a", "arp -n", "Get-NetRoute", "Get-NetNeighbor",
  "snmpwalk", "snmpget", "snmpenum",
  "nmap -sn", "nmap --traceroute", "nmap -O",
  "show ip route", "show cdp neighbors", "show lldp"
]);
let SuspiciousNetworkPorts = dynamic([161, 162, 179, 520, 521, 646, 2049, 8291]);
// Branch 1: Endpoint-based network discovery tool execution
let EndpointDiscovery = DeviceProcessEvents
| where Timestamp > ago(24h)
| where FileName has_any (NetworkDiscoveryTools)
      or ProcessCommandLine has_any (NetworkTopoCmds)
      or (FileName =~ "nmap.exe" or FileName =~ "masscan.exe" or FileName =~ "zmap.exe")
| extend DetectionBranch = "EndpointDiscoveryTool"
| extend RiskIndicator = case(
    ProcessCommandLine has_any ("snmpwalk", "snmpget", "snmpenum"), "SNMP_Enumeration",
    ProcessCommandLine has_any ("nmap -O", "nmap --os-detection"), "OS_Fingerprinting",
    ProcessCommandLine has_any ("tracert", "traceroute", "pathping", "tracepath"), "Route_Tracing",
    ProcessCommandLine has_any ("nmap -sn", "netdiscover", "arp -a", "arp-scan"), "Host_Discovery",
    ProcessCommandLine has_any ("Get-NetRoute", "route print", "ip route", "netstat -r"), "Routing_Table_Enum",
    "General_Network_Discovery"
  )
| project Timestamp, DeviceName, AccountName, FileName, ProcessCommandLine,
         InitiatingProcessFileName, InitiatingProcessCommandLine,
         DetectionBranch, RiskIndicator;
// Branch 2: SNMP and network protocol scanning via network events
let SNMPScanning = DeviceNetworkEvents
| where Timestamp > ago(24h)
| where RemotePort in (SuspiciousNetworkPorts)
| where RemoteIPType == "Public" or RemoteIP !startswith "127."
| summarize TargetCount=dcount(RemoteIP), Ports=make_set(RemotePort), FirstSeen=min(Timestamp), LastSeen=max(Timestamp)
    by DeviceName, InitiatingProcessFileName, InitiatingProcessCommandLine
| where TargetCount > 5
| extend DetectionBranch = "BroadcastProtocolScanning"
| extend RiskIndicator = "Multi_Host_Protocol_Scan"
| extend Timestamp = FirstSeen
| project Timestamp, DeviceName, AccountName="", FileName=InitiatingProcessFileName,
         ProcessCommandLine=InitiatingProcessCommandLine, InitiatingProcessFileName="",
         InitiatingProcessCommandLine="", DetectionBranch, RiskIndicator;
union EndpointDiscovery, SNMPScanning
| sort by Timestamp desc
medium severity medium confidence

Data Sources

Process: Process Creation Network Traffic: Network Connection Creation Microsoft Defender for Endpoint

Required Tables

DeviceProcessEvents DeviceNetworkEvents

False Positives

  • Network engineers running nmap or traceroute for legitimate troubleshooting or change management activities
  • IT asset management systems (Lansweeper, SolarWinds, Nessus) performing scheduled network discovery scans
  • SNMP-based monitoring tools (PRTG, Zabbix, Nagios) polling network devices on UDP/161
  • BGP route monitoring scripts querying routing tables for network health dashboards
  • Penetration testing engagements with authorized scanners operating from managed endpoints

Unlock Pro Content

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

Response PlaybookInvestigation GuideHunting QueriesAtomic Red Team TestsTuning Guidance

Related Detections