AD CS Certificate Theft
Reading time: 7 minutes
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.
Ovo je kratak pregled poglavlja o krađi iz sjajnog istraživanja sa https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf
Šta mogu da uradim sa sertifikatom
Pre nego što proverite kako da ukradete sertifikate, ovde imate neke informacije o tome za šta je sertifikat koristan:
# Powershell
$CertPath = "C:\path\to\cert.pfx"
$CertPass = "P@ssw0rd"
$Cert = New-Object
System.Security.Cryptography.X509Certificates.X509Certificate2 @($CertPath, $CertPass)
$Cert.EnhancedKeyUsageList
# cmd
certutil.exe -dump -v cert.pfx
Izvoz Sertifikata Korišćenjem Crypto API-a – THEFT1
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 kao što je Mimikatz. Mimikatz nudi crypto::capi
i crypto::cng
komande za patch-ovanje odgovarajućih API-ja, 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.
Krađa Korisničkog Sertifikata putem DPAPI – THEFT2
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-ja 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 povezani 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:
# With mimikatz, when running in the user's context
dpapi::masterkey /in:"C:\PATH\TO\KEY" /rpc
# With mimikatz, if the user's password is known
dpapi::masterkey /in:"C:\PATH\TO\KEY" /sid:accountSid /password:PASS
Da bi se pojednostavio proces dekripcije masterkey i 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.
# Decrypting using SharpDPAPI
SharpDPAPI.exe certificates /mkfile:C:\temp\mkeys.txt
# Converting .pem to .pfx
openssl pkcs12 -in cert.pem -keyex -CSP "Microsoft Enhanced Cryptographic Provider v1.0" -export -out cert.pfx
Krađa mašinskih sertifikata putem DPAPI – THEFT3
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 backup ključa domena; umesto toga, potreban je DPAPI_SYSTEM LSA tajni, kojem može pristupiti samo SYSTEM korisnik.
Ručno dekriptovanje se može 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 patch-ovanja CAPI/CNG kao što je prethodno opisano.
SharpDPAPI nudi automatizovaniji pristup sa svojom komandom za sertifikate. Kada se koristi /machine
flag sa povišenim dozvolama, eskalira se 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.
Pronalaženje sertifikat fajlova – THEFT4
Sertifikati se ponekad nalaze direktno unutar fajl sistema, kao što su u deljenim fajlovima ili u Downloads folderu. Najčešće vrste fajlova sertifikata 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.
# Example command to search for certificate files in PowerShell
Get-ChildItem -Recurse -Path C:\Users\ -Include *.pfx, *.p12, *.pkcs12, *.pem, *.key, *.crt, *.cer, *.csr, *.jks, *.keystore, *.keys
# Example command to use pfx2john.py for extracting a hash from a PKCS#12 file
pfx2john.py certificate.pfx > hash.txt
# Command to crack the hash with JohnTheRipper
john --wordlist=passwords.txt hash.txt
NTLM Credential Theft via PKINIT – THEFT5
Dati sadržaj 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 anonimnim i sažetim sadržajem 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 korisničku NTLM jednosmernu funkciju (OWF) unutar privilegovanog atributnog sertifikata (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 prikaz 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 korisničkog NTLM. Komanda koja se koristi u tu svrhu je sledeća:
tgt::pac /caname:generic-DC-CA /subject:genericUser /castore:current_user /domain:domain.local
Pored toga, primećeno je da Kekeo može obraditi sertifikate zaštićene pametnim karticama, 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.
tip
Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Podržite HackTricks
- Proverite planove pretplate!
- Pridružite se 💬 Discord grupi ili telegram grupi ili pratite nas na Twitteru 🐦 @hacktricks_live.
- Podelite hakerske trikove slanjem PR-ova na HackTricks i HackTricks Cloud github repozitorijume.