Zararlı yazılımların keşfedilmesi, analiz edilmesi ve engellenmesi, siber güvenlik alanında temel bir gerekliliktir. Bu noktada, farklı araçlar ve teknikler geliştirilmiştir ve bu araçlar, zararlı yazılımların doğasını anlamak ve savunma stratejilerini güçlendirmek adına önemli bir rol oynamaktadır. Bu yazıda, zararlı yazılım analizinde kullanılan çeşitli araçları ve bu araçların nasıl kullanılabileceğini inceleyeceğiz.
ApateDNS
ApateDNS, DNS cevaplarını kontrol etmek için kullanılan bir araçtır. GUI (Grafiksel Kullanıcı Arayüzü) sunar. Sahte bir DNS sunucusu gibi davranarak DNS cevaplarını toplar. Makinenin 53. portunu dinleyerek DNS cevaplarını yakalar.

DNS cevabının alınacağı IP adresini “DNS reply IP” kısmından, arayüzü de “Interface” kısmından seçtikten sonra “Start Server” butonuna tıklandığında arka planda dinleme işlemi başlatılır. Ayrıca, aynı verileri Wireshark’tan da alabiliriz, ancak ApateDNS’in ek bir özelliği vardır: NXDOMAIN.
NXDOMAIN seçeneği, yazılımın yanıltılmasını sağlayarak depolanan diğer alan adlarını da toplamamıza olanak tanır. Bazı kötü amaçlı yazılım geliştiricileri, kötü amaçlı yazılımın çalışması için ilk önce belirli alan adlarına erişilmesi gerektiğini belirtirler. Bu durumda, NXDOMAIN’i etkinleştirerek ilk alan adına erişimi engelleyebilir ve ikinci alan adını görüntüleyebiliriz.
Autoruns
Autoruns, Microsoft’a ait bir araçtır. Zararlı yazılımlar genellikle kalıcılık sağlamak için kayıt defterinde değişiklik yapar veya başlangıç uygulamalarında değişiklikler yapar. Autoruns, bu tür değişiklikleri taramak için kullanılır ve sonuçları bir liste halinde sunar. Autoruns aracılığıyla bu değişiklikleri görüntüleyebiliriz.

Burp Suite
Burp Suite genellikle penetrasyon testi için kullanılır, ancak bu alanda da kullanılabilir. Zararlı yazılımda kullanılan alan adlarına yöneltilen istekler üzerinde oynama yaparak Command Control noktasından ek bilgiler almak mümkündür.
CFF Explorer
CFF Explorer, PE (Portable Executable) başlığını düzenlemek için kullanılan bir araçtır. PE dosyalarını incelemek, düzenlemek ve analiz etmek için kullanılır. PE dosyalarını ayrıştırarak detaylı bir inceleme yapmamızı sağlar.

DOS başlık kısmı, eski DOS bilgilerini içeren PE başlığında bulunur. Bu bilgiler, eski MS-DOS sistemlerinde çalışması için gereklidir. Bu bölümdeki bilgilerle dosyanın hash’inde değişiklik yapabiliriz. Örneğin, e_magic değerini değiştirip yeni dosyayı kaydettikten sonra hash değerinin değiştiğini gözlemleyebiliriz. Özgün dosyanın Virustotal’deki hash değerine bakıldığında, 56 kaynaktan zararlı olarak tanımlanırken, yalnızca küçük bir değişiklik yaparak oluşturduğum yeni dosya, 12 kaynaktan zararlı olarak algılanabiliyor.


Ntheaders kısmında, imza değeri bulunur. Optional header kısmı PE dosyasının formatıyla ilgili bilgiler içerir. Data directories kısmında ise kaynaklar gibi PE dosyasındaki farklı veri dizinleri hakkında bilgiler bulunur.

Section header kısmında, PE dosyalarının bölümleri ve bu bölümlerin bellek kullanımı gibi bilgiler yer alır. Örneğin, UPX ile sıkıştırılmış bir zararlı durumunda, section header kısmında UPX olarak gösterilir.
Import directory kısmında, içe aktarılan DLL’lerin listesi yer alırken, adres dönüştürücü kısmı, bellek adreslerini farklı formatlarda göstermek için kullanılır.
Diğer kısımları ayrı araçlarla inceleyeceğimiz için şu anda detaylandırmıyorum.
Dependency Walker
Dependency Walker, DLL’leri ve bu DLL’ler tarafından içe aktarılan fonksiyonları incelemek için geliştirilmiş bir statik analiz aracıdır.

