Signal9Signal9 — home
online
back to labs

Full Kill Chain: Correlate the Intrusion Across the Telemetry

HardThreat Detection45-60 min
The brief

The capstone. A host (web01) was compromised and you have four kinds of telemetry: SSH auth (/var/log/auth.log), web access (/var/log/nginx/access.log), outbound connections (/var/log/conn.log), and scheduled jobs (/etc/cron.d/). Each source has an innocent look-alike: one IP hammered SSH the hardest but never logged in, and another scanned the web app but never touched a shell. Volume and single-source rules will point you at the wrong host.

The real intruder is the one that ties the story together — it appears in MORE THAN ONE source: it brute-forced SSH AND then logged in AND then drove a webshell. That cross-source overlap is the whole lesson: a SOC analyst confirms an intrusion by CORRELATION, not by any single noisy signal.

Reconstruct the chain and record five things:

1. The attacker's source IP (/root/case/attacker_ip.txt) — the IP present in BOTH a successful SSH login AND webshell activity.

2. The webshell's request path (/root/case/webshell.txt).

3. The C2 destination IP (/root/case/c2_ip.txt) — the host the box beacons to and the malicious cron calls out to.

4. The persistence artifact's path (/root/case/persistence.txt) — the malicious /etc/cron.d/ file.

5. A correlation detector (/root/detect.sh) that prints the intruder's IP by intersecting successful-login sources with webshell sources — flagging the attacker and NOT the brute-force decoy or the scanner. Grading runs bash /root/detect.sh, and also re-runs it against a second, unseen incident as bash /root/detect.sh <logdir>, so read the logs from the directory given as the first argument, defaulting to /var/log (auth at ${1:-/var/log}/auth.log, web at ${1:-/var/log}/nginx/access.log). MITRE ATT&CK: T1110, T1505.003, T1071, T1053.

What you'll do
  • Correlate the two look-alikes out: find the one IP present across multiple sources
  • Record the attacker IP, the webshell path, the C2 IP, and the persistence cron path
  • Write /root/detect.sh that intersects successful-login IPs with webshell IPs
  • Flag the attacker but neither the higher-volume brute-force decoy nor the web scanner

Hands-on lab: you work on a real Linux box in your browser, graded on the machine's actual state.