Dridex Bankacılık Trojanı Teknik Analiz Raporu (TR)

Yayınlayan
Editör
Yayınlanma tarihi
1/3/2022
Okuma süresi
10
Dakika
go back icon
Geri Dön

Dridex Bankacılık Trojanı Teknik Analiz Raporu

İÇİNDEKİLER

Banking türündeki Dridex zararlısına ait birçok dropper ve yardımcı zararlı DLL’ler bulunmaktadır. Tüm indikatörler ayrıntılı bir şekilde analiz edilmiştir.

Giriş

Banking türündeki Dridex zararlısı, ilk olarak 2012 yılında ortaya çıkmıştır. Genelde ilerleyişini Word makroları üzerinden sürdüren zararlı; 2015 yılında İngiltere’de 20 milyon £, Amerika’da 10 milyon $ seviyelerinde zarara neden olmuştur. 2016 yılının başlarında ise hedef listesine kripto cüzdanları da eklemiştir.

Bugat ve Cridex isimleri ile de karşımıza çıkan Banking türündeki Dridex zararlısı, faaliyetlerine devam etmektedir. En son 13.05.2020 tarihinde ortaya çıkan zararlının bu örneği, farklı bir teknik kullanarak sistemde yayılmayı hedeflemektedir.

C&C sunucuları üzerinden drop ettiği HTA dosyalarının içerisinde encode edilmiş olarak bulunan DLL’ler üzerinden kullanıcı bilgilerini çalan Banking türündeki Dridex zararlısının bu saldırı kampanyasında Pakistan’ı hedef aldığı görülmektedir.

Son kullanıcının karşısına çıkan PDF belgesinde İslamabad Air Üniversitesine aitmiş gibi görünen döküman, sadece kullanıcıyı meşgul edip arkaplanda zararlı işlemlerini gerçekleştirebilmek adına yapılan bir phishing saldırısının örneğidir.

Ön İzlenim

Mail phishing yöntemi ile klasik yayılma biçimini bu versiyonunda da sürdüren Banking türündeki Dridex zararlısı, sıkıştırılmış bir arşiv içerisinde karşımıza çıkmaktadır. Arşiv içerisinde 3 adet dosya bulunmaktadır.

DosyaZIP ArşiviMD5865e7c8013537414b97749e7a160a94eSHA113a5ec9f6a7b0765071e43c81b7fbfdb312ab3e4DosyaPolicy Guidelines for Online Classess.pdf.InkMD5865e7c8013537414b97749e7a160a94eSHA113a5ec9f6a7b0765071e43c81b7fbfdb312ab3e4

Policy Guidelines for Online Classess.pdf.Ink adlı içerik aslında kısayoldur. PDF belgesi

görünümü verilmiştir. Kısayola verilen bağlantıya bakıldığında, bu kısayolun aslında bir dropper olduğu anlaşılmaktadır.

%windir%system32cftmo.exe

hxxp://www.au-edu.km01s[.]net/images/E2BC769A/16914/11662/84c7b244/3387c59

Kısayola bağlantı olarak verilen web sitesinden 3387c59 adlı dosyayı indirmektedir. Dosyanın içeriğine göz atıldığında dosyanın HTA türünde olduğu ve içerisinde obfuscate edilmiş Javascript kodlarının olduğu görülmektedir.

Zararlı kodları analiz edebilmek için kodların deobfuscate edilmesi gerekmektedir. 3387c59 dosyasının deobfuscate edilmiş haline ait kod parçası aşağıda yer almaktadır.

3387c59.hta Dosya Analizi

Dosya3387c89.htaMD530dd4284f82c7833034b586ba2d216a0SHA11a048b8dd14765ff1e368f871879a623b8a96de7

HTML’in script etiketleri arasında yer alan zararlı kodlar deobfuscate edildikten sonra bu dosyanın amacı ortaya çıkarılmıştır. RC4 algoritması ile encrypt edilen önemli veriler keeee değişkeninde tutulan “411402620” RC4 anahtarı ile çözülmektedir.