Programın sol üst köşesinde, dosya adı ve çalışan DLL’ler listelenmiştir. Buradan bir DLL seçildiğinde, sağ tarafta seçilen DLL’nin içe aktardığı fonksiyonlar listelenir. Bu bölüm detaylı bir şekilde incelenerek zararlı yazılımın amacı anlaşılabilir. Hemen altındaki kısımda ise bu DLL’nin içe aktarma olasılığı bulunan fonksiyonlar listelenir; bu kısım daha az önemlidir.
Alt kısımdaki ilk bölüm, zararlı bir program çalıştırıldığında yüklenecek DLL’leri gösterirken, ikinci bölüm ise programın çalıştırılması durumunda verebileceği hataları listeler.
Hex Editors (010 Editor)
Hex editörleri, dosyanın içerdiği ikili verileri görüntülememizi ve üzerinde değişiklik yapmamızı sağlayan araçlardır. Birçok hex editörü mevcuttur; bunlar ücretli veya ücretsiz olabilir. Ben, Flare VM’de bulunan 010 Editor aracını kullanacağım. Programı açtıktan sonra “Open File” ile dosyayı seçtikten sonra dosyanın ikili içeriğini görüntüleyebiliriz ve üzerinde değişiklik yapabiliriz.

010 Editor üzerinden eklediğim zararlı yazılımı incelediğimde IOC’lere (Indicators of Compromise – Saldırı Belirtileri) rahatlıkla erişebiliyorum ve bu IOC’leri değiştirebiliyorum. Örneğin, görselde “www[.]practicalmalwareanalysis[.]com/updater.exe” adresini ve “winup.exe” gibi değerleri görebiliyoruz. Bu bilgiler üzerinde detaylı arama yaparak malware hakkında daha fazla bilgiye ulaşabiliriz.
IDA Pro
En çok kullanılan malware analiz araçlarından biridir ve tersine mühendislik için özel olarak geliştirilmiştir. Derlenmiş programların makine kodunu analiz etmek amacıyla kullanılır. Derlenmiş kodu anlaşılabilir bir formata getirmek için disassemble (çözümleme) işlemi yapar. Kodu daha anlaşılır hale getirmek için ücretli Hex-Rays decompiler eklentisi de mevcuttur.

Eğer assembly dilini bilmiyorsanız, IDA Pro’nun auto comment özelliği bulunmaktadır. Options > General seçeneğine gittiğinizde auto comment’i etkinleştirebilirsiniz.
Uygulamayı açtıktan sonra zararlı yazılımı seçtiğinizde, IDA view’da assembly dilinde ve grafik modunda bir ekranla karşılaşırsınız. Varsayılan olarak, genellikle main fonksiyonu gösterilir ancak sol tarafta listelenen fonksiyonlardan biri seçildiğinde, o fonksiyon assembly dilinde gösterilir.
Üst kısımda bulunan diğer sekmeler arasında Hex-View bulunur. Bu bölüm, daha önce gördüğümüz hex editör aracıyla benzer bir işlevi yerine getirir. 010 Editor gibi bir dosyada değişiklik yapamazsınız, ancak içeriği görüntüleyebilirsiniz. Structures sekmesinde veri yapılarını inceleyebilir ve gerektiğinde kendiniz de veri yapıları ekleyebilirsiniz.

