Response playbooks, investigation guides, and Atomic Red Team tests are Pro-only. Upgrade to unlock the full detection package for THREAT-Recon-DistributedPortScanSweep.

Unlock with Pro - from £29/user/mo
THREAT-Recon-DistributedPortScanSweep Splunk · SPL

Detect Distributed Low-and-Slow Port/Service Scanning Sweep in Splunk

Adversaries increasingly avoid classic single-source port scan detection (which alerts on one IP hitting many ports/hosts in a short window) by distributing the sweep across a large pool of source IPs — botnet nodes, residential proxies, or rented scanning infrastructure — with each individual source only touching a handful of destination hosts or ports. No single source ever crosses a per-IP threshold, but the aggregate campaign methodically walks the organization's entire public IP block (T1595.001 — Active Scanning: Scanning IP Blocks) looking for exposed services ahead of exploitation. This is a persistent detection gap because most SIEM scan-detection rules key off a single source IP's touch count within a window; a coordinated low-and-slow sweep spread across dozens or hundreds of source IPs, each staying under that threshold, sails through undetected. Reliable detection requires aggregating perimeter firewall deny/reset telemetry at the destination CIDR level across ALL source IPs in a rolling window, then flagging when a large number of distinct low-touch sources collectively achieve high coverage of the organization's address space — the fingerprint of a coordinated sweep rather than background internet noise.

MITRE ATT&CK

Tactic
Reconnaissance

SPL Detection Query

Splunk (SPL)
spl
index=firewall (action="deny" OR action="drop" OR action="reset" OR action="blocked")
| where cidrmatch("203.0.113.0/24", dest_ip) OR cidrmatch("198.51.100.0/23", dest_ip)
| bin _time span=24h
| stats dc(dest_ip) as DistinctDestIPs, dc(dest_port) as DistinctDestPorts by src_ip, _time
| where DistinctDestIPs <= 3
| rename src_ip as LowTouchSource
| join type=inner LowTouchSource
    [ search index=firewall (action="deny" OR action="drop" OR action="reset" OR action="blocked")
      | where cidrmatch("203.0.113.0/24", dest_ip) OR cidrmatch("198.51.100.0/23", dest_ip)
      | bin _time span=24h
      | rename src_ip as LowTouchSource ]
| stats
    dc(LowTouchSource) as UniqueSources,
    dc(dest_ip) as UniqueDestIPsSwept,
    dc(dest_port) as UniqueDestPorts,
    earliest(_time) as FirstSeen,
    latest(_time) as LastSeen
  by _time
| where UniqueSources >= 25 AND UniqueDestIPsSwept >= 50
| eval Signal="DistributedLowAndSlowScanSweep"
| sort - UniqueDestIPsSwept
medium severity medium confidence

Splunk detection over perimeter firewall deny/drop/reset events using cidrmatch() (NOT string equality) against the org's registered public CIDR blocks. Stage 1 finds source IPs that individually touch 3 or fewer distinct destination hosts within a 24h window ('low-touch'); the subsearch join aggregates across all such low-touch sources to flag when 25+ distinct sources collectively sweep 50+ distinct destination hosts, the pattern of a coordinated distributed reconnaissance campaign spread across many source IPs to evade per-source thresholds.

Data Sources

Perimeter firewall / NGFW logs (Palo Alto, Fortinet, Cisco ASA/FTD, Check Point)NetFlow / IPFIX perimeter flow collectors

Required Sourcetypes

pan:trafficfortigate:trafficcisco:asa

False Positives & Tuning

  • Known internet research scanners (Shodan, Censys, Shadowserver, GreyNoise) — maintain an allowlist of their published scanning IP ranges
  • Third-party attack-surface-management or vulnerability-scanning vendors performing authorized recurring external scans from cloud scanner pools
  • Distributed synthetic-monitoring services probing multiple public IPs from many geographically dispersed nodes

Other platforms for THREAT-Recon-DistributedPortScanSweep


Testing Methodology

Validate this detection against 3 adversary techniques from Atomic Red Team. Each test below lists the behaviour to exercise and the telemetry you should expect to see. Executable commands and cleanup steps are available with Pro.

  1. Test 1Simulated Low-Touch Multi-Source Port Probe (Single Host, Multiple Ports)

    Expected signal: Perimeter firewall deny/reset log entries for the connection attempts to closed/filtered ports on the lab target, recorded with the source IP and each probed destination port.

  2. Test 2Simulated Coordinated Sweep (Multiple Scripted Sources, Sequential IP Block Walk)

    Expected signal: Firewall deny/reset log entries showing the same source IP touching multiple sequential destination IPs in the lab CIDR block, each with a small number of probed ports.

  3. Test 3Masscan High-Speed IP Block Sweep (Single Source, Lab Range)

    Expected signal: Firewall/NetFlow records showing SYN-only or single-packet connection attempts across every host in the lab /28 range from one source IP.

Unlock playbooks & atomic tests with Pro

Get the full detection package for THREAT-Recon-DistributedPortScanSweep — response playbook and atomic red team tests, plus investigation guidance and hunting queries.

df00tech Pro — £29/user/month

Response PlaybookInvestigation GuideHunting QueriesAtomic Red Team TestsTuning Guidance

Related Detections