Mimikatz Aracı ile Parolaları Ele Geçirmek | Mimikatz ve SSP Kullanımı

Mimikatz’i detaylı olarak incelemeden önce, Mimikatz ve SSP’nin ne olduğunu bilmekte fayda var. Bu sebeple Mimikatz ve SSP Nedir? başlıklı yazı ilginizi çekebilir.

Windows işletim sistemlerinde, oturum açma isteği sırasında kullanıcı adı ve parola kontrolü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, kullanıcıyı sisteme dahil ederken aynı anda kullanıcıya ait parola bilgisini (NTLM hash) memory’de saklar. Mimikatz, 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 scheme

Windows üzerinde bu şekilde bir güvenlik yapısının tasarlanma sebebi ise SSO (Single sign-on) servislerinin Kerberos ve NTLM gibi klasik kimlik doğrulama yöntemlerini desteklememesidir. Bunun aşılması için Windows tarafında önce tspkg ve daha sonra güncellenerek wdigest ismi verilen SSP(Security Support Provider) geliştirildi.

Geliştirilen SSP’ler ile parola bilgisinin şifreli olarak hafızada tutulması yoluna gidilmiş ve hemen hemen tüm Windowslar da bu özellik ön tanımlı gelmektedir.

Şimdi hep birlikte mimikatz’i detaylı olarak ele alalım:

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’i çalıştırabilmek için yönetici kullanıcısına ya da 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.

Benjamin Delpy, gelişmiş koruma mekanizmalarına sahip Windows 8.1 ve Windows 2012 R2 de dahil olmak üzere bellekte (LSASS) ne tür kimlik bilgisi verilerinin olduğunu ve bellekte tutulan kimlik bilgilerinin yüzdesini gösteren bir Excel grafiği yayınlamıştır. (aşağıda paylaşılmıştır)

microsoft accounts

 

Mimilib Nedir?

Az önce mimilib isimli dosyadan kısaca bahsetmiştik, temelde yaptığı iş SSP paketlerine erişim sağlamaktır. Mimilib; RPC, DHCP Sunucu üzerinde yanal hareket ve hatta WinDBG’de bir uzantı olarak hareket etmek için ServerLevelPluginDll’i kullanıyor. Saldırganların amaçları doğrultusunda bu kütüphaneyi nasıl SSP olarak gösterdiklerine bakacağız.

Mimilib, SSP arabirimi üzerinden düz metin kimlik bilgileriyle bir güvenlik destek sağlayıcısının çağırılmasından yararlanarak çalışır.

  • SpInitialize – SSP’yi başlatmak ve işlev işaretleyicilerinin bir listesini sağlamak için kullanılır.
  • SpShutDown – Bir SSP’nin boşaltılmasıyla çağrılır ve kaynakların serbest bırakılması sağlanır.
  • SpGetInfoFn – Sürüm, ad ve açıklama dahil olmak üzere SSP hakkında bilgi sağlar.
  • SpAcceptCredentials – SSP tarafından önbelleğe alınmak üzere LSA tarafından iletilen clear-text kimlik bilgilerini alır.

 

Flowchart

mimikatz flowchart

 

Test Environment

mimikatz test ortamı

Mimilib’in SSP işlevselliği için giriş noktası kssp.c içinde, özellikle kssp_SpLsaModeInitialize içinde bulunur. Bu işlev DLL’den mimilib.def tanım dosyası aracılığıyla SpLsaModeInitialize olarak dışa aktarılır ve LSASS tarafından birkaç geri arama içeren bir yapıyı başlatmak için kullanılır.

Böylelikle Mimikatz SSP olarak mimilib.dll, bir Windows Security Package olarak kaydedilecektir. Security Package kaydedildikten ve sistem yeniden başlatıldıktan sonra, mimilib.dll lsass.exe işlem belleğine yüklenecek ve birisi sisteme bir sonraki oturum açtığında veya başka bir şekilde kimlik doğrulaması yaptığında, örneğin runas.exe aracılığıyla tüm oturum açma parolalarını kaydedecektir. Bu işlem kısaca aşağıdaki adımlar ile gerçekleşir:

  1. mimilib.dll dosyasının oluşturulması ve hedef makine system32 klasörüne kopyalanması.

mimilib.dll kopyalama

  1. LSA Security Packages listesinin alınması.

lsa security packets

  1. mimilib.dll’in SSP listesine eklenmesi.

mimilib.dll ssp eklemek

Aşağıda, mimilib eklenmiş Güvenlik Paketleri kayıt defteri değeri ve kullanıcı oturum açma sırasında (Güvenlik Paketi kaydedildikten sonra ve sistem yeniden başlatıldıktan sonra) kaydedilen user parolası ile kiwissp.log dosyası gösterilmektedir:

security packages regedit

kiwissp

Buradaki önemli nokta; yeni SSP’nin Güvenlik Paketleri listesine eklendikten sonra yeniden etkinleşmesi için yeniden başlatma gerektirmesidir.

Detection

mimikatz yakalamak

Yukarıda kullanılan tekniğin tespit edilebilmesi için hklm\system\currentcontrolset\control\lsa\ izlenebilir veya herhangi bir değişimde bu teknik tespit edilebilir.

Mitre T1101 bu Persistence tekniğini kullanabilmek için Administrator yetkilerinde olunması gerekmekte.

mimikatz tespit

 

Yeniden Başlatmadan SSP Yükleme

Yeniden başlatma yapmadan SSP yüklemek için Windows API’ı olan AddSecurityPackage kullanılabilir, yani Mimilib aslında bir yeniden başlatma olmadan eklenebilir. Yüklendiğinde, her kimlik doğrulama işleminden sonra kimlik bilgilerinin kiwissp.log dosyasına yazıldığını da görebiliriz. Amaç AddSecurityPackage fonksiyonunu kullanarak zararlı bir dll dosyasından SSP eklemek, ki bu da Secur32.lib kullanılarak gerçekleştiriliyor. Örnek bir zararlı kod parçası aşağıda paylaşılmıştır.

yeniden başlatmadan ssp yüklemek

Aşağıda, yeni Güvenlik Paketi spotless.dll dosyasının lsass tarafından nasıl yüklendiğini ve hemen etkili olduğunu gösteren bir gif paylaşılmıştır.

ssp gif

Bu yöntemle artık sistemi reboot etmeden herhangi bir kullanıcı sisteme authentication yaptığında parolaları alabiliriz. Burada SSP eklemek için kullanılan DLL kodları, authentication ayrıntılarını çıkararak bunları c:\temp\log-pw.txt dosyasına kaydeder.

ssp dll

Detection

Buradaki teknik için pratikte Administrator yetkileri gerekmektedir. Tespitleri için yine yukarıda verilen registry kayıtları izlenebilir. Bunun dışında;

HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\LSASS.exe

Windows 8.1 ve Windows Server 2012 R2, imzalanmamış DLL’ler yukarıdaki kayıt Defteri anahtarını ayarlayarak LSA’ya yüklemeye çalıştığında olaylar oluşturabilir.

Mitre T1131

mimikatz authenticaiton package mitre

Bu yazıda Mimikatz nedir ve nasıl kullanılır sorusuna ayrıntılı bir biçimde inceledik. Sonraki yazılarımızda görüşmek üzere.