İçerisinde encrypt edilmiş iki adet veri bulunduran zararlı dosya; “da” değişkeninde gzip arşivi, “so” değişkeninde ise zararlı bir DLL barındırmaktadır. Gzip arşivi içerisinde zararlıya trojan özelliği kazandıran gerçek, zararsız PDF dökümanı bulunmaktadır.

DosyaPolicy Guidelines for Online Classess.pdfMD58ae9cc797c2f3ec3eca3b54a2e70edf1SHA16c878840bd899936974a0364a2297b658beaeda9

Zararlı dosyada ActiveX objeleri üzerinden zararlı işlemler yapılmaktadır. Öncelikle sistem üzerinde bulunan .NET kütüphanesinin versiyonunu öğrenmektedir.

Versiyon bilgisini aldıktan sonra ise Shell çevresini bu versiyona ayarlamakta ve DLL’in çalışması esnasında versiyona bağlı oluşabilecek problemlerin önüne geçmektedir.

Windows Management Instrumentation (WMI) üzerinden bir WMI sayacı oluşturarak sistem üzerinde var olan AV ürünlerini enumerate etmekte ve sonucu da “x” değişkeninde depoladıktan sonra “aURL” değişkeninde var olan;

hxxp://www.au-edu.km01s[.]net/plugins/16914/11662/true/true/

adresinin sonuna eklemektedir.

Bu işlemlerinden sonra so değişkeninde yer alan zararlı DLL’i sistem belleği üzerinde ActiveX objeleri ve window.eval() fonksiyonu aracılığı ile çalıştırmaktadır.

Tüm bu işlemlerden sonra dropper özellikleri sergileyen 3389c59 dosyası, “so” değişkeninde bulunan DLL’in Work metoduna sırası ile; uzak sunucudaki .hta dosyasını, AV ürünlerini göndermeyi planladığı zararlı URL’i, içerisinde zararsız PDF dökümanı bulunan gzip arşivini tutan da değişkenini ve bu PDF’in adını parametre olarak yollamaktadır.

LinkZip.dll Analizi

DosyaLinkZip.dllMD57923c5065578d3dbda91646a04e189ecSHA13c8891b8ff1645e22c9baf3668210a178f4125dd

3387c59 adındaki zararlı dosya “so” değişkeninde barınan DLL’i çözdükten sonra Work metoduna 4 adet parametre geçmekteydi. Work metodunun aldığı parametrelere bakacak olursak;

İlk olarak gzip arşivinden PDF dökümanını çıkarmakta ve kullanıcıya göstermektedir. Arkaplanda ise uzak sunucudan başka bir HTA dosyası indirmektedir. İndirdiği bu HTA dosyasını ise mshta.exe ile çalıştırmaktadır.

LinkZip.dll adındaki zararlı DLL’in genel kabiliyetleri;

  • Decompress işlemi yapmak,
  • PDF belgesini çalıştırmak,
  • Web isteği yapmak,
  • Uzak sunucudan zararlı dosya indirmek ve çalıştırmak şeklinde sıralanabilir.

Uzak sunucudan indirilen HTA dosyasını mshta.exe ile çalıştırdıktan sonra bu zararlı dosyayı sistem üzerinden silmektedir.

File.hta Analizi

DosyaFile.htaMD5c04acf0e0938c22ca75219aedc19c9a1SHA1a05e701fd029a0641331256b3dbf7f992ec6e838

File.hta, 3387c59 dosyası gibi JavaScript kodları içeren ve “mshta.exe” tarafından çalıştırılabilen bir dosyadır, ayrıca ActiveX objeleri barındırmaktadır.

Temel olarak üzerinde önemli olan 3 değişken vardır. Deobfuscate edildiğinde “so“, “x” ve “y” değişkenlerinin içerisinde Base64 ile encode edilmiş verilerin bulunduğu doğrulanmıştır. Aynı şekilde verilerin RC4 algoritması ile encrypt edildiği de görülmektedir.

Base64 içeren değişkenler decode işlemine tabi tutulduğunda “so“ değişkeninde bir “.ttf” magic başlığına sahip DLL dosyası , “x” ve “y” değişkenlerinde ise gzip arşivleri ortaya çıkmaktadır. Bu arşivlerin içerisinde DLL dosyaları bulunmaktadır.

