Graduation thesis project — Offensive Security / Active Directory
Important
Authorized academic engagement in a fully isolated lab. This repository documents a penetration test against GOAD (Game of Active Directory) — a deliberately-vulnerable AD lab published by Orange Cyberdefense for training. All work ran inside a host-only VirtualBox network (192.168.56.0/24); no traffic ever left the subnet, and no real system was ever touched. Every credential shown is a GOAD default lab value (public in the GOAD project). Read the DISCLAIMER before anything else.
A complete, evidence-backed walk from zero access to Domain Admin on the north.sevenkingdoms.local child domain — then a demonstration of what that control actually enables. The engagement is documented as a reproducible package: a consolidated report, seven per-phase manifests, 122 screenshots, 61 raw command logs, every helper script, and every loot artifact.
Note
Screen recordings are not in this repository. The engagement produced 61 attack recordings (~7 GB, 1080p HEVC) that are retained offline for the thesis committee. This public repository carries the documentation, stills, logs and loot — 32 MB, everything needed to follow and verify the work without the video bulk. See methodology for how the recordings were produced.
Headline outcome: Full Domain Admin on north.sevenkingdoms.local via three independent compromise paths, six cracked plaintext credentials, complete post-compromise capability demonstrations. Forest root (sevenkingdoms.local) was not reached — two real hardening controls (Print Spooler mitigation + AD CS Web-Enrollment EPA) blocked the ESC8 chain. The defenses that held are documented as carefully as the attacks that succeeded.
flowchart TB
subgraph FOREST1["🏰 sevenkingdoms.local — forest root"]
KL["KINGSLANDING · 192.168.56.10<br/>Server 2019 · DC + IIS + AD CS<br/>🛡️ ESC8 chain blocked here"]
end
subgraph CHILD["❄️ north.sevenkingdoms.local — child domain"]
WF["WINTERFELL · 192.168.56.11<br/>Server 2019 · DC + GC + DNS<br/>🎯 Domain Admin achieved"]
CB["CASTELBLACK · 192.168.56.22<br/>Server 2019 · member + MSSQL"]
end
subgraph FOREST2["🐉 essos.local — separate forest"]
MR["MEEREEN · 192.168.56.12<br/>Server 2016 · DC"]
BR["BRAAVOS · 192.168.56.23<br/>Server 2016 · member + MSSQL"]
end
KL ---|parent-child trust| WF
WF --- CB
MR --- BR
FOREST1 <-->|bi-directional inter-forest trust| FOREST2
ATT["💀 Kali · 192.168.56.1<br/>attacker workstation"]
ATT -.->|host-only, isolated| KL
style FOREST1 fill:#3d2b1e,stroke:#d9a94a,color:#fff
style CHILD fill:#1e3a5f,stroke:#4a90d9,color:#fff
style FOREST2 fill:#3d1e2b,stroke:#d94a7a,color:#fff
style WF fill:#5f1e1e,stroke:#d94a4a,color:#fff
style KL fill:#1e5f2b,stroke:#4ad96a,color:#fff
style ATT fill:#333,stroke:#888,color:#fff
5 GOAD VMs across two forests joined by a bi-directional trust — the trust is what turns a single foothold into cross-forest reach.
Mapped to PTES and MITRE ATT&CK. Each phase has its own manifest with the full command index, detection signals, and mitigations.
| Phase | What happened | Key result | Detail |
|---|---|---|---|
| 4.1 Recon | Host discovery, SMB/LDAP/Kerberos enumeration | 5 hosts, 22 valid accounts, domain SID | manifest |
| 4.2 Initial access | AS-REP roasting → offline crack | 2 footholds: brandon.stark, missandei |
manifest |
| 4.3 Priv-esc | Kerberoasting, BloodHound, AD CS enum | jon.snow cracked; ESC8 identified |
manifest |
| 4.4 Lateral movement | Constrained-delegation abuse, MSSQL xp_cmdshell |
WINTERFELL (north DC) compromised | manifest |
| 4.5 Domain dominance | DCSync, Golden Ticket persistence | Full north DA; krbtgt extracted | manifest |
| 4.6 Domain fun | SYSVOL & LSA secret harvesting | 2 more independent creds; RDP proof | manifest |
| 4.7 Capability demos | "What can you actually DO with DA?" | 7 reversible post-compromise demos | manifest |
📄 The full narrative is in GOAD-DOC/FINAL_REPORT.md.
What makes this engagement more than a linear walkthrough: three independent routes to privileged access, so removing any one control would not have saved the domain.
- Delegation path —
jon.snow(Kerberoasted) has constrained delegation to the DC itself → impersonate Administrator on WINTERFELL → DCSync. - SQL path —
jon.snowis sysadmin on CASTELBLACK MSSQL →xp_cmdshellasnorth\sql_svc. - SYSVOL path — plaintext credentials in a logon script (
jeor.mormont) → local admin on CASTELBLACK → LSA secrets → thesql_svcpassword we couldn't crack, sitting in cleartext.
41 findings (F-01 … F-41), each rated and mapped to a mitigation. Crucially, this includes the controls that worked:
| Defense that held | Where | Effect |
|---|---|---|
| Print Spooler PrinterBug mitigation | KINGSLANDING | Blocked ESC8 coercion |
| AD CS Web-Enrollment EPA over HTTP | KINGSLANDING | Rejected the relayed machine account (401) |
| Account-restrictions GPO on built-in Administrator | WINTERFELL | Blocked RDP pass-the-hash |
| Hardened anonymous SMB | all DCs | Denied null-session enumeration |
➡️ Full register in FINDINGS.md · defensive recommendations in FINAL_REPORT §8.
This is why the project reads as security research, not an attack tutorial: every offensive step is paired with its detection signal (Windows event IDs) and its mitigation, and the engagement honestly records where it was stopped.
.
├── README.md ← you are here
├── DISCLAIMER.md authorization, scope, ethics
├── FINDINGS.md consolidated finding register (F-01…F-41)
├── METHODOLOGY.md PTES mapping + evidence pipeline
├── LICENSE CC BY-NC-ND 4.0
├── CITATION.cff
└── GOAD-DOC/
├── FINAL_REPORT.md the consolidated engagement report
└── 4.1 … 4.7/ per-phase packages
├── MANIFEST.md command index · findings · detection/mitigation
├── images/ screenshots (before/after each step)
├── logs/ raw command output
├── _loot/ harvested artifacts (GOAD lab data)
├── _helpers/ wrapper scripts used during the phase
└── _wordlists/ user/password lists (GOAD defaults)
nmap · netexec (nxc) · enum4linux-ng · kerbrute · impacket (GetNPUsers, GetUserSPNs, getTGT, getST, secretsdump, ticketer) · BloodHound · certipy-ad · hashcat · john · evil-winrm · xfreerdp · smbclient — all standard, publicly-available security tooling on Kali Linux.
Ahmad Al-Ahmad — Al-Jazeera Private University.
Graduation thesis, "From Vulnerability to Control."
Cite via CITATION.cff.
Documentation, findings, screenshots and logs: CC BY-NC-ND 4.0. Helper scripts are thin wrappers around public tools, provided as-is for educational reference. See DISCLAIMER.