The lab
A controlled Active Directory network with a web target, a workstation, and a domain controller. Cross-segment traffic crosses an inline Suricata gateway; same-subnet traffic does not.
See the architectureActive Directory attack simulation · Detection engineering · DFIR
A self-hosted SOC lab where a full adversary campaign runs against an isolated Active Directory network, alerts are triaged, and detection gaps are documented instead of hidden.
01 / The short version
This is not a folder of notes. It is one traceable story with three layers: the lab, the attack, and the defense.
A controlled Active Directory network with a web target, a workstation, and a domain controller. Cross-segment traffic crosses an inline Suricata gateway; same-subnet traffic does not.
See the architectureTwenty documented stages take an attacker from reconnaissance to domain compromise and visible impact, with the tooling and evidence plan for each step.
Open the campaignSuricata and Wazuh feed a Python bridge into TheHive. Each stage is checked for signal, triaged in a case, and recorded as detected, missed, or unobservable.
Read the detection model02 / The lab
The attack is local. The detection stack is remote. Nothing from the local lab reaches the cloud without crossing the gateway and the encrypted tunnel.
Make the cross-segment detection path unavoidable, then prove what it can and cannot see.
Adversary workstation and tooling.
Cross-segment traffic is inspected. Same-subnet lateral movement stays invisible.
Each host runs a Wazuh agent for endpoint and log telemetry.
Wazuh is private; TheHive/automation is the VPN hub and ingress. Alerts become cases with observables, tasks, and a timeline.
Kali sends attack traffic across the Suricata gateway.
Suricata writes alerts. Wazuh agents ship host and web logs.
thecustomhive forwards qualifying alerts into TheHive.
The analyst scopes, collects evidence, and records a verdict.
| Layer | Component | Plain-English job |
|---|---|---|
| Attack | Kali Linux | Runs the adversary tooling. |
| Network | Suricata | Inspects traffic crossing the gateway; same-subnet flows stay local. |
| Ingress | WireGuard | Only 51820/UDP is public; services are VPN or private. |
| Endpoint | Wazuh | Collects host logs and correlates activity. |
| Integration | thecustomhive | Moves alerts from Wazuh into TheHive. |
| Case work | TheHive | Holds the investigation, observables, and tasks. |
| DFIR | Velociraptor | Collects endpoint evidence when needed. |
Detailed setup, IPs, and trust boundaries live in the architecture document.
03 / The campaign
Each card is a chapter. Open one to see what the attacker did, what the defender could see, and what evidence proves it.
Every stage answers the same four questions: what happened, what should have been visible, what evidence is required, and what detection gap remains.
04 / The defense
A detection only counts when the right telemetry exists and a rule fires for the right reason. Until then, it is a documented gap.
All 20 checks are intentionally marked Not tested. Evidence is added stage by stage.
One for every attack stage, from reconnaissance to impact.
DG-01 to DG-20 give every miss a place to live.
Network, endpoint, and identity evidence are checked together.
A rule that has never fired is a hypothesis, not coverage.
| # | Stage | Required telemetry | What to look for | Gap | Status |
|---|
Reading the result: Not tested means the stage has not been validated yet. It is not a pass and it is not a failure.
Open the gap registerA missed detection is the most useful artifact in the lab. It shows exactly which log source, rule, or field mapping needs work, and it becomes a retest item instead of an untracked weakness.
05 / The investigation
The campaign is split into three TheHive cases so the work stays scoped, but the evidence stays connected across all twenty stages.
How a scan became a foothold: brute force, SQL injection, hash cracking, a web shell, a reverse shell, and root.
How the attacker stayed in, mapped the network, captured credentials, and moved toward the domain.
How stolen credentials became domain control, and how the attacker collected, moved, and staged data.
Identify the signal and its source.
Decide what is real and how urgent it is.
Find the first host, account, and timestamp.
Preserve logs, processes, files, and network evidence.
State what happened and what is still unknown.
Turn the evidence into a defensible timeline.
06 / The report
The report package pulls the campaign, the case work, and the detection gaps into one reviewable incident record.
| Question | Where it is answered |
|---|---|
| What happened, in plain language? | Executive summary |
| Which systems and accounts were affected? | Scope and impact |
| How did the attacker get in and move? | Attack chain |
| What did we detect, and what did we miss? | Detection performance |
| What did we do about it? | Containment and recovery |
| What changes next? | Lessons learned |
07 / The documents
The visual site is the guided tour. The Markdown files are the detailed record and the source of truth.
Architecture, network, virtual machines, cloud stack, and the alert bridge.
15 documents 02Twenty stage write-ups with the attack path, tooling, and evidence convention.
20 stages 03Coverage matrix, Suricata and Wazuh rules, decoders, and false positives.
8 documents 04Stage notes, analyst questions, evidence checklists, and three case summaries.
24 documents 05The formal report package: timeline, IOCs, ATT&CK, response, and lessons.
7 documents IDXOne traceability table linking stage, alert, rule, case, and evidence.
Open the matrixNetwork detection software. It inspects traffic crossing the gateway and raises an alert when it recognises a suspicious pattern.
The SIEM. It collects logs from hosts, correlates them, and makes alerts searchable in one place.
Case management. It turns an alert into a structured investigation with tasks, observables, and a timeline.
An attack that requests encrypted service tickets, then cracks them offline to recover a service account password.
An attack that impersonates a domain controller to copy password hashes from Active Directory.
Logging in with a stolen password hash instead of the plaintext password.
A forged Kerberos ticket that gives long-lived access to the domain, created with the KRBTGT key.
The telemetry exists, but no rule covers the behavior. A logging gap means the telemetry was never collected.