“So” değişkenine atanan “.ttf” dosyası HexEditor gibi araçlarla incelendiğinde MZ başlığına sahip olduğu dikkat çekmektedir. Dosya düzenlendiğinde DLL dosyası olduğu görülmektedir.

“so” değişkenindeki DLL’i direkt olarak belleğe yazarak window.eval() fonksiyonu ile çalıştırmaktadır.

Kod bloğu detaylı incelendiğinde try-catch yapısına “throw 1;” komutu ile exception verdirilerek catch bloğunun çalışması sağlanmaktadır. Bu blok içerisinde;

“x”,”y”,“202/4zFPhSyGnJ0DzFatyW3RjZujTsdrKx4qPkcJGupk/16914/11662/df36c81″

parametre olarak gönderilerek “so” değişkeninde yer alan Work fonksiyonu çağırılmaktadır.

So Değişkeni = ”StInstaller.dll”

X Değişkeni = ”Duser.dll”

Y Değişkeni = “SystemApp.dll”

StInstaller.dll Analizi

DosyaStInstaller.dllMD5567f6f3e4ae4869b9d9954770774aa9fSHA185ac80dc5ecd66316cc33ff5abef89062439d112

File.hta dosyasında görülen work() fonksiyonu StInstaller.dll dosyasında karşımıza çıkmaktadır. Aldığı parametrelere bakacak olursak ;

DLL içerisinde bazı değişkenler obfuscate edilmiştir. Deobfuscate işleminden sonra değişkenler ve içerikleri aşağıdaki görseldeki gibidir;

Sistem üzerinde “%windir%\syswow64\” yolu bulunuyorsa bu yol üzerinden eğer bulunmuyorsa “%windir%\system32\“ yolu üzerinden rekeywiz.exe’yi ilgili dizine kopyalamaktadır. Rekeywiz.exe legal bir sistem uygulamasıdır.

Bu DLL, rekeywiz.exe’nin sistem her yeniden başlatıldığında tekrar çalışabilmesi için Software\Microsoft\Windows\CurrentVersion\Run kayıt defteri yoluna font2 adında bir kayıt ekleyip değerini rekeywiz.exe’nin yolu olarak ayarlamaktadır.

Rastgele isimlendirilimiş bir .tmp dosyası oluşturulup, SystemApp.dll, encode fonksiyonundan geçirilerek bu xxxxx.tmp dosyası içerisine yerleştirilmekte ve dizine kaydedilmektedir.

Duser.dll olarak tanımlanmış değişkenin adı “hijackDllname” olarak dikkat çekmektedir. Duser.dll ve rekeywiz.exe.config dosyaları da dizine kaydedilip program başlatılmaktadır. Rekeywiz.exe.config dosyasının içeriği manifestContent değişkeninde yer alan stringdir.

StInstaller.dll adındaki zararlı DLL’in genel kabiliyetleri:

  • Decompress işlemi yapabilme,
  • Veriyi encode edebilme,
  • Bir veri içerisinde arama yapabilme,
  • Token oluşturabilme,
  • Belirtilen bir verinin yerine başka bir veriyi yerleştirebilme,
  • Kayıt defterine değer ekleyebilme şeklinde sıralanabilir.
Duser.dll Analizi

DosyaGZIP ArşiviMD5e3fdf458ab16294f9e041be46600af6bSHA1d281b1a596807c5fea1e7d581a8a49ed6dcbcac3DosyaDuser.dllMD51538ebe93228d9b2246eedfd54c58179SHA17a3471aa9f65b5b765393a319268f7dcb9865091

Normalde Rekeywiz.exe uygulamasının kullandığı legal bir DLL dosyasıdır. Fakat zararlı yazılım Rekeywiz.exe’yi kopyaladığı dizinde X değişkeninde yer alan veriler ile zararlı bir Duser.dll oluşturmaktadır. Bununla birlikte de DLL Hijacking işlemi yapmaktadır.

