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’s CertStealer C# project. 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 patchovanje odgovarajućih API, omogućavajući izvoz privatnih ključeva. Konkretno, crypto::capi
patchuje CAPI unutar trenutnog procesa, dok crypto::cng
cilja memoriju lsass.exe za patchovanje.
Više informacija o DPAPI u:
U 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 koji koristi operativni sistem. SharpDPAPI je alat koji može automatski navigirati ovim razlikama prilikom dekriptovanja DPAPI blobova.
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 izvadio 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, komanda certificates
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 korisnik SYSTEM.
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 koje se susreću u 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. Shodno tome, ukoliko se nalog autentifikuje i obezbedi Ticket-Granting Ticket (TGT) putem PKINIT, inherentno je obezbeđen mehanizam 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 predstava NTLM običnog teksta.
Alat Kekeo, dostupan na https://github.com/gentilkiwi/kekeo, pominje se 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 heš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)