Eyüp Çelik

Sr. Cyber Security Expert

Sr. Network Security Expert

Sr. Malware Developer

Sr. C# Developer

Eyüp Çelik

Sr. Cyber Security Expert

Sr. Network Security Expert

Sr. Malware Developer

Sr. C# Developer

Blog Post

SMET – Symmetric Meterpreter Encryption Tools

SMET – Symmetric Meterpreter Encryption Tools

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/mindspoof/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.

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-analysis/NzZlODRhYjMxOTIwYjNkYTk2M2U1N2EzZDFiYmMwOWI6MTUxOTU1Njc2Nw==

Meterpreter shellcode’un C# ile nasıl çalıştırıldığına dair şu yazımı okuyabilirsiniz:

Msfvenom aracının kullanımı için de şu yazımı okuyabilirsiniz:

Related Posts
Write a comment