AD CS Certificate Theft
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Ovo je kratak pregled poglavlja o krađi iz sjajnog istraživanja sa https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf
Pre nego što proverite kako da ukradete sertifikate, ovde imate neke informacije o tome kako da saznate čemu sertifikat može da služi:
U interaktivnoj desktop sesiji, ekstrakcija korisničkog ili mašinskog sertifikata, zajedno sa privatnim ključem, može se lako izvršiti, posebno ako je privatni ključ izvoziv. To se može postići navigacijom do sertifikata u certmgr.msc
, desnim klikom na njega i izborom All Tasks → Export
za generisanje .pfx datoteke zaštićene lozinkom.
Za programatski pristup, dostupni su alati kao što su PowerShell ExportPfxCertificate
cmdlet ili projekti poput TheWover-ovog CertStealer C# projekta. Ovi alati koriste Microsoft CryptoAPI (CAPI) ili Cryptography API: Next Generation (CNG) za interakciju sa skladištem sertifikata. Ove API pružaju niz kriptografskih usluga, uključujući one potrebne za skladištenje i autentifikaciju sertifikata.
Međutim, ako je privatni ključ postavljen kao neizvoziv, CAPI i CNG obično će blokirati ekstrakciju takvih sertifikata. Da bi se zaobišla ova ograničenja, mogu se koristiti alati poput Mimikatz. Mimikatz nudi crypto::capi
i crypto::cng
komande za patch-ovanje odgovarajućih API-a, omogućavajući izvoz privatnih ključeva. Konkretno, crypto::capi
patch-uje CAPI unutar trenutnog procesa, dok crypto::cng
cilja memoriju lsass.exe za patch-ovanje.
Više informacija o DPAPI u:
DPAPI - Extracting PasswordsU Windows-u, privatni ključevi sertifikata su zaštićeni DPAPI. Ključno je prepoznati da su lokacije skladištenja privatnih ključeva korisnika i mašine različite, a strukture datoteka variraju u zavisnosti od kriptografskog API-a koji koristi operativni sistem. SharpDPAPI je alat koji može automatski navigirati ovim razlikama prilikom dekriptovanja DPAPI blob-ova.
Korisnički sertifikati se pretežno nalaze u registru pod HKEY_CURRENT_USER\SOFTWARE\Microsoft\SystemCertificates
, ali neki se takođe mogu naći u direktorijumu %APPDATA%\Microsoft\SystemCertificates\My\Certificates
. Odgovarajući privatni ključevi za ove sertifikate obično se skladište u %APPDATA%\Microsoft\Crypto\RSA\User SID\
za CAPI ključeve i %APPDATA%\Microsoft\Crypto\Keys\
za CNG ključeve.
Da bi se izvukao sertifikat i njegov pripadajući privatni ključ, proces uključuje:
Izbor ciljnog sertifikata iz korisničkog skladišta i preuzimanje njegovog imena skladišta ključeva.
Lociranje potrebnog DPAPI masterključa za dekriptovanje odgovarajućeg privatnog ključa.
Dekriptovanje privatnog ključa korišćenjem plaintext DPAPI masterključa.
Za dobijanje plaintext DPAPI masterključa, mogu se koristiti sledeći pristupi:
Da bi se pojednostavila dekripcija masterkey datoteka i datoteka privatnih ključeva, certificates
komanda iz SharpDPAPI se pokazuje korisnom. Prihvaća /pvk
, /mkfile
, /password
ili {GUID}:KEY
kao argumente za dekripciju privatnih ključeva i povezanih sertifikata, a zatim generiše .pem
datoteku.
Mašinski sertifikati koje Windows čuva u registru na HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SystemCertificates
i povezani privatni ključevi smešteni u %ALLUSERSPROFILE%\Application Data\Microsoft\Crypto\RSA\MachineKeys
(za CAPI) i %ALLUSERSPROFILE%\Application Data\Microsoft\Crypto\Keys
(za CNG) su enkriptovani koristeći DPAPI master ključeve mašine. Ovi ključevi se ne mogu dekriptovati pomoću DPAPI rezervnog ključa domena; umesto toga, potreban je DPAPI_SYSTEM LSA tajni, kojem može pristupiti samo SYSTEM korisnik.
Ručno dekriptovanje može se postići izvršavanjem komande lsadump::secrets
u Mimikatz za ekstrakciju DPAPI_SYSTEM LSA tajne, a zatim korišćenjem ovog ključa za dekriptovanje mašinskih master ključeva. Alternativno, Mimikatz-ova komanda crypto::certificates /export /systemstore:LOCAL_MACHINE
može se koristiti nakon zakrivanja CAPI/CNG kao što je prethodno opisano.
SharpDPAPI nudi automatizovaniji pristup sa svojom komandom za sertifikate. Kada se koristi /machine
zastavica sa povišenim dozvolama, ona se eskalira na SYSTEM, izbacuje DPAPI_SYSTEM LSA tajnu, koristi je za dekriptovanje mašinskih DPAPI master ključeva, a zatim koristi ove plaintext ključeve kao tabelu za pretragu za dekriptovanje bilo kojih privatnih ključeva mašinskih sertifikata.
Sertifikati se ponekad nalaze direktno unutar fajl sistema, kao što su u deljenim fajlovima ili u Downloads folderu. Najčešće vrste sertifikat fajlova usmerenih ka Windows okruženjima su .pfx
i .p12
fajlovi. Iako ređe, fajlovi sa ekstenzijama .pkcs12
i .pem
takođe se pojavljuju. Dodatne značajne ekstenzije fajlova vezanih za sertifikate uključuju:
.key
za privatne ključeve,
.crt
/.cer
za samo sertifikate,
.csr
za Zahteve za potpisivanje sertifikata, koji ne sadrže sertifikate ili privatne ključeve,
.jks
/.keystore
/.keys
za Java Keystore, koji mogu sadržati sertifikate zajedno sa privatnim ključevima korišćenim od strane Java aplikacija.
Ovi fajlovi se mogu pretraživati koristeći PowerShell ili komandnu liniju tražeći pomenute ekstenzije.
U slučajevima kada se pronađe PKCS#12 sertifikat fajl i on je zaštićen lozinkom, ekstrakcija heša je moguća korišćenjem pfx2john.py
, dostupnog na fossies.org. Nakon toga, JohnTheRipper se može koristiti za pokušaj otkrivanja lozinke.
Data objašnjava metodu krađe NTLM akreditiva putem PKINIT, posebno kroz metodu krađe označenu kao THEFT5. Evo ponovnog objašnjenja u pasivnom glasu, sa sadržajem anonimnim i sažetim gde je to primenljivo:
Da bi se podržala NTLM autentifikacija [MS-NLMP] za aplikacije koje ne omogućavaju Kerberos autentifikaciju, KDC je dizajniran da vrati NTLM jednosmernu funkciju (OWF) korisnika unutar sertifikata privilegija (PAC), posebno u PAC_CREDENTIAL_INFO
baferu, kada se koristi PKCA. Kao rezultat, ukoliko se nalog autentifikuje i obezbedi Ticket-Granting Ticket (TGT) putem PKINIT, mehanizam je inherentno obezbeđen koji omogućava trenutnom hostu da izvuče NTLM hash iz TGT-a kako bi podržao nasleđene autentifikacione protokole. Ovaj proces podrazumeva dekripciju PAC_CREDENTIAL_DATA
strukture, koja je suštinski NDR serijalizovana prikaz NTLM običnog teksta.
Alat Kekeo, dostupan na https://github.com/gentilkiwi/kekeo, se pominje kao sposoban da zatraži TGT koji sadrži ove specifične podatke, čime se olakšava preuzimanje NTLM-a korisnika. Komanda koja se koristi u tu svrhu je sledeća:
Dodatno, primećeno je da Kekeo može obraditi sertifikate zaštićene pametnom karticom, pod uslovom da se pin može dobiti, uz referencu na https://github.com/CCob/PinSwipe. Ista sposobnost se navodi da podržava Rubeus, dostupan na https://github.com/GhostPack/Rubeus.
Ovo objašnjenje obuhvata proces i alate uključene u krađu NTLM akreditiva putem PKINIT-a, fokusirajući se na preuzimanje NTLM hash-eva kroz TGT dobijen korišćenjem PKINIT-a, i alate koji olakšavaju ovaj proces.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)