Thursday, June 12, 2008

Ntldrbot (Rustock.C)

Geçenlerde bir AntiVirus firması ve bir virüs araştırmacısı, Şeytanın kalbi adını verdikleri ve şimdiye kadar yapılmış en karmaşık rootkitin piyasada olduğunu duyurdular. Antivirüs firması sözkonusu rootkit yazılımının 2006 yılından beri piyasada olduğunu ancak kendi antivirüsleri hariç hiç bir antivirus veya HIPS programının saptayamadığını iddia ediyordu.

Birileri kesin birşeyleri fazla abartıyordu abartmasına ama gündemde bu yazılanlara inananlar artınca güvenlik arenasında konuyla alakalı sıkı bir gündem oluştu.
Israrla bahsini ettikleri Rootkit yazılımının, HIPS programları tarafından da durdurulamadığını iddia ettikleri için, biz de analiz etmek ve AntiLogger’da dahili bulunan HIPS (System Savunma) modülüne yakalanmadan sisteme bulaşıp bulaşamadığını incelemek istedik.

İlk başlarda internette ulaştığımız tüm dosyalar .exe uzantılı ve import tablosu bulunmayan ama aslında driver olan dosyalardı. Bu driverlar da donanım uyumsuzluğu sebeblerinden dolayı sistemimizde çalışmıyordu.

En sonunda iş ortaklarımızdan birinden dosyanın gerçek dropper dosyası elimize geldi ve inceleme fırsatı bulduk.

İlerleyen satırlarda kullandığı yeni tekniklerden bahsedeceğiz ancak konuya geçmeden önce teknik bilgisi olmadığı halde yazımızı okuyacaklar için ilk önce analizimizin sonuçlarını özetlemek istiyoruz.

Ntldrbot, AntiLogger yüklü makinada sertifikasız windows driver yükleme alarmına sebep oldu ve engelleyince aktif olamadı.

Gerek polymorphic yapısında gerekse rootkit yapısında şimdiye kadar hiç kullanılmamış teknikler kullanılmış. Yapılış amacı ise spambot olmak yani bulaştığı makinayı spam göndermek için kullanmak. Yayılmak için ise p2p,torrent, email ne de benzer başka yöntemler kullanmadığı için yayılmamıştır. Kısacası istenilen yere manüel olarak gönderiliyor. Bu durumda Antivirüs üreticilerinin eline geçmeden 2 yıl boyunca saldırılarda kullanılmış olması çok doğaldır.

Polymorphic packer ile oluşturulmuş driver’i unpack etmek gerçekten de işin en zor kısmı. Çünkü kernel’de kullandığı AntiDebug hünerleri ile kernel debugger’lari çalıştırmak ve dinamik analiz yapmak mümkün olmuyor. Kullandığı gelişmiş ve karmaşık polymorphic yapısı ile bazen “mov eax,esp” gibi bir instruction’u 10-15 instruction’a denk gelecek şekilde mutasyona uğrattığı için static analizi de cok zor oluyor. HIPS modülümüzden geçememesinin rahatlığı ile driver’i unpack etmek yerine AntiDebug mekanizmalarını atlatıp WinDbg ile dinamik analize başladık.

Win XP SP2 EN NTFS sistemde calıştırdığımızda GMER hariç aralarında çok büyük firmaların da olduğu en tanınmış 7 AntiRootkit yazılımı ile taratmamıza rağmen hiçbiri birşey bulamadı.

Bunca farklı yöntemlerle tarama yapan çok tanınmış AntiRootkit’ler nasıl olurdu da birşey bulamazdı?

- Çünkü gizli bir dosya, process (uygulama) ya da registry (kayıt) girdisi yoktu. :) İlginç değil mi?

- Dropper çalıştığında %system32%\drivers\ içinde windows’a ait bir driver’a statik olarak bulaşıyor. Sistemde yeni bir driver oluşturmuyor. (Eski win32 virüslerde gördüğümüz pe infection yöntemine benzer şekilde kernel driver’a infect olma durumu)

- Ring3 te herhangi bir uygulama yaratmadığı için gizlenecek bir ProcessId de olmuyor.

- Bulaştığı driver, sistem başlangıcında zaten otomatik olarak başlayan bir driver olduğu için registry’de de herhangi bir başlama anahtarı oluşturmasına gerek kalmıyor.

- Normal win32 api ler kullanılarak infect olan driver okunduğunda ise orjinal driver olarak gözüküyor.

Bu ve buna benzer rootkitlerin tespit edilebilmesi için AntiRootkit’lerin sadece gizli dosya var mı diye bakmaktan bir adım daha ileri gidip, tüm sistem dosyalarının hash’larını ,win32 api ve raw metodları ile bulup kontrol etmesi ve bu iki sonucu karsılaştırması gerekiyor.

AntiVirus’ler raw modda tarama yaptıkları için eğer veri tabanlarında Rustock.C imzası mevcut ise bu dosyayı bulabilirler, ancak silme konusunda dikkatli olmaları gerekiyor. Çünkü sistem dosyası olduğu için, silinmesi sistemin tekrar başlayamamasına sebebiyet verir.

Peki spam gönderme işi de mi ring0 da oluyor ?

Hayır. Aslında bu spambot’un yapımcıları biraz daha uğraşsalar TDI ile bunu da ring0'da yapabilirlermiş ancak onlar winlogon.exe’ye thread inject ederek yapma yolunu seçmişler. Bu haliyle bile günümüzdeki tüm Personal Firewall ları bypass edip geçiyor. Ancak belki Rustock.D de network iletişimi tamamen ring0 da olabilir.

İleride yüksek ihtimalle bu tür zararlıların server-side-polymorphic olanlarını çok daha sık görmeye başlayacağız. İşte o zaman virüs imza veri tabanlı koruma yöntemleri tarihe tam olarak karışacak ve bu tip saldırılardan korunmanın tek yöntemi sezgisel koruma+HIPS+zeki kullanıcı kombinasyonu olacaktır.

Şu an çalışmalarına devam ettiğimiz ve çok yakında piyasaya süreceğimiz Zemana AntiRootkit yazılımımızın ntldrbot,bootkit,bluepill gibi gelişmiş rootkitleri yakalayabileceğinin haberini şimdiden vermek istiyoruz.



3 comments:

  1. bu virüsü tiny watcher durduramazmıydı yada şöyle söyleyeyim farkedemezmiydi bilmiyorum.

    ancak ilginç bir durum var forumlarda sürekli Hips yazılımlarının bunu durduramadığı yazıyor, prosecurity driver yüklemeyi çok kolay bir şekilde tespit edebiliyor, yine program çok kolay bir şekilde debug işlemi yapan uygulamaları saptıyor.

    neyse eğer dediğiniz gibi ise çok ta özel bir virüs kabül edilemez ancak piyasada birçok örneği var ve açıkçası hangisinden bahsediliyor belli değil.

    ReplyDelete
  2. Unpack edebildiniz mi peki ?

    ReplyDelete
  3. tiny watcher'i bilmiyorum ama ProSecurity dijital imza kontrolu yapmiyor ve ntldrbot, windows driver'i yukledigi icin alarm vermeden yuklenebiliyor.

    Dropper(exe)'i unpack ettik ancak driver'i unpack etmedik, driver'i unpack etmek cok uzun zaman alabilirdi o yuzden yazida da bahsettigimiz uzere calisma prensiplerini inceledik.

    ReplyDelete