Veil Framework ile Anti-Virüs ve Güvenlik Duvarı Atlatmak

Günümüzde, sızılan sistemlerde arka kapı bırakmak için birçok zararlı yazılım geliştiriliyor. Fakat aynı şekilde güvenlik üzerine çalışan araştırmacılar da savunma mekanizmalarını taktik değiştiren zararlı yazılımlara karşı güncellemekte ve güçlendirmekte. Zararlı yazılımlara karşı alınan çözüm önerilerinden belki de en hızlı olanı zararlı yazılım imza veri tabanı oluşturmak ve kontrolü bu veri tabanı üzerinden sağlamak. Veri tabanı, zararlı yazılım olarak tespit edilen dosyanın özet(hash) değerinin hesaplanması ve kaydedilmesi ile oluşturulur. Hash alma işlemi kodları inceleyip anlama işlemine göre çok çok hızlıdır ve pratiktir. Bu nedenle çoğu anti-virüs yazılımı tarafından kullanılan bir yöntemdir. İlerideki tehlikeler ve tehditler için, tespit edilen yeni bir şüpheli dosyanın özeti alınır, ardından veri tabanında bu özet değeri var mı diye kontrol edilir. Bu şekilde zararlı yazılım tespiti hızlı bir şekilde yapılmaktadır. Şüpheli dosyaların incelenmesi ve sonuçların anti-virüs camiası ile paylaşımı hızlı ve etkin bir şekilde Virus Total’in sitesi üzerinden yapılmaktadır. Böylece yeni çıkan bir zararlı yazılımın imzası zararlı yazılım imza veri tabanına eklenecek ve henüz daha onu taramamış anti-virüs yazılımlarınca bilinir olacaktır.

Tüm bu önlemlere rağmen, ofansif güvenlik tarafı da elbette boş durmamaktadır. Geliştirilen güvenlik önlemlerine rağmen halen sık sık zararlı yazılımlar üzerinden yapılan bilgi çalınması, istihbarat elde edilmesi ve para aktarımı haberleri ile karşılaşmaktayız.

Bu yazıda anti-virüs programlarının ve güvenlik duvarlarının tespit edemediği arka kapı zararlı yazılımları oluşturan Veil adlı programdan bahsedeceğim.

Veil açık kaynak kodlu bir yazılımdır. GitHub linkine buradan ulaşabilirsiniz.

Dökümantasyonunda da belirttiği gibi, Kali Linux’e hızlı bir şekilde yüklemek için

apt -y install veil
/usr/share/veil/config/setup.sh --force –silent

komutları çalıştırılabilir.

Programın yüklenmesi biraz zaman alabilir. Done yazısını görene kadar lütfen ekranı kapatmayın.

Programın yüklenmesi tamamlandıktan sonra Veil Framework’ü ./Veil.py komutu ile çalıştıralım.

Karşımıza Veil’ın kullanılabilir araçlarının ve açıklamalarıyla birlikte kullanılabilir komutlarının olduğu başlangıç sayfası çıktı.

Kullanılabilir araçlar kategorisinde 2 adet araç mevcut: Evasion ve Ordnance. Evasion güvenlik duvarları ve anti-virüsler tarafından fark edilemeyecek arka kapı zararlı yazılımlarını oluşturmamızı sağlıyor. Ordnance ise Evasion’a yardımcı modüller içeriyor. Bizim için Evasion modülü tek başına yeterli olacak.

Komutları incelediğimizde exit komutunun programdan çıkış yaptığını görüyoruz. info komutu ise Evasion ve Ordnance araçları hakkında bilgi veriyormuş. info Evasion ve info Ordnance komutlarını çalıştırarak, Veil’in geliştiricileri bu araçları nasıl açıklamış görelim.

list komutu ise, bu sayfada kullanıldığında bize araçları listeliyor, araçlardan birini seçip içine girdiğimizde ise kullanılabilir payload’ları shell kodlarını, vs listeliyor.

options komutu, Metasploit Framework’teki show options komutu ile benzerlik gösteriyor. Seçmiş olduğumuz payload’a ilişkin gereken bilgileri görüntüleyebiliyoruz.

update komutu Veil Framework’ü güncellemek için kullandığımız komut. Etkin bir şekilde güvenlik duvarlarını ve anti-virüs yazılımlarını atlatmak istersek Veil’ı mutlaka güncel tutmamız gerekiyor.

use komutu ise araç ve payload seçip kullanmamızı sağlıyor.

Yazı akışı olarak, önce bir modülün nasıl kullanıldığını uygulamalı olarak göreceğiz, sonrasında ise farklı modüller ile zararlı yazılımları oluşturup performanslarını karşılaştıracağız. Komutları ve kullanımlarını öğrendiğimize göre artık uygulama safhasına geçebiliriz.

use Evasion komutu ile Evasion aracının içine girelim.