DLL dosyasının amacı başka bir dosyayı çözümleyerek çalıştırmaktır. File.hta üzerinden aldığımız Duser.dll işlenmediği için aşağıdaki gibi görünmektedir;

StInstaller.dll üzerinde işlem gören Duser.dll’in görünümü ise ;

xxxxx.tmp dosyasının çözümlendiği ve sonrasında çalıştırmak üzere yüklendiği görülmektedir. TMP dosyasını aynı işlemlerden geçirdiğimizde bir MZ başlığı görülmektedir.

DLL dosyasında yer alan Up() metodu ise çözümlenmiş olan tmp dosyasından gelen DLL’in Program.Start() metodunu çağırdığı görülmektedir.

Base64 ile encode edilmiş değerler sırasıyla “Program” ve “Start” olarak decode edilmektedir.

Up() metodunu çağırabilmesi için iki seçenek bulunmaktadır. Ya Up() metodunu direkt olarak çağıracaktır (ki zararlı DLL içerisinde o şekilde bir kullanım göremedik) ya da Up() metodunu içerisinde çağıran bir metodu çağıracaktır. Fakat bu iki seçenekte bu kod parçasında mümkün olmadığı üzere rekeywiz.exe programının Up() metoduna bu iki yöntemden biri ile erişmesi gerekecektir.

Orijinal Duser.dll içerisindeki metodları incelediğimizde zararlı DLL dosyamızla ortak bir fonksiyon olduğu görülmektedir.

InitGadgets() metodu, iki DLL dosyasında da yer alan ortak bir metoddur. Zararlı DLL içerisinde yer alan bu metodun Up() metodunu çağırdığı görülmektedir.

Bu durumda rekeywiz.exe Duser.dll içerisinde yer alan InitGadgets() metodunu çağırdığında Dll Hijacking yapıldığı için zararlı DLL içerisinde aynı fonksiyonu çağıracak ve SystemApp.dll dosyası çalıştırılacaktır.

SystemApp.dll Analizi

DosyaGZIP ArşiviMD514bb9075be2ffd50e625882e446e9c42SHA1f9c3796d3b8f7d1d97dce17755f0c4e215e6b9b1DosyaSystemApp.dllMD53695c1dca8b1cf368abad3f42f3efc16SHA1ceee8c9f929ba3de6badd0bfffd86655c4d7b999

Rekeywiz.exe programı, Duser.dll ile hijacking işlemi yapıldıktan sonra InitGadgets() fonksiyonunun çağırılması sonucunda Up() metodunu çağırmakta, oradan da rastgele oluşturulan ve encode edilen TMP dosyasının çözümlenmesi sonucunda SystemApp.dll’in Program.Start() metoduna giriş yapmaktadır.

Start() metoundan sonra ise LoadSetting() metoduna atlamaktadır. İçerisinde gömülü olarak bulunan iki adet kaynak mevcuttur. İlki Default adında bir ayar dosyası, ikincisi ise Newton_Json adındaki .NET ortamı için bir JSON çatısıdır. LoadSettings() metounda ise kaynaklarda bulunan Default adındaki kaynağı decrypt edip, ayar değişkenlerini tanımlamaktadır.

Ayar değişkenleri tanımlandıktan sonra SettingsFilePath değişkenindeki font2 dosyasını decode ettikten sonra font2 dosyasının içerisindeki verilere göre ayar değişkenlerini tekrardan tanımlamaktadır. Ve bu ikinci tanımlamadan sonra ise değişkenlerin durumu aşağıdaki gibi olmaktadır.

Ayar değişkenleri arasında hedef alınacak olan dosya uzantıları, hedef alınacak dosyaların boyutunun en fazla ne kadar olacağı gibi değerler de bulunmaktadır.

Ayarlarını tam olarak tanımladıktan sonra ise uzak sunucu üzerinden veri indirip, decode ettikten sonra Duser.dll içerisinde bulunan Loader sınıfının Load() metoduna ilk parametre olarak veriyi, ikinci parametre olarak da ayar değişkenlerinin değerlerini göndermektedir.

