Wednesday, April 22, 2009

MX-V CPU emulation

Daha önceki blog postlarda AntiVirus motoru olarak neden VIPRE’yi seçtiğimizden sık sık bahsedeceğimizden söz etmiştik. Bu yazı dizisinin ilkini yayınlıyoruz.

Klasik(imza veri tabanına göre koruma yapan)güvenlik programları,hızla gelişmekte olan gelişmiş malware uygulamalarını durdurmakta yetersiz kalmaktadır.Sebebi ise,günümüz zararlıların yüksek obfuscation teknikleri kullanmalarıdır.



Bu tekniklerden akla ilk geleni Packer kullanımıdır. Bu teknik, antiviruslerin bir dosyayı analiz edebilmek için özelleştirilmiş çözme işlemleri (Static Unpackers) üretmesini gerektirmektedir.Bu durum antivirus üreticilerinin devamlı özelleştirilmiş unpackerları Virus Engine’lerinin içerisine eklemek yoluyla zaman kaybetmelerine neden olmaktadır.

Antivirus firmaları, yeni obfuscation tekniklerini bertaraf edebilecek imzaları yeterince hızlı üretemedikleri için, geçen süre içerisinde kullanıcılar yeni tehditlere karşı tamamen korunmasız kalmaktadır.

Bizim kullandığımız antivirüs motoru VIPRE, malware leri saptamak için arka planda birbirinden farklı bazı teknikler uygulamaktadır. Bu teknikler,klasik imza tespiti, heuristic ve en önemlisi de virtualized environment'tir.

Virtualized Environment (sanallaştırılmış windows ortamı), olası zararlı uygulamaları kendi üzerinde çalıştırarak test ediyor, bu sayede obfuscation edilen kod çalıştığında normal haline geliyor ve static imza karşılaştırılması yapılabiliyor. VIPRE ve sadece 2 AV tarafından desteklenen bu teknoloji sayesinde static unpacker’lar kullanılmıyor ve zararlı, bilinmeyen bir obfuscation tekniği ile tanınmaz yapılmış olsa bile yakalanıyor. Ancak bu tekniğin dezavantajı, her zararlı bir nevi kontrol altındaki sanal makinada çalıştırıldığı icin performans kaybı oluşturmaktadır. Sunbelt Software bu konuda yaptığı ar-ge ler sayesinde bu performans kaybının önüne geçen ve bu alanda dünyada ilk kez kullanılan MX-V’i teknolojisini kullanmaya başladı ve bunu basına duyurdu.

MX-V teknolojisi, VIPRE’de kurulu emülasyonun, dinamik çeviri (ikili çevirinin farklı bir formu) adıyla bilinen bir metodu kullanan uzantısıdır. Bu sayede klasik CPU emülasyonun 10 MIPS olan performans bariyerini rahatlıkla kırabilmektedir.

Dinamik çeviri, performansı 400 MIPS e kadar çıkarabilmek için programın geniş parçalarını anında tekrar derleyebilen bir teknolojidir. Vipre'nin gömülü emülasyonunda kullanılan da dinamik çeviridir. MX-V katmanı da ona malware yapısını hızla analiz edebilmesi için yeterli olan bir ilavedir .

Bizim ürettiğimiz imzalarda, MX-V kullanan VIPRE motoru üzerinde çok hızlı bir şekilde taranacaktır.



