AD CS Certificate Theft
Bu, https://www.specterops.io/assets/resources/Certified_Pre-Owned.pdf adresindeki harika araştırmanın Hırsızlık bölümlerinin küçük bir özetidir.
Bir sertifika ile ne yapabilirim
Sertifikaları nasıl çalacağınızı kontrol etmeden önce, sertifikanın ne için kullanışlı olduğu hakkında bazı bilgilere sahip olmanız önemlidir:
Crypto API'leri Kullanarak Sertifikaları Çalma - HIRSIZLIK1
Etkileşimli bir masaüstü oturumu içinde, özellikle özel anahtar ihrac edilebilir ise, bir kullanıcı veya makine sertifikası ile birlikte özel anahtarı çalmak oldukça kolaydır. Bu, certmgr.msc
içinde sertifikaya giderek, üzerine sağ tıklayıp Tüm Görevler → Dışa Aktar
seçeneğini seçerek şifre korumalı bir .pfx dosyası oluşturarak gerçekleştirilebilir.
Programatik bir yaklaşım için, PowerShell ExportPfxCertificate
cmdlet veya TheWover's CertStealer C# projesi gibi araçlar mevcuttur. Bu araçlar, sertifika deposuyla etkileşimde bulunmak için Microsoft CryptoAPI (CAPI) veya Cryptography API: Next Generation (CNG) gibi araçları kullanır. Bu API'ler, sertifika depolama ve kimlik doğrulama için gerekli olan çeşitli kriptografik hizmetleri sağlar.
Ancak, bir özel anahtar ihrac edilemez olarak ayarlandıysa, CAPI ve CNG genellikle bu tür sertifikaların çalınmasını engeller. Bu kısıtlamayı aşmak için, Mimikatz gibi araçlar kullanılabilir. Mimikatz, özel anahtarların ihracını sağlamak için ilgili API'leri yamalamak için crypto::capi
ve crypto::cng
komutlarını sunar. Özellikle, crypto::capi
mevcut işlem içinde CAPI'yi yamar, crypto::cng
ise yamalama için lsass.exe belleğini hedef alır.
DPAPI Aracılığıyla Kullanıcı Sertifikası Çalma - HIRSIZLIK2
DPAPI hakkında daha fazla bilgi için:
pageDPAPI - Extracting PasswordsWindows'ta, sertifika özel anahtarları DPAPI ile korunur. Önemli olan, kullanıcı ve makine özel anahtarlarının depolama konumlarının farklı olduğunu ve dosya yapılarının işletim sistemi tarafından kullanılan kriptografik API'ye bağlı olarak değiştiğini bilmektir. SharpDPAPI, DPAPI bloklarını çözerken bu farklılıkları otomatik olarak takip edebilen bir araçtır.
Kullanıcı sertifikaları genellikle HKEY_CURRENT_USER\SOFTWARE\Microsoft\SystemCertificates
altında kaydedilir, ancak bazıları %APPDATA%\Microsoft\SystemCertificates\My\Certificates
dizininde de bulunabilir. Bu sertifikaların özel anahtarları genellikle CAPI anahtarları için %APPDATA%\Microsoft\Crypto\RSA\User SID\
ve CNG anahtarları için %APPDATA%\Microsoft\Crypto\Keys\
dizininde saklanır.
Bir sertifikayı ve ilişkili özel anahtarını çalmak için, aşağıdaki adımlar izlenir:
Kullanıcının deposundan hedef sertifikayı seçmek ve anahtar deposu adını almak.
İlgili özel anahtarı şifrelemek için gereken DPAPI anahtarını bulmak.
Şifreli özel anahtarı, düz metin DPAPI anahtarı kullanarak şifresini çözmek.
Düz metin DPAPI anahtarını elde etmek için, aşağıdaki yaklaşımlar kullanılabilir:
Master anahtar dosyalarının ve özel anahtar dosyalarının şifresinin çözülmesini kolaylaştırmak için SharpDPAPI tarafından sağlanan certificates
komutu faydalı olmaktadır. Bu komut, özel anahtarları ve ilişkili sertifikaları çözmek için /pvk
, /mkfile
, /password
veya {GUID}:KEY
argümanlarını kabul eder ve sonuç olarak bir .pem
dosyası oluşturur.
DPAPI Aracılığıyla Makine Sertifikası Çalma – THEFT3
Windows tarafından kaydedilen makine sertifikaları, kayıt defterinde HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SystemCertificates
ve ilgili özel anahtarlar %ALLUSERSPROFILE%\Application Data\Microsoft\Crypto\RSA\MachineKeys
(CAPI için) ve %ALLUSERSPROFILE%\Application Data\Microsoft\Crypto\Keys
(CNG için) konumunda depolanır ve makinenin DPAPI anahtarlarıyla şifrelenir. Bu anahtarlar, etki alanının DPAPI yedek anahtarıyla çözülemez; bunun yerine yalnızca SYSTEM kullanıcısının erişebileceği DPAPI_SYSTEM LSA gizlisi gereklidir.
Manuel çözümleme, DPAPI_SYSTEM LSA gizlisini çıkarmak için Mimikatz'ın lsadump::secrets
komutunun çalıştırılmasıyla ve ardından bu anahtarı kullanarak makine anahtarlarını çözerek gerçekleştirilebilir. Alternatif olarak, CAPI/CNG'yi önceden açıklanan şekilde yamaladıktan sonra Mimikatz'ın crypto::certificates /export /systemstore:LOCAL_MACHINE
komutu kullanılabilir.
SharpDPAPI, sertifikalar komutuyla daha otomatik bir yaklaşım sunar. Yükseltilmiş izinlerle /machine
bayrağı kullanıldığında, sistem kullanıcısına yükselir, DPAPI_SYSTEM LSA gizlisini döker, bunu kullanarak makine DPAPI anahtarlarını çözer ve ardından bu düz metin anahtarları, herhangi bir makine sertifikası özel anahtarını çözmek için bir arama tablosu olarak kullanır.
Sertifika Dosyalarını Bulma – THEFT4
Sertifikalar bazen dosya paylaşımlarında veya İndirilenler klasöründe doğrudan dosya sistemine yerleştirilir. Windows ortamlarına yönelik en sık karşılaşılan sertifika dosyası türleri .pfx
ve .p12
dosyalarıdır. Daha az sıklıkla, .pkcs12
ve .pem
uzantılı dosyalar da bulunur. Ek olarak, dikkate değer diğer sertifika ile ilgili dosya uzantıları şunlardır:
Özel anahtarlar için
.key
,Sadece sertifikalar için
.crt
/.cer
,Sertifika İmzalama İstekleri için (Certificate Signing Requests)
.csr
, bu dosyalar sertifikalar veya özel anahtarlar içermez,Java Keystore'lar için
.jks
/.keystore
/.keys
, Java uygulamaları tarafından kullanılan sertifikaları ve özel anahtarları içerebilir.
Bu dosyalar, PowerShell veya komut istemcisini kullanarak belirtilen uzantıları arayarak aranabilir.
Bir PKCS#12 sertifika dosyası bulunduğunda ve bir parola tarafından korunduğunda, pfx2john.py
kullanılarak bir karma çıkarılabilir. Bu araç fossies.org adresinde bulunabilir. Ardından, parolanın kırılmaya çalışılması için JohnTheRipper kullanılabilir.
PKINIT Aracılığıyla NTLM Kimlik Bilgisi Çalma - THEFT5
Verilen içerik, PKINIT aracılığıyla NTLM kimlik bilgisi çalma yöntemini, özellikle THEFT5 olarak adlandırılan çalma yöntemini açıklar. İşte içeriğin anonimleştirilmiş ve gerektiğinde özetlenmiş bir şekilde pasif sesle yeniden açıklanması:
Kerberos kimlik doğrulamasını kolaylaştırmayan uygulamalar için NTLM kimlik doğrulamasını [MS-NLMP] desteklemek için, KDC, PKCA kullanıldığında kullanıcının NTLM tek yönlü işlevini (OWF) ayrıcalık öznitelik sertifikası (PAC) içinde, özellikle PAC_CREDENTIAL_INFO
tamponunda döndürmek üzere tasarlanmıştır. Sonuç olarak, bir hesap PKINIT aracılığıyla Kimlik Doğrulama Bileti (TGT) kimlik doğrulaması yaparsa, mevcut ana bilgisayarın eski kimlik doğrulama protokollerini desteklemek için TGT'den NTLM karmaşasını çıkarmasına olanak sağlayan bir mekanizma sağlanır. Bu işlem, temelde NTLM düz metninin NDR serileştirilmiş bir tasviri olan PAC_CREDENTIAL_DATA
yapısının şifresinin çözülmesini içerir.
Bu özel veriyi içeren bir TGT talep etme yeteneğine sahip olan Kekeo adlı araç, https://github.com/gentilkiwi/kekeo adresinden erişilebilir. Bu amaçla kullanılan komut aşağıdaki gibidir:
Ayrıca, Kekeo'nun akıllı kart korumalı sertifikaları işleyebileceği, pin'in alınabileceği belirtilmektedir. Bu konuda https://github.com/CCob/PinSwipe referansına bakılabilir. Aynı yeteneğin Rubeus tarafından da desteklendiği belirtilmektedir. Rubeus, https://github.com/GhostPack/Rubeus adresinde bulunabilir.
Bu açıklama, PKINIT aracılığıyla NTLM kimlik bilgilerinin çalınması sürecini ve bu süreci kolaylaştıran araçları ele almaktadır. PKINIT kullanarak elde edilen TGT ile NTLM karmaşalarının alınması odaklanmaktadır.
Last updated