Uzak sunucudan gelen verinin de .NET ortamı ile yazılmış bir DLL veya EXE olduğu anlaşılmaktadır. Base64 ile encode edilen verinin karşılığı “Program” stringi olmaktadır. Uzak sunucudan indirilen veri içerisindeki Program yapıcısına ayar değişkenlerini parametre olarak göndermektedir. Bunun sonucunda dönen değere göre ise bazı işlemler yapılmaktadır.

Burada dikkat edilmesi gereken nokta, uzak sunucudan gelen verinin bir bellek akışı olduğudur. Zararlı bellek akışı sonucunda dönen değere göre;

  • Ayar değişkenlerini tekrardan tanımlayabilme,
  • İçerisinde kullanıcı yetki bilgileri, sürücü bilgileri, sistem üzerindeki yüklü olan uygulamalar gibi kritik bilgileri barındıran sistem bilgilerini “.sif” uzantılı rastgele isimli bir dosyaya yazma,
  • Sistem üzerindeki bulunan diskler hakkındaki boş alan, kullanılan alan, disk tipi gibi önemli bilgileri “.flc” uzantılı rastgele isimli bir dosyaya yazma ve ayar dosyasındaki hedef uzantıları içeren dosyaların listesini tutma,
  • Hedef uzantılara sahip dosyaların tam yolunu “.fls” uzantılı rastgele isimli bir dosyaya yazma,
  • C&C sunucusunun adresini değiştirip yeni C&C sunucus tanımlayabilme,
  • Hedef dosya uzantıları ve hedef olacak maksimum dosya boyutu gibi bilgileri isteğe bağlı güncelleyebilme gibi kritik işlemler gerçekleşebilmektedir.

C&C sunucusundan gelen ve çalıştırılan bellek akışı verisi, zararlıya komut veren ve içerisinde muhtemelen upload mekanizması bulunduran önemli bir zararlı komuta kontrol sistemidir.

Sistem üzerinde bilgi toplama ve ayarlama işlemlerinden sonra AppDataRoamingfont2Dat dizininde bulunan tüm kritik verileri uzak sunucuya yüklemektedir. Yükleme işleminin ardından amacına ulaşan saldırı sonucunda toplanan verileri silmektedir.

Ayrıca sistem üzerindeki kullanıcıların bilgilerini, sistem üzerindeki AV ürünlerini, işlemci bilgisi, ağ kartı bilgileri gibi kritik bilgileri öğrenmek için sık sık WMI sorguları kullanmaktadır. Sorgulanan ve toplanan tüm bilgileri JSON tipinde dosyalara yazmaktadır ve bu işlemler için Newtonsoft JSON çatısını kullanmaktadır.

Zararlı davranışlarının sonucunda başarıya ulaşan Banking türündeki Dridex zararlısı bellek akışında bulunan zararlı kod gibi kritik bilgilerin ele geçmemesi amacıyla sistem kaynaklarını serbest bırakmaktadır.

Ağ Hareketleri

Bankacılık türündeki Dridex zararlısı iki adet zararlı sunucu ile iletişim kurmaktadır.

İlk olarak 185[.]163.45.199 IP adresine sahip hxxp://www.au-edu.km01s[.]net alan adından zararlı HTA dosyalarını drop etmektedir. Ayrıca sistem üzerinde bulunan AV ürünlerinin listesini de bu zararlı sunucuya göndermektedir.

Zararlı alan adının, İslamabad Air Üniversitesinin alan adına benzerliği ortaya çıkmakta olup aynı zamanda bir phishing saldırısı olduğu da anlaşılmaktadır.

Sistemden topladığı bilgileri ise, asıl komuta kontrol sunucusu olan 46[.]30.189.44 IP adresine sahip hxxps://kat0x[.]net alan adına şifrelenmiş olarak TLS protokolü ile iletmektedir.