12 comments:

  1. Güzel bir tanıtım yazısı olmuş teşekkür ederim.

    Aslında son kullaıcı için bu teknolojik ayrıntılar çok ilgi çekmiyor.

    Önemli olan antivirüsün etkisi. Bunu sınırlı bir şekilde testlerde görüyoruz yanlızca.

    Vipre dahil edilerek yapılmış bir test yok henüz bildiğim. Epey olmasına rağmen neden olmadığı bende güven sorunu yaratıyor.

    Aslında her AV kendi özel teknolojilerini kullanıyor.

    Ve herbiri de kendi teknolojilerinin çok efektif olduğunu söylüyor.

    Packer konusunda eski bir test;
    http://www.anti-malware-test.com/?q=taxonomy/term/13

    Packer konusunda yeni bir test;
    http://malwaretestlab.com/more.aspx?entry=23

    Test sonuçlarına göre Kaspersky, Bitdefender iyi neticeler almış.

    Vipre testte yer almamış.

    Diğer 2 Av nedir? Norman sandbox ve yeni DNA teknolojisini kullanıyor, Bitdefenderde B-HAVE var muhtemelen bu ikisi olsa gerek.

    B-Have de oldukça iyi bir teknoloji;
    http://www.bitdefender.com/files/Main/file/B-HAVE_The_Road_to_Success.pdf

    Biraz eski olsada burada açıklaması var.

    ReplyDelete
  2. anladığım kadarıyla unpak etmeden sanal ortamda çalıştırdığı dosyanın memorideki kodlarını tarıyacan vipre..bu neyi değiştirecek ben onu anlamadım?
    yeni çıkmış bir zararlıyı analiz ile vakit kaybetmeden veritabanına ekleme sürecini mi hızlandıracak?

    ne şekilde olursa olsun yeni bir zararlı için sonuçta analiz yapılması gerekmiyor mu?

    aslına bakarsanız bu teknoloji yani sanallaştırma olayının AV lere uygulanması, zararlı yazarları için bence daha bir avantaj durumuna gelecek.
    Bundan basitçe bahsedeyim; sanal makinalar olsun sandbox (online yada program) çok basit şekilide algılanabiliyor. yani bir zarralı yazarının dosyaya sanal ortamda çalışıp alışmadığını kontrol ettirmesi ve böyle bir ortamda ise zararlının çalışmamasını sağlaması çok basit bir olay.
    vipre de çalıştıktan sonra zararlının hafızaya yüklenen kodlarını tarayacağı için daha hiç taramadan atlatılmış olacak.

    bu gün heryer antianubis, anti norman, antisandboxie, antivmware kodları kaynıyor...antivipre de girer aralarına.

    ReplyDelete
  3. @biberoglu
    Aslinda zemana ar-ge blog son kullanicidan ziyade power users (bilisimi takip edenler) icin. Son kullanicilarimiza ise zemana.com uzerinden hitap etmekteyiz.

    VIPRE nerdeyse tum bu test kuruluslarinin uyesi ic testlerde cok basarili oluyor ancak bunlar henuz yeni oldugu icin publik edilmiyor. Biz AntiVirus motoru secerken kesinlikle bu testlerden etkilenmedik tamamen kendi testlerimizi kullandik.

    Aslinda MX-V CPU emulation konusu sizin verdiginiz packer testlerine zit dusen bi konu cunku unpacker'e gerek duymuyor. Sizin verdiginiz testlerde ise icinde static unpacker bulunduran AV ler test edilmis. Ornegin kaspersky da 120'nin uzerinde static unpacker var upx'den asprotect'e kadar. Bu packerlardan bir cogu ticari cunku obfuscation teknigini malware yazarlarinin kullandigi gibi programlarina anti-crack korumasi eklemek isteyen yazilimcilarda kullaniyor.
    Ve buda AntiCracking tool (Protector) sektorunu yaratiyor.

    Zaten boyle olmasa, Obfuscated Code'u acmadan direk bu malware denir bu sekilde hem hizli hemde kolay bir tanimlama olur ama ustte belirttigim gibi bu teknik anti-crack amaci ilede bir cok legal program tarafindan kullaniliyor.

    Ornegin Bitdefender, bir anti-crack tool olan VMProtect programi ile Obfuscation edilen kodu acmak yerine, VMProtect edilmis butun programlari malware sinifina koymus.

    Veracode'dan Chris Wysopal'in konu hakkinda yazdigi bir makale.
    On the Legitimacy of Obfuscated Code
    http://www.securityfocus.com/columnists/498?ref=oc

    ReplyDelete
  4. @civil engineer
    Senin bu saydigin Sandbox mantigindaki programlar isletim sistemini emule ediyor ve bu blogda bahsedilen MX-V CPU emulation bu sekilde calissaydi hakli olurdun ancak burda cok hizli kisisitli ve sinirli bir CPU emulasyonu var bu tahmin ettigin gibi bi sanal makina degil ve kod calistirilmiyor. Aksi halde cok fazla sistem kaynagi tuketir ve cok agir calisirdi. Windows saniyede yuzlerce dosya cagiriyor. Zaralinin bu emulasyon icinde olup olmadigini bulmasinin yada test etmesinin imkani yok.

    Zararlinin virus labaratuarina dustugunde tabi test edilmesi lazim ancak eger kullanmis oldugu obfuscation (pack/crypt) yontemi icin bir unpack yazilmassa nekadar generic imza alirsan al, virus'un yeni kopyasi (mutasyona ugramis hali) tamamen imza disi kalacaktir. Virus imzasi almak antivirus muhendisi icin 1-2 dakika alirken static unpack olusturmak 3-4 gununu alabilir. Cok deneyimli researcherlar iyi packerlar icin dinamik unpacker olustururken dahi cok zorlanmaktalar birde static olusturmayi dusunun. Gercekten cok zor ve zaman alan bir surec ve bu surecte korumasiz kaliyorsunuz.

    ReplyDelete
  5. "MX-V CPU emulation" bu teknolojiyi vipre nasıl kullanıyor bundan biraz daha ayrıntılı bahsedebilirmisiniz..?

    diyelim ki bilinmeyen bir packer ile packlenmiş ve tamamen sıfırdan kodlanmış yeni bir zararlı viruslaba rapor edildi diyelim.

    viprede analizini yaptı db'e ekledi diyelim.

    bu aşamadan sonra güncel vipre nin tarama işlemindeki algoritmasınında biraz bahsetseniz :)

    Başka bir soruda unpack konusunda, mesela ben kasperskyın içindeki unpackerları kendi istediğim gibi kullanmanın bir yolu varmı.
    atıyorum kasperskyı debug ettim ve packli bir dosya taratıyorum..tarama başladığında önce unpack edecek..ettiğini varsayarsak unpack edilmiş dosyayı tempe mi atıyor yoksa hafızaya mı açıyor?
    yani ben extra unpackerlar falan filan kullanmadan kasperskydan bu amaç için faydalanabilir miyim? :)

    ReplyDelete
  6. @civil engineer
    Guzel bi soru ;)
    Ilgili virus, mutasyona sahip bir crypter ile yeni kopyalarini olustursada bu yeni kopyalari VIPRE tarafindan yakalanacaktir. Bu teknolojiye sahip olmayan AV ler ise sadece imza aldigi virus'u taniyabilceklerdir kopyalarini degil. Yada static unpacker uretip imza ile bunuda guncellemelere dahil edecektir.

    Beta kullanicilarimizdan ve ayni zamanda okurlarimizdan Emre Bey bize kendi yazdigi Polymorphic bir virus gondermisti incelememiz icin, gelecek blog yazisini bu konu hakkinda yazacagim ve ayni zamanda VIPRE MX-V CPU emulasyonun bu tur virusleri yakalamada nasil etkili olabilcegini. Umarim kendisi bu basligi okuyordur ve yorum yazar.

    Kaspersky programi iyi bir sekilde research edilirse bu static unpackerlar bulunabilir ancak bu yasal ve kolay olmaz bunun yerine kaspersky legal kullanimlar icin bir SDK veriyor. Sadece win32 degil rar-zip gibi toplamda 2000 adet formati destekliyor ve unpack edebiliyor.

    DeepUnpack
    http://usa.kaspersky.com/partners/deepunpack.php

    Tabi bu SDK'ya sahip olmak icin bu sdk ile urun gelistirmeniz ve tahminimce en az aylik ~5000 urun satabiliyor olmaniz gerekir.

    Ancak sunu da belirtmek isterimki; kaspersky veya diger AV lerin static unpacker'lari kodu calistirilabilecek kadar unpack etmez yani ornegin IAT'i rebuild etmez sadece calistirilabilir section'u acar tahmin ediyorum sonucta onemli olan imza kontrolu yapabilmek. Ve bukadarini dinamik olarak basitce sizde acabilirsiniz.

    NOT: Unpack ettigi bolgeyi diske yazmaz hafizada kalir yoksa gereksiz yere file IO ile zaman kaybeder.

    ReplyDelete
  7. teknolojinin işleyişi açısından hiç ayrıntı vermiyorsunuz :D

    vipre av şu an bahsettiğiniz bu teknolojiyi kullanıyor galiba?

    aylık 5000 ürün :D sdk da kaldı öyle zaten iat fixlenmedikten sonra code sectionı memoridende dump ederim..çalışmadıktan sonra ancak imza taramaya yarar dediğiniz gibi :)

    rant a coder konusunda bahsettiğiniz iat scan olayı nasıl oluyor?
    yani bu tablonun bulunması olayı son import adresi yazıldıktan sonra oep e zıplar normalde unpak edilmiş olur yani?

    mesela siz unpack etiğiniz bir dosyada nasıl anlıyorsunuz oep e geldiğinizi..?

    ayrıca polymorphic virüs yazmak çok ta etkili bir yöntem değil aksine virüsü eleveren bir yöntem.
    bir kere viruslaba düştümü olası her varyantı yakalanmış sayılır.
    polimorfizmi sağlayan kod da mutlaka sabit kalan raw data vardır. atıyorum a3 ?? ?? ?? ff c3 00 01 ?? ?? vs gibi imzalar alınabilir. buda tüm varyantların tek bir imza ile yakalnması anlamına geliyor.
    mayısın 2. haftasından sonra bol vaktim olcak..gönderebilirseniz bende incelemek isterim. :)

    ReplyDelete
  8. peki vipreden başka bu teknolojiyi kullanan AV firmaları hangileri ve Viprenin bu firmalara göre getirdiği extra bir avantaj var mıdır?

    vipre ye kendi imzalarınızı ekleyecekmisiniz? size bu konuda virüs göndererek yardım etmek isteriz.

    ReplyDelete
  9. polymorphic, metamorphism konusunda da dediğim gibi virüsü incelemeden birşey diyemem
    aynı dosyayı değişik algoritmalarla cryptleyen protectorlar var. onları baz alarak tahmini cevap verdim ama incelesem mutlaka bir yöntem düşünebilirim.
    binarynin sadece code section (çalışan kodları değişiyor galiba) tüm sectionları değiştirmiyorsa diğer sectionlardan yada headerdan yola çıkılarak ta yakalanabilir.

    ReplyDelete
  10. @civil engineer

    Zemana Blog firmamızın Ar-Ge çalışmalarının gidişatı hakkında takipçilerini bilgilendirdiği bir platformdur. Bilindiği gibi blog konsepti soru sorma ve cevap alma üzerine kurulu değildir. Dolayısı ile burada konu hakkında görüşleriniz var ise açıklayınız. Diğer taraftan zaman zaman toplu olarak bütün yorumlar hakkındaki düşüncelerimizi yazıyoruz.

    Sorunuza gelince bir binary den a3 ?? ?? ?? ff c3 00 01 ?? ?? Seklinde imza alınabiliyorsa o binary metamorphic değildir. Metamorphic dosyanın loader'i dahil hiç bir yerinden sabit imza alınamaz.

    http://www.openrce.org/articles/full_view/29

    ReplyDelete
  11. @Adsız
    Su anda bu teknolojiyi sadece VIPRE tarafindan kullaniliyor ancak buna benzer daha yavas calisan CPU Emulation tekniklerini Panda ve Symantec kullaniyor.

    Evet VIPRE motoru uzerinde kendi generic ve heruistic imzalarimizi gelistirecegiz. Tabi bunlar gunde 5-7 GB malware indexleyen sunbelt imzalarinin yaninda cok az kalir. Sandbox'lar ozel network'lar malware toplamada kullanilacagi gibi kullanicilarimizin da rapor edebilmesi icin sistem hazirlayacagiz. Tesekkurler.

    ReplyDelete
  12. "MX-V CPU emulation" CPU destekli bir teknoloji mi? yani MX-V nin çalışması için CPU nun VT-x / AMD-v gibi virtualizasyon teknolojisini desteklemesi gerekiyor mu?

    ReplyDelete