Giriş: Zararlı Kod Analizi

Zararlı Yazılımlar (virus, worm, rootkit vb.) komplike saldırılarda yer alan en önemli unsurlardan biridir. Özellikle APT (Advanced Persistent Threat) adı verilen ve bir çok farklı vektörün kullanıldığı saldırılarda “Zararlı Yazılımlar” saldırgan tarafından kullanılan vazgeçilmez araçlardandır.

Zararlı Yazılımlar, çoğunlukla organize suç şebekeleri tarafından konu hakkında ileri seviye bilgisi olan kişilere hazırlatılmaktadır. Hedefe yönelik hazırlanan zararlı yazılımlar, belli bir amaca ulaşabilmek için çeşitli güvenlik mekanizmalarını atlatabilmelidir.

Bu durum, zararlı yazılımların içerisinde kullandıkları teknik ve yapıların karmaşık olduğu anlamına gelmektedir. Bu neden zararlı kod analizi zor ve meşakatli bir iş olmakla birlikte, ileri seviye teknik bilgi gerektirmektedir.

APT ve Hedef

HIKIT, Mandiant tarafından keşfedilen ve uzaktan sistemin kontrolünü ele geçirmeye yarayan bir tür zararlı yazılımdır. HIKIT, gelişmiş bir zararlı yazılım olan ve işlevselliğini tamamen çekirdek seviyesinde gerçekleştiren istihbarat toplama amaçlı bir yazılımdır.

Burada ilginç olan bu zararlı yazılımın “istihbarat” amacının tamamen Amerika Birleşik Devletleri Savunma Bakanlığının anlaşmalı/müteahhit firmalarına ait verilerin toplanmasıdır. Aralarında SBIR/STTR listesinde yer alan bazı firmalarında bulunduğu organizasyonlar hakkında çeşitli verilerin toplanmasına yönelik faaliyetler yürütmektedir.

Teknik Analiz

HIKIT üzerinde teknik analiz yapmak için elimizde sadece “oci.dll” isimli tek bir obje var. “oci.dll” isimli dosyanın herhangi bir sıkıştırılma sürecinden geçmediğini teyit ettik. Bu obje üzerinden gittiğimizde karşımıza mevcut çalıştırılabilir dosya içerisinde farklı isimlerde dosya olduğunu görüyoruz. Öncesinde zararlı yazılımın içerisinde bulunan ilginç bir "string" veri dikkatimizi çekiyor.

h:\\JmVodServer\\hikit\\bin32\\RServer.pdb

Yukarıdaki veri, zararlı yazılımı geliştiren kişinin bilgisayarında bulunan ve zararlı yazılıma ait "debug" sembolleri içeren dosyadır. Zararlı yazılıma geliştirici tarafından verilen isimin "RServer" olduğunu ve geliştiricinin bilgisayarındaki lokasyonu görebiliyoruz. Bu bilgiden sonra zararlı yazılımın geliştirilme sürecine ait adımlar aşağıdaki gibidir.

  • Zararlı yazılım ilk adım olarak bir “dropper” sayesinde “oci.dll”  isimli dosyayı yükler.
  • DLL imzalanmış (driver) modülü sisteme çekirdek (kernel-level) seviyesinde yükler.
  • Çekirdek (kernel-level) seviyesinden yüklenen modül saldırgandan komut bekler.

image003

Yukarıdaki adımların nasıl gerçekleştiği şekilde görüntülenmiştir. Kullanıcılara çeşitli yollarla bulaşan zararlı yazılım “proxy” arkasından bağlanan saldırgan ile haberleşmeyi beklemektedir.

Tüm bu süreçlerin ardından elimizde bulunan veriler ile analiz işlemine başlayabiliriz. Herşeyden önce çalıştırılabilir dosya hakkında en temel bilgilere ihtiyacımız var. Tüm bunları gerçekleştirmek için zararlı yazılımı, en temel adımlardan başlayarak analiz etmeye başlayabiliriz.

image004

Yukarıdaki resimde görüldüğü gibi “oci.dll” dosyası “w2fw.sys” isimli bir dosya barındırıyor. Böylece zararlı yazılımın bir rootkit içerdiğini daha net olarak görebiliyoruz. Rootkit yazılımları çekirdek seviyesinde çalışmaktadır analiz süreci diğer (use-mode) zararlı yazılımlara kıyasla daha zordur.