Imports sekmesinde, içe aktarılan fonksiyonlar listelenir. Export kısmı ise dışa aktarılan fonksiyonları gösterir. DLL dosyalarının analizinde bu bölümler oldukça yararlı olabilir.
NetCat
Netcat, belirli portları dinleyerek zararlı yazılımın iletişim kurduğu domain ve IP adreslerine erişmemize olanak sağlayan bir araçtır. nc -l -p 80
komutunu kullanarak 80 numaralı portu dinleyebiliriz. Zararlı yazılımlar genellikle 80 veya 443 portlarını tercih eder çünkü bu portlar genellikle engellenmez ve giden trafik izlenmez. Bu nedenle, bu portları dinleyerek zararlı yazılımların iletişim kurduğu hedefleri belirleme ve analiz etme imkanı sağlar.
PDFParser
PDFParser, PDF dosyalarını analiz etmek ve içeriğini çıkarmak için kullanılan bir araçtır. Bu araç, PDF dosyalarını parçalayabilir ve içlerinde gömülü bağlantıları listeleyebilir.
Örneğin, aşağıdaki komutla dosya içinde belirli bir kelime arayabilirsiniz:
pdf-parser -s "kelime" "dosya.pdf"
Ayrıca, hash oluşturmak için aşağıdaki komutu kullanabilirsiniz:
pdf-parser -H "Malware Analiz.pdf"
Eğer tüm komutları görmek isterseniz, -h veya –help komutunu kullanarak bütün komutları görüntüleyebilirsiniz.
PEID
PEiD, paketlenmiş zararlı yazılımların analizi için kullanılan bir araçtır. İçerdiği veritabanı imzalarıyla, verilen dosyanın imzalarını karşılaştırarak dosyanın şifrelenip paketlenip paketlenmediğini tespit eder. Bu sayede zararlı yazılımların paketlenme veya şifreleme uygulamalarını belirlemede yardımcı olur.

Regshot
Regshot, kayıt defterinin bir önceki durumunun snapshotını alarak ve ardından bir işlem yapıldıktan sonra kayıt defterinin son durumunun snapshotını alarak bu iki durumu karşılaştırmanıza olanak sağlayan bir araçtır. Bu şekilde, sistem üzerinde yapılan değişiklikleri belirleyebilir ve izleyebilirsiniz. Bu araç, bir sistemdeki değişiklikleri izlemek ve analiz etmek için sıklıkla kullanılır.

Strings
Strings, bir programın binary verilerini incelemek için kullanılan bir statik analiz aracıdır. Ancak, eğer bir program paketlenmiş veya şifrelenmiş durumdaysa, strings kullanışsız olabilir veya az bilgi sağlayabilir.
Kullanımı oldukça basittir: strings Dosya_adı

Bu komut, dosyanın içindeki metin dizelerini bulup gösterir. Ancak, elde edilen sonuçlardan anlamsız veya gereksiz olanları göz ardı ederek devam edersek, programın içindeki fonksiyonları ve IOC’leri belirleme şansına sahip olabiliriz. Bu şekilde, zararlı yazılımların veya programların içindeki önemli bilgilere ulaşabilir ve analiz edebiliriz.
TOR
Tor ağını kullanarak trafiği yönlendirirken, her bir adımda şifreleme ve farklı bir Tor düğümü üzerinden geçirme işlemi yapıldığı için kullanıcıların internet aktiviteleri daha gizli hale gelir. Bu nedenle, zararlı yazılım analizi gibi durumlarda, erişilen IP adresleri veya domainlere erişirken gizlilik sağlamak için Tor gibi araçlar kullanılabilir.
Wireshark
Wireshark, ağ trafiğini analiz etmek için kullanılan bir araçtır. Zararlı yazılımların dinamik analizi sırasında, malware çalıştırıldıktan sonra Wireshark üzerinden gönderilen paketleri inceleyerek zararlı yazılım hakkında bilgi toplamak mümkündür.

Örneğin, “cybershieldcommunity” domain adresine istek atan bir program çalıştırdım, görselde Wireshark’ın DNS filtresi ile bu isteği yakaladığını görebilirsiniz. Ayrıca, bu trafiği pcap formatında kaydederek daha sonra analiz etme imkanına sahipsiniz. Bu, belirli bir zaman diliminde gerçekleşen ağ trafiğini kaydederek, daha sonra Wireshark veya başka analiz araçlarıyla detaylı incelemeler yapabilmenizi sağlar.
UPX
UPX, zararlı yazılım geliştiricileri tarafından sıkça kullanılan bir paketleme aracıdır. PEiD gibi araçlarla kontrol ettiğinizde, zararlı dosyanın UPX ile paketlendiğini tespit edebilirsiniz. “upx -d” komutuyla paketlenmiş dosyayı unpack ederek orijinal dosyayı elde edebilirsiniz. Bu şekilde, paketlenmiş dosyanın içeriğini inceleyebilir ve analiz edebilirsiniz.

Referanslar:
Practical Malware Analysis: The Hands-On Guide to Dissecting Malicious Software