Module 11 — Sysmon First Hunt Workbook
Module 11 — Sysmon First Hunt Workbook
Your first end-to-end hunt on lab .114: trigger benign activity, then prove the story across Sysmon, Security EVTX, and (via VNC) ProcExp / Procmon. Scenario verified live 2026-09-01.
Prerequisites: Tools installed · EVTX module · VNC or RDP to .114
0. Purpose
Reading Event ID tables is not hunting. This workbook walks one repeatable narrative: something spawned PowerShell and wrote a file — then you prove it in three log layers plus GUI confirmation.
1. ELI5
You stage a harmless "suspicious" play in the lab (new PowerShell child + temp file). Then you ask three witnesses what they saw:
- Sysmon — "I saw process create (1), file create (11), maybe network (3)"
- Security log — "I saw 4688 with command line"
- ProcExp / Procmon — "I saw the parent chain and disk writes live"
If all three agree, you can hunt for real.
2. Lab access (GUI)
| Method | Status on .114 |
Connect from MiniMac |
|---|---|---|
| RDP | Working — TCP 3389 | Microsoft Remote Desktop → 192.168.50.114 |
| TightVNC | Working — TCP 5900 | VNC client (fallback) |
| SSH | Port 22 | ssh tester808@192.168.50.114 |
On first VNC session, open Proxmox console and run:
"C:\Program Files\TightVNC\tvnserver.exe" -controlservice -setpassword
Set a lab-only password; restrict to 192.168.50.0/24.
3. Scenario — "spawn and stage"
Step A — Trigger (SSH)
# On .114 (or from MiniMac via SSH)
powershell -NoProfile -ExecutionPolicy Bypass -File C:\Users\tester808\win11_hunt_lab_trigger.ps1
Installer copy from MiniMac:
scp ~/code/CodeCollector/win11_hunt_lab_trigger.ps1 tester808@192.168.50.114:C:/Users/tester808/
What it does (benign):
- Writes
hunt-lab-<timestamp>.txtunder%TEMP% - Spawns child
powershell.exeviaStart-Process - Dumps recent Sysmon + Security events to JSON
Step B — Expected telemetry (verified 2026-09-01)
| Source | Event ID | What you should see |
|---|---|---|
| Sysmon | 1 | powershell.exe create (parent = powershell.exe or cmd.exe via sshd chain) |
| Sysmon | 11 | FileCreate under %TEMP%\hunt-lab-*.txt |
| Sysmon | 3 | Optional — sshd.exe network (SSH session) |
| Security | 4688 | Process creation with command line (audit policy enabled) |
| Defender | 1116/1121 | None for this benign scenario |
Example live capture:
Sysmon 1 → powershell.exe (child)
Sysmon 11 → ...\Temp\hunt-lab-20260901-095751.txt
Security 4688 → tester808 created powershell.exe
4. Investigation commands (SSH)
# Sysmon — last 15 minutes, hunt IDs only
Get-WinEvent -LogName 'Microsoft-Windows-Sysmon/Operational' -MaxEvents 200 |
Where-Object { $_.TimeCreated -gt (Get-Date).AddMinutes(-15) -and $_.Id -in 1,3,7,11,22 } |
Select-Object TimeCreated, Id, @{N='Img';E={
if ($_.Message -match 'Image: (.+?)\r') { $matches[1].Split('\')[-1] } else { '...' }
}} | Format-Table -AutoSize
# Security — 4688 with command line
Get-WinEvent -LogName Security -MaxEvents 50 |
Where-Object { $_.Id -eq 4688 -and $_.TimeCreated -gt (Get-Date).AddMinutes(-15) } |
Select-Object TimeCreated, @{N='Msg';E={$_.Message.SubstringMin(300,$_.Message.Length)}} |
Format-List
# Correlate by time — replace timestamp
Get-WinEvent -LogName 'Microsoft-Windows-Sysmon/Operational' -MaxEvents 500 |
Where-Object { $_.Message -match 'hunt-lab' } |
Select-Object TimeCreated, Id, Message
5. GUI hunt (VNC session)
Process Explorer
- Launch
procexp64.exeas Administrator. - Find your hunt
powershell.exesession (or re-run trigger while ProcExp is open). - Lower pane (Ctrl+D) — confirm
amsi.dll,ntdll.dllloaded. - Properties → Image — path, command line, parent (if still running).
Process Monitor
- Launch
Procmon64.exeas Administrator. - Filter → Filter… add:
Process Nameispowershell.exe→ IncludePathcontainshunt-lab→ Include
- Run trigger script from elevated PowerShell in VNC session.
- Look for CreateFile / WriteFile on
%TEMP%\hunt-lab-*.txt. - File → Save →
C:\Users\tester808\Documents\hunt-01.pml— stop capture when done.
6. Correlation worksheet
Fill this after each run:
| Field | Your answer |
|---|---|
| Hunt tag | hunt-lab-________ |
| Temp file full path | |
| Child PID | |
| Sysmon 1 time | |
| Sysmon 11 time | |
| Security 4688 time | |
| Parent process name | |
amsi.dll loaded? (Y/N) |
Filled example — c2_rust lab on .114 (2026-09-01)
Auto-generated via win_hunt_worksheet_fill.ps1 after carrier + udrl + implant runs:
| Field | Value |
|---|---|
| Hunt tag | c2-lab-20260901 |
| Carrier file path | C:\Users\tester808\c2_drop\network-metrics.txt (9.7 MB) |
| DLL staging path | C:\Users\tester808\c2_drop\staged-minimal.dll (100 KB) |
| Sysmon 11 time (carrier) | ~10:47 AM (carrier drop) |
| Sysmon 11 time (DLL) | 9/1/2026 12:07:39 PM |
| Sysmon 1 time (notepad) | 9/1/2026 10:54:08 AM — parent platform-agent.exe |
| Defender 1116/1117 | 12 in 90m window (mostly direct PE / deploy_child quarantine) |
| Sysmon 7 (udrl) | None — virtual_alloc load (no disk-backed image) |
amsi.dll loaded? |
Verify on VNC — ProcExp → platform-agent → lower pane |
# Regenerate worksheet from MiniMac
scp tools/platform_lab/scripts/win_hunt_worksheet_fill.ps1 tester808@192.168.50.114:/tmp/
ssh tester808@192.168.50.114 \
"powershell -File C:/tmp/win_hunt_worksheet_fill.ps1 -SinceMinutes 90"
VNC checklist (ProcExp): Find platform-agent.exe → Ctrl+D → confirm amsi.dll, ntdll.dll loaded → after spawn_inject, child Notepad under parent.
sequenceDiagram participant You as Operator SSH/VNC participant PS as powershell.exe participant Child as child powershell participant Sys as Sysmon participant Sec as Security log You->>PS: run hunt trigger PS->>Child: Start-Process Sys-->>You: Event 1 (both PIDs) PS->>PS: Out-File temp Sys-->>You: Event 11 (file) Sec-->>You: Event 4688 (cmdline)
7. Stretch exercises
| # | Exercise | Pass criteria |
|---|---|---|
| 1 | Filter Sysmon for sshd.exe only |
Explain why SSH hunts show sshd parent chain |
| 2 | Re-run after opening Edge | See msedge.exe in Sysmon 1 |
| 3 | Export Autoruns baseline | CSV under Documents (item 3 — later) |
| 4 | Trigger ASR test (careful) | Obfuscated script → Defender 1121 |
| 5 | Run c2_rust implant series + correlate | See Module 26 — notepad parent = platform-agent.exe |
| 6 | Run no-exclusion quarantine test | test_windows11_no_exclusion.sh → Defender 1116/1117 on platform-agent.exe |
8. Record in notebook
Navigation
← Tools inventory · c2_rust hunt correlation · AD domain lab · MOC