Radare ve Windbg Kullanarak Dump Analizi

Bugünkü yazımızda içerisinde zararlı yazılım barındıran dump dosyamızın analizi olacak. Bizim senaryomuzda ise şüpheli gözüken svchost.exe’nin alınan dump’ı bulunuyor.

İlk olarak Windbg ile analiz edeceğiz. Sonrasında elimizde bulunan dump dosyamızla ilgili olarak detaylara göz gezdireceğiz. Windbg sonrasında ise gerekli kod bloğunu alabilme içinde Radare tarafından sunulan aracı kullanıp, exe uzantılı dosyamıza ait binary’leri elde edeceğiz. Son olarak ise IDA Pro aracılığıyla elde etmiş olduğumuz dosyayı inceleyeceğiz.

Neden Radare uygulaması kullandım?

Yazıya tam girmeden önce belli bir noktadan sonra neden Radare2 aracından yararladığımı açıklamak istiyorum. Dump dosyasını Windbg üzerinde çalıştırıp, gerekli exe dosyasını alabilmek için SDK ile ilgili bazı değişimler yapma ve bazı eklentileri kurmanız gerekiyordu. SOS.dll, mscorwks.dll, clr.dll ve psscor4.dll dörtlüsüyle alakalı bazı problemler yaşadım. Özellikle istediğim şeyi yapabilmek için bunlarla birlikte başka çıkan hataları da çözmem gerekiyordu. Yani tam bir kaostu :)

Bu yüzden bilgi kıtlığından ve hep aynı şeylere bakmaktan yorulduğum için, belli bir noktadan sonra Radare2 kullandım. Açıkcası daha önce aklıma gelmesini isterdim.

Lab Ortamının Kurulumu

1- Sanallaştırma : VirtualBox veya diğer seçenekler

2- OS : Windows 7 (x64 mimarisi kullanıyorum)

3- Yazılım : Radare2, Windbg, IDA Pro

Burada sadece dikkat edilmesi gereken kısım Windbg oluyor. Daha önce yayınladığım Kernel istismarlarıyla ilgili yazı serisinde Windbg kurulumu ve Symbol Path ekleme ile ilgili kısım yer alıyor.

Windbg ile Analiz

Elimizde bulunan dump dosyamızı Windbg* ile çalıştırıyoruz.

Symbol dosyalarının yüklenmesi ile ilgili herhangi bir problem olmadıysa eğer; analiz için bu dosyayı !analyze -v komutu ile çalıştırmanızı isteyecektir ve çalıştırıyoruz.

Yukarıdaki kısımda analiz sonucunda, bu dump dosyasına ait stack trace (yığın izleme) çıktılarını görebiliyoruz. Bu dump dosyasındaki olaylar gerçekleşirken, arka tarafta bu olayla beraber hangi sürücülerin çalıştırıldığını gösteriyor bizlere. Burada ise wow64cpu ve ntdll sürücülerinin bu süre zarfında çalıştırıldığını görüyoruz.

Yığın (stack) bilgilerine ek olarak FOLLOWUP_IP çıktısıda yer alıyor. Bu kısımda hata kontrolünden hemen önce yürütülen komutla ilgili bizlere bilgi sunuluyor.

Bu kısımda hataya sebep olduğu düşünülen sürücünün ismi yer alıyor. Fakat bizim kullandığımız dump dosyası bir hatadan ziyade, legal bir exe altında zararlı bir exe çalıştırıldığı düşünüldüğü için alınmış.

Dump dosyamızla ile ilgili ilk bilgileri elde ettikten sonra, dump dosyası alındığı sırada yüklenmiş olan tüm modüller hakkında bilgi alabilmek için lm komutunu kullanabiliriz.

!Address komutu ile hedef işlemin yada hedef bilgisayarın kullandığı bellek hakkında bilgi edinebiliyoruz. Açıkcası ilgilendiğimiz kod blokları bunlar oluyor.

MEM_IMAGE : Bu sayfa, modülü (exe\dll) depolamak için kullanılır. Paylaşılan DLL yalnızca bir defa belleğe yüklendiğinden ve birden çok işlem tarafından paylaşıldığından, fiziksel depolamayı diğer işlemlerle paylaşabilir.
MEM_PRIVATE : Bu sayfa bir işleme ait olduğundan dolayı, paylaşılmaz.
MEM_COMMIT : Taahhüt edilen sayfa fiziksel depolama ile ilgili olduğundan dolayı bu sayfa okunabilir/yazılabilir (read/write).
MEM_FREE : Bu sayfanın kullanılmamış olduğunu gösterir.

Bu adımda ise !peb komutundan yararlanacağız. Bu komutun çıktıları arasında; dump’ın alındığı mimari ve işletim sistemi hakkında bilgi, tanımlanmış pc ismi, kullanıcı ve domain adı, Powershell Module Path gibi pek çok bilgiye erişebiliyoruz. Özellikle bu tanımadığımız veya müşterinizden gelen dump’ın alındığı pc ve ortamı ile ilgili bilgileri öğrenmeye yardımcı olacaktır.

Radare ile Binary’e erişme

Yazının başında belirttiğim gibi Windbg’da bunu yapmak için ortamı hazırlamada sıkıntı yaşamıştım. Bu yüzden mdmp modülü kullanılan Radare’den yararlandım.

Açıkcası Windows ortamıma kurmak yerine ana host olarak kullandığım Mac OS üzerine homebrew ile kurulumunu gerçekleştirdim. Daha sonra ise EXE Carving yöntemini kullanarak istediğimiz sonuca ulaşacağız. Basit olarak dump dosyası içerisinde bulunan yürütülebilir (exe) dosyayı çıkaracağız.

İlk olarak terminalimizi açıp, dump dosyasının olduğu path‘a geliyoruz. Daha sonrasında r2 dosyaismi.dmp ile açıyoruz.

Bu adımdan sonra iS~exe komutunu kullanarak yürütülebilir dosyalarımızın listesini çıkartıyoruz. İki tane aynı exe çıkmasının sebebi ise legal bir exe altında çalışan aynı isme sahip illegal bir exe dosyasının olmasıdır.

Yukarıda görüldüğü üzere exe dosyalarının binary görünümlerine bakıyoruz. 0x0046000 offset değerine sahip dosyamızın incelenmeye daha değer olduğunu görebiliyoruz.

Daha sonrasında ise wtf svchost.exe_1 dosyasını binary olarak almış oluyoruz. Bir sonraki adımda ise IDA Pro ile inceleme kısmı olacak.

Binary Dosyasını IDA Pro ile inceleme

Gerekli dosyamızı sanal ortamımıza aktarıp incelemeye başlıyoruz. Çıkan grafiği incelemeye başlarken Remcos Mutex Inj fark ediliyor.

Biraz daha inceleme yaptığımızda ise Remcos RAT Malware olduğunu görebiliyoruz.

Daha sonrasında ise VirusTotal üzerinde dosyayı inceliyoruz ve çıkan sonuç yukarıda yer alıyor.

SHA-1 : 12eb3c953d8a7af1e34bc87a6ac59bd70c845bb45

Referanslar

1- https://radareorg.github.io/blog/posts/minidump/

2- https://ntopcode.wordpress.com/2018/02/26/anatomy-of-the-process-environment-block-peb-windows-internals/

3- https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/general-extensions