Çözüm Önerileri
  • Sistemlerde güncel, güvenilir bir antivirüs yazılımın kullanılması,
  • Gelen maillere özenle dikkat edilmesi, eklerin analiz edilmeden bilinçsizce açılmaması,
  • Spam maillerin dikkate alınmaması ve e-posta filtreleme konfigürasyonlarının yapılması,
  • İşletim sistemi güncellemelerinin anlık olarak alınması,
  • Mshta.exe programının yapacağı işlemlerin izlemeye alınması,
  • Ağ üzerinden zararlı bağlantı, IP adresleri ve C&C sunucularının filtrelenmesi gibi çözümler, Banking türündeki Dridex zararlısının sisteme enfekte olması ve zarar vermesi engellenebilmektedir.
YARA Kuralı

import “hash”

rule FirstFile{

meta:

description=”3387c59.hta”

strings:

$str1 = “ActiveXObject” fullword

$str2 = “keeee” fullword

$str3 = “folder.Name”

$str4 = “J2KeVEs1AdB5FYChHmogtujc6rG8PZfaITqL9WMw3DvSQOn047yizXpxbRNlUk+/=”

$str5 = “shells.Environment”

$command1 = “window.eval”

$command2 = “window.close”

condition:

hash.md5(0, filesize) == “30dd4284f82c7833034b586ba2d216a0” or all of them

}

rule LinkZip{

meta:

description = “LinkZip.dll”

strings:

$name = “LinkZip.dll”

$str1 = “DownloadData”

$str2 = “downloadData”

$str3 = “mshta.exe”

$str4 = “avUrl” fullword

$str5 = “finalUrl” fullword

$userAgent = “Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36”

condition:

hash.md5(0, filesize) == “7923c5065578d3dbda91646a04e189ec” or all of them and uint16(0x4C7) == 0x5A4D

}

rule FileHTA{

meta:

description = “file.hta”

strings:

$str1 = “ActiveXObject” fullword

$str2 = “keeee” fullword

$str3 = “folder.Name” fullword

$str4 = “J2KeVEs1AdB5FYChHmogtujc6rG8PZfaITqL9WMw3DvSQOn047yizXpxbRNlUk+/=”

$str5 = “shells.Environment”

$command1 = “window.eval”

$command2 = “window.close”

condition:

hash.md5(0, filesize) == “c04acf0e0938c22ca75219aedc19c9a1” or all of them

}

rule StInstaller{

meta:

description= “StInstaller.dll”

strings:

$path1=”%windir%\syswow64\”

$path2=”%windir%\system32\”

$dllname=”Duser.dll” fullword

$exename=”rekeywiz.exe” fullword

$reg = “Software\Microsoft\Windows\CurrentVersion\Run” fullword

$ext1 = “.tmp”

$ext2 = “.config”

condition:

hash.md5(0,filesize) == “567f6f3e4ae4869b9d9954770774aa9f” or all of them

}

rule Duser{

meta:

description = “DUser.dll”

strings:

$base1 = “UHJvZ3JhbQ==”

$base2 = “U3RhcnQ=”

$name = “DUSER.dll”

$a = { ?? ?? ?? ?? ?? ?? ?? 2e 74 6d 70 }

condition:

hash.md5(0,filesize) == “1538ebe93228d9b2246eedfd54c58179” or (all of them and uint16(0) == 0x5A4D)

}

rule SystemApp{

meta:

description = “SystemApp.dll”

strings:

$name = “SystemApp.dll”

$url = “https://kat0x.net/202/4zFPhSyGnJ0DzFatyW3RjZujTsdrKx4qPkcJGupk/16914/11662/df36c81” fullword

$ext1 = “.err”

$ext2 = “.sif”

$ext3 = “.flc”

$ext4 = “.fls”

$reg = “Software\Microsoft\Windows\CurrentVersion\Uninstall” fullword

$str1 = “DUSER”

$str2 = “POST”

$str3 = “gzip”

$json = “Newtonsoft.Json.dll” fullword

condition:

hash.md5(0,filesize) == “3695c1dca8b1cf368abad3f42f3efc16” or all of them

}

rule main {

condition:

FirstFile or LinkZip or FileHTA or StInstaller or Duser or SystemApp

}


Editör

Detaylı Bilgi İçin

info@gaissecurity.com