image005

Kod İmzalama Mekanizması

Aşağıdaki aktivitelerden bahsetmeden önce bilinmesi gereken konu kod imzalama (code signing) mantığıdır. Microsoft, çekirdek (kernel level) seviyesinde çalıştırılacak modüllerin güvenilir olduğunu belirlemek için kod imzalama denen tekniği kullanır. Bunun anlamı çekirdeğe yüklenen modülün güvenilir bir modül olduğunu ve onaylandığını bildirmektir.

image006

Analiz süreincde rastladığımız ilginç olay, *.inf uzantılı dosyaların, GlobalSign sertifikaları sayesinde imzalanmış olmasıdır. GlobalSing 2011 yılında bir “hack” iddiası ile gündeme gelmiştir. Sunucularından sertifikarların çalındığı şüphesi ile hizmetlerini bir süreliğine durdurmuştur. GlobalSign hakkında “hack edildi” iddiaları 2011 Eylül ayı başlarında çıkmıştır, mevcut dosyanın “timestamp” bilgileri incelendiğinde dosyanın son derlenme tarihi olarak Ekim ayı işaret ediliyor.

image007 image008

Rootkit sınıfında incelenen bu zararlı yazılımın kernel seviyesinde işlem gördüğünü belirtmiştik. Bilindiği gibi inf uzantılı dosyalar, driver yazılımlarının nasıl kurulacağı bilgisini içermektedir. GlobalSign sertifikalarının zararlıya implement edildiği bilgisi elimizde olduğuna göre,  zararlı yazılımın kernel-level işlem yürütebilmek için kendisini imzalı olarak sisteme eklediğini görebiliyoruz.

image009

Zararlı yazılım Register defteri içerisinde çeşitli kayıtlar veya modifikasyonlar yapabilmek adına yukarıda görüldüğü gibi bir fonksiyon barındırmaktadır. Bu işlev tamamlandığında enfeksiyon süreçlerine ait diğer rutinler işletilmeye başlamaktadır.

image010

Zararlı – Saldırgan Komünikasyonu

Zararlıyı incelemek için açtığımızda bu bilginin yanı sıra daha ilginç veriler elde etmiş oluyoruz. Örneğin, zararlı yazılım, enfeksiyon süreçlerini tamamladığında dışarıdan gelecek komutlar için saldırgan ile bir bağlantı kurabiliyor.

image011

Yukarıda görülen “disassembly” çıktısı saldırganın hedef sisteme bağlanması için işletilen rutine aittir. Bağlantının tamamlanabilmesi için bir takım süreçlerin işletildiğini görüyoruz. Eğer bağlantı kurulduğunda gelen paketler içerisinde belli bir anahtar kelime varsa  saldırganın bağlanması süreci tamamlanıyor.

Daha teknik olarak zararlı yazılım, gelen packetleri monitör edebilmek için kendisini NDIS-Level yüklemekte ve bir “sanal network adaptor” olarak sisteme eklemektedir. Böylece tüm network’e gelen paketleri dinleyerek gelen paketler arasında belli bir “pattern” arar.

Bu bağlanma süreci esnasında saldırgan 80 ve 443 numaralı portlar üzerinden hedef ile bağlantı kuruyor. Firewall kuralları içerisinde  80 (HTTP) ve 443(HTTPS) portları izin verilmiş portlar arasında yer alır. Bu durum, zararlının firewall yazılım veya cihazlarını by-pass ederek hedefe erişim sağlayabilmesi anlamına gelir.

Bu aşamada ilginç olan şey zararlı yazılımın herhangi bir (command and control) sunucuya ya da saldırganın makinesine bağlantı kurmuyor olması. Bunun yerine HIKIT bulaştığı makine üzerinde tüm ağı monitor ederek belli bir anahtar kelime gelmesi durumunda saldırgan ile bağlantı kuruyor.

Söz konusu rutinlerin hangi değerleri aldığı ve nereye gittiği konusunda görsel bir sonuç elde edebiliriz. Aşağıda görülen şekilde hangi fonksiyonun -- hangi sonuca gittiği daha net olarak görülebilmektedir. Buna göre bağlantının kurulması işleminde hangi rutinlerin etkili olduğu bilgisi bu diyagramda mevcuttur.

