Zararlı Yazılım Analiz Teknikleri - Gais Security- Gais Siber Güvenlik Teknolojileri

Zararlı Yazılım Analiz Teknikleri

Bu yazımızda zararlı yazılımların analizinde izlenilen tekniklere değineceğiz. Bu yazı giriş seviyesinde olup, her tekniğin detaylı şekilde, görselleştirilerek, örnekler üzerinden incelenmesi gereklidir.

Zararlı Yazılım Nedir?

Zararlı yazılımlar, yazılma amacına göre çeşitli türlere ayrılırlar. Truva atı, solucan, rootkit, scareware, fidye ve casus yazılım gibi kullanıcıya, bilgisayara veya ağa zarar veren herhangi bir yazılım, zararlı yazılım olarak adlandırılır.

Zararlı Yazılım Analiz Teknikleri Nelerdir?

Zararlı yazılımlar üç temel analiz tekniği üzerinde incelenmektedir. Bunlar statik, dinamik ve hybrid analiz olarak adlandırılırlar. Ayrıca son yıllarda popülerleşen bellek analizi de bu teknikler arasına dahil edilmiştir. Statik analiz, zararlının çalıştırılmadan, hızlı bir şekilde hakkında bilgi toplanmasına verdiğimiz isimdir. Statik analiz sayesinde elimizdeki dosyanın zararlı olup olmadığını, dosya hakkındaki birtakım bilgileri hızlı bir şekilde öğrenebiliriz fakat zararlının gerçek amacını tam olarak öğrenemeyiz. Bu aşamada devreye dinamik analiz girer (dinamik analiz, davranışsal analiz olarak da bilinir). Zararlı yazılımın çalıştırılarak sistem üzerindeki etki alanı, gerçekleştirdiği işlemler, oluşturduğu işlemler, komuta kontrol sunucusu gibi IP adresleri hakkında bilgiler edinebiliriz. Dinamik analiz sırasında uygulanan tekniklerde tersine mühendislik konusuna da hakim olmamız gerektiği ve zararlıyı çalıştırdığımız ortamın bize ve ağa zarar vermemesi için tamamen izole olması gerektiği unutulmamalıdır. Hybrid analiz ise statik ve dinamik analizin bir arada gerçekleştirilmesi ile yapılan analiz tekniğidir. Diğer bir analiz türü olan bellek analizi zararlı yazılım bulaşmış sistemin ram imajı içerisinde zararlı hakkında araştırma yapılan analiz tekniğidir. Zararlı yazılımın tanımlanmasına ve enfekte olmuş sistemde yaptıklarını açıklamaya yardımcı olur. Ayrıca günümüzde malware analizini otomatize hale getiren sandbox adı verilen sistemler bulunmaktadır. Sandboxlar zararlıların statik ve dinamik analizini otomatize şekilde gerçekleştirirler ve rapor sunarlar. Ne yazık ki bir kaç tane sandbox yazılımı hariç çoğu sandbox yazılımı işletim sistemi içerisinde çalıştırdığı çeşitli ajanlar yüzünden (bunlar event/network monitoring ajanları, sanallaştırma servisleri vs. olabilir) kolayca anti analiz tekniği geliştirilebilir. Yani karşımızda güncel bir zararlı çıktığında bu sistemlerde her ne kadar anti anti analiz(anti anti analiz metotları, zararlı yazılımların analizi zorlaştırmak için kullandığı anti analiz metotlarını atlatmak için kullanılan yöntemlerdir.) yöntemi olursa olsun çalışmayacaktır. Bu durumda manuel analiz işlemlerine başlamamız gerekir. Yazının devamında statik analiz, dinamik analiz ve bellek analizi tekniklerine değineceğiz.

Zararli Yazilim Analizi Teknikleri

Temel Statik Analiz

Statik analizde kullanılabilecek ilk araç olan virüstotal, elimizdeki zararlı yazılımın imza tabanlı araştırmasını yapabileceğimiz bir platformdur. Yazılımın daha önceden bir imza veri tabanında bulunup bulunmadığını kontrol edebiliriz. Ardından yazılımın içerdiği stringlere bakarak hangi kütüphaneleri, DLL'leri vs. kullandığını görebiliriz. Zararlı yazılım yüksek ihtimalle paketlenmiş veya obfuscation (kod karmaşıklaştırma) yapılmış olarak karşımıza gelecektir. Bu nedenler içerisinde unpackera ait kodlar dışında mantıklı bir string göremeyeceğiz. Packerlar PE (Portable Executable) dosyaları sıkıştırmak için kullanılır. Böylece yazılım kodlarını gizleyebilir. Yazılımı analiz edebilmek için öncelikle paketten çıkarılması gerekir. Packerlar ve PE dosya yapısı hakkında daha detaylı bilgi almak için bu yazıyı takip edebilirsiniz. Yazılımın hangi packer (paketleyici) kullanılarak paketlendiğini bulmak için PEiD, DiE(Detect it Easy) gibi toolları kullanabiliriz. Ardından paketinden çıkarmak için unpackerlar araştırabiliriz. Paketten çıkardığımız yazılımımızı PEstudio aracında tarayarak indikatörlerini inceleyebiliriz.

