Dridex


Dridex

Giriş

2015 yılından beri faaliyette olan Dridex zararlısı 2019 yılının en popüler zararlılarından biri oldu. Bulaştığı sistemdeki parolaları çalmaya ve keyloggerlık görevi yapan Dridex, ilk çıktığı günden beri farklı mekanizmalar kullanarak yayılmaya devam etti. Diğer zararlılar gibi Dridex’in da en çok kullandığı yayılma yolu oltalama mailleri oldu.

Özet

Bu analiz 2015 yılından beri aktif olan Dridex zararlı yazılımının neler yaptığını anlatmaya yöneliktir. Yazıda Dridex’in nasıl yayıldığını ve sistem üzerinde neler yaptığını bulabilirsiniz. Kısaca bir özetlemek gerekirse, zararlı oltalama mailleriyle yayılıp kurbanlarına iletiliyor. Ekte bulunan zararlı ofis dosyası açıldığında içerisinde bulunan makro kod çalışıyor. Bu makro içersinde gömülü olarak bulunan payload’ı xsl dosyasına yazarak kaydediyor. Wmic üzerinden çalıştırılan bu xsl dosyası Dridex zararlısını indirip çalıştırıyor. Zararlının amacı parola çalıp kontrol sunucusuna yollamak.





Temel Bilgiler

Bu bölümde analiz edilen dosyalar ile ilgili temel bilgiler verilmektedir.

CatPhoto.doc
MD5
53283250bed5584a0068fd07fde93452
SHA-1
B166ffd268c7532f68a53adae7e855f864b0b1fc
SHA-256
D29bfbc0c7420014962291a416b01637fbaa8f774e0e31e143a392e84c244bcf
Dosya Türü
Office Open XML Document
Dosya Boyutu
67.01 KB














Firefox.exe
MD5 bbdc437a8908e32b7f1243f819dc26b0
SHA-1 5f8aa92d80d9161c9a156fa93266db2490928371
SHA-256 08a00c9be7dd2e64e9b0f6ea85f159275c913faf0aad51884a1eeab3822af246
Dosya Türü Win32 EXE
Dosya Boyutu 204 KB



 Analiz

Oltalama mailinin ekinde bulunan zararlı ofis dokümanı ile analize başlayalım. Ofis dokumanlarını analiz etmek için genellikle oledump ve olevba ile içerisine baktıktan sonra debug etmek için herhangi bir ofis uygulamasına geçiyorum.

Oledump ile baktığımızda A7’de bulunan NewMacros isimli makro dikkatimi çekiyor.


Olevba aracı ile makroyu analiz ediyorum. Bütün makroyu önümüze seriyor. Decode parametresi ile bulduğu stringleri decode ediyoruz.



Çıktıdan şu sonuçlara ulaşabiliriz:
  • AutoOpen fonksiyonu doküman açılınca otomatik olarak çalışır.
  • Shell fonksiyonu herhangi bir komut çalıştırılabilir.
  • Write fonksiyonuyla dosya yazabilir.
  • StrReverse, Chr, hex ve base64 kullanımıyla bazı stringleri gizlemeye çalışıyor olabilir.

Makronun analizine geçelim. Makroya baktığımızda obfuscate edilmiş olduğunu görüyoruz. Analizi zorlaştırmak için gereksiz fonksiyonlar, gereksiz değişkenler, takip etmesi zor değişken isimleri görüyoruz.




Makroyu incelemeye başladığımızda Environ fonksiyonunu kullanarak Public klasörünün yolunu tutuyor.


Oluşturulacak dosyanın konumu ve adı belirtiliyor. Dosya public dizini altında tf8yaMMf.xsl olarak yazılacak.

Dosya oluşturulup yazıldığını görüyoruz. Burada dosyanın içine yazılacak string’i oluştururken zararlının yazarı farklı bir yöntem izlemiş.

Payload’ı oluşturmak için dokümanın içerisine UserForm9 isminde bir form oluşturmuş.


Bu formun kullanımına bakalım. UserForm9 objesi oluşturulup içerisindeki Text alınıyor.


UserForm9’un içerisindeki Text’e baktığımızda ilgimizi çeken şeyler görüyoruz. Aşağıda bulunan ilk görsel sadece stringin başını oluşturuyor. Bütün stringi başka yere taşıdığımızda daha anlamlı gelmeye başlıyor.


Aşağıdaki ekran görüntüsüne baktığımızda ip adresi ve bazı fonksiyonların ters olarak yazıldığını görüyoruz.


Payloadımız ters halde UserForm9’un içerisinde bulunuyor. Makro çalışmaya devam ettiğinde payload’ı ters çevirip xls dosyasının içerisine yazıyor.
Payload xls dosyasına yazıldıktan sonra artık bu xls dosyasını çalıştırma vakti. Burada ise wmic komutu devreye giriyor. En son çalışan komut: “wmic os get /format:"C:\\\\Users\\\\Public\\tf8yaMMf.xsl”. Bu komut ile xsl dosyası çalıştırılıyor.


Çalışan xsl dosyasını bakalım. 2 tane fonksiyonumuz var. İlk çalışacak olan fonskyion select parametresi ile belirtilen wzC8 fonksiyonu.

 İlk başta ActiveXObject objesi oluşturularak PIZj9 değişkeninde bulunan adrese GET isteği yollanıyor. Dönen yanıta göre zararlı işlemler devam ediyor.


