Cicada — walking an easy Active Directory chain end to end
TL;DRA retired, beginner-friendly Windows AD box: how a read-only share, a password reused in an LDAP field, and a backup privilege chain together into full domain compromise — and what each step should have set off in a SOC.
TL;DR — Anonymous SMB access exposes a share that leaks a default password. That password sprays to a valid domain user, whose LDAP object stores another user’s password in a description field. A DEV share holds a script with a third set of credentials, and that account has
SeBackupPrivilege— enough to read the SAM/SYSTEM hives, recover the administrator hash offline, and authenticate as administrator. Each hop is small; the lesson is how ordinary misconfigurations compound.
This is a walkthrough of a retired Hack The Box machine, written for education. No live targets, credentials, IP addresses, or flags are included — the focus is the methodology and the defensive takeaways.
Why this box is worth writing up
Cicada is rated easy, and that is exactly why it is a good teaching box: nothing here is an exotic exploit. Every step is a configuration mistake a real domain could have — a share left open, a password typed into a comment field, a service account with one privilege too many. Walking it end to end is a compact tour of how Active Directory environments actually fall over, and — the part I care about more — where a defender gets a chance to notice.
1. Recon
Standard TCP service discovery against the target shows the fingerprint of a domain controller: SMB, LDAP, Kerberos, DNS. That combination sets the whole approach — this is an identity problem, not a web problem.
# service + default-script sweep against the DC (target redacted as box.htb)nmap -Pn -sV -sC -p- --min-rate 1000 box.htb2. Foothold — anonymous share → default password → spray
SMB allows an anonymous/guest session, and one share is world-readable. Inside is onboarding material that includes a default password handed to new starters. On its own that is just a string — but a default password is only useful if someone never changed theirs.
Enumerating domain users (again over the anonymous session) gives a name list. Spraying the single default password across that list — slowly, to stay under lockout thresholds — lands on one account that never rotated it.
# password spray: one password, many users, low-and-slownxc smb box.htb -u users.txt -p 'Default-Password-Here' --continue-on-successThat is the foothold: a valid, if low-privileged, domain account.
3. Lateral movement — a password stored in an LDAP field
With any authenticated context, LDAP becomes readable. A classic mistake shows up here: a user object stores a password in its description attribute. Description fields are free text, world-readable to any authenticated user, and people treat them like sticky notes.
# read user objects; the description field is the prizenxc ldap box.htb -u michael -p '...' --query '(objectClass=user)' 'sAMAccountName description'That second credential opens a DEV share, which contains a backup script with a third account’s password in cleartext. Scripts in shares are a recurring goldmine — automation needs credentials, and credentials in automation get forgotten.
4. Privilege escalation — SeBackupPrivilege
The third account can log in over WinRM. It is not an administrator — but it holds SeBackupPrivilege. That privilege exists so backup software can read any file regardless of ACLs, and that is precisely the problem: it can read the registry hives that store password material.
The chain is mechanical from here:
- Use the backup privilege to copy the
SAMandSYSTEMhives out of the live registry. - Pull them off the box.
- Recover the local administrator hash offline from the two hives.
- Authenticate as administrator with the hash — no plaintext ever needed.
# with SeBackupPrivilege, the hives are readable despite ACLsreg save HKLM\SAM sam.hivereg save HKLM\SYSTEM system.hiveOffline, the hives yield the administrator NT hash, and a pass-the-hash login completes the box. Domain compromise achieved with zero exploits — only misconfigurations and one over-broad privilege.
What actually went wrong (and the defensive read)
Strip away the box framing and this is a list of findings any assessor would write up:
- A default password that was never rotated, sprayable because a world-readable share advertised it.
- A credential stored in an LDAP
descriptionfield — readable by every authenticated principal. - Cleartext credentials in a script on a share — automation secrets with no vault.
SeBackupPrivilegeon a non-backup account — a privilege that trivially becomes credential theft.
None of these needs a patch. They need hygiene: rotate defaults, keep secrets out of directory attributes and scripts, and treat backup/restore privileges as tier-0.
The more interesting question for me — the one I answer in the companion post — is: where does a SOC get to catch this? The password spray is a burst of authentication failures. The hive dump is a specific, detectable action. The pass-the-hash login has a signature. Every step above leaves a mark if you are collecting the right telemetry.
→ Companion: Detecting the Cicada chain — mapping each of these steps to Windows event IDs and Wazuh/Sigma logic.