Günümüzün imza tabanlı teknolojilerinden biri olan Antivirüs yazılımlarına körü körüne güvenmekte, onların da birer yazılım olduğunu ve her yazılım gibi onların da hataları, zafiyetleri olabileceğini çoğunlukla göz ardı etmekteyiz. Halbuki Antivirüs dediğimiz yazılımlar aslında belli bir imza setine göre (sezgisel tarama hariç) hedef dosyaları incelemekte ve doğası gereği hedef dosya üzerinde yapılan basit değişikliklerden (misal kodlama/encode, paketleme) sistem üzerinde yapılan daha karmaşık değişikliklere (misal tasarımsal hataları istismar etme) kadar çeşitli yöntemler ile çoğu zaman kolaylıkla atlatılmaktadırlar. Çoğunlukla kodlama ile atlatma yöntemlerine sıkça rastladığımız bu günlerde tasarımsal veya mimari hatalardan, zayıflıklardan faydalanarak atlatma yöntemlerine çok sık rastlanmamaktadır.
Geçtiğimiz günlerde zararlı bir yazılım analizi gerçekleştirirken Mcafee VirusScan Enterprise Antivirus yazılımında raporlamadan zararlı yazılım tespitine kadar iki önemli noktada tutarsız sonuçlar üretmesine neden olan bir hata,zafiyet keşfettim. Yaptığım incelemeler neticesinde bu hatanın/zafiyetin, antivirus yazılımında bulunan ayrıştırıcının (parser) dosyaları incelerken özel bir satırı dikkate almasından kaynaklandığını düşünüyorum.
Hataya neden olan bu gizemli satır nedir diye soracak olursanız, HTTP protokülüne ait bir başlık (content-disposition ve filename) ile ZIP dosyasının başlığının (header) birleşiminden oluşan bir satır olduğunu söyleyebilirim;
Content-Disposition: inline; filename=setup.exe….PK……..
Normalde web ile ilişkili dosyaları (misal html) bu şekilde ayrıştırmasını beklediğimiz Antivirus yazılımı her ne hikmetse incelediği tüm dosyalarda da bu gizemli satırı dikkate alarak dosya üzerinde inceleme gerçekleştirmektedir. Durum böyle olunca da bu gizemli satırı kullanarak zararlı bir yazılımı bu antivirüs yazılımından kaçırmak, hatalı aksiyon raporu üretmesini (sildim dediği bir zararlı yazılımı aslında silememesi) sağlamak ve durum raporunda sahte dosya ismi göstermesini sağlamak mümkün olmaktadır.
Bu hatanın, zafiyetin istismar edilebileceği senaryolardan bazılarının üzerinden kısaca geçecek olursak;
- Örneğin internetten temin ettiğimiz o meşhur Aurora istismar kodunun başına bu sihirli satırı ekleyip taratacak olursak antivirus yazılımı tarafından tespit edilemediğini görebiliyoruz.
- Son olarak Contagio Malware Dump sitesinden temin ettiğimiz APT_1104statment.pdf zararlı PDF dosyasının başına sihirli satırımızı koyacak ve filename kısmına istediğimiz değeri belirtecek olursak tarama sonucunda zararlı yazılımın adının dosya adından farklı olarak görüntülendiğini ve raporlandığını görebiliyoruz.
Özellikle istismar kitlerinin (exploit kits) sıfırıncı gün zafiyetlerini istismar ettiği, güçlü gizleme (obfuscation) yöntemlerine başvurarak kendilerini imza tabanlı saldırı tespit ve zararlı yazılım tespit teknolojilerden başarıyla gizleyebildiği şu günlerde, yazılımlarda yapılan bu tür basit hatalar da, kullanıcıların kolaylıkla kandırılmasına ve zararlı yazılımların sistemlere daha kolay bulaşmasına imkan tanıyabilmektedir. Tavsiyem sadece ve sadece istemci sistemlerinde çalışan imza tabanlı teknolojilere güvenmek yerine ilave olarak ağ trafiğinin gözlenmesine yönelik modern teknolojilerden de (kum havuzu analizi gerçekleştirebilen ağ güvenlik izleme cihazları) faydalanılması olacaktır.
Bir sonraki yazıda görüşmek dileğiyle herkese güvenli günler dilerim…
5 comments
3.5
Bence bu basit gibi görünsede önemli bir nokta. Ne yazık ki modern güvenlik anlayışına göre her katman kendi güvenliğinden sorumlu olacağından KaraCahil’e katılmıyorum. istismar tekniğine göre güvenlik politikaları oluşturmak doğru bir yaklaşım değil.
Niye derseniz; her istismar sözkonusu olduğu sisteme göre değişkenlik gösterecektir. Örneğin siz yalnızca bir makinada çalışma yapıyorsanız AV’in taramada kaçırdığı bir virüs çalışma zamanında hafıza üzerinde AV tarafından tespit edilebilecek iken, karantina/kontrol amaçlı kullanılan bir sistemde dosya taramasından geçen zararlı iç ağdaki bir makinada çalıştırılıyor olabilir. Her durumda “nasıl olsa çalışma anında bu zararlının tespiti yapılır” düşüncesi bir başka sistem ve şartda FAIL etmenize neden olabilir. AV’ün var olma amacı tespittir. Bunu bir şekilde yapamıyorsa bu bir zafiyettir. Etkisi az ya da çok.
Zaten normal tarama ile çalıştırma esnasıda taramanın ayrı olmasının amacı katmanlı güvenlik ve zaten 2. Katmanda tespit edilir dersek o zaman ya 1. Katmanı ortadan kaldırmak gerekir ya da diğer AV yazılımlarında olduğu gibi tespit etmesi ve de tespit edip sildim dediğinde gerçekten silmesi gerekir, beklenir.
Öncelikle değerli bilgiler için teşekkür ederim. Kabul bu yöntem virüslerin kuluçkalaması için bir yöntem ama execute olduklarında hafızaya açılırken ki denetleme mekanizmasından kurtulmak için bundan daha parlak bir yöntem bulamadıktan sonra pekte bir manası yok diye düşünüyorum. Kaldı ki neredeyse tüm anti-malware üreticileri (hipsler dahil) kendi exclusion rule’larını gayet erişilebilir registry key’leri veya basitçe encode edilmiş file’lar içerisinde barındırarak yine zararlı yazılımlara barınabileceği özgür alan sağlamaktalar.Yine buna en iyi örnek sizinde incelediğiniz mcafee’nin policy tabanlı exclusion’lar için aşağıdaki gibi kolayca erişilip zararlının kuluçkalamak istediği platform için senaryosunu kurmasına yardımcı olan key’i olabilir.
HKEY_LOCAL_MACHINE\SOFTWARE\McAfee\SystemCore\VSCore\On Access Scanner\McShield\Configuration\Default\ExcludedItem_0=”3|15|C:\\users\\username\\desktop\\”
Zaten her halükarda sisteme dışarıdan browser tabanlı olarak bulaşmak isteyen zararlı payload’ını sisteme konaklatmak için ayrıca şifrelenmiş ve sizinde kod örneklerinizde üstüne basa basa belirttiğiniz PK (data compression algoritmasını geliştiren Philip Katz’dan gelir) compression yöntemlerini kullanmaktalar. Ancak bu adımlardan sonrası için temiz olan ve amacı bu compression payload’ı memory’ye açarak execute etmek isteyen kod’a karşı günümüz kalitesini ispatlamış antivirüslerinin sezgisel algılama özelliklerinin bir okuyucunuz olarak gayet yeterli olduğu kanısındayım.
Değerli bilgileriniz için tekrar teşekkürlerimi sunar iyi çalışmalar dilerim.
Merhaba,
Sezgisel algılama yöntemleri fazlasıyla hatalı sonuç (false positive) ürettiği için varsayılan olarak çoğunlukla bu tür yazılımlarda kapalı gelmekte ve bu nedenden ötürü kolay kolay devreye alınamamaktadır. Buna ilaveten hafızaya açmak yerine hafızadan ilgili zararlı yazılımı çalıştırarak denetleme mekanizmaları günümüzde rahatlıkla aşılmaktadır. (Bkz: http://securityxploded.com/memory-execution-of-executable.php)
Yazıda da belirttiğim gibi zaten çeşitli yöntemler ile AVler aşılabilirken bu tür basit hatalar işleri daha da kolaylaştırabilmekte, yeni kapılar açmaktadır.