Eğer 200 kodu ve bütün data alındıysa (readystate’in 4 olması) bloğun içine giriliyor. Burada da JYYLFO1P fonksiyonu 5 parametresiyle çağırılıyor. Bu numaralar sayesinde fonksiyonun içerisinde bulunan listeden istediği fonksiyonu çağırabiliyor. Mesela bu örnekte 5, savetofile fonksiyonunu çağırıyor.



wzC8 fonksiyonuna verilen parametreyi ve “savetofile” fonksiyonuyla beraber “sheet.pdf”dosyası “YoUAMLhs.exe” olarak kaydediliyor. Shell komutu ile çalıştırılıyor ve operasyonun ilk ayağı tamamlanmış oluyor.
Bu analizi yaptığımda Dridex’e ait sunucular kapatıldığı için başka bir Dridex dosyası kullanarak analize devam edeceğim. Küçük farklar dışında genel akışta bir farklılık bulunmamaktadır.

Dosyay DIE aracı ile baktığımızda 32bit exe olduğunu görüyoruz. Entropisine baktığımız zaman hem normalden farklı section bilgilerini hem bu sectionların yüksek entropiye sahip olduklarını görüyoruz.







 Zaralıda ilgimi çeken başka bir konu ise checksumların farklı olması oldu.


Zararlı analizi zorlaştırmak için çok fazla yöntem kullanmış. Mesela any.run sonucuna[1] baktığımızda dosyayı zararlı bulmadığını görüyoruz.


Zararlı bu analizleri atlatmak için güzel bir teknik kullanmış. Zararlı ilk çalıştığında 10 dakikaya yakın bir süre boyunca OutputDebugStringW fonksiyonuyla “Installing..” yazdırıp sonra Sleep fonksiyonuyla 10 sn boyunca beklemeye alıyor kendini. Bu da çoğu online servisin zararlıyı düzgün bir şekilde analiz edemeyeceği anlamına geliyor.

 Bu döngü bittikten sonra kendisini AtomBombing[2] yöntemini kullanarak explorer.exe’nin içerisine kod enjekte ediyor. AtomBombing yöntemini kısaca anlatmak gerekirse Global Atomic Table’ın içerisine kod gömme diyebiliriz.




Kalıcılık için gerekli olan registryleri sorguladığını görüyoruz.




Zararlının System32 altındaki dosyaları teker teker inceleyip kendi import etmesi gereken DLL’leri aradığını görüyoruz.


Herhangi bir thread’in neler yaptığına baktığımızda daha net görebiliyoruz.

 Dridex için Uygulanabilecek Kurallar

Yara Kuralı

rule Dridex
{
meta:
description = "Dridex Malware - first unpacking detection"
author = "Burak ÇARIKÇI"
date = "23/10/2019"
sample = "Unpacked sample with Sleep and OutputDebugStringW functions"
strings:
$string1 = "installing" wide nocase
$string2 = "installed" wide nocase
$hex = {56 8B F1 F6 44 24 08 01}
$func = {4F 75 74 70 75 74 44 65 62 75 67 53 74 72 69 6E}



condition:
all of them
}

Sigma Kuralı

title: Dridex
status: experimental
description: Detects Dridex malicious activies
author: Burak ÇARIKÇI - CRYPTTECH
logsource:
product: windows
service: sysmon
detection:
selection1:
EventID: 1
Image: '*\schtasks.exe'
CommandLine: '* /create *'
filter:
User: 'NT AUTHORITY\SYSTEM'
selection2:
EventID:1
Image: '*\explorer.exe'
selection_reg1:
EventID: 13
TargetObject:
- '*\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\*'
EventType: 'SetValue'
condition: selection1 and selection2 and selection_reg1 and not filter
fields:
- CommandLine
- ParentCommandLine
- Registry
falsepositives:
- Administrative activity
- Software installation
- Testing
level: high

Öneriler

  • Bilinçlenmek en büyük önlemlerden biridir. Dosyaları açarken daha dikkatli olmalıyız.
  • Şirket içi güvenlik politikası oluşturulmalıdır.
  • Bilmediğiniz kaynaklardan gelen dosyaları açmayın. Agent Tesla ve diğer zararlıların yayılma yollarından bir tanesi oltalama maillerini kullanmaktır.
  • Güvenmediğiniz dosyaları çevrimiçi araçlarla (VirusTotal, hybrid-analysis vb.) kolayca analiz edebilirsiniz.
  • Güvenlik ürünü kullanabilirsiniz.

Kaynaklar

  1. Analiz edilen zararlının any.run sonucu: https://app.any.run/tasks/b6a194a9-93fa-40d1-89e7-3870f4bcc336/
  2. ATOMBOMBING: BRAND NEW CODE INJECTION FOR WINDOWS: https://blog.ensilo.com/atombombing-brand-new-code-injection-for-windows
CT-Zer0

Yorumlar

Bu blogdaki popüler yayınlar

1. Geleneksel Stajyer CTF Soru ve Cevapları

B*-Tree (BTree, BPlusTree) Veri Yapısı ile Veri İndeksleme

2. Geleneksel Stajyer CTF Soru ve Cevapları - 2017