Siber Güvenlik
Malware Kaynak Kod Analizi Nedir?
Sistemlerde Malware nedir, basit olarak nasıl incelenir ve bir Malware örneğini bu makalemizde inceleyeceğiz.
Kaynak kod analizi, bir yazılımın kaynak kodunun sunulmadan önce güvenlik açıklarını bulma ve düzeltilmesi amacıyla manuel ve otomatize araçlarla test edilmesi işlemidir. Örnek bir zararlı Malware içeren kaynak kod inceleyeceğiz.
Örneğimizde çeşitli Malware kodlarını oluşturan parçalar ya da bölümler incelenecektir. Malware analizi yapılırken tersine mühendislikte ya da kaynak kod analizinde kodların içinde boğulmaktan ziyade, önemli parçaların birleştirilmesi ve bir sonuca bağlanılması önemlidir. İlk örnekte C ile kodlanmış reverse açarak bulaştığı makinada uzaktan kod çalıştıran bir zararlı incelenecektir, ikinci örnekte ise bir C Keylogger incelenecektir;
1. C REVERSE SHELL
Şekil 1
Çıktıdaki kod bloğu incelendiğinde Winsock2.h dosyasının ağ üzerinden soket açmak için kullanıldığı görülmüştür. Processinfo ile süreç hakkında bilgi alınlarak WSASStartup soketlerin çalışmasını başlatmak üzere kullanılmıştır. Winsock değişkeni ile soket tanımlanmıştır. Argv[] bağlantı ile bağlanacak komuta sunucusunu ikinci parametre ise komuta sunucusunun TCP cmd.exe tetiklenerek soket üzerinden gönderilen komutlar kurban makinada çalıştırılarak, komut çıktıları komuta kontrol sunucusuna gönderilmektedir. Özetle soket ile ağ bağlantısı yapan zararlı CreateProcess ile cmd.exe’de komut çalıştırılmıştır. Analiz kısımlarında bu veriler çeşitli yöntemlerle elde edilerek done olarak kullanılacaktır.
2. C KEYLOGGER
Şekil 2/5’deki örneklerde C ile yazılmış bir Keylogger vardır. Kodları inceleyelim;
Şekil 2
Şekil 3
İf(GetAsyncKeyState(i) == -32767) bloğunun içerisinde for döngüsünden gelen i değişkeni için verilen değerler kontrol edilmektedir. GetAsyncKeyState fonksiyonları klavyeden basılan tuşların askıya alınmasını sağlar. Bu fonksiyonlar Keylogger yazılımları tarafından kullanılabilirler. “print_key” fonksiyonu ise basılan tuşun kodundan, programın üst satırlarında yer akan IF blokları ile ne olduğunu bularak fprintf ile ekrana yazdırır. Program derlendiği zaman Şekil 4’deki gibi çalıştığı gözlemlenmiştir.
Şekil 4
Basılan tuşları kaydeden Keyloggerların çalışma anı yukarıda gösterilmiştir. Basılan tuşlarda eşleşme olduğu zaman fprintf ile [SHIFT],[DEL],[TAB] gibi stringlerin ekrana bastırıldığı, eğer zararlı paketlenmemiş ya da obfusucate edilmemişse kaynak koda erişim olmadığında yani derlenmiş dosyadan dahi görülebilir. Ayrıca Import tablosuna bakıldığında kullanılan dll dosyaları ve diğer incelemelerde kullanılan fonksiyonlar görülebilir. GetAsyncKeyState, GetKeyState fonksiyonlarından zararlının Keylogger çalıştırma ihtimaline sahip olduğu çıkartılabilir