ILSPY ile Zararlı bir .NET PE'sine Reverse Engineering.
Last updated
Last updated
ILSPY, bir .NET decompiler yazılımıdır. .NET kullanılarak oluşturulmuş yazılımın kaynak koduna erişmemizi ve bunları incelememizi sağlar. Aynı zamanda da ILSPY bir reverse engineering tool'u olarakta kabul edilebilir.
.NET ile oluşturulmuş zararlının kaynak kodunu gelin birlikte inceleyelim.
Öncelikle ILSPY'ı indirmekle başlayalım. Aşağıdaki linkten .msi dosyasını indirip kolaylıkla kurabiliriz.
Kurulum sırasında eğer "The system administrator has set policies to prevent this installation" hatası ile karşılaşılırsa, aşağıdaki linkteki adımları takip edebilirsiniz.
User32 kütüphanesinden import edilen GetAsyncKeyState, bir tuşun basılı olup olmadığını, basılıysa basılı kalma süresini ve basılı olduğu tuş kombinasyonunu verir.
User32.dll kütüphanesinden import edilen GetKeybordLayout, klavye düzeni hakkında bilgiyi döndürür. Bu da bulaştığı bilgisayarın klavye düzeni bilgisini elde ederek girdileri bu bilgiye göre değerlendirmesine olanak sağlayabilir.
User32.dll kütüphanesinden import edilen ToUnicodeEx, klavye girişlerini unicode'a dönüştürmek için kullanılır. Bunun keylogger tarafından kullanılmasının bir sebebi, farklı klavye düzenleri ve dilleri arasında kaybolmamak ve kullanıcının klavye vuruşlarının daha efektif ve doğru bir şekilde almak olabilir.
Burada "[Out][MarshalAs(UnmanagedType.LPWStr)] StringBuilder d" dönüştürülen unicode'un depolanacağı buffer'i ifade etmektedir.
Avicap32.dll kütüphanesinden import edilen capGetDriverDescriptionA fonsiyonunun amacı sistemde bir kamera olup olmadığını kontrol etmektir.
Can alıcı kısmı ise burası aslında. Bu methodda da aslında klavye vuruşlarını text isimli bir diziye kaydeder. Bu kaydetme işlemlerini belirli koşullara bağlar. Örnek vermek gerekirse, tuş basımı delete ve back değilse ve ctrl, alt ve F tuşlarına eşit değilse gibi koşullara bağlar ve bunlar sağlandığında tuş basımını text dizesine yazdırır.
Buraya kadarki kısımları incelediğimizde görebileceğimiz gibi bu zararlının gerçekleştirdiği faliyetlerden biri keylogger davranışıdır.
Yani bu fonksiyon, memory stream ile alınan veriyi uzak sunucuya göndermeye çalışıyor olabilir.
Bu kod parçası ile zararlı yazılımın kendini kaldırmak ve kalıntılarını silmek için tasarlanmış gibi durmaktadır. Zararlılar, kalıcılıklarını engellemek ve olay sonrasındaki analizleri zorlaştırmak adına kendi kendilerini temizleyebilirler.
Kritik bir diğer method ise Connect'tir. Bu da aslında kısaca uzak bir sunucudan veri göndermeyi hedeflediği IP ve port bilgilerini çekmeye çalışır. Ardından da bu bilgilerdeki hedefe veri göndermeyi hedefliyor olabilir diyebiliriz.
Yukarıdaki DownloadHostOrNotURL değişkenine atanmış URL yine kaynak kodları arasında yer almaktadır.
İlgili linkteki dosya indirildiğinde ise aşağıdaki gibi bir dosya ile karşılaşılmaktadır.
Yani alışıla gelmedik bir port üzerinden dışarıya açılmış bir C2 yada data exfiltre sunucusu olduğunu düşünmekteyim.
Bu kod parçası ile de zararlı yazılım kendisini bilgisayar her başlatıldığında çalıştırılması için gerekli registery yoluna kaydediyor.
Aşağıdaki kısım ise executable'nin string'leri arasında bulunan bir fonksiyondur ve ekranın ekran görüntüsünü almaktadır. Bu da spyware davranışlarından biridir.
Aynı şekilde UserString'leri arasında da kendisini Run path'ine yazdırmaktadır. Bu da kullanıcı oturumu başlatıldığında otomatik olarak başlatılacak programların bilgilerini içerir.
Kurulumun tamamlanmasının ardında yazılımı ILSPY ile açalım ve yazılımın amacını anlamak üzere içerdiği metod ve class'ları incelemeye başlayalım.