Penetrasyon (sızma) testi gerçekleştirenlerin çoğu hem sunduğu sayısız imkanlar, hem açık kaynak kodlu olması ve hem de ücetsiz olması nedeniyle Metasploit istismar aracını kullanmayı tercih etmektedirler. Metasploit’in en beğenilen özelliklerinden biri şüphesiz barındırmış olduğu Meterpreter aracıdır. Meterpreter, tamamen istismar edilen hedef işlemin (process) içinde yani hafızada çalışabilen, hedef sistemin diski ile herhangi bir etkileşimde bulunmadığı için de standart antivirüs yazılımları tarafından yakalanmayan, desteklediği modüller sayesinde hedef sistemdeki şifrelerin hashlerini toplamaktan, sniffer olarak çalışmaya, hedef sistemin ekranını kayıt etmekten, arka kapı olarak hizmet vermeye kadar bir çok özelliği üzerinde barındıran erişim sisteme erişim sağlayan yardımcı bir araçtır.
Zaman içinde Meterpreter’ın bu denli güçlü, sinsi olması, Antivirüs üreticilerinin de gözünden kaçmamış ve çoğu üretici Meterpreter’ın yürütülebilir programının tespit edilebilmesi için imza veritabanlarını güncellemek zorunda kalmışlardır. Durum böyle olunca da yürütülebilir Meterpreter programı ile hedef sisteme sızmaya çalışan pentesterlar için Meterpreter’ın Antivirüs yazılımları tarafından tespit edilmemesi büyük önem arz etmiştir ve penetrasyon testlerinde çeşitli kodlama (encode) yöntemleri ile oluşturulan Meterpreter’ın kullanımı zorunlu hale gelmiştir. Kodlama yöntemleri Antivirüs yazılımları tarafından tanındığı için bu yöntemi tanıyan, sezgisel tanıma yöntemi kullanan Antivirüs yazılımları kodlanmış Meterpreter’ı tanıyamasa da programın kodlanmış olduğunu tespit ettiğin için alarm üretebilmektedir.
Meterpreter, hem kabuk kodunu (shellcode) içeren yürütülebilir program (executable) olarak hem de istismar aracının (exploit) ham (raw) kabuk kodu olarak üretilebilmekte ve kullanabilmektedir. Tek fark, ham olarak üretilmesi (generate -t raw) durumunda bunu çalıştıracak ilave bir programa ihtiyaç duymaktadır. Aslında işi yapan kod, ham koddur (payload/shellcode) ve sisteme sızılma kısmında en kilit noktadır. Fakat mantığını anlayamadığım bir nedenden ötürü Antivirüs geliştiricileri (41 taneden 5 tanesi hariç) yürütülebilir program için imza oluşturmuştur. Durum böyle olunca da sistemde çalışan ve internetten indirdiği ham kodu (örnek: meterpreter reverse tcp kodu) indirip hedef işleme (process) enjekte (code injection) eden Code Injection gibi bir araç, Meterpreter’ın Metasploit ile haberleşmesini herhangi bir kodlama (encode) yöntemi kullanmadan sağlayabilmektedir.
Teoride güzel de pratikte nasıl oluyor diye soracak olursanız;
Öncelikle Metasploit ile hem ham hem de yürütülebilir program olarak Meterpreter oluşturalım.
Ardından ham halini VirusTotal sitesine yükleyelim. (Rapora buradan ulaşabilirsiniz.) 41 Antivirüs yazılımından sadece 5 tanesi (AVG, Avast, Symantec, Mcafee GW Edition, GData) kodlanmamış (encode) Meterpreter’ı tespit edebilmektedir.
Ardından yürütülebilir program (executable) halini VirusTotal sitesine yükleyelim. (Rapora buradan ulaşabilirsiniz. 41 Antivirüs yazılımından sadece 32 tanesi kodlanmamış (encode) Meterpreter’ı tespit edebilmektedir.
Örnek olarak en güncel imzalara sahip NOD32 Antivirüs yazılımı kurulu olan sisteme belirtilen bir web adresinden ham kodu indiren ve hedef işleme (process) kod enjeksiyonu yapmak için hazırlamış olduğum Code Injection Tool aracı ile enjeksiyon yapalım ve mutlu sona ulaşalım.
Kod enjeksiyonu için geliştirmiş olduğum Code Injection aracı burada yer alan adımları harfiyen yerine getirmektedir. Aracın VirusTotal raporuna da buradan ulaşabilirsiniz. Programın işlevi, belirtilen web adresinden indirdiği kodu yine belirtilen PID veya işleme (process) enjekte etmek ve çalıştırılmasını sağlamaktır.
Sonuç olarak mantıklı ve anlamlı imza setine sahip olmayan Antivirüs yazılımlarının çok zaman ve efor sarfetmeden birdirbir oynarcasına atlatılması mümkündür. Konuyu kısaca özetleyen videoyu izlemenizi tavsiye eder, herkese güvenli günler dilerim…