PE(Portable Executable) Dosya Formatı Üzerinden Malware Analizi

Ahmet PAYASLIOĞLU
3 min readAug 15, 2020

Değerli okuyucular Merhaba, Ben Ahmet Payaslıoğlu.

Bu yazımda PE Dosya formatı üzeriden nasıl malware analizi yapabileceğimizi anlattım. Kali Linux üzerinden trojen oluşturduktan sonra, oluşturduğumuz bu trojeni farklı ortamlarda analiz edeceğiz. PE dosyaları üzerinden , bu yazılımın zararlı olup olmadığına dair ipuçları elde edeceğiz.

Portable Executable (kısaca PE), Windows’ un çalıştırılabilir dosya formatıdır. Dosya formatları , programların fonksiyonlarla alakalı bir takım bilgileri analiz yapan kişiye sunabilmektedir. PE dosya formatı Windows executable ve DLL dosyaları tarafından kullanılabilmektedir. PE dosyaları başlık bilgileri ile başlar ve bu başlık bilgileri program için gereken kütüphane fonksiyonlarını uygulama tipleri gibi bilgileri içermektedir.

Bağlı kütüphaneler ve fonksiyonlardan yararlanılarak analiz için bilgiler edilebilir. PE dosya başlığı program tarafından yüklenen kütüphane ve fonksiyonlar ile alakalı bilgileri tutar.

DLL Dosyaları Ne İşe Yarıyor?

Windows işletim sisteminde programların sorunsuz bir şekilde çalışabilmek için ihtiyaç duyduğu öncelikli dosyalar, “yürütülür dosya” veya “program dosyası” denilen dosyalardır. Yürütülür dosyalar, “.exe” uzantılı dosyalardır.

Örneğin; iexplore.exe dosyası, Internet Explorer tarayıcısını başlatmanızı sağlayan yürütülebilir dosyadır.

Dll dosyaları ise Windows işletim sistemine ait programlar için birer fonksiyon kütüphanesidir. Programlar bu kütüphaneleri gerektiğinde kullanarak programlandıkları işleri yerine getirirler. Eğer kullandığınız programların ihtiyaç duyduğu dll dosyaları (dinamik bağlantı kütüphaneleri) eksikse ya da hasarlıysa “Dll dosyası bulunamadı“, “Dll dosyası hasarlı ya da eksik” gibi hatalar ile karşılaşırsınız.

Şimdi Kali Linux üzeriden msfvenom aracı ile trojen oluşturalım.

Oluşturduğumuz bu trojeni Dependency Walker programı ile analiz edeceğim.

Oluşturduğum trojeni Dependency Walker programı ile açıyorum.

Karşıma bir takım DLL dosyaları geldi. DLL dosyalarını incelediğimizde ağ bağlantısı için WS2_32.DLL yi kullandığını gördüm.

Sonrasında DLL’leri biraz daha inceledikten sonra , şifreli bağlantı için CRYPT32.DLL kullandığını farkediyorum.

Biraz daha aşağılara indiğimizde, komut çalıştırmak için SHELL32.DLL ‘yi kullandığını gözlemliyorum.

Sonrasında trojeni farkı bir ortamda incelemek için Remnux üzerinden analiz yapmaya devam ediyorum.

Zararlı kod Remnux tarafından pescanner aracı ile incelediğimde aşağıdaki gibi bir çıktı elde ediyoruz.

Çıktıda şüpheli DLL dosyaları ve bu DLL’lerin kullandığı fonksiyonlara ait bilgiler gösterilmiştir. CreateFileA , CreateFileW fonksiyonları dosya okuma ve yazma işlemleri için , connect , closesocket fonksiyonları ağ bağlantısı açıp kapatmak için , GetVersionExA işletim sistemi versiyonun öğrenilmesi için , GetCommandLineW komut satırından komut çalıştırmak için, LoadLibraryA kütüphane yükleme işlemi için , TerminateProcess süreç sonlandırmak için kullanılan fonksiyonlardır. Araç bu fonksiyonları şüpheli olarak yorumlamıştır.

Kaynaklar

1

2

--

--