Emotet Zararlı yazılımının teknik Analizi
Zararlı dosyamızı x64Dbg ile açıp, unpacking işlevine başlıyoruz. Zararlı dosyayı Debugger’a attığımız zaman öncelikli olarak Create Process Internal üzerinde Breakpoint koymaya gidiyoruz. Çünkü davranışsal analizimizde çalıştırdığımız dosyanın alt
Aslında Project Injection teknikleri ile ilgili bir yazı yayınlamayı düşünmüştüm fakat umduğumdan biraz daha uzun sürdü ve hala devam ediyorum :) İlgili yazım Emotet zararlı yazılımı ile ilgili olacak.
Unpacking işleminden önce inceleyeceğimiz zararlı ile ilgili ön bilgi edinmemiz bizler açısından yararlı olacaktır.
Yukarıda PEstudio
çıktısından anlaşılacağı gibi zararlı yazılım kullanıcılara Windows Disk Diagnostic User Reseolver
olarak kendini tanıtıyor. Diğer çıktılarına göz gezdirdiğimde 12/03/2019’da oluşturulmuş sahte bir sertifika - OCOEZIHQ
adında - yüklemeside gerçekleştiriyor. Ayrıca x86 mimari yapılı işlemciler üzerinde çalışması için tasarlanmış.
Detect It Easy
çıktısına baktığımızda, C/C++ yazıldığını fakat herhangi bir packer algılamadığını görebiliyoruz.
PE bear çıktısında Import kısmına göz gezdirdiğimiz zaman, IAT bilgilerine dayanarak birkaç farklı DLL dosyası yüklediğini görebiliyoruz; kernel32.dll, user32.dll, gdi32.dll, advapi32.dll, shell32.dll ve shlwapi.dll.
Unpacking işlemine geçmeden önce zararlı dosyamıza IDAPro üzerinde de bir göz gezdirebiliriz. Özellikle unpacking işlemini gerçekleştirirken önceden işimizi kolaylaştıracak işlemler çıkacak mı diye.
Bir önceki PEBear çıktısında içeri aktarılan işlevlerin az bir kısmının görünebilir fark ediyoruz. Bunlardan birininde özel bir paketleyiciye işaret eden VirtualAlloc olduğunu görebiliyoruz.
İkinci olarak göze çarpan diğer bir detay ise veri segmentlerine yapılan çağrılar olduğunu fark ediyoruz.
Davranışsal Analiz
Dynamic analizden önce zararlının davranışsal analizine ilk olarak göz atıyoruz. Dosyayı ilk çalıştırdığımız zaman zararlı ilk olarak kendisini çalıştırıyor.
Daha sonra AppData\\Local\\mapituip
altında mapituip.exe
adında ikinci bir exe dosya kopyası oluşturuyor. Daha sonra ilk dosyanın işlevini sonlandırdığını ve ikinci kopyalanan dosyanın çalışmaya devam ettiğini fark ediyoruz.
Dynamic Analiz - Unpacking İşlevi
Zararlı dosyamızı x64Dbg ile açıp, unpacking işlevine başlıyoruz. Zararlı dosyayı Debugger’a attığımız zaman öncelikli olarak Create Process Internal
üzerinde Breakpoint koymaya gidiyoruz. Çünkü davranışsal analizimizde çalıştırdığımız dosyanın alt bir process oluşturduğunu fark ettik ve muhtemelen bu durumun tüm PE dosyası için geçerli olmasını umuyoruz.
Bu yüzden memory içerisinde unpacked işlemi gerçekleşeceği zaman, ilk Symbols kısmına gidip kernel32.dll içerisinde Create Process Internals W
‘a breakpoint koyacağız.
Run işlemlerini yaptıktan sonra daha önce Create Process Internals
W’a koyduğumuz breakpoint’e kadar gelmesi gerekiyor. Buraya kadar geldiğimizde anlıyoruz ki memory içerisinde bir yerlerde bu PE dosyasının unpacked versiyonu yer alıyor. Bu yüzden Memory Map
kısmına gidip, burada protection sections’lara gözatmamız gerekiyor.
Yukarıdaki Memory Map kısmına göz gezdirdiğimizde ERW (Execute-Read-Write) bayrakları ile ayarlanmış 4 tane bellek bölgesini görebiliyoruz. Header’a bağlı olarak bunların 3/4’ü PE dosyalarıdır. Analizimizin ikinci aşamasına geçebiliriz.
Dynamic Analiz - Dumped binaries
Açıkcası ben ERW bayraklarının olduğu 4 dosyayı da dump edip, IDA Pro üzerinde bakmakla işe başladım. Üç tanesinde bilmediğim bir hata verdi fakat sadece bir tanesinde herhangi bir hata bildirmeden, doğru bir şekilde yüklemesini yaptı.
Göründüğü üzere 3 function çağrısı ile başlıyor. Sub_40D340
ve Sub_40DF80
ikilisine baktığımızda; dynamic olarak yükleyeceği API’lerin şifreli hallerini içeriyor.
Ayrıca bu iki fonksiyonun ayrıntılarına baktığımızda; şifrelenmiş değerler stack’a yüklendiği zaman, sub_401550
adında başka bir fonksiyonuda çağırdığını fark ediyoruz. Bu çağrılan fonksiyonun büyük bir ihtimalle decryption işlevinden sorumlu.
İncelediğimiz bu dosyayı tekrardan debugger ile denediğimizde, MUTEXT olup-olmadığını kontrol ediyoruz. Yukarıdaki resimdende gördüğümüz üzere MUTEX
ismi PEM11FC
.
MUTEX oluşturulduktan sonra, kötü amaçlı yazılım kendisini kopyalamak için Windows Directory’da arama yapar. Bununla birlikte %APPDATA% klasöründe de kopyalama için arama yapar. Buradaki yeni Binary, farklı bir isimle adlandırılır ve buraya bırakılır. Kendi yaptığım analizlerdeki ikinci dosya adı mapituip.exe
olarak geçiyor.
Sonuç
Açıkcası hangi IP adresleri, domain ve host kullanımıyla ilgili olarak herhangi bir çalışma yapmadığımı belirtmek istiyorum.
Bu analizimde direkt olarak exe dosyasının analizini gerçekleştirdim. Bu yüzden macro analizle ilgili olarak da herhangi birşey yapmadığımı belirtmek istiyorum.
Eksik olarak anlattığım yada yanlış olarak düşündüğünüz noktaları yorum olarak belirtmenizi isterim. Bu şekilde bir sonraki analizlerim için faydalı olacaktır.
SHA1: cebb919d8d04f224b78181a4d3f0b10a315ae2f2