feat(entries): add 6 red↔blue pairs across new tactics - #4
Conversation
Grows the corpus from 16 to 22 paired concepts, extending coverage into ticket forgery, SYSVOL credentials, local NTDS theft, WMI execution, and the previously absent Persistence tactic: - golden-ticket ↔ golden-ticket-4769 (T1558.001): forged TGT, detected by 4769 TGS with no preceding 4768 - gpp-cpassword ↔ gpp-cpassword-5145 (T1552.006): SYSVOL prefs XML read - ntds-ntdsutil ↔ ntds-ntdsutil-4688 (T1003.003): local NTDS dump via ntdsutil/VSS - wmiexec-impacket ↔ wmiexec-4688 (T1047): WmiPrvSE child shell - schtask-persist ↔ schtask-4698 (T1053.005): scheduled-task persistence - wmi-subscription ↔ wmi-subscription-sysmon (T1546.003): WMI event subscription All pairs pass the drift gate, pairing-graph, and slot-coverage checks. README count and corpus table updated. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J8Du71ZBfpnhHui9pmsUJq
There was a problem hiding this comment.
Pull request overview
Expands the project’s red↔blue “paired concepts” corpus by adding six new ATT&CK technique pairs across newly covered tactics (notably Persistence and Execution), and updates the README corpus summary/table accordingly.
Changes:
- Add six new red technique entries (Golden Ticket, GPP cpassword, NTDS.dit theft via ntdsutil/VSS, WMI exec, scheduled-task persistence, WMI subscription persistence).
- Add six corresponding blue detections (Windows Security 4688/4698/5145/4768+4769, plus Sysmon 19/20/21).
- Update README corpus count and table to reflect 22 paired concepts and new tactic coverage.
Reviewed changes
Copilot reviewed 13 out of 13 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| README.md | Updates corpus count/tactics list and adds six new pairs to the table. |
| entries/red/wmiexec-impacket.md | New red entry documenting impacket-based WMI remote execution. |
| entries/red/wmi-subscription.md | New red entry documenting WMI event-subscription persistence. |
| entries/red/schtask-persist.md | New red entry documenting scheduled-task persistence via schtasks. |
| entries/red/ntds-ntdsutil.md | New red entry documenting offline NTDS.dit theft via ntdsutil/VSS. |
| entries/red/gpp-cpassword.md | New red entry documenting SYSVOL GPP cpassword discovery/decrypt workflow. |
| entries/red/golden-ticket.md | New red entry documenting Golden Ticket forging and usage. |
| entries/blue/wmiexec-4688.md | New blue detection for WMI exec via 4688 WmiPrvSE child processes (SPL). |
| entries/blue/wmi-subscription-sysmon.md | New blue detection for WMI subscription persistence via Sysmon WMI eventing (SPL). |
| entries/blue/schtask-4698.md | New blue detection for suspicious scheduled task creation via 4698 (SPL). |
| entries/blue/ntds-ntdsutil-4688.md | New blue detection for NTDS theft behaviors via 4688 + 8222 correlation (SPL). |
| entries/blue/gpp-cpassword-5145.md | New blue detection for GPP XML reads from SYSVOL via 5145 (SPL). |
| entries/blue/golden-ticket-4769.md | New blue detection for TGS activity without preceding TGT issuance (4768/4769 SPL). |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
| and alert on the rest. Requires Sysmon with WMI eventing (schema ≥ 4.1). | ||
|
|
||
| ```spl | ||
| index=main (EventCode=20 OR EventCode=21) |
|
|
||
| ```spl | ||
| index=main EventCode=4688 Creator_Process_Name="*\\WmiPrvSE.exe" | ||
| New_Process_Name IN ("*\\cmd.exe","*\\powershell.exe") |
There was a problem hiding this comment.
Kept as-is. The IN(...) wildcard caveat applies to the where command's IN() function; this is a base-search IN, where Splunk (6.6+) does expand * in the value list. It's also the established house style in this corpus — the existing potato-seimpersonate-4688 blue entry uses the identical New_Process_Name IN ("*\\cmd.exe","*\\powershell.exe") construct — so changing it here would only introduce inconsistency.
Generated by Claude Code
|
|
||
| ```sh | ||
| nxc smb {{rhost}} -u {{user}} -p {{password}} -M wmi-event -o CONSUMER='powershell -w hidden -enc <b64>' | ||
| Register-WmiEvent -Query "SELECT * FROM __InstanceModificationEvent WITHIN 60 WHERE TargetInstance ISA 'Win32_PerfFormattedData_PerfOS_System'" -Action {iex(<payload>)} |
Address review on #4: - wmi-subscription-sysmon: scope the SPL to Sysmon EventCode 20 (the consumer carries the payload in Destination); event 21 (binding) has no Destination so the regex silently dropped it. Reconcile title/event_ids/prose accordingly and note the binding as a separate low-volume alert. - wmi-subscription (red): replace the session-scoped Register-WmiEvent with PowerLurk's Register-MaliciousWmiEvent, which writes a real permanent consumer (the entry is about permanent, reboot-surviving persistence). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J8Du71ZBfpnhHui9pmsUJq
What
Grows the corpus from 16 → 22 paired concepts, extending it into tactics it didn't cover before — ticket forgery, SYSVOL credentials, local NTDS theft, WMI execution, and the previously-absent Persistence tactic.
4769TGS with no preceding47685145SYSVOLGroups.xmlread4688ntdsutil/vssadmin +82224688WmiPrvSE.exechild shell4698task created19/20/21Each detection follows the corpus philosophy — detect the invariant, not the IOC (the RC4 downgrade, the replication-skipping host behaviour, the WmiPrvSE parent, the fileless WMI consumer).
Why these
The existing corpus was heavy on Credential Access / AD path abuse but had no Persistence or Execution coverage and was missing two marquee techniques (Golden Ticket, local NTDS theft). These six fill those gaps with clean, single-invariant detections.
Verification
gen-views.sh --check(drift gate, standalone) — passpair:resolves and back-references) — pass{{slots}}all handled byhtpx) — passbash -non the scripts — passREADME count + corpus table updated to match.
🤖 Generated with Claude Code
Generated by Claude Code