Computer Emergency Response Center

DarkGate - Yoluxmaq üçün legitim Windows proqram təminatları ilə maskalanma

Kompüter İnsidentlərinə qarşı Mübarizə Mərkəzi-nin (cert.gov.az) vəzifələrindən biridə - kompüter təhlükəsizliyinin təmin edilməsinə dair proqram və texniki vasitələrin seçilməsində məsləhətlər verilməsi, kompüter sistemlərinin qorunması üçün proqram vasitələrinin nöqsanları və çatışmazlıqları aşkar edildikdə proqram təminatı satıcıları ilə əməkdaşlıq -dır.

Dövlət qurumları üçün yeni XDR həllinin seçilməsi üçün CERT, mərkəz daxilində müxtəlif həllərin testlərini aparır. Keçirilən  testlərdən biridə internetdə (Virustotal, MalwareBazaar və s.) mövcud olan zərərverici nüsxələrinə qarşı sözü gedən həllərin hansı reaksiyanı verəcəyini müşahidə edilməsi idi. Konfidensial olduğu üçün satıcılar ilə bağlı məlumatlar paylaşılmayacaq. Lakin sözü gedən test sona qalan 4 satıcı həlləri üzərində keçirilmişdir. Birazdan analiz edəcəyimiz zərərli nüxsə yalnız 1 məhsul tərəfindən aşkar edilirdi. Digər 3 satıcı, nüsxənin false-positive olma ehtimalı üzərində dayanırdı. Bundan əlavə olaraq bəzi iddialar isə nüsxənin hər hansı bir şübhəli əməliyyat icra etməməsi yönündə idi. Yaranan fikir ayrılığı səbəbindən nüsxə MRLab-a göndərilərək şübhəlinin hansı əməliyyatları icra etdiyinə dair ətraflı raport istənildi. Söze gedən raportu sizlərə təqdim edirik.

Raport

Şübhəli nüsxə: 143c1f6a1095fd6f63eae25d3b2cee9ba800c47b48279c8f7c62609118cc4299.msi

Həcm: 3.57 MB

MD5: 6550B181486C080B7C524BEC6370D85D

SHA-1: B54CA1AD61DF207E0AA3215CB58E362886F68095

SHA-2: 143C1F6A1095FD6F63EAE25D3B2CEE9BA800C47B48279C8F7C62609118CC4299

MSI (Microsoft Software Installer) Microsoft tərəfindən təqdim edilən proqram quraşdırma paketidir. Paket iyerarxiyasına baxdığımız zaman diqqətimizi 2 ədəd icra edilə bilən fayl cəlb etdi.

Nüsxə: dbgeng.dll

Həcm: 3.83 MB

Md5: 544AD0AC2A8AC23CFCADCE08DBC6CCF4

SHA-1: 435A190C0AB8E1BF7F0ACFEAF677DDFCEA2EB5EB

SHA-2: 6B7E78FFEC23A2F21EE3664D5E9A976CF6FCE4A2413C49808976CEBE7FAD1DB8

Nüsxə: windbg.exe

Həcm: 474 KBs

MD5: 04EC4F58A1F4A87B5EEB1F4B7AFC48E0

SHA-1: 58DCB1CBBEC071D036A07F0E8FEB858E4C5B96E7

SHA-2: BD1AF3DBA56B129E6C624297EEED40C898FA2981FCE5CAAFE467D88A748988A4

“windbg.exe” Microsoft tərəfindən Windows SDK ilə birlikdə gələn proqramların debug edilməsi üçün istifadə edilən alətdir. https://learn.microsoft.com/en-us/windows-hardware/drivers/debugger/debugger-download-tools

“dbgeng.dll” isə windbg.exe tərəfindən istifadə edilən dinamik kitabxana faylı adıdır.

windbg.exe kod imzalama sertifikatı daşıyırdı.

MSI paketi haqqınd ilkin məlumatları əldə etdikdən sonra paketə daha yaxından baxmaq üçün paketi extract etdik.

7z.exe e C:\Users\xxx\Desktop\MSI_EXTRACTED\143c1f6a1095fd6f63eae25d3b2cee9ba800c47b48279c8f7c62609118cc4299.msi -oC:\Users\xxx\Desktop\MSI_EXTRACTED\output

7z.exe e C:\Users\xxx\Desktop\MSI_EXTRACTED\output\Binary.bz.WrappedSetupProgram -oC:\Users\xxx\Desktop\MSI_EXTRACTED\samples

windbg.exe doğurdanda təsdiqlənmişdi.

Windbg.exe -nin legal olduğuna qərar verdikdən sonra növbəti əməliyyat olaraq dbgeng.dll faylının analizinə başladıq.

 

dbgeng.dll

Sözü gedən dinamik kitabxana faylı debug alətinə ring3 və ring0 debug edildiyi zaman əlavə funksionlıqlar təqdim edir. Lakin analiz etdiyimiz nüsxə içərisində bəzi anomaliyalara rast gəldik.

  • Nüsxə ölçüsü və versiya məlumatlarında bəzi anomaliyalar qeydə alındı

  • Nüsxə export edilən funksiyalar diqqətimizi cəlb edən 2-ci məqam oldu

