Shellter Nedir? Shellter Nasıl Kullanılır?

Shellter Nedir?

Shellter dinamik bir shellcode injection aracıdır, yani dinamik PE Infector ‘ dır. Yerel Windows uygulamalarına shellcode enjekte etmek için kullanılabilir. Kabuk kodu kendi oluşturduğunuz veya Metasploit Framework yardımıyla oluşturulan bir şey olabilir.

Shellter, PE dosyasının orijinal yapısından yararlanır ve bölümlerde bellek erişim izinlerini değiştirme, RWE erişimi ile fazladan bir bölüm ekleme ve bir AV taraması altında tehlikeli görünen herhangi bir değişiklik uygulamaz. Shellter, yürütmeyi yüke yönlendirmek için bir talimat ekleyecek bir yer bulmaya çalışan sadece bir EPO infektörü değildir. Diğer infektörlerin aksine, Shellter’in gelişmiş enfeksiyon motoru, yürütme akışını hiçbir zaman bir code cave veya virüslü PE dosyasındaki ek bir bölüme aktarmaz.

Shellter Nasıl Çalışır?

Shellter, hedef uygulamanın yürütme akışına dayanan benzersiz bir dinamik yaklaşım kullanır. Bu, kabuk kodu enjeksiyonunda statik ve önceden tanımlanmış konumların kullanılmadığı anlamına gelir. Shellter hedefi başlatacak ve izleyecektir, aynı zamanda uygulamanın yürütme akışını da kaydedecektir.

Shellter Ne İzliyor?

Shellter kullanım alanı içinde oluşan tüm yürütme akışını izler.  Bu, hedef uygulamanın içindeki kodun (PE görüntüsü) ve bir sistem dll’sinde veya bir yığın üzerinde olabilecek kodun dışında olduğu anlamına gelir… Bu, gerçekte hedef yürütülebilir dosyaya ait işlevlerin olmasını sağlamak için olur,ancak yalnızca Windows API’leri için geri arama işlevleri olarak kullanılır.

İzleme sırasında Shellter, hedef uygulamanın PE image’inin bellek aralığında olmayan talimatları günlüğe kaydetmez veya saymaz, çünkü bunlar shellcode kalıcı olarak enjekte etmek için bir referans olarak kullanılamaz.

Shellter’a Neden İhtiyacım Var?

Bypass Avs.

Metasploit veya diğer pentest framework aracılığıyla oluşturulan çalıştırılabilir kodlar çoğu AV satıcısı tarafından algılanır. Shellter’ı kullanarak, otomatik olarak sonsuz polimorfik bir çalıştırılabilir şablona sahip oluruz. Çünkü herhangi bir 32-bit “standalone” yerel Windows çalıştırılabilir kodunu barındırmak için kullanabiliriz. “Standalone” , Windows’ta varsayılan olarak bulunanlar dışında, hiçbir özel DLL’e statik olarak bağlı olmayan bir yürütülebilir dosya anlamına gelir.

Ne Tür Uygulamalar Kullanabilirim?

Temelde herhangi bir 32-bit bağımsız yerel Windows uygulamasını kullanabilirsiniz. Tabii ki asıl amaç bir AV’yi atlamak olduğundan, paketlenmiş uygulamalardan veya genellikle RWE izinli bölümler, çalıştırılabilir kod içeren birden fazla bölüm gibi tehlikeli özellikleri olan uygulamalardan kaçınmalısınız.

Paketlenmiş uygulamalardan kaçınmanızın bir başka nedeni de, gelişmiş paketleyicilerin de dosyanın değişikliklerini kontrol etmesidir. Gelişmiş paketleyiciler ayrıca, Shellter’ın hata ayıklama motorunu izleme sırasında algılayacak olan çeşitli anti-reversing hileleri de uygular. Paketleyicilerin aşığıysanız, ilk önce enjeksiyonu gerçekleştirebilir ve daha sonra uygulamayı seçtiğiniz paketleyiciyle paketleyebilirsiniz.

En iyi sonuç, herhangi bir nedenden dolayı herhangi bir AV satıcısı tarafından işaretlenmeyen tamamen yasal görünümlü uygulamaları (ideal olarak paketlenmemiş) kullanmaktır.

Encoded/Self-Decrypting Payload’ları Kullanabilirmiyim?

Shellter, encoded/self-decrypting payload’larını desteklemektedir. Şu anda encoded payload’ların yüklenmesi için 8 yöntem desteklenmektedir.

0. VirtualAlloc
1. VirtualAllocEx
2. VirtualProtect
3. VirtualProtectEx
4. HeapCreate/HeapAlloc
5. LoadLibrary/GetProcAddress
6. GetModuleHandle/GetProcAddress
7. CreateFileMapping/MapViewOfFile

Shellter Herhangi Bir Kullanım İçin Payload Sağlıyor Mu?

Shellter, güvenlik testleri sırasında yaygın olarak kullanılan birkaç stager-payloads ‘ ı gömülü olarak getirir. Bu payload’ları doğrudan shellter aracılığıyla enjekte edebilirsiniz.  Auto Mode komut satırı bağımsız değişkenleri kullanılmazsa, Shellter her zaman varsayılan olarak kendi kodlamasını uygular.

