• Kategori: Güvenlik
  • Eyüp ÇELİK
  • Gösterim: 1747

SMET - Symmetric Meterpreter Encryption Tool

Zararlı yazılımların gelişmesiyle birlikte antivirüs uygulamalarıda gelişim göstermektedir. Çoğu zaman gerçekleştirdiğimiz testlerde antivirüs uygulamalarını atlatmak zorunda kalırız. Tahmin edeceğiniz üzere, karşılaştığımız işletim sistemlerinin büyük çoğunlu Windows’tur. Dolayısıyla geliştirdiğim bu araç da Windows işletim sistemlerinde çalışmakta olup, oluşturacağı meterpreter zararlısı da yine Windows işletim sistemiyle uyumlu çalışmaktadır. Bu yazımda Meterpreter için simetrik bir şifreleme aracı yazarak, meterpreter shellcode umuzu antivirüslerden kaçırmaya çalışacağız.

Github: https://github.com/EPICROUTERSS/SMET/

SMET (Symmetric Meterpreter Encryption Tools) aracını çalıştırdığımızda aşağıdaki ekran ile karşılaşacağız.

1 SMET

Basit bir arayüze sahip olan SMET ile aşağıdaki tabloda yer alan meterpreter zararlılarını ve encryption türlerini kullanabiliriz.

Uygulama Türü Encryption Payload

Windows Form Application

Console Application

Base64

Rijndael - AES

DES

meterpreter/reverse_tcp
x64/meterpreter/reverse_tcp
meterpreter/reverse_tcp_rc4
shell/reverse_tcp
meterpreter/bind_tcp

Yukarıdaki tabloda görüleceği üzere SMET, Base64, Rijndael – AES ve DES türlerinde encryption yapabilen, hem Windows Form Application hem de Console Application türlerinde çıktı verebilen ve 5 ayrı Payload türünü destekleyen bir uygulamadır diyebiliriz.

SMET, temel olarak bir Windows Form ve 3 sınıftan oluşmaktadır. Bunlar MainForm, MeterpreterBuilder.cs, Compiler.cs ve Encrypter.cs’dir. MainForm’dan Payload türü, encryption ve type seçildikten sonra ilgili sınıflara veri aktarımı sağlanır. MeterpreterBuilder.cs, temel meterpreter shellcode’unun C# uygulamasına uygun hale getirildiği sınıftır. Compiler.cs, MeterpreterBuilder.cs sınıfından gönderilen C# kodlarının build edilerek çalıştırılabilir hale gelmesini sağlayan sınıftır. Encrypter.cs sınıfı ise, Rijndael – AES ve DES için MeterpreterBuilder sınıfına iletilen encryption çözme işlemlerini üstlenir.

Kodları biraz detaylandıracak olursak eğer,

2 build request

IP, Port bilgileri girildikten sonra seçilen encryption türü, payload ve uygulama türü tespit edilerek MeterpreterBuilder sınıfının ilgili metoduna gönderilmektedir. Yukarıdaki ekran görüntüsüne göre klasik Reverse Meterpreter seçilmiş ve MeterpreterBuilder sınıfından “SaveReverseMeterpreter” metodu tetiklenmiştir.

3 reverse meterpreter

Seçilen SaveReverseMeterpreter metodu yukarıdaki gibidir. Bu metod içerisinde yer alana “strMtr” isimli string türündeki değişkende compile edilecek windows/meterpreter/reverse_tcp türündeki payloada ait shellcode’u çalıştırmak için C# kodları bulunmaktadır. Değişkende yer ve diğer bağımlılıklar düzenlenerek Compiler sınıfındaki Form metodu çağrılmaktadır.

4 compiler

Compiler sınıfındaki Form metodunda ise “strProgramCs” ve “strFrmDesignerCs” adında const string türünde 2 adet değişken kullanılmaktadır. Bunun sebebi şudur; C#’da Windows Form türünde bir kodu compile ederken “Program.cs” ve üretilen main formun “*.Designer.cs” türünde iki dosyaya daha ihtiyaç duymasındır. Bu yüzden standart olarak bu iki dosyada oluşturularak payload’un compile edilmesini sağladım.

Ardından işletim sisteminde yüklü olan .Net Framework versiyonu kontrol edilerek, en güncel frameworkün derleyicisi kullanılarak, oluşturulan C# kodları compile edilir ve meterpreter payload’umuz uygulamanın çalıştırıldığı dizine çıkartılır.

SMET, şuan için 2 simetrik algoritma desteklemektedir. Sonraki versiyonlarda simetrik algoritma sayısı ve payload desteğini genişleteceğim. Her iki yöntemde de encrypt edilmiş olan shellcode sırayla base64’e, base64’den de byte array türüne çevrilerek çalıştırılmaktadır.

Şimdi her ne kadar virustotale göndermeyin, yakalanma oranı artar desem de birileri gönderecek. O yüzden kendim gönderip, sonuçları buradan göstereyim istiyorum.

Windows/meterpreter/reverse_tcp Payload’u için Base64 ile encode edilmiş shellcode’un çıktısı aşağıdaki gibidir.

5 base64 reverse tcp

https://www.virustotal.com/#/file/0231053733451601aef8432962a734e219fea59820b3658acf4db9dc8d5be0c4/detection

Windows/meterpreter/reverse_tcp Payload’u için Rijndael – AES ile ecrypt edilmiş shellcode’un çıktısı aşağıdaki gibidir.

6 rijndael

https://www.virustotal.com/#/file/8f74b5df0f1e044533e2d41aa3b19d13bbbae3f44906e563f954828debd151dc/detection

Windows/meterpreter/reverse_tcp Payload’u için DES ile ecrypt edilmiş shellcode’un çıktısı aşağıdaki gibidir.

7 des

https://www.virustotal.com/#/file/10b62dd807bea650cc3ff3ec033dc5afec56cfca51399ba359ce351a6dc549c9/detection

Meterpreter shellcode’un C# ile nasıl çalıştırıldığına dair şu yazımı okuyabilirsiniz: http://eyupcelik.com.tr/guvenlik/493-mssql-fileless-rootkit-warsqlkit

Msfvenom aracının kullanımı için de şu yazımı okuyabilirsiniz: http://eyupcelik.com.tr/guvenlik/481-derinlemesine-msfvenom-a-bakis-ve-msfvenom-ile-backdoor-olusturma

Yorum ekle


Güvenlik kodu Yenile

Back to top