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.
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 Data Sources
Required Tables
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
References (9)
- https://attack.mitre.org/techniques/T1590/004/
- https://dnsdumpster.com/
- https://www.cisa.gov/news-events/cybersecurity-advisories/aa24-038a
- https://blog.talosintelligence.com/salt-typhoon-analysis/
- https://www.mandiant.com/resources/blog/fin13-a-cybercriminal-threat-actor-focused-on-mexico
- https://nmap.org/book/man-output.html
- https://learn.microsoft.com/en-us/powershell/module/nettcpip/get-netroute
- https://learn.microsoft.com/en-us/azure/sentinel/connect-sysmon
- https://github.com/redcanaryco/atomic-red-team/blob/master/atomics/T1590.004/T1590.004.md
Unlock Pro Content
Get the full detection package for T1590.004 including response playbook, investigation guide, and atomic red team tests.