Payloads List
————-
[1] meterpreter_reverse_tcp
[2] meterpreter_reverse_http
[3] meterpreter_reverse_https
[4] meterpreter_bind_tcp
[5] shell_reverse_tcp
[6] shell_bind_tcp
[7] WinExec

Toparlayacak olursak Shellter kısaca, sosyal mühendislik testlerinde anti-virüs yazılımlarını atlatmak için kullanılan bir araçtır.

SHELLTER KURULUMU VE ÇALIŞTIRILMASI

Shellter İçerisindeki Payload’ları Kullanma

Shellter içerisinde yer alan herhangi bir payload’ı çalıştırılabilir bir dosyaya enjekte etmemiz gerekmektedir. Bu yüzden kendimize bir adet çalıştırılabilir dosya seçmemiz gerekiyor. Bu yazıda putty.exe dosyası seçilmiştir. İndirmek için aşağıdaki bağlantıyı kullanabilirsiniz.

https://the.earth.li/~sgtatham/putty/latest/w32/putty.zip

Yukarıdaki resimde de görüldüğü gibi shellter’ı başlattıktan sonra bir mode seçmemiz gerekmektedir. Biz “Auto Mode” seçerek devam ediyoruz. İkinci aşamaya geçtiğimizde bize çalıştırılabilir dosyayı belirtmemizi söylüyor. Bizde putty.exe dosyasını belirtiyoruz.

Yukarıda bahsi geçen Stealth Mode sayesinde çalıştırılabilir bir dosyaya birden fazla payload enjekte edebilmemizi sağlamaktadır. Enjekte edilen payloadlar birbirinden bağımsız çalışabilmektedir. Bu genellikle RedTeam testlerinde kullanılır.

Use a listed payload or custom? Kısmında ise L diyerek shellter’ın içerisinde yer alan payload’ları kullanacağımızı belirttik.

Select payload by index kısmında ise hangi payload’ı kullanacağımızı belirtiyoruz. Yukarıdaki resimde index olarak “1” verdik ve meterpreter_reverse_tcp payload’ını kullanacağımızı söyledik.

Daha sonra LHOST ve LPORT belirtiyoruz ve payload oluşturulmuş oluyor. Oluşturduğumuz bu yükü nodistribute’da test edecektim fakat hata verdiğinden dolayı virüstotal’e atmak zorunda kaldım. Bu işlemi yaptıktan sonra ise kurban makinada Shell alalım.

Yukarıdaki resimde de görüldüğü gibi 66 anti-virüs yazılımından sadece 29 tanesi tespit edebildi. Tabii ki bu işlemi direkt olarak uyguladığımızdan dolayı bu sayı 29 çıktı fakat çeşitli iterasyonlar ile bu sayı daha da çok düşecektir.

Şimdi gelelim kurban makine üzerinde Shell almaya. Bunun için Metasploit’de yer alan exploit/multi/handler modülünü kullanacağız.

Yukarıdaki resimde de görüldüğü gibi kurban PUTTY.EXE dosyasını çalıştırdığında Shell alınmış oldu.

Msfvenom Tarafından Üretilen Payloadları Kullanma

Shellter iki şekilde kullanılmaktadır. Birincisi yukarıda bahsettiğimiz gibi kendi içerisindeki payload’ları kullanarak herhangi bir çalıştırılabilir dosya içerisine enjekte etmek, ikincisi ise msfvenom gibi araçlar sayesinde ürettiğimiz payloadları kullanarak çalıştırılabilir bir dosyanın içerisine bu payloadları enjekte etmek. Biz şimdi msfvenom tarafından üreteceğimiz bir payload’ı çalıştırılabilir dosyamıza enjekte edeceğiz ve daha sonra kurban makinada Shell elde edeceğiz.

Msfvenom Tarafından Payload’ın Oluşturulması

Seçilen Payload : windows/meterpreter/reverse_tcp
LHOST : 192.168.1.102
LPORT : 8071
Mimari : x86
Encode : x86_shikata_ga_nai
İterasyon : 15
File : raw
File_name : pty1.raw

Böylelikle payload’ımızı oluşturmuş olduk. Şimdi Shellter aşamasına geçelim.


Shellter Kullanarak Çalıştırılabilir Dosyaya Payload Enjekte Etme

Yukarıda yer alan “Use a listed payload or custom?” kısmına C dedik. Burada C harfi custom’u belirtmektedir ve “kendiliğinden ayarlanmış” anlamını taşımaktadır. Yani daha önceden payload’ı msfvenom ile biz ayarlamıştık onu belirttik. Böylelikle çalıştırılabilir dosyamızın içerisine enjekte işlemini gerçekleştirmiş olduk. Şimdi ise kurban makinadan Shell alma işlemine geçelim.

Yukarıda da görüldüğü gibi kurban PUTTY.EXE dosyasını çalıştırdı ve Shell alınmış oldu.