Lesson 1 of 9 · 18m
The First Hour: Triaging a Security Alert
Classify an EDR alert with evidence, not vibes — process trees, connections, and the five questions every responder asks.
Your EDR just fired at 02:14 on a Saturday: rundll32.exe spawning powershell.exe with an encoded command on a finance workstation. The next sixty minutes decide whether this becomes a Tuesday-morning anecdote or a breach notification letter. The first hour is not about fixing anything. It is about not making things worse while you figure out what you are actually looking at.
Triage is a decision, not a feeling
Every alert lands in one of three buckets: false positive, benign true positive (policy violation, red team, developer doing something weird), or a real incident. Your job in the first hour is to pick the bucket with evidence, not vibes.
Start with the five questions every responder asks, in this order:
- What fired? Read the detection logic, not just the alert title. A Sigma rule for encoded PowerShell means something different than "suspicious activity."
- What process tree? Parents and children tell you more than the offending binary.
rundll32 -> powershell -> certutilis a story;svchost -> WmiPrvSEis a different one. - What user context? A domain admin's token in the process is a different severity than a service account.
- What network activity? Outbound connections during the alert window are your fastest confirmation.
- What else happened on that host? The alert is rarely the start of the story.
On a Linux host, the first-look commands are muscle memory:
ps auxf --sort=start_time | tail -40 # process tree, newest last
ss -tulpn # listening sockets + owning process
ss -tnp state established # live outbound connections
last -20 # recent logins
journalctl --since "1 hour ago" -p err # errors in the windowOn Windows via PowerShell:
Get-CimInstance Win32_Process |
Select-Object ProcessId, ParentProcessId, Name, CommandLine |
Format-List
Get-NetTCPConnection -State Established |
Select-Object LocalPort, RemoteAddress, OwningProcess
Get-WinEvent -FilterHashtable @{LogName='Security'; Id=4688} -MaxEvents 50The bug that ships: destroying your own evidence
The most common first-hour mistake is treating triage like remediation. Do not reboot the box "to see if it comes back." Do not run a full AV scan — it will quarantine the malware you needed to analyze and write all over the disk. Do not log in as a domain admin to "check things" — you may hand the attacker a fresh token.
Quiet, read-only observation beats heroic action. If the EDR can isolate the host without killing it, that is your containment lever for later — note it, don't pull it yet.
Try this
You get this alert: powershell.exe -enc UwB0AGEAcgB0AC0A... on WS-FIN-014, user j.chen, at 02:14. Write down, before you touch the host, exactly which five data points you would pull first and what each one would tell you. Then decode the -enc blob ([System.Text.Encoding]::Unicode.GetString([Convert]::FromBase64String(...))) and ask: does what it does change your classification?
Pitfalls
- Alert fatigue bias. The fourth identical-looking alert this week is how real intrusions get ignored. Every alert gets the five questions.
- Clock drift. A host whose clock is 40 minutes off will corrupt your timeline later. Record
w32tm /query /statusortimedatectloutput for every machine you touch. - Talking on the compromised channel. If the attacker is in your email, your triage notes in Outlook are being read. More on that in the communications lesson — for now, keep your scratch notes off corporate mail.