Şübhəli nüsxə:

Təmiz nüsxə:

  • Şübhəli nüsxənin resurs bölməsində naməlum 2 məlumat

Legitim dbgeng.exe içərisində rast gəlinməyən lakin şübhəli nüsxə içərisində mövcud olan 2 ədəd RC_DATA tipində (şifrlənmiş məlumat olma ehtimalı yüksək) resurs.

  • Şübhəli kitabxana faylı Borland Delphi dilində yazılmışdı.

Anomaliyaların aşkarlanmasından sonra ilk olaraq şübhəli nüsxəni virtual mühitdə işə salaraq proses və fayl aktivliklərinə baxmaq qərarına gəldik. Lazımı monitorinq alətlərini sazladıqdan sonra MSI faylını işə saldıq.

Proses və Fayl aktivlikləri

Ilk olaraq MSI tərəfində baş verən proses aktivliklərinə baxdıq.

  1. exe windbg.exe faylını extract etdikdən sonra işə salır
  2. exe isə Autoit3.exe (???) prosesini yaradır

windbg.exe -nin fayl aktivliklərinə baxdığımız zaman isə c:\tmpp qovluğunda "Autoit3.exe" və "test.au3" (Autoit-Skript faylı) adlarında 2 ədəd fayl yaratdığının şahidi olduq.

AutoIT Windows ƏS sistemində GUI (Graphical User Interface) və s. kimi əməliyyatları avtomatlaşdırmaq üçün nəzərdə tutulan Basic dilinə bənzər skript dilidir. Zərərvericilər tərəfindən uzun müddətdir istifadə edilən skript dilidir. Burda ilk baxışdan görünən zərərverici kodların test.au3 skript faylı içərisində olduğu və kodların icrası üçün Autoit3.exe dən istifadə edildiyidir. Lakin skript faylını analiz etməzdən öncə sözü gedən 2 faylın windbg.exe tərərfindən necə yaradıldığını aşkarladıq.

Windbg.exe -nin legitim proqram təminatı olduğunu aydınlaşdırmışdıq. Geriyə qalırdı Windbg alətinin işə düşərkən yaddaşına yüklədiyi dbgeng.dll kitabxanası. Xatırlayırsınız sa əsas anomaliyalar məhz bu dll faylı içərisində idi.

Dbgeng.dll analizi

Analiz prosesinə kitabxana faylının disassemb edərək başladıq. İlk olaraq DllEntrypoint funksiyasında diqqətimizi UnityMain funksiyası cəlb etdi. DLL yüklənərkən DllEntryPoint içərisində bu funksiya çağrılır.

UnityMain funksiyası içərisində zərərverici ilk olaraq "c:\tmpp" qovluğunun olub olmadığını yoxlayır. Əgər yoxdursa c qovluğunda tmpp adında qolvuq yaradır.

Sonrakı əməliyyat olaraq zərərli kitabxana resurs bölməsində saxlanılan RESA (RC_DATA) resursunu yaddaşa yükləyir.

Bundan sonra RES3 (RC_DATA) və KEY (RC_DATA) resurslarını yükləyir.

Məlumatlar UTF-16 ilə yükləndiyi üçün növbəti əməliyyat olaraq LStrFromPWCharLen funksiyasının köməkliyi ilə məlumatları ANSI ilə kodlaşdırır və deşifrə əməliyyatını icra edir.

Deşifrələmə olaraq qeyd etdiyimiz məqam əslində base64 ilə kodlaşdırılmış məlumatların deşifrə edilməsidir. Lakin burada maraqlı nüans ondan ibarət idi ki, zərərverici deşifr əməliyyatı üçün xüsusi əlifbadan (Key resursu – “=6LizNGqlUZQST8BFKoYs+OdgIc27DyeuR31XCprvxVhj40AEawHfJn9PMkWtm5b”) istifadə edirdi.

Deşifr əməliyyatdan sonra zərərverici RESA resursunu" c:\tmpp\Autoit3.exe" olaraq, RES3 resursunu isə "c:\tmpp\test.au3" olaraq diskə yazır.

Son olaraq zərərli kitabxana CreateProcess funksiyası ilə c:\tmpp\Autoit3.exe ni “c:\tmpp\test.au” komanda sətri parametri ilə işə salır. Bununla AutoIt3, test.au3 skriptini oxuyur və icra edir.

AutoIT skriptinin analizi

Gözlədiyimizin əksinə Autoit skripti (test.au3) açıq şəkildə deyil kompilasiya edilmiş halda idi.

Bir neçə kiçik əməliyyat ilə skripti dekompilasiya edərək əsas icra olunacaq kodları əldə edə bildik.

Burada əməliyyatın davam etdirilə bilməsi üçün skript sistemdə Sophos-un olub-olmadığını yoxlayır. Əgər Sophos quraşdırılıbsa skript əsas shellkodu icra etmir. Skript ilk olaraq

$ybugyrw = DllStructCreate("byte[" & 48753 & "]")

