TR | Mimikatz
Mimikatz; Windows (x86/x64 mimarileri) işletim sistemlerine yapılan Pass-The-Hash ataklarında sıklıkla kullanılan, Benjamin Delpy (gentilkiwi) adlı yazılımcı tarafından C dili ile 2007’de yazılmış, PoC olarak amaçlanan, açık kaynak kodlu bir programdır. Temel olarak özelliklerini “mimilib.dll” ve “mimidrv.sys” adlı dosyalar yardımı ile gerçekleştirir. Mimilib, SSP oturum paketlerine erişim, Windows üzerinde bulunan AppLocker yazılımını bypass etme, şifreleri filtreleme gibi görevlere sahip iken; Mimidrv, Windows çekirdeği ile Mimikatz arasındaki etkileşimi sağlayan sürücüdür.
Mimikatzı çalıştırabilmek için yönetici kullanıcısına yada sistem kullanıcısına ihtiyaç vardır. Bunun yanı sıra stabil olarak çalışabilmesi için LSASS işlemi ile etkileşebilmesi, hata ayıklama haklarına sahip olması gereklidir. Mimikatz adlı yazılım için indirme bağlantıları aşağıda verilmiştir.
Windows işletim sistemlerinde, oturum açılma isteği sırasında kullanıcı adı ve şifrenin kontolünü, System32 dizininde yer alan LSASS.exe adlı program üstlenir. Temel olarak LSASS.exe (Local Security Authority Subsystem Service), Windows sistemde yer alan kullanıcı işlemlerinden ve kimlik kontrolünden sorumludur.
Windows sistemde oturum kontrolü, girilen verilerin SAM tablosunda yer alan veriler ile karşılaştırılmasıyla sağlanır. Eğer karşılaştırma sonucunda veriler tutuyor (True) ise sistem, kullanıcının sisteme girişi sırasında oturum parolasını hash’leyerek bellekte tutar. WCE gibi yazılımlar çalışma prensibi olarak, verilerin saklandığı bellek alanındaki hash’i okuyup herhangi bir başka LSASS oturumuna enjekte ederek kontrol mekanizmasını bypass etmiş olurlar.
Mimikatz genel fiziksel saldırılarda sıkça kullanılsada meterpreter ile birlikte de çalışmaktadır. Biz konuyu her iki şekildede ele alacağız.
İlk olarak mimikatzı hedef bilgisayarda fiziksel erişim sayesinde çalıştırıyoruz.
Karşımıza gelen ekranda
privilege::debug
komutu ile özel haklarımızı çalıştırıyoruz.
Bu aşamadan sonra
sekurlsa::logonPasswords
komutu ile kullanıcı adı, domain, parola gibi bilgileri çekiyoruz.
Windows 8.1 ve Windows 10 sürümlerinde Mimikatz ile parolayı bulmayı çalıştığımızda Parolanın değerinin null (boş) olarak göründüğünü fark ediyoruz.Bunun sebebi Microsoft’un Win 8.1 ile bu açığa önlem almış olmasıdır. (Tam anlamıyla yeterli bir önemli değil tabiki de)
Daha önceki sürümler için güvenlik yaması https://support.microsoft.com/en-us/kb/2871997 mevcuttur.
Windows 8.1 ve Windows 10’da Regedit ayarı ile devre dışı bırakılmış olan oturum açma parolasını clear-text olarak görebilmekteyiz. Bunun için küçük ayarlar yapmalıyız ve böylelikle bu iki sistemde de parolaları yakalayabiliriz.
Regediti açalım ve
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest\
yoluna gidelim.
Windows 8.1 sonrasını kullanıyorsanız ya da KB2871997 güncellemesini yüklediyseniz “UseLogonCredential” DWORD değeri kayıt defterinizde görünmez.
Yönetici haklarıyla Windows Shell’i açarak aşağıdakı komutu yazalım. (cmd)
reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1
Şimdi kayıt defterini yenileyelim UseLogonCredential” DWORD değerini 1 olarak eklendiğini göreceksiniz.
Şimdi bellekten parolayı alabilmemiz için parolanın yeniden girilmesi lazım bu aşamada bilgisayara yeniden başlatmak yerine sadece oturumu kapatıp açmanız yeterlidir.
Mimikatzı yeniden açtığımızda bu sefer parolanın null yerine kullanıcının parolası olan“iloveyou789”u görüyoruz.
Böylelikle fiziksel erişimlerde Windows 8.1 öncesi ve sonrası sistemlerde nasıl kullanıcı parolasını alabileceğimizi görmüş olduk.
Şimdide fiziksel erişim sağlayamadığımız fakat meterpreter ile erişim sağlayabildiğimiz sistemlerde clear-text olarak Mimikatz aracı ile nasıl kullanıcı şifresini elde edebileceğimizi inceleyelim.
Senaryomuzda her hangi bir şekilde meterpreter payloadu ile sisteme erişim sağladık.
Local yönetici kullanıcısından SYSTEM kullanıcısına geçip “Mimikatz” modülünü import etmek için konsola,
meterpreter > getsystem meterpreter > getuid meterpreter > load mimikatz
komut dizisini giriyoruz. Böylelikle Metasploit Framework için hazırlanmış olan Mimikatz modülünü sisteme aktarmış olduk.
Modül ile ilgili detaylı bilgi almak için, meterpreter komut satırımıza -help yazıyoruz.
Karşımıza, Mimikatz modülü üzerinden uygulayabileceğimiz komutlar çıktı. Windows oturum parolalarını bellekten hash formatında alıp kırarak, clear-text formatında çıktı olarak dönüştürmesi için
mimikatz_command –f sekurlsa::logonPasswords –a “full”
komutunu yazıyoruz ve karşımıza geçerli kullanıcıların oturum parolaları gelecektir.
Bonus olarak bir başka Mimikatz’ın özelliğinden bahsetmek istiyorum. Mimikatz sayesinde Mayın Tarlası oyununu kaybetmeden bitirebilirsiniz.
Mimikatz, içerisinde bellekte yer alan Mayın Tarlası oyun bilgilerini ele geçirmeyi sağlayan, winmine isimli bir modül bulundurmaktadır. Bu modülün kullanılabilmesi için hedef sistemde Mayın Tarlası oyunu, bellekte çalışır vaziyette olmalıdır. Aksi taktirde, bellekte herhangi bir ize rastlanmayacağından dolayı hata verecektir. Sistemde, Mayın Tarlası uygulamasını açarak oynayalım ve komut satırına,
mimikatz_command –f winmine::infos
yazınca vereceği çıktıyı inceleyelim.
Böylelikle Mayın Tarlası oyununu bitirebilirsiniz.