IDA Pro gibi herhangi bir disassembler kullanarak kullanarak yazılımın assembly kodlarını okuyabiliriz ve anlamlandırabiliriz. Burada assembly programlama hakkında bilgi sahibi olmanız önem arz eder.

Temel Dinamik Analiz

Elimizdeki zararlı yazılım için uygun bir unpacker bulamadıysak bunu manuel olarak x86 dbg yardımıyla yapabiliriz. Zararlı yazılım çalıştırıldığı zaman belleğe unpack edilerek yüklenecektir. Bellekteki zararlı dosyası dump edildiğinde elimizde unpacked hali bulunacaktır. Elbette çoğu zararlı yazılım geliştiricisi anti dump tekniklerini kullanmaktadır. Bu tekniklere ve atlatma yöntemlerine başka bir yazımızda detaylı olarak değineceğiz. Dinamik analiz işlemini gerçekleştirirken elimizdeki zararlı PE dosyasını çalıştıracağımız için bu ortamın izole olması gerekmektedir. Aksi halde kendi sistemimize veya ağda bulunan sistemlere büyük zarar verebiliriz. Dinamik analiz yapmak için kullanmak üzere iki sanal makine yeterli olacaktır. Zararlının internet üzerinde yaptığı işlemleri ve komuta kontrol sunucuyla yaptığı haberleşmeleri görebilmek için bu gereklidir. Bunlardan birisi linux, herhangi bir sistem diğeri ise zararlının çalıştırılacağı işletim sistemi olmalıdır. Sanal makinaların ağ konfigürasyonları şu şekilde olmalıdır: Linux makine üzerindeki iki ağ kartı tanımlanmalı ve birisi NAT diğeri VM1 ağı olacak şekilde yapılandırılmalıdır. Zararlının çalıştırılacağı işletim sistemi üzerinde VM1 ağı tanımlanmalıdır. Böylece eğer zararlı yazılım internet üzerinden işlemler gerçekleştirecek olursa linux makinemizdan  iNetSim aracı ile dns spoof ederek oluşturduğumuz network simülasyonu ile internet trafiğini Wireshark aracı ile monitör edebiliriz veya internet kontrollerini atlatabiliriz. Ardından kullanılabilecek araçlardan biri olan Process Monitor, üzerinde filtre ayarlarında zararlının process name veya process ID'sini filtre olarak ekleyerek kayıt defteri, dosya sistemi değişikleri ve sistem üzerinde yaptığı tüm işlem ve değişikleri görebiliriz. Diğer bir araç olan Process Explorer’ı kullanarak zararlı yazılımın import ettiği DLL'leri, kullandığı API'leri görebiliriz. LordPE aracını kullanarak zararlının PE header ve sectionlarını görebiliriz. Ayrıca manipüle ederek yeni bir section oluşturabiliriz. Regshot kullanarak zararlının çalışmadan önceki ve çalıştıktan sonraki bellek dökümünü karşılaştırabiliriz.

Bellek Analizi

Daha çok adli vakalarda karşımıza çıkan bellek analizi zararlı yazılım analizinde de kullanışlı ve çeşitli faydalar sağlayan bir tekniktir. Kısacası enfekte olmuş bilgisayarın o anki ram imajı alınmasıyla çeşitli araçlarla incelenmesidir. İçerisinde zararlı yazılım çalıştığı tespit edilen veya incelenmek üzere zararlı yazılım çalıştırılan bilgisayarın bellek imajını almak için Win32dd / Win64dd, Memoryze, DumpIt , FastDump gibi araçları kullanabiliriz. Ardından elde ettiğimiz bellek imajı üzerinde memory forensic gerçekleştirirken Volatility, Memoryze gibi araçları kullanabiliriz. Volatility aracı bellek imajı analizi için python ile geliştirilmiştir. Bu araç sayesinde imajı alınmış belleğin içerisinde o anki çalıştırdığı processleri, sistemde çalıştırılan komutlar, bağlı olduğu ağ, dökümanlar, tarayıcı geçmişi gibi bilgiler elde edilebilir. Bu incelemeler yapılırken elde edilen verileri, analizi gerçekleştiren kişi tarafından doğru anlaşılıp yorumlanabilmesi ve raporlanması önemlidir. Böylece zararlı yazılımın arka planda gerçekleştirdiği işlemleri, kullandığı enjeksiyon tekniklerini, değişiklik yaptığı, oluşturduğu dosyaları ve processleri  görebiliriz. Volatility aracında connscan komutu ile bağlantıları, pslist komutu ile ramde o an çalışmış olan processleri görebiliriz ayrıca processin dumpını alabiliriz. Daha sonraki yazımızda örnek bir vaka üzerinde bellek analizi gerçekleştireceğiz ve her aşamada zararlı yazılım hakkında toplanabilecek bilgilere detaylı bir şekilde bakacağız. Volatility hakkında daha detaylı bilgi için burayı ziyaret edebilirsiniz.


Editor 15.02.2020