41 adet payload mevcut. Kullanacağımız payload’lar 3 bölümden oluşuyor. İlk kısımda payload hangi dilde yazıldı bilgisi(go, python, c, vs), ikinci kısımda payload’ın türü, üçüncü kısımda ise zararlı yazılımın çalışması sonucu kuracağı bağlantı için izleyeceği yöntem.

Burada ufak bir parantez açıp reverse ve bind bağlantılar hakkında bilgi vermek istiyorum. Reverse bağlantılar hedef bilgisayardan bize açılan bağlantılardır. Bind bağlantılar ise bizim bilgisayarımızdan hedef bilgisayara açılan bağlantılardır. Güvenlik duvarları ve anti-virüs yazılımları dışarıdan açılan zararlı bağlantıları kolaylıkla tespit edebildiği için, biz oluşturduğumuz payload’ın hedef bilgisayardan bize bağlantı açmasını isteyeceğiz. Böylece güvenlik önlemleri tarafından, hedef bilgisayar herhangi bir sunucudan normal bir istek yapıyormuş gibi algılanacak ve bağlantı engellenmeyecek. Bu nedenle modüllerde kullanacağımız bağlantı türü reverse bağlantı olacak.

Örnek modül olarak Veil’ın Evasion aracında bize sunmuş olduğu payload’lardan Go dilinde yazılmış, meterpreter shell oluşturan, bağlantıyı reverse olarak ayrıca https ile yani şifreli olarak sağlayan payload’ı, yani 14 numaralı olan ‘go/meterpreter/rev_https.py’ payload’ını kullanalım. use go/meterpreter/rev_https.py komutu ile payload’ı seçip içine girelim.

Açılan ekranda karşımıza ilk olarak payload hakkında bilgilerin olduğu kısım çıktı.

Sonrasında payload oluşturmak için set edebileceğimiz seçeneklerin olduğu kısım mevcut.

Giriş kısmında anti-virüs yazılımlarının zararlı yazılımı tespit edebilmek için şüpheli olarak tespit ettiği dosyanın özet değerinden yararlandığını, bu değeri zararlı yazılım imza veri tabanından kontrol ederek şüpheli dosyanın zararlı olup olmadığına karar verdiğinden bahsetmiştik. Veil zararlı yazılım oluştururken eğer sadece bağlantı bilgilerini (IP adresi, port bilgisi) alıyor olsaydı, bu işlem halihazırda birçok zararlı yazılım tarafından yapıldığı ve anti-virüslerce tespit edildiği için etkili bir yol olmayacaktı. Veil burada zararlı yazılım kodunu olabildiğince değiştirebilmek ve özet değerini farklılaştırmak için birçok seçenek sunuyor. Örneğin, zararlı yazılım hedef bilgisayarda 3 GB RAM olup olmadığını kontrol ediyor, hedef sistemin UTC zaman dilimini kullanıp kullanmadığına bakıyor, vs. Bu özellikler sayesinde Veil’ın oluşturduğu zararlı yazılımlar Virus Total veri tabanında bulunan özet değerlerinden farklılık gösterecek ve zararlı olarak algılanmayacak. Bu şekilde anti-virüs yazılımlarını atlatmış olacağız.

Kullandığımız modül içerisinden seçtiğimiz bazı parametreleri değiştirdik.

Son aşama olarak generate komutunu kullanarak zararlı yazılımı oluşturuyoruz. Veil sadece çalıştırılabilir exe dosyası oluşturmakla kalmıyor, aynı zamanda kodların olduğu dosyayı ve Metasploit Framework için .rc uzantılı dosyayı da oluşturuyor.

Artık zararlı yazılımları nasıl oluşturacağımızı öğrendik. Şimdi ise oluşturulan exe dosyalarının gerçekten anti-virüs yazılımları tarafından tespit edilip edilmediğinin kontrolünü yapacağız. Bunun için tabi ki Virus Total sitesini kullanmayacağız. 🙂 Oluşturduğunuz zararlı yazılımları kesinlikle Virus Total’e yüklemeyin. Bunun yerine Virus Total alternatifi siteler kullanılabilir: NoDistribute-Ücretsiz, Antiscan.me-Sorgu başı 0.1$ ücret alıyor. Bu siteler, aynı Virus Total gibi anti-virüs yazılımlarının imza veri tabanlarını kontrol ediyor fakat sonuçları onlarla paylaşmıyor. Oluşturduğumuz zararlı yazılımı bu platforma yükleyelim ve sonuçlarını inceleyelim.

Not: Ben bu yazıyı yazdığım sırada No Distribute sitesi hizmet veremez durumdaydı, o nedenle Antiscan.me’yi kullandım. Kripto para ödemesi ile hesabınıza para yükleyip ve 0.1$/tarama karşılığı dosya analizi yapabilirsiniz. Antiscan.me dosyayı 26 farklı anti-virüs yazılımı ile tarayıp sonuçlarını bize sunuyor.

İlk olarak seçenekleri set etmenin anti-virüs atlatma üzerindeki etkisini gözlemlemek için ‘go/meterpreter/rev_https.py‘ modülünde yalnızda IP adresini set ederek zararlı yazılımı oluşturalım ve tarayalım.

Tarama sonuçları oldukça kötü. Resimde görüldüğü gibi 26 anti-virüs yazılımının 15’i zararlı yazılımı tespit etti.

Sonraki adım olarak işlemlerin sayısı, ram miktarı, disk kapasitesi kontrolü gibi şüphe çekebilecek seçenekler haricindeki seçenekleri seçerek işlem yapmayı deneyelim. ‘Kullanıcı fare ile şu kadar tıkladığında zararlı yazılım aktif olsun’, ‘zararlı yazılım çalışmak için bir süre beklesin’ gibi fazla şüphe uyandırmayacak seçenekleri seçip yeni bir zararlı yazılım oluşturalım. Böylelikle belki daha iyi sonuçlar elde edebiliriz.

Şüpheli olmadığını düşündüğümüz seçenekler ile oluşturduğumuz zararlı yazılımı 14 anti-virüs zararlı yazılımı tespit etti. Önceki sonuca göre 1 basamak daha iyi.

Acaba bütün seçeneklere değer atamak nasıl bir sonuç verir? Üçüncü zararlı yazılım dosyasını aşağıdaki seçenekler ile oluşturalım.

Sonuç ise önceki iki sonuca göre gayet iyiydi. Zararlı yazılım sadece 7 anti-virüs tarafından tespit edildi.

Üç yazılımı da Go dili ile oluşturduk fakat Veil bize farklı dillerde zararlı yazılım oluşturma imkanı da veriyor. Diğer dilleri denemeye C ile başlayalım ve ilk olarak reverse TCP bağlantısı oluşturan ‘c/meterpreter/rev_tcp.py‘ modülünü deneyelim. Bu modülün seçenekleri aşağıdaki resimde görüldüğü gibi oldukça sınırlı.

Zararlı yazılımı oluşturup test ettiğimizde karşılaştığımız sonuçlar şu şekilde:

Başlangıçta alınan kötü sonuçlara yakın bir sonuç olduğu için C dilinden vazgeçmeliyiz bence. CS modüllerinden ‘cs/meterpreter/rev_https.py‘ ile işlem yapmayı deneyelim. Seçeneklere şu şekilde değerler atayalım:

Elde edilen sonuçlar ise C’den iyi fakat Go ile elde ettiğimize göre kötü oldu. Zararlı yazılım 12 anti-virüs tarafından tespit edildi.

Sırada Python var. Modül seçenekleri arasından ‘python/meterpreter/rev_https‘ modülünü kullanalım. Seçenekleri aşağıdaki gibi düzenleyelim:

Veil, çalıştırılabilir dosya oluşturma işlemi için PyInstaller veya Py2Exe kütüphanelerini kullanıyor. Bize de hangisini seçmek istediğimizi soruyor. Py2Exe kütüphanesi Windows sistemlerde çalıştığı için, biz varsayılan seçenek olan PyInstaller’ı tercih edeceğiz.

Test sonucuna göre, oluşturduğumuz zararlı yazılımı anti-virüslerden 12’si tespit etti.

Son olarak Ruby dilini deneyelim. Önce ‘ruby/meterpreter/rev_tcp.py‘ modülünü seçelim ve modül içindeki seçenekleri aşağıdaki gibi ayarlayalım.

Tarama yaptığımızda önceki modüllere göre kısmen daha başarılı bir sonuç elde ettik. Anti-virüs programlarından yalnızca 9’u zararlı yazılımı tespit edebildi.

Oluşturacağımız son zararlı yazılımı ise ‘ruby/meterpreter/rev_https.py‘ modülü ile oluşturalım. Modül seçenekleri şu şekilde:

Bu modül ile şu ana kadarki en başarılı sonucu elde ediyoruz. Anti-virüs yazılımlarından yalnızca 6 tanesi zararlı yazılımı tespit edebildi.

Tüm bu yaptığımız çalışmalar gösteriyor ki HTTPS bağlantılar TCP’ye göre daha zor tespit edilebilir. Ayrıca C, CS, Go ve Ruby arasında en başarılı olan Ruby oldu. Veil, etkin bir kullanım ile anti-virüslerin çoğunu atlatabiliyor fakat performansı hepsini atlatabilmek için yeterli değil.

Not2:Veil’ın Powershell modülleri için çalıştırılabilir dosya oluşturma desteği yok. O nedenle bu Powershell ile zararlı yazılım oluşturulamadı.

Ahmet Selim Kaya

Ofansif Güvenlik Araştırmacısı, TOBB ETU Siber Güvenlik Yüksek Lisans öğrencisi. Bilmediklerinin öğrencisi, bildiklerinin öğretmeni.