image012

Zararlı yazılım uzaktan erişim için bağlantı kurduğunda bir kaç komutun işletilmesine izin veriyor. Bu tanım sadece zararlının işlettiği komutlar içindir ve saldırganın hedef üzerinde işleteceği komutlar işletim sisteminin tanımladığı komutlardır. Makine kodu içerisinde ilerleken bağlantı kurulduktan sonra işletilecek komutlar arasında rastladığımız “shell” komutu uzaktaki makine üzerinden bir komut satırı açmaya olanak sağlıyor.

image013

Bunun anlamı işletim sistemi üzerinde sıradan veya yetkili bir kullanıcının işletebileceği tüm komutları, saldırgan işletebilmesi için sisteme yüklediği arka kapıya direktif verebilir. Kısacası saldırgan için bir “command prompt” açarak sistem üzerinde amacı doğrultusunda komut çalıştırabilir.

image014

Aşağıda görülen ”file” komutu çalıştırıldığı anda driver ile iletişim halindedir. Saldırgan bu sayede dosya okuma, dosya izinlerini değiştirme, dizin oluşturma ve dizin listeleme işlemlerini gerçekleştirebilir. Böylece zararlı, enfeksiyon süreçlerini tamamladığında saldırgan sisteme tam yetki ile erişim sağlamayı başarabilir.

Yukarıdaki “disassembly” daha önce bahsedilen işlemlerin yapılmasıyla ilişkilidir. Zararlının bir başka özelliklerden biri ise saldırganın SOCKS5 yani bir proxy üzerinden bağlantı kurabilmesi özelliğidir.

image015

Disassembler ile zararlının incelenmesi aşamasında gözümüze çarpan bu özellik, saldırgan proxy üzerinden bağlantı kurabilmek için zararlının içerisine gömdüğü bir fonksiyondur. Böylece iletişimin daha güvenli belirsiz hale gelerek saldırgan hakkında iz sürmek zorlaşmaktadır.

Aşağıda programa ait "string" veriler mevcuttur, yazının en başında elde edilen bazı veriler burada bulunmaktadır. Programın içerisinde barındırdığı tüm "string" değerlere aşağıdaki analiz raporundan ulaşabilirsiniz.

1-1

1-2

1-3 1-4 1-5 1-6

Sonuç

Mandiant tarafından yayınlanan ve tespit edilen bu zararlı yazılımın, APT saldırısının bir parçası olduğu neredeyse kesindir. Amacinin tamamen istihbarat toplamak olduğu ve ABD Savunma Bakanlığı ile anlaşmalı olan firmalar hakkında bilgi toplamak olduğu belirtilmiştir. HIKIT bulaştığı sistemde tamamen kalıcı olmak ve  bu sure zarfında sistemleri saldırganın kölesi haline getirmek üzere programlanmıştır. APT saldırılarının benzeri örnekleri günümüzde gittikçe artmaktadır. Daha önce bahsedildiği üzere NDIS Driver seviyesinde bir zararlının ve hizmet ettiği APT saldırısının tespiti oldukça zordur.

Yukarıda bahsedilen ve saldırganın belli bir “pattern” doğrultusunda sisteme bağlantı kurabilmesine yarayan teknik oldukça eski olmak ile birlikte tespiti zordur. Bu tip bir saldırının tespitinin yapılabilmesi bazı durumlarda “network trafik analizi” ile mümkündür. Analiz boyunca görüldüğü gibi Firewall, Anti-virüs gibi yazılım veya cihazların bu tip ataklar karşısında yetersiz kamıştır.

Bu ataklardan mağdur olan kurumlar ve güvenlik ürünleri geliştiren firmalar durumun farkındadır. Firewall, anti-virüs gibi klasik güvenlik ürünlerinin yanı sıra kurumların APT ataklarının tespitine yönelik daha farklı çözümlere yönelmeye ehemmiyet göstermelidir.

Attachment :pdf HIKIT Zararlısı Analizi

 image002

 

Yasin SÜRER
Bilgi Güvenliği Uzmanı
yasin.surer@boateknoloji.com