The scenario is fictional (10.0.0.0/8). The fan-out aggregation was tested on a synthetic firewall log.
A burglar tries doors one by one. On a network that is one host connecting to many internal hosts on the same port, in a short window. Each connection looks ordinary; the pattern doesn't.
What you'll learn
- How fan-out appears in firewall logs
- A one-line aggregation
- Why DROPs matter
- Confirming with authentication logs; false positives
The story at a glance
09:12:03 WS01 -> FS01:445 (business hours, single destination: normal). 02:31:06-07 WS01 -> many hosts:445, ALLOW and DROP mixed, reaching DC01.
normal 09:12:03 ALLOW TCP 10.0.0.21 10.0.0.31 50410 445
attack 02:31:06 ALLOW TCP 10.0.0.21 10.0.0.41 50221 445
02:31:06 DROP TCP 10.0.0.21 10.0.0.55 50233 445 # hosts that don't exist
02:31:07 ALLOW TCP 10.0.0.21 10.0.0.10 50244 445
Differences: time of day, number of destinations, and DROPs. Probing nonexistent hosts means searching, not working.
Aggregation
awk '$7==445 {
k=$4" "substr($1,1,5)
if (!((k,$5) in seen)) { seen[k,$5]=1; n[k]++ }
if ($2=="DROP") d[k]++ }
END { for (k in n) if (n[k]>=10) printf "FANOUT src=%s dst=%d drop=%d\n", k, n[k], d[k] }' fw.log
On a synthetic log: FANOUT src=10.0.0.21 02:31 dst=13 drop=8. A host repeatedly using one file server was not reported. Tune the threshold on your baseline.
Confirm with authentication
The firewall shows attempts. FS01's 4624 (type 3) from WS01 and 5140 (ADMIN$) show success (book; not tested here).
False positives
Vulnerability scanners, asset management and monitoring do this too. Allow-list authorized sources, time windows and ranges narrowly.
Defense
Restrict workstation-to-workstation SMB and aggregate "one internal host to many destinations" continuously.
Next: persistence on Windows.
Adapted from chapters 17 and 27 of my Japanese book on server defense.
Top comments (0)