Finding Malwares by Performing Static Analysis with PeStudio

PeStudio, executable'lar hakkında onları çalıştırmadan da bilgi alabileceğimiz bir analiz aracıdır. PeStudion ile bir malware'in statik analizini yapabiliriz. Statik analiz, bir dosyanın içeriğini ve özelliklerini inceleyerek, dosyanın run time'da yapabileceği hakkında bilgi edinmeye çalışır. Yazılımın kod ve veri yapılarını inceleyerek yapılan bir analiz çeşididir.

Bir PE, temel olarak aşağıdaki bileşenlerden oluşur ve PeStudio ise bu bileşenleri inceler.

PeStudio, kurulum gerektirmeyen bir yapıdadır. Aşağıdaki linkten indirebiliriz. https://www.winitor.com/download

İndirmemizin ardından dosyamızı seçerek analize başlayabiliriz.

Şimdi gerçek bir zararlı kullanarak PeStudio ile bu zararlının statik analizini yapalım.

Executable dosyamızı PeStudio'ya import ettiğimizde genel tab'da direkt olarak bu dosyanın ilk byte'ının hex formatında 4D 5A olduğunu görüyoruz. Text olarak ise MZ'ye denk gelmektedir. Bu da, bu dosyanın bir PE olduğunu anlamamız için yeterlidir.

Bu zararlının Visual Studio 2015 kullanılarak compile edildiğini görmekteyiz.

Indicators

Indicators kısmında ise PeStudio'nun, pe üzerindeki analizi sonucunda şüpheli olarak gördüğü kısımları bizlere göstermektedir. Daha detaylı analiz için yoğunlaşılması gereken noktalara dikkat çekmektedir.

VirusTotal

Virustotal sekmesine geldiğimizde ise bu zararlının hangi güvenlik üreticileri tarafından zararlı ve zararsız olarak algılandığının bilgisini görebilmekteyiz.

Sections

Executable'ler, dosynın iç yapısını düzenlemek, bellek alanını yönetmek ve optimize etmek adına mantıksal bölümler olan section'lardan oluşurlar. Bu section'lar pe dosyasını oluşturan kod ve veri bloklarıdır. Her section ayrıdır ve belirli bellek erişim izinlerine sahip olabilirler. Standart bölümler şunları içerir: Bu section'ların bazıları;

  • .text : Kod bölümü, programın talimatlarını içerir - salt okunurdur-. Yani makina kod'larını içerir. Makina kodu ise bilgisayarın yürüteceği talimatlardır.

  • .data : Bu bölüm, dosyanın değişkenlerini ve diğer verilerini içerir.

  • .bss : Bu bölüm, dosyanın henüz başlatılmamış değişkenlerini içerir.

  • .rdata : Bu bölüm, dosyanın okumaya açık verilerini içerir.

  • .edata :Bu bölüm, dosyanın dışa aktarılan verilerini içerir.

  • .idata : Bu bölüm, dosyanın içe aktarılan verilerini içerir.

File-ration kısmında ise hangi section'un binary içinde ne kadar yer kapladığını görebilmekteyiz. .rdata ve .data section'larının kapladığı alan, .text section'unun kapladığı alanın yarısından büyük olduğu durumlarda executable'nin şüpheli olduğu söylenebilir. Çünkü bu, executablenin çok fazla veri veya değişken içerdiği anlamına gelmektedir.

Buradaki Raw-Size ve Virtual-Size kısımlarından bahsedecek olursakta, Raw-Size, section'un binary'de kapladığı byte değerini ifade ederken, Virutal-Size ise executable'nin memory'e load edildikten sonraki byte değerini ifade eder. Küçük byte farkları önemsizken aradaki büyük farklar payload olabileceğine işaret ediyor olabilir ki bu da son derece şüpheli bir durum haline gelebilir.

Libraries

Libraries kısmı ise, bu executable tarafından kullanılmış olan .dll dosyalarını içermektedir.

Burada bazı .dll dosyalarını PeStudio'nun işaretlediğini görmekteyiz. Bunlar kesinlikle daha fazla dikkat isteyen .dll dosyalarıdır. Sebebine gelecek olursak;

  • WS2_32.dll : Winsock api fonkisyonlarını içeren bir .dll'dir. Bu .dll, TCP/IP ve diğer ağ protokollerini kullanarak ağ iletişimi için gerekli olan fonksiyonları içerir. Yani başka bir deyişle bu executable'nin C2 sunucusuna istekte bulunuyor olabileceği anlamını taşımaktadır.

  • SETUPAPI.dll : Bu .dll dosyası, yazılımı yüklemek veya kaldırmak, yazılım güncellemek ve yazılım bileşenlerini yönetmek için kullanılmaktadır. Dolayısıyla WS2_32.dll ile birlikte C2'ya gidip başka zararlı payload'lar indirebilir ve bu .dll'deki fonksiyonlar ile de bu yazılımları yükleyebilir hale gelebilir.

  • CRYPT32.dll : Bu .dl dosyası, genel olarak şifreleme ve şifre çözme amacıyla kullanılmaktadır. Yani executable bu .dll dosyasını kullanarak bulunduğu host üzerindeki verileri şifreleyebilir.

Imports

Import sekmesi ise pe'nin kullandığı executable'nin kullandığı native api'leri bizlere göstermektedir.

Sadece göstermekle kalmayıp aynı zamanda şüpheli kullanıma sebebiyet verebilecek bazı api'leri de bizler için flaglemekte ve bunların hangi mitre tekniğine karşılık geldiğini göstermektedir.

Resources

Resources kısmında ise pe'nin kullandığı imageları, simgeleri ve meta verilerini gösterir. Burada görüldüğü gibi dil rusça olarak gözükmekte ve bu da pe'den şüphelenilmesi için bir nedendir.

Strings

Strings kısmına geldiğimizde ise executable içerisinde yer alan ve bizim de okuyabileceğimiz format olan ASCII formatındaki string'leri görebilmekteyiz.

String'lere dikkat ettiğimizde ise şüpheleri üzerine toplayan yapılar görmekteyiz. 1. kısımda birçok SQL sorgusu yer almaktadır. String'lerin devamında da bu sorgulardan çokça görmekteyiz. 2. kısımda ise 193.233.255.91 IP'sinin yer aldığını görüyoruz. Virus Total'de incelediğimizde ise bu ip'nin 5 farklı güvenlik üreticisi tarafından zararlı IP olarak etiketlendiğini görmekteyiz. Executable'nin run time sırasında bu IP adresine istek attığını düşünmekteyim.

  1. kısımda ise çalıştığı host'un IP adresini elde edebileceği bir URL bulunmakta.

  2. kısımda ise karmaşık harflerin yer aldığı stringler görmekteyiz ki bu da bir executable içerisinde olmasını pek fazla bekelmediğimiz bir durumdur.

Overlay

Overlay kısmına geldiğimizde executable'nin bir imzasının olmadığını görmekteyiz. Bu da ilgili executable 'nin zararlı olduğu konusundaki şüphelerimizi arttırmaktadır.

Görüldüğü üzere PsStudio kullanarak bir pe'yi çalıştırmadan bu şekilde statik analizi yapılabilmektedir. Bu da pe'nin zararlı olup olmama durumu hakkında bizlere daha geniş bir bakış sağlamaktadır.

Kaynaklar

https://thesecmaster.com/how-to-analyze-windows-executable-files-using-pestudio/ https://www.youtube.com/watch?v=7yKLn27i72Ehttps://stackoverflow.com/questions/42305467/executable-section-headers-meaning-and-use

Last updated