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