AD CS Domain Escalation
Last updated
Last updated
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Dit is 'n opsomming van die eskalasie tegniek afdelings van die plasings:
Registraseregte word aan lae-bevoegde gebruikers deur die Enterprise CA toegeken.
Bestuurder goedkeuring is nie nodig nie.
Geen handtekeninge van gemagtigde personeel is nodig nie.
Sekuriteitsbeskrywings op sertifikaat sjablone is te permissief, wat lae-bevoegde gebruikers toelaat om registraseregte te verkry.
Sertifikaat sjablone is geconfigureer om EKUs te definieer wat verifikasie fasiliteer:
Uitgebreide Sleutel Gebruik (EKU) identifiseerders soos Kliënt Verifikasie (OID 1.3.6.1.5.5.7.3.2), PKINIT Kliënt Verifikasie (1.3.6.1.5.2.3.4), Slim Kaart Aanmelding (OID 1.3.6.1.4.1.311.20.2.2), Enige Doel (OID 2.5.29.37.0), of geen EKU (SubCA) is ingesluit.
Die vermoë vir versoekers om 'n subjectAltName in die Sertifikaat Ondertekening Versoek (CSR) in te sluit, word deur die sjabloon toegelaat:
Die Aktiewe Gids (AD) prioritiseer die subjectAltName (SAN) in 'n sertifikaat vir identiteitsverifikasie indien teenwoordig. Dit beteken dat deur die SAN in 'n CSR te spesifiseer, 'n sertifikaat aangevra kan word om enige gebruiker (bv. 'n domein administrateur) na te doen. Of 'n SAN deur die versoeker gespesifiseer kan word, word in die sertifikaat sjabloon se AD objek deur die mspki-certificate-name-flag
eienskap aangedui. Hierdie eienskap is 'n bitmask, en die teenwoordigheid van die CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT
vlag laat die spesifikasie van die SAN deur die versoeker toe.
Die konfigurasie wat uiteengesit is, laat lae-bevoegde gebruikers toe om sertifikate met enige SAN van keuse aan te vra, wat verifikasie as enige domein hoof deur Kerberos of SChannel moontlik maak.
Hierdie funksie word soms geaktiveer om die on-the-fly generasie van HTTPS of gasheer sertifikate deur produkte of ontplooiingsdienste te ondersteun, of weens 'n gebrek aan begrip.
Daar word opgemerk dat die skep van 'n sertifikaat met hierdie opsie 'n waarskuwing aktiveer, wat nie die geval is wanneer 'n bestaande sertifikaat sjabloon (soos die WebServer
sjabloon, wat CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT
geaktiveer het) gedupliseer en dan gewysig word om 'n verifikasie OID in te sluit nie.
Om kwetsbare sertifikaat sjablone te vind kan jy uitvoer:
Om hierdie kwesbaarheid te misbruik om 'n administrateur na te boots kan 'n mens die volgende uitvoer:
Dan kan jy die gegenereerde sertifikaat na .pfx
formaat omskakel en dit gebruik om te autentiseer met Rubeus of certipy weer:
Die Windows-binaries "Certreq.exe" & "Certutil.exe" kan gebruik word om die PFX te genereer: https://gist.github.com/b4cktr4ck2/95a9b908e57460d9958e8238f85ef8ee
Die opsporing van sertifikaat sjablone binne die AD Forest se konfigurasieskema, spesifiek dié wat nie goedkeuring of handtekeninge vereis nie, wat 'n Kliëntverifikasie of Slimkaart Aanmelding EKU het, en met die CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT
vlag geaktiveer, kan gedoen word deur die volgende LDAP-navraag uit te voer:
Die tweede misbruikscenario is 'n variasie van die eerste een:
Registraseregte word aan laag-geprivilegieerde gebruikers toegeken deur die Enterprise CA.
Die vereiste vir bestuurder goedkeuring is gedeaktiveer.
Die behoefte aan gemagtigde handtekeninge word weggelaat.
'n Oormatig toelaatbare sekuriteitsbeskrywer op die sertifikaat sjabloon gee sertifikaat registraseregte aan laag-geprivilegieerde gebruikers.
Die sertifikaat sjabloon is gedefinieer om die Any Purpose EKU of geen EKU in te sluit.
Die Any Purpose EKU laat 'n sertifikaat toe om deur 'n aanvaller vir enige doel verkry te word, insluitend kliëntverifikasie, bedienerverifikasie, kodehandtekening, ens. Dieselfde tegniek wat vir ESC3 gebruik word kan gebruik word om hierdie scenario te benut.
Sertifikate met geen EKUs, wat as ondergeskikte CA sertifikate optree, kan vir enige doel benut word en kan ook gebruik word om nuwe sertifikate te teken. Daarom kan 'n aanvaller arbitrêre EKUs of velde in die nuwe sertifikate spesifiseer deur 'n ondergeskikte CA sertifikaat te gebruik.
Egter, nuwe sertifikate wat geskep word vir domeinverifikasie sal nie funksioneer nie as die ondergeskikte CA nie vertrou word deur die NTAuthCertificates
objek, wat die standaardinstelling is. Nietemin kan 'n aanvaller steeds nuwe sertifikate met enige EKU en arbitrêre sertifikaatwaardes skep. Hierdie kan potensieel misbruik word vir 'n wye reeks doeleindes (bv. kodehandtekening, bedienerverifikasie, ens.) en kan beduidende implikasies hê vir ander toepassings in die netwerk soos SAML, AD FS, of IPSec.
Om sjablone wat by hierdie scenario pas binne die AD Forest se konfigurasieskema op te som, kan die volgende LDAP-navraag uitgevoer word:
Hierdie scenario is soos die eerste en tweede een, maar misbruik 'n ander EKU (Sertifikaat Aansoek Agent) en 2 verskillende sjablone (daarom het dit 2 stelle vereistes),
Die Sertifikaat Aansoek Agent EKU (OID 1.3.6.1.4.1.311.20.2.1), bekend as Registrasie Agent in Microsoft dokumentasie, laat 'n hoofpersoon toe om te registreer vir 'n sertifikaat namens 'n ander gebruiker.
Die “registrasie agent” registreer in so 'n sjabloon en gebruik die resulterende sertifikaat om 'n CSR mede-te teken namens die ander gebruiker. Dit stuur die mede-getekende CSR na die CA, wat registreer in 'n sjabloon wat “registreer namens” toelaat, en die CA antwoord met 'n sertifikaat wat aan die “ander” gebruiker behoort.
Vereistes 1:
Registrasiegeregte word aan laag-geprivilegieerde gebruikers deur die Enterprise CA toegestaan.
Die vereiste vir bestuurder goedkeuring word weggelaat.
Geen vereiste vir gemagtigde handtekeninge nie.
Die sekuriteitsbeskrywer van die sertifikaat sjabloon is buitensporig toelaatbaar, wat registrasiegeregte aan laag-geprivilegieerde gebruikers toeken.
Die sertifikaat sjabloon sluit die Sertifikaat Aansoek Agent EKU in, wat die aansoek van ander sertifikaat sjablone namens ander hoofpersone moontlik maak.
Vereistes 2:
Die Enterprise CA verleen registrasiegeregte aan laag-geprivilegieerde gebruikers.
Bestuurder goedkeuring word omseil.
Die sjabloon se skema weergawe is of 1 of oorskry 2, en dit spesifiseer 'n Aansoek Beleid Uitreik Vereiste wat die Sertifikaat Aansoek Agent EKU vereis.
'n EKU gedefinieer in die sertifikaat sjabloon laat domein autentisering toe.
Beperkings vir registrasie agente word nie op die CA toegepas nie.
Jy kan Certify of Certipy gebruik om hierdie scenario te misbruik:
Die gebruikers wat toegelaat word om 'n inskrywingsagent sertifikaat te verkry, die sjablone waarin inskrywings agente toegelaat word om in te skryf, en die rekeninge namens wie die inskrywingsagent mag optree, kan deur ondernemings CA's beperk word. Dit word bereik deur die certsrc.msc
snap-in te open, regsklik op die CA te klik, klik Eienskappe, en dan navigeer na die “Inskrywingsagente” oortjie.
Dit word egter opgemerk dat die standaard instelling vir CA's is om “Moet nie inskrywingsagente beperk nie.” Wanneer die beperking op inskrywingsagente deur administrateurs geaktiveer word, en dit op “Beperk inskrywingsagente” gestel word, bly die standaardkonfigurasie uiters permissief. Dit laat Almal toe om in alle sjablone in te skryf as enige iemand.
Die veiligheidsbeskrywer op sertifikaat sjablone definieer die toestemmings wat spesifieke AD prinsipes het ten opsigte van die sjabloon.
As 'n aanvaller die vereiste toestemmings het om 'n sjabloon te verander en enige uitbuitbare miskonfigurasies soos in vorige afdelings uiteengesit, kan voorregverhoging gefasiliteer word.
Opmerklike toestemmings wat van toepassing is op sertifikaat sjablone sluit in:
Eienaar: Gee implisiete beheer oor die objek, wat die verandering van enige eienskappe moontlik maak.
VolleBeheer: Stel volledige gesag oor die objek in, insluitend die vermoë om enige eienskappe te verander.
SkryfEienaar: Laat die verandering van die objek se eienaar toe na 'n prinsipe onder die aanvaller se beheer.
SkryfDacl: Laat die aanpassing van toegangbeheer toe, wat moontlik 'n aanvaller VolleBeheer kan gee.
SkryfEiendom: Magtig die redigering van enige objek eienskappe.
'n Voorbeeld van 'n privesc soos die vorige een:
ESC4 is wanneer 'n gebruiker skryfregte oor 'n sertifikaat sjabloon het. Dit kan byvoorbeeld misbruik word om die konfigurasie van die sertifikaat sjabloon te oorskry om die sjabloon kwesbaar te maak vir ESC1.
Soos ons in die pad hierbo kan sien, het slegs JOHNPC
hierdie regte, maar ons gebruiker JOHN
het die nuwe AddKeyCredentialLink
rand aan JOHNPC
. Aangesien hierdie tegniek verband hou met sertifikate, het ek hierdie aanval ook geïmplementeer, wat bekend staan as Shadow Credentials. Hier is 'n bietjie voorsmakie van Certipy se shadow auto
opdrag om die NT-hash van die slagoffer te verkry.
Certipy kan die konfigurasie van 'n sertifikaat sjabloon met 'n enkele opdrag oorskryf. Deur standaard sal Certipy die konfigurasie oorskryf om dit kwesbaar te maak vir ESC1. Ons kan ook die -save-old
parameter spesifiseer om die ou konfigurasie te stoor, wat nuttig sal wees vir herstel van die konfigurasie na ons aanval.
Die uitgebreide web van onderling verbonde ACL-gebaseerde verhoudings, wat verskeie objekte behalwe sertifikaat sjablone en die sertifikaatowerheid insluit, kan die sekuriteit van die hele AD CS-stelsel beïnvloed. Hierdie objekte, wat sekuriteit aansienlik kan beïnvloed, sluit in:
Die AD rekenaarobjek van die CA bediener, wat gecompromitteer kan word deur meganismes soos S4U2Self of S4U2Proxy.
Die RPC/DCOM bediener van die CA bediener.
Enige afstammeling AD objek of houer binne die spesifieke houer pad CN=Public Key Services,CN=Services,CN=Configuration,DC=<DOMAIN>,DC=<COM>
. Hierdie pad sluit in, maar is nie beperk tot, houers en objekte soos die Sertifikaat Sjablone houer, Sertifikasie Owerhede houer, die NTAuthCertificates objek, en die Registrasie Dienste Houer.
Die sekuriteit van die PKI-stelsel kan gecompromitteer word as 'n laag-geprivilegieerde aanvaller daarin slaag om beheer oor enige van hierdie kritieke komponente te verkry.
Die onderwerp wat in die CQure Academy pos bespreek word, raak ook die EDITF_ATTRIBUTESUBJECTALTNAME2
vlag se implikasies aan, soos uiteengesit deur Microsoft. Hierdie konfigurasie, wanneer geaktiveer op 'n Sertifikasie Owerheid (CA), laat die insluiting van gebruikersgedefinieerde waardes in die onderwerp alternatiewe naam vir enige versoek toe, insluitend dié wat uit Active Directory® saamgestel is. Gevolglik laat hierdie bepaling 'n indringer toe om te registreer deur enige sjabloon wat opgestel is vir domein autentisering—specifiek dié wat oop is vir onbevoegde gebruikersregistrasie, soos die standaard Gebruiker sjabloon. As gevolg hiervan kan 'n sertifikaat beveilig word, wat die indringer in staat stel om as 'n domein administrateur of enige ander aktiewe entiteit binne die domein te autentiseer.
Nota: Die benadering om alternatiewe name in 'n Sertifikaat Ondertekening Versoek (CSR) by te voeg, deur die -attrib "SAN:"
argument in certreq.exe
(verwys na “Naam Waarde Pare”), bied 'n kontras van die uitbuitingsstrategie van SANs in ESC1. Hier lê die onderskeid in hoe rekeninginligting ingekapsuleer word—binne 'n sertifikaatattribuut, eerder as 'n uitbreiding.
Om te verifieer of die instelling geaktiveer is, kan organisasies die volgende opdrag met certutil.exe
gebruik:
Hierdie operasie gebruik essensieel remote registry access, daarom kan 'n alternatiewe benadering wees:
Tools soos Certify en Certipy is in staat om hierdie miskonfigurasie te detecteer en dit te benut:
Om hierdie instellings te verander, met die aanname dat 'n mens domein administratiewe regte of ekwivalente het, kan die volgende opdrag vanaf enige werkstasie uitgevoer word:
Om hierdie konfigurasie in jou omgewing te deaktiveer, kan die vlag verwyder word met:
Na die Mei 2022 sekuriteitsopdaterings, sal nuut uitgereikte certificates 'n sekuriteitsuitbreiding bevat wat die aanvrager se objectSid
eienskap insluit. Vir ESC1, word hierdie SID afgelei van die gespesifiseerde SAN. egter, vir ESC6, spieël die SID die aanvrager se objectSid
, nie die SAN nie.
Om ESC6 te benut, is dit noodsaaklik dat die stelsel kwesbaar is vir ESC10 (Swak Sertifikaat Kaartjies), wat die SAN bo die nuwe sekuriteitsuitbreiding prioriteer.
Toegangsbeheer vir 'n sertifikaat owerheid word gehandhaaf deur 'n stel toestemmings wat CA aksies regeer. Hierdie toestemmings kan gesien word deur certsrv.msc
te benader, met die rechtermuisklik op 'n CA, eienskappe te kies, en dan na die Sekuriteit oortjie te navigeer. Boonop kan toestemmings opgenoem word met die PSPKI-module met opdragte soos:
Dit bied insigte in die primêre regte, naamlik ManageCA
en ManageCertificates
, wat ooreenstem met die rolle van “CA administrateur” en “Sertifikaatbestuurder” onderskeidelik.
Die besit van ManageCA
regte op 'n sertifikaatowerheid stel die hoof in staat om instellings op afstand te manipuleer met behulp van PSPKI. Dit sluit in om die EDITF_ATTRIBUTESUBJECTALTNAME2
vlag te skakel om SAN-spesifikasie in enige sjabloon toe te laat, 'n kritieke aspek van domein-eskalasie.
Vereenvoudiging van hierdie proses is haalbaar deur die gebruik van PSPKI se Enable-PolicyModuleFlag cmdlet, wat wysigings toelaat sonder direkte GUI-interaksie.
Die besit van ManageCertificates
regte fasiliteer die goedkeuring van hangende versoeke, wat effektief die "CA sertifikaatbestuurder goedkeuring" beskerming omseil.
'n Kombinasie van Certify en PSPKI modules kan gebruik word om 'n sertifikaat aan te vra, goed te keur en af te laai:
In die vorige aanval is Manage CA
regte gebruik om die EDITF_ATTRIBUTESUBJECTALTNAME2 vlag te aktiveer om die ESC6 aanval uit te voer, maar dit sal geen effek hê totdat die CA diens (CertSvc
) herbegin word nie. Wanneer 'n gebruiker die Manage CA
toegangreg het, mag die gebruiker ook die diens herbegin. Dit beteken egter nie dat die gebruiker die diens op afstand kan herbegin nie. Verder, ESC6 mag nie regtig werk nie in die meeste gepatchte omgewings weens die sekuriteitsopdaterings van Mei 2022.
Daarom word 'n ander aanval hier aangebied.
Voorvereistes:
Slegs ManageCA
toestemming
Manage Certificates
toestemming (kan toegeken word vanaf ManageCA
)
Sertifikaat sjabloon SubCA
moet geaktiveer wees (kan geaktiveer word vanaf ManageCA
)
Die tegniek berus op die feit dat gebruikers met die Manage CA
en Manage Certificates
toegangregte mislukte sertifikaat versoeke kan uitreik. Die SubCA
sertifikaat sjabloon is kwetsbaar vir ESC1, maar slegs administrateurs kan in die sjabloon registreer. Dus kan 'n gebruiker versoek om in die SubCA
te registreer - wat weggestoot sal word - maar dan deur die bestuurder daarna uitgereik sal word.
Jy kan jouself die Manage Certificates
toegangreg gee deur jou gebruiker as 'n nuwe amptenaar toe te voeg.
Die SubCA
sjabloon kan geaktiveer word op die CA met die -enable-template
parameter. Standaard is die SubCA
sjabloon geaktiveer.
As ons die vereistes vir hierdie aanval nagekom het, kan ons begin deur 'n sertifikaat aan te vra gebaseer op die SubCA
sjabloon.
Hierdie versoek sal geweier word, maar ons sal die privaat sleutel stoor en die versoek-ID aanteken.
Met ons Manage CA
en Manage Certificates
, kan ons dan die mislukte sertifikaat versoek met die ca
opdrag en die -issue-request <request ID>
parameter.
En uiteindelik kan ons die uitgereikte sertifikaat met die req
opdrag en die -retrieve <request ID>
parameter verkry.
In omgewings waar AD CS geïnstalleer is, indien 'n web inskrywings eindpunt kwesbaar is en ten minste een sertifikaat sjabloon gepubliseer is wat domein rekenaar inskrywing en kliënt verifikasie toelaat (soos die standaard Machine
sjabloon), word dit moontlik vir enige rekenaar met die spooler diens aktief om deur 'n aanvaller gecompromitteer te word!
Verskeie HTTP-gebaseerde inskrywingsmetodes word deur AD CS ondersteun, beskikbaar gemaak deur addisionele bediener rolle wat administrateurs kan installeer. Hierdie interfaces vir HTTP-gebaseerde sertifikaat inskrywing is kwesbaar vir NTLM relay aanvalle. 'n Aanvaller, vanaf 'n gecompromitteerde masjien, kan enige AD rekening naboots wat via inkomende NTLM verifieer. Terwyl die slagoffer rekening naboots, kan hierdie web interfaces deur 'n aanvaller toegang verkry om 'n kliënt verifikasie sertifikaat aan te vra met die User
of Machine
sertifikaat sjablone.
Die web inskrywingsinterface (n ouer ASP toepassing beskikbaar by http://<caserver>/certsrv/
), is standaard net op HTTP, wat geen beskerming teen NTLM relay aanvalle bied nie. Boonop, dit staan slegs NTLM verifikasie deur sy Outeurskap HTTP kop toe, wat meer veilige verifikasie metodes soos Kerberos onvanpas maak.
Die Sertifikaat Inskrywingsdiens (CES), Sertifikaat Inskrywingsbeleid (CEP) Webdiens, en Netwerktoestel Inskrywingsdiens (NDES) ondersteun standaard onderhandelingsverifikasie deur hul Outeurskap HTTP kop. Onderhandelingsverifikasie ondersteun beide Kerberos en NTLM, wat 'n aanvaller toelaat om te verlaag na NTLM verifikasie tydens relay aanvalle. Alhoewel hierdie webdienste standaard HTTPS aktiveer, beskerm HTTPS alleen nie teen NTLM relay aanvalle nie. Beskerming teen NTLM relay aanvalle vir HTTPS dienste is slegs moontlik wanneer HTTPS gekombineer word met kanaalbinding. Ongelukkig aktiveer AD CS nie Verlengde Beskerming vir Verifikasie op IIS nie, wat vereis word vir kanaalbinding.
'n Algemene probleem met NTLM relay aanvalle is die kort duur van NTLM sessies en die onmoontlikheid van die aanvaller om met dienste te kommunikeer wat NTLM ondertekening vereis.
Nietemin, hierdie beperking word oorkom deur 'n NTLM relay aanval te benut om 'n sertifikaat vir die gebruiker te verkry, aangesien die sertifikaat se geldigheidsperiode die sessie se duur bepaal, en die sertifikaat kan gebruik word met dienste wat NTLM ondertekening vereis. Vir instruksies oor die gebruik van 'n gesteelde sertifikaat, verwys na:
Nog 'n beperking van NTLM relay aanvalle is dat 'n aanvaller-beheerde masjien deur 'n slagoffer rekening geverifieer moet word. Die aanvaller kan of wag of probeer om hierdie verifikasie te dwing:
Certify’s cas
tel geaktiveerde HTTP AD CS eindpunte op:
Die msPKI-Enrollment-Servers
eienskap word deur ondernemings Sertifikaatowerhede (CAs) gebruik om Sertifikaat Registrasiediens (CES) eindpunte te stoor. Hierdie eindpunte kan ontleed en gelys word deur die hulpmiddel Certutil.exe te gebruik:
```powershell Import-Module PSPKI Get-CertificationAuthority | select Name,Enroll* | Format-List * ```
Die versoek vir 'n sertifikaat word standaard deur Certipy gemaak op grond van die sjabloon Machine
of User
, bepaal deur of die rekeningnaam wat oorgedra word eindig op $
. Die spesifikasie van 'n alternatiewe sjabloon kan bereik word deur die gebruik van die -template
parameter.
'n Tegniek soos PetitPotam kan dan gebruik word om outentisering af te dwing. Wanneer daar met domeinbeheerders gewerk word, is die spesifikasie van -template DomainController
vereis.
Die nuwe waarde CT_FLAG_NO_SECURITY_EXTENSION
(0x80000
) vir msPKI-Enrollment-Flag
, bekend as ESC9, verhoed die insluiting van die nuwe szOID_NTDS_CA_SECURITY_EXT
sekuriteitsuitbreiding in 'n sertifikaat. Hierdie vlag word relevant wanneer StrongCertificateBindingEnforcement
op 1
(die standaardinstelling) gestel is, wat teenstrydig is met 'n instelling van 2
. Die relevantie daarvan word verhoog in scenario's waar 'n swakker sertifikaat-mapping vir Kerberos of Schannel misbruik kan word (soos in ESC10), aangesien die afwesigheid van ESC9 nie die vereistes sou verander nie.
Die toestande waaronder hierdie vlag se instelling betekenisvol word, sluit in:
StrongCertificateBindingEnforcement
is nie aangepas na 2
nie (met die standaard wat 1
is), of CertificateMappingMethods
sluit die UPN
vlag in.
Die sertifikaat is gemerk met die CT_FLAG_NO_SECURITY_EXTENSION
vlag binne die msPKI-Enrollment-Flag
instelling.
Enige kliëntverifikasie EKU word deur die sertifikaat gespesifiseer.
GenericWrite
toestemmings is beskikbaar oor enige rekening om 'n ander te kompromitteer.
Neem aan John@corp.local
hou GenericWrite
toestemmings oor Jane@corp.local
, met die doel om Administrator@corp.local
te kompromitteer. Die ESC9
sertifikaat sjabloon, waartoe Jane@corp.local
toegelaat word om in te skryf, is geconfigureer met die CT_FLAG_NO_SECURITY_EXTENSION
vlag in sy msPKI-Enrollment-Flag
instelling.
Aanvanklik word Jane
se hash verkry met behulp van Shadow Credentials, danksy John
se GenericWrite
:
Daarna word Jane
se userPrincipalName
verander na Administrator
, met opsetlike weglating van die @corp.local
domein gedeelte:
Hierdie wysiging oortree nie beperkings nie, aangesien Administrator@corp.local
as Administrator
se userPrincipalName
duidelik bly.
Hierdie, die ESC9
sertifikaat sjabloon, wat as kwesbaar gemerk is, word aangevra as Jane
:
Dit word opgemerk dat die sertifikaat se userPrincipalName
Administrator
weerspieël, sonder enige “object SID”.
Jane
se userPrincipalName
word dan teruggestel na haar oorspronklike, Jane@corp.local
:
Die poging om te autentiseer met die uitgereikte sertifikaat lewer nou die NT-hash van Administrator@corp.local
. Die opdrag moet -domain <domain>
insluit weens die sertifikaat se gebrek aan domeinspesifikasie:
Twee register sleutelwaardes op die domeinbeheerder word deur ESC10 verwys:
Die standaardwaarde vir CertificateMappingMethods
onder HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\Schannel
is 0x18
(0x8 | 0x10
), voorheen gestel op 0x1F
.
Die standaardinstelling vir StrongCertificateBindingEnforcement
onder HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kdc
is 1
, voorheen 0
.
Geval 1
Wanneer StrongCertificateBindingEnforcement
geconfigureer is as 0
.
Geval 2
As CertificateMappingMethods
die UPN
bit (0x4
) insluit.
Met StrongCertificateBindingEnforcement
geconfigureer as 0
, kan 'n rekening A met GenericWrite
regte benut word om enige rekening B te kompromitteer.
Byvoorbeeld, met GenericWrite
regte oor Jane@corp.local
, mik 'n aanvaller om Administrator@corp.local
te kompromitteer. Die prosedure weerspieël ESC9, wat enige sertifikaat sjabloon toelaat om gebruik te word.
Aanvanklik word Jane
's hash verkry met behulp van Shadow Credentials, wat die GenericWrite
benut.
Daarna word Jane
se userPrincipalName
verander na Administrator
, met opsetlike weglating van die @corp.local
gedeelte om 'n beperkingsoortreding te vermy.
Hierdie volg, 'n sertifikaat wat kliëntverifikasie moontlik maak, word aangevra as Jane
, met die standaard User
sjabloon.
Jane
se userPrincipalName
word dan teruggestel na sy oorspronklike, Jane@corp.local
.
Die verifikasie met die verkregen sertifikaat sal die NT-hash van Administrator@corp.local
oplewer, wat die spesifikasie van die domein in die opdrag vereis weens die afwesigheid van domeinbesonderhede in die sertifikaat.
Met die CertificateMappingMethods
wat die UPN
bit vlag (0x4
) bevat, kan 'n rekening A met GenericWrite
regte enige rekening B sonder 'n userPrincipalName
eienskap kompromitteer, insluitend masjienrekeninge en die ingeboude domein administrateur Administrator
.
Hier is die doel om DC$@corp.local
te kompromitteer, begin met die verkryging van Jane
se hash deur Shadow Credentials, wat die GenericWrite
benut.
Jane
se userPrincipalName
word dan gestel na DC$@corp.local
.
'n Sertifikaat vir kliëntverifikasie word aangevra as Jane
met die standaard User
sjabloon.
Jane
se userPrincipalName
word na hierdie proses na sy oorspronklike toestand teruggekeer.
Om via Schannel te verifieer, word Certipy se -ldap-shell
opsie gebruik, wat suksesvolle verifikasie aandui as u:CORP\DC$
.
Deur die LDAP-skal, stel opdragte soos set_rbcd
Resource-Based Constrained Delegation (RBCD) aanvalle in staat, wat moontlik die domeinbeheerder in gevaar kan stel.
Hierdie kwesbaarheid strek ook uit na enige gebruikersrekening wat 'n userPrincipalName
ontbreek of waar dit nie ooreenstem met die sAMAccountName
nie, met die standaard Administrator@corp.local
as 'n primêre teiken weens sy verhoogde LDAP-privileges en die afwesigheid van 'n userPrincipalName
as standaard.
As CA Server nie gekonfigureer is met IF_ENFORCEENCRYPTICERTREQUEST
nie, kan dit NTLM relay-aanvalle maak sonder om te teken via RPC-diens. Verwysing hier.
Jy kan certipy
gebruik om te tel of Enforce Encryption for Requests
gedeaktiveer is en certipy sal ESC11
kwesbaarhede wys.
Dit is nodig om 'n relay-bediener op te stel:
Nota: Vir domeinbeheerders moet ons -template
in DomainController spesifiseer.
Of deur sploutchy se fork van impacket te gebruik:
Administrateurs kan die Sertifikaatowerheid opstel om dit op 'n eksterne toestel soos die "Yubico YubiHSM2" te stoor.
As 'n USB-toestel aan die CA-bediener gekoppel is via 'n USB-poort, of 'n USB-toestelbediener in die geval dat die CA-bediener 'n virtuele masjien is, is 'n autentikasiesleutel (soms verwys as 'n "wagwoord") nodig vir die Sleutelberging Verskaffer om sleutels in die YubiHSM te genereer en te gebruik.
Hierdie sleutel/wagwoord word in die register onder HKEY_LOCAL_MACHINE\SOFTWARE\Yubico\YubiHSM\AuthKeysetPassword
in duidelike teks gestoor.
Verwysing in hier.
As die CA se private sleutel op 'n fisiese USB-toestel gestoor is wanneer jy 'n shell toegang verkry het, is dit moontlik om die sleutel te herstel.
Eerstens moet jy die CA-sertifikaat verkry (dit is publiek) en dan:
Finally, gebruik die certutil -sign
opdrag om 'n nuwe arbitrêre sertifikaat te vervals met behulp van die CA-sertifikaat en sy privaat sleutel.
Die msPKI-Certificate-Policy
attribuut laat die uitreikingsbeleid toe om by die sertifikaat sjabloon gevoeg te word. Die msPKI-Enterprise-Oid
objekte wat verantwoordelik is vir die uitreiking van beleide kan ontdek word in die Konfigurasie Naam Konteks (CN=OID,CN=Public Key Services,CN=Services) van die PKI OID houer. 'n Beleid kan aan 'n AD-groep gekoppel word met behulp van hierdie objek se msDS-OIDToGroupLink
attribuut, wat 'n stelsel in staat stel om 'n gebruiker te magtig wat die sertifikaat aanbied asof hy 'n lid van die groep is. Verwysing hier.
Met ander woorde, wanneer 'n gebruiker toestemming het om 'n sertifikaat aan te vra en die sertifikaat aan 'n OID-groep gekoppel is, kan die gebruiker die voorregte van hierdie groep erf.
Gebruik Check-ADCSESC13.ps1 om OIDToGroupLink te vind:
Vind 'n gebruikersreg wat dit kan gebruik certipy find
of Certify.exe find /showAllPermissions
.
As John
toestemming het om VulnerableTemplate
aan te meld, kan die gebruiker die voorregte van die VulnerableGroup
groep erf.
Al wat dit moet doen, is om die sjabloon te spesifiseer, dit sal 'n sertifikaat met OIDToGroupLink regte ontvang.
Die konfigurasie vir cross-forest enrollment is relatief eenvoudig gemaak. Die root CA sertifikaat van die hulpbronwoud word deur administrateurs gepubliseer na die rekeningwoude, en die enterprise CA sertifikate van die hulpbronwoud word bygevoeg tot die NTAuthCertificates
en AIA houers in elke rekeningwoud. Om dit te verhelder, verleen hierdie reëling die CA in die hulpbronwoud volledige beheer oor al die ander woude waarvoor dit PKI bestuur. Indien hierdie CA deur aanvallers gekompromitteer word, kan sertifikate vir alle gebruikers in beide die hulpbron- en rekeningwoude deur hulle vervals word, wat die sekuriteitsgrens van die woud breek.
In multi-woud omgewings is versigtigheid nodig rakende Enterprise CA's wat sertifikaat sjablone publiseer wat Geverifieerde Gebruikers of buitelandse principals (gebruikers/groepe buite die woud waartoe die Enterprise CA behoort) registrasie en redigeringsregte toelaat. Na verifikasie oor 'n vertroue, word die Geverifieerde Gebruikers SID aan die gebruiker se token deur AD bygevoeg. Dus, indien 'n domein 'n Enterprise CA het met 'n sjabloon wat Geverifieerde Gebruikers registrasiegeregte toelaat, kan 'n sjabloon potensieel deur 'n gebruiker van 'n ander woud geregistreer word. Net so, indien registrasiegeregte eksplisiet aan 'n buitelandse principal deur 'n sjabloon gegee word, word 'n cross-forest toegang-beheer verhouding aldus geskep, wat 'n principal van een woud in staat stel om in 'n sjabloon van 'n ander woud te registreer.
Albei scenario's lei tot 'n toename in die aanvaloppervlak van een woud na 'n ander. Die instellings van die sertifikaat sjabloon kan deur 'n aanvaller uitgebuit word om addisionele privileges in 'n buitelandse domein te verkry.
Leer & oefen AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Leer & oefen GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)