əmri ilə yaddaşda (Autoit3.exe -nin) 48753 baytlıq boş ərazi ayırır.

2-ci əməliyyat olaraq

Execute(BinaryToString("0x446C6C43616C6C28226B65726E656C33322E646C6C222C2022424F4F4C222C20225669727475616C50726F74656374222C2022707472222C20446C6C537472756374476574507472282479627567797277292C2022696E74222C2034383735332C202264776F7264222C20307834302C202264776F72642A222C206E756C6C29"))

əmri icra edilir. Əmri dekod etdikdən sonra $ybugyrw dəyişəninin göstərdiyi adres-ə VirtualProtect ilə kod icra etmək imtiyazı (0x40) verir.

DllCall("kernel32.dll", "BOOL", "VirtualProtect", "ptr", DllStructGetPtr($ybugyrw), "int", 48753, "dword", 0x40, "dword*", null)

Növbəti əmr ilə əsas icra ediləcək shellkod ($qylpncym dəyişənində saxlanılan) yuxarıda qeyd edilən araziyə köçürülür.

Execute(BinaryToString("0x446C6C537472756374536574446174612824796275677972772C20312C2042696E617279546F537472696E672822307822262471594C706E63596D2929"))
DllStructSetData($ybugyrw, 1, BinaryToString("0x"&$qYLpncYm))

Son icra edilən əmr:

Execute(BinaryToString("0x446C6C43616C6C28227573657233322E646C6C222C2022696E74222C2022456E756D57696E646F7773222C2022707472222C20446C6C537472756374476574507472282479627567797277292C20226C706172616D222C203029"))

Bu əmr ilə zərərverici EnumWindow funksiyasından istifadə edərək zərərli shellkodu “Callback” funksiyasının köməkliyi ilə işə salır.

DllCall("user32.dll", "int", "EnumWindows", "ptr", DllStructGetPtr($ybugyrw), "lparam", 0)

32 bitlik shellkodun analizi.

32 bitlik shellcode EnumWindows (lpEnumFunc) funksiyası üzərindən işə salınır.

Shellkod ilk olaraq import adres tablosunu hazırlayır. Bunun üçün Proses mühit blokundan (PEB) istifadə edir. İlk kernel32.dll adresini götürür daha sonra isə ardıcıl şəkildə LoadLibraryGetProcAddress funksiyalarının adreslerini.

Daha sonra bu api-lar üzərindən lazım olan digər funksiyaları import edir.

Shellkod bir neçə əməliyyat icra etdikdən sonra keçir əsas faydalı yükün (DarkGate) -in deşifrə edilərək işə salınmasına. Deşifrələməyə keçməzdən öncə bir neçə yoxlama əməliyyatı aparır.

Proses komanda sətrinin işə salınan fayl sonluğunun ".au3" olması.

Autoit tərəfindən işə salınan skript içərisində bəzi sehirli imzaların (skriptin kompilasiya edilib-edilmədiyi) yoxlanılması və s.

Bundan sonra shellkod kompilasiya edilmiş skript içərisindən 8 baytlıq açarı ("PplhLGPJ") götürərək skript içərisində şifrələnmiş halda saxlanılan əsas faydalı yükü deşifrə edərək VirtualAlloc ilə yaradılan yaddaş ərazisinə köçürür və DarkGate-i, dos stub içərisindən işə salır.

Yaddaş ərazisində yerləşən əsas faydalı yükün virustotal nəticəsi:

Məqalədə zərərvericinin analizi aparlmamışdır. İnternet üzərindən zərərverici haqqında ətraflı məlumat əldə edə bilərsiniz . DarkGate olduqca funksional zərərvericidir. Xüsusi ilə virtual mühitin və antivirus proqram təminatlarının aşkarlanmasına olduqca aqresiv yanaşır. Diqqəti çəkən bəz funksionallıqlar aşağıda sıralanmışdır.

  • Keylogger
  • Web bələdçi məlumatlarının oğurlanması
  • Process injection (Web bələdçilər üzərindən)
  • Virtual mühitlərin aşkar edilməsi

  • Antivirus proqram təminatlarının aşkar edilməsi (Kaspersky, BitDefender, MalwareBytes, Norton, Symantec, Super Anti-spyware, Comodo, 360 Total Security , F-Secure, Sophos, G-Data, IOBit Malware fighter və s.). Zərərverici bunun üçün adları çəkilən antiviruslara aid proses adlarını proses siyahısında (ToolHelp32), qovluq adlarını fayl sistemində (GetFileAttributes, FindFirstFile*) aşkarlamağa çalışır.

  • Bəzi analiz proqram təminatlarının aşkarlanması (Process Explorer, Task Manager). Bunu proses siyahısı və pəncərə adları üzərindən edir.

  • Uzaqdan idarə etmə (AnyDesk, hVNC)
  • FTP məlumatlarının oğurlanması
  • Sistem bərpa nöqtələrinin silinməsi

Son olaraq zərərverici bağlantı ünvanlarını (C2) spesifik əlifba ilə base64 formatında kodlaşdırılmış şəklində saxlayır.

Press ESC to close