|
Welcome,
Guest
|
|
Bu yazıda günümüz zararlı yazılımlarının kendilerini anti-virüs sistemlerinden gizlemek için kullandıkları paketleyicilere diğer bir değişle çalıştırılabilir sıkıştırıcılara (executable packer) değineceğiz. Paketleyiciler aslında çalıştırılabilir dosya üzerinde sıkıştırma işlemi gerçekleştirip dosyanın işlevini değiştirmeyen sadece görünümünü değiştiren yazılımlardır. Normal sıkıştırıcılardan (zip, winrar) farklı olarak dosyanın nasıl açılıp yorumlanacağı yeni oluşturulan paketlenmiş dosyanın içerisinde yer alır. Bu yüzden yeni oluşturulan dosyalara kendi başına açılabilir arşiv (self-extracting archive) denilmektedir.
Paketleyiciler Paketlenmemiş normal bir çalıştırılabilir dosyanın yapısında import, export, data vb klasik bölümler bulunur. (PE dosya detaylarına [1]'den ulaşabilirsiniz.) Paketlenmiş dosyada bölümler paketleyiciler tarafından yeniden şekillendirilir. Paketlenmiş dosyalar temel olarak iki ana kısımdan oluşur; Paket açıcı prosedürün bulunduğu kısım İlk çalıştırılabilir dosyanın bulunduğu kısım Şekil 1'de paketlenmemiş ve paketlenmiş çalıştırılabilir dosyanın Portable Executable(PE) bölümleri karşılaştırılmaktadır. packer_vs_orijinal_pe.jpg Şekil-1 Orjinal ve paketlenmiş çalıştırılabilir dosyaların PE bölümleri Paketleyiciler analiz işini zorlaştırmak için aşağıdaki özellikleri kullanabilirler: Sıkıştırma Şifreleme Tersine mühendislik yöntemlerini zorlaştıran metotlar Diassembly atlatma Debugger atlatma Sanal makine atlatma Peki, paketleyiciler ile anti-virüs sistemleri nasıl aşılabilmektedir? Aslında bu soruyu cevaplayabilmek için anti-virüs çözümlerinin nasıl çalıştığını bilmek gerekir. Anti-virüs çözümleri zararlı yazımları bulmak için yayınladıkları imzalar ile dosyada eşleşme olup olmadığına bakarlar ve eğer bir eşleşme bulurlarsa bu dosyayı zararlı olarak değerlendirirler. Paketleyici programları ile dosyanın ikili (binary) görüntüsü değiştirildiği için zararlı yazılım için üretilen imzalar aşıbilmektedir. Fakat günümüz anti-virüs çözümleri bu eksikliklerinin farkına vardıkları için fazlaca kullanılan paketleyicileri açarak (unpack) imza karşılaştırmasında bulunmaktadırlar. Bu noktada aklımıza hemen şu soru gelebilir “Eğer paketleyici yazılımını kendimiz oluşturursak anti-virüs sistemleri tarafından yakalanmayabilir mi?”. Evet, yakalanma ihtimalini belki sıfırlamış olamayız ama büyük oranda yakalanma ihtimalini azaltmış oluruz denebilir. Makalenin ilerleyen bölümlerinde bu konuya değineceğiz. Paketleyicilerin diğer bir kullanım amacı da tersine mühendislik yapmayı zorlaştırarak yazılımların kaynak kodunun elde edilmesini zorlaştırmaktır. Bu hem zararlı yazılım yapanlar tarafından yapılmakta hem de legal program geliştiricileri tarafından tercih edilmektedir. Böylelikle legal yazılım geliştiriciler yazılımlarının fikri mülkiyet haklarına yapılacak saldırılara karşı önlem almış olurlar. Paketleticilerle Anti-Virus Çözümlerinin Atlatılması Şimdi bir örnek üzerinden anlattıklarımıza kısaca bakalım. Bu örnekte paketleyici yazılım olarak Ultimate Packer for Executable(UPX)'i kullanacağız [2]. Zararlı yazılım olarak ise Metasploit[3] çalışma ortamını kullanarak elde ettiğimiz ters bağlantı kuran bir çalıştırılabilir dosyayı kullanacağız. Şekil-2'de bu dosyayı nasıl elde ettiğimiz yer almaktadır. “custom.exe” adındaki zararlı yazılım Backtrack 5R2 işletim sisteminde UPX ile sıkıştırılmıştır [Şekil-3]. custom_meterpreter.jpg Şekil-2 Metasploit aracı ile zararlı yazılım oluşturulması custom_meterpreter_upx_packed.jpg Şekil-3 UPX ile zararlı dosyanın paketlenmesi Elde ettiğimiz paketlenmiş ve paketlenmemiş zararlı dosya üzerinde statik incelemede aşağıdaki özellikleri göz önünde bulunduracağız. MD5 değeri İçerisinde geçen karakter dizileri PE dosya bölümleri (section) Daha önce de belirttiğimiz gibi paketleyiciler dosyanın ikili halini değiştirdiklerinden Şekil-4'de görüldüğü gibi dosya özetleme değerleri (hash) birbirinden farklıdır. Diğer yandan çalıştırılabilir dosyanın paketlenmemiş halinden elde edilen karakter dizileri kolaylıkla elde edilebilmiştir fakat paketlenmiş olan dosya incelendiğinde anlamlı bir karakter dizisi görünmemektedir. [Şekil-5] hash_comperations.jpg Şekil-4 Dosyaların özetleme değerleri karakter_dizileri_karlatrlmas_copy.jpg Şekil-5 Dosyalardan elde edilen karakter değerleri UPX ile sıkıştırdığımız dosyanın PE bölümleri incelendiğinde dosyanın normal bir PE file yapısında olmadığı paketleyiciye ait bölümlerin olduğu görülmektedir. Paketlenmiş ve orjinal dosyaya ait PE bölümleri Şekil-6'da gösterilmektedir. Bu örneğimiz için UPX bölümleri paketlenmiş dosyada yer almaktadır. section_comperations.jpg Şekil- 6 Paketlenmiş ve orjinal dosyanın PE bölümleri Paketlediğimiz dosyanın anti-virüs çözümleri tarafından nasıl yakalandığını tespit etmek için virustotal.com web servisini kullandık. Paketlenmemiş dosya 42 anti-virüsün 29 tarafından yakalanmıştır, UPX ile paketlendikten sonra bu sayı 27'ye düşümüştür. UPX çok fazla kullanılan bir paketleyici olduğu için ve anti-virüsler tarafından açılıp inceleyebilme kabiliyetine sahip oldukları için kolaylıkla tespit edilebilmişlerdir. Fakat aynı dosyayı Private exe Protector paketleyicisini kullanılarak paketlediğimizde 42 anti-virüs sisteminden sadece 6 tanesi zararlı yazılımı tespit etmiştir. virustotal_karsilastirma.jpg Şekil-7 Paketlenmiş ve orjinal dosyanın anti-virüsler tarafından tespit edilme oranı Sonuç ve İleriki Çalışmalar Bu yazıda çalıştırılabilir sıkıştırıcıların ne olduğu, ne tür amaçlarla kullanılabileceği, anti-virüs sistemlerini aşmada nasıl kullanıldığından bahsettik. Bir başka yazımızda bu dosyaların açılarak (unpack) nasıl analiz edileceğine değineceğiz. |
|
|
Please Log in or Create an account to join the conversation. |
