Dövlət qurumlarının birindən əməkdaş tərəfindən WhatsApp Web üzərindən göndərilən sənədlərin qarşı tərəf(lər)ə fərqli formatda çatması ilə bağlı müraciət daxil olmuşdur. Müraciət əsasında sözügedən qurumda araşdırmalara başlanılmışdır.
Zərərli WINRAR arxivi
Əməkdaş WhatsApp Web üzərindən *.docx və *.pdf uzantılı sənədlər göndərdiyini bildirsə də, qarşı tərəfə *.rar uzantılı fayllar çatmışdı.

Analiz prosesinə ilk olaraq RAR arxivindən başladıq. Arxivin daxilində .jse uzantılı bir ədəd skript faylı (JScript Encoded File) saxlanılırdı.

İlkin baxışda faylın güclü şəkildə obfuskasiya edildiyini düşünsək də, sonradan bunun əslində analiz prosesini çətinləşdirmək üçün istifadə olunan sadə bir metod olduğunu anladıq. Belə ki, icra olunacaq zərərli kodlar sənəd daxilində şərhlərin (comment) arasında gizlədilmişdi.

Skript icra edildiyi zaman Tapşırıq Planlayıcısında yeni tapşırıq yaradır. Tapşırığın əsas məqsədi curl alətindən istifadə etməklə daxil edilmiş URL ünvanından cmd (batch) əmrlərini əldə etmək və onları yoluxmuş sistemdə icra etməkdir.
Yayılma və qalıcılıq mexanizmi
WhatsApp üzərindən yayılan arxivin hansı məqsədlər üçün istifadə edildiyini aşkar etdikdən sonra növbəti mərhələdə sözügedən yayılma mexanizmini araşdırmağa başladıq. Bunun üçün analiz prosesinə zərərli arxivi göndərən əməkdaşın sistemində davam etdik.
İlk olaraq, Laboratoriyamızda hazırlanmış “Tusi Paleon” aləti vasitəsilə loqları əldə etdik. Araşdırmaya isə Paleon-un “Task Scheduler” bölməsində yuxarıda analiz etdiyimiz skript tərəfindən yaradılan tapşırıq adını axtarmaqla başladıq.

Fərqli URL ünvanından istifadə olunsa da, mexanizm eyni idi: curl aləti vasitəsilə C2 serverindən cmd əmrlərini əldə etmək və onları sistemdə icra etmək.
Qeyd: İcra olunacaq əmrlər yalnız Tapşırıq Planlayıcısında tapşırığın işə düşmə vaxtından təxminən 5 dəqiqə əvvəl aktivləşirdi. Qalan vaxtlarda URL üzərində heç bir əmr saxlanılmırdı. Tapşırığın əsas məqsədi qarşı tərəfin təyin etdiyi faydalı yükləri sistemə endirmək və işə salmaqdan ibarət idi.
Tapşırığı aşkar etdikdən sonra sistemdə hazırda fəaliyyət göstərən proseslərin analizinə başladıq. Burada diqqətimizi çəkən proses ssms.exe adlı fayl oldu. Proses özünü Microsoft SQL Server infrastrukturunu idarə etmək üçün istifadə edilən proqram təminatının bir hissəsi kimi təqdim etsə də, əslində zərərverici modul idi.

Analiz zamanı virustotal nəticələri 72/0 nisbətində olan nüsxə məqalə yazılarkən 72/33 olaraq yenilənmişdi.
1-ci faydalı yük – ssms.exe - Information Stealer
32 bitlik və 25600 bayt həcminə malik olan, məlumat oğurluğu üçün nəzərdə tutulan modul C# dilində hazırlanmışdı.
Zərərverici içərisində istifadə edilən bütün mətnlər şifrəli halda saxlanılırdı.

Sözügedən mətnlərin deşifrə edilməsi üçün “killgethghs” funksiyasından istifadə olunur. Funksiya parametr olaraq qəbul etdiyi Base64 ilə kodlaşdırılmış məlumatı PBKDF2 (açarların generasiya edilməsi üçün istifadə olunan funksiya) dəstəyi ilə yaradılmış açardan istifadə edərək AES alqoritmi vasitəsilə deşifrə edir.

import hashlib
import os
import binascii
password = b'microsoftSoftwares'
salt = b"Ivan Medvedev"
iteration = 1000
key_len = 48
derive_key = hashlib.pbkdf2_hmac('sha1', password, salt, iteration, dklen = key_len)
key = binascii.hexlify(derive_key[0:32])
iv = binascii.hexlify(derive_key[32:48])
Burada diqqətimizi çəkən maraqlı bir məqam oldu. Belə ki, açar generasiya edən funksiya və onun daxilində istifadə olunan salt (“Ivan Medvedev”) dəyəri əvvəllər də dövlət qurumlarını hədəf alan zərərverici nümunələrində bir neçə dəfə qarşımıza çıxmışdı.
https://mrl.cert.gov.az/az/articles/view/120
Zərərverici işə düşərkən ilk olaraq eyni anda yalnız bir nüsxəsinin fəaliyyət göstərməsi üçün sistemdə “SettingsSingleFileGenerator” adlı mutant (mutex) obyektin olub-olmadığını yoxlayır. Əgər bu obyekt mövcuddursa, fəaliyyətini dayandırır.
Bundan sonra sistemdə aktiv diskləri gəzərək siyahıda göstərilən uzantılara malik faylları HTTP POST vasitəsilə C2 serverinə göndərir. Əlavə olaraq, Mozilla Firefox brauzerinə aid şifrələrin saxlanıldığı logins.json və key3.db fayllarını da oğurlayır.
txt|TXT|text|TEXT|pdf|PDF|doc|docx|DOC|DOCX|xls|xlsx|XLS|XLSX|ppt|pptx|PPT|PPTX|accdb|ACCDB|rar|RAR|zip|ZIP|rtf|RTF|apk|APK|ovpn|OVPN|pfx|PFX|neat|NEAT|err|ERR|eln|ELN|ppi|PPI|er9|ER9|azr|AZR|axx|AXX|jpg|JPG və bulara əlavə olaraq logins.json
İstisna qovluq adları:
- C:\Windows
- C:\$WINDOWS.~BT
- C:\Program Files
- C:\Program Files (x86)
- C:\$Recycle.Bin
- C:\ProgramData
- \AppData\
- C:\Users\All Users\
- \GCC\

Əməliyyat uğurlu olduğu halda zərərverici sonradan sözügedən faylı təkrar yükləməmək üçün əvvəlcədən yüklədiyi faylları ölçüsü və vaxt damğası ilə birlikdə “%AppData%\Roaming\Explorer\exp.txt” faylına yazır. Sonradan bu fayla rast gələrsə, vaxt damğası dəyişilibsə və ölçüsü 160 MB-dan yuxarı deyilsə, faylı yenidən göndərməyə cəhd edir.

Bundan əlavə, zərərvericinin prioriteti yeni yaradılan fayllar olduğu üçün ilk olaraq həmin faylları C2 serverə göndərir. Nisbətən köhnə faylları isə sonradan göndərmək üçün “%AppData%\Roaming\Explorer\expo.txt” faylına yazır.
Yoluxmuş kompüterdən əldə edilmiş Paleon loqlarında hər iki fayl adına rast gəlinmişdir və fayl ölçülərindən göründüyü kimi, kifayət qədər məlumat sızıntısı baş vermişdir.

2-ci faydalı yük – papaya.exe
Paleon loqlarında proses siyahısı üzrə sistemdə fəaliyyət göstərən ikinci bir şübhəli prosesə rast gəlməsək də, sistem eventlərində, daha dəqiq desək, PowerShell eventləri (Event ID 4001) içərisində şübhəli bir əmrin icra edildiyini aşkar etdik.
Yoluxmuş kompüterdə PowerShell vasitəsilə başqa bir C2 serverdən fayl endirilməsinə cəhd edilmiş, lakin URL mövcud olmadığı üçün proses uğursuz olmuşdu. Proses siyahısında sözügedən prosesə rast gəlməsək də, faylın endirilməsinin nəzərdə tutulduğu qovluqda eyni adlı nüsxəyə rast gəldik.

Sözügedən qovluqda papaya.exe faylı ilə yanaşı, istifadəçiyə məxsus olmadığından əmin olduğumuz daha bir neçə fayl da diqqətimizi çəkdi.

sh1.1 və shhwmgrx.exe fayllarının daxilində 2 baytlıq MZ başlığı saxlanılırdı. Ehtimal ki, zərərverən tərəf sistemə başqa nüsxələri endirməyə çalışarkən problemlə qarşılaşıb.
abc.pdf faylının daxilində CMD vasitəsilə icra edilmiş bəzi əmrlərin nəticələri saxlanılmışdı.
Bundan əlavə, istifadəçi məhdudiyyətləri və digər siyasətlərin saxlanıldığı ntuser.pol faylının da bu qovluqda olması şübhəli məqam idi. Faylı sistemdən çıxarmağa cəhd edərkən əvvəlcə bu qovluğa köçürüldüyünü düşünürük.
C++ dilində yazılmış bu zərərverici modulun əsas məqsədi C2 serverdən icra ediləcək əmrləri almaq və nəticələri qarşı tərəfə göndərməkdən ibarət idi. Modul sorğuları 80-ci port üzərindən açıq şəkildə, JSON formatından istifadə edərək göndərir və qəbul edir.

Zərərli nüsxənin analizi zamanı aşağıdakı əmrlərin (mesaj tiplərinin) dəstəkləndiyini aşkarladıq:
- DWW – Download File (Başqa faydalı yükün yoluxmuş kompüterə endirilməsi
- UPP – Sistemdəki hər hansı bir faylı C2 serverə yüklənilməsi
- RUN – Sistemdə proses icra etmək
- DEL - Fayl silmək
- FDD – Daxil edilən qovluqda yerləşən fayllar və qovluqların siyahısı və s. metadalar
- GDR – Aktiv disklərin siyahısı
- msg – cmd əmrlərinin işə salınması

Yoluxmuş kompüterdə papaya.exe faylının fəaliyyəti haqqında kifayət qədər məlumat əldə edə bilməsək də, sonradan laboratoriyada aparılan sınaqlar vasitəsilə modulun fəaliyyəti ilə bağlı lazımi sübutları əldə etdik.
Keçirdiyimiz sınaqlar zamanı modulun FDD, DWW və RUN əmrlərini necə icra etdiyini canlı şəkildə müşahidə etdik. Belə ki, sandbox mühitində işə saldığımız papaya.exe bir neçə dəqiqədən sonra sistemə ransomware nümunəsini (rwarendo.exe) endirdi və onu işə saldı.

Son olaraq isə msg vasitəsilə aşağıdakı əmri komanda sətri üzərindən işə salaraq fəaliyyətini dayandırır:
"taskkill /im papaya.exe /f

Geriyə yalnız bir sual qalırdı: zərərli arxivin WhatsApp üzərindən necə göndərildiyi. Təəssüf ki, yoluxmuş kompüterdə bununla bağlı hər hansı izə rast gəlməsək də, laboratoriyada apardığımız sınaqlar bunun yalnız bir üsulla həyata keçirilə biləcəyini göstərdi.
Yoluxmuş şəxs legitim sənədi qarşı tərəfə göndərdikdən sonra WhatsApp Web-i açıq saxladığını və otaqdan ayrıldığını bildirmişdi. Apardığımız araşdırmalar göstərdi ki, zərərverici modullardan hər hansı biri vasitəsilə web bələdçisinə, bu halda Google Chrome-a aid qovluq köçürülərək başqa bir kompüterdə, yəni zərərverən tərəfə məxsus sistemdə mövcud Chrome qovluğu ilə əvəzlənərsə, həmin kompüterdə yoluxmuş şəxsin sessiyası ilə yenidən daxil olmaq və istənilən əməliyyatı icra etmək mümkün olur.
Indicators of Compromise
OPEC_mektub_Koordinasiya-Gorusu_Dekabr.pdf.jse
MD5: be1ff48fd155a44293c9b121c7735268
SHA-1: e810a110f31b939c3e414a2bb9583c0da3723ff1
SHA-256: c93e0f954cfcfafbb07cc248fab3167eee51f9986304ed4afe0bf92965c83587
papaya.exe
MD5: fd0c215e36ef6c2ce12913a995f636d6
SHA-1: 73e63aead00de56121b5c3402924d7232ea676dd
SHA-256: 225638c63dd04f4ae370afcee362c625f33ec3a41b03d095956b7ca12d1e7c74
ssms.exe
MD5: 87b1e69e4ed9c9a90c6e6fce5de51aeb
SHA-1: ea016526fa4b4e8dddd44fada3f5a35a42ccd2de
SHA-256: d0176aec9ddad6ad964afe50404d63c8a524e6467663d025dffdffceb0215e9e
rwarendo.exe
MD5: 206592f85095445066e7b5985e3a9704
SHA-1: a89fd20766d9ef4860c391b7ba2e3e39cfdd487d
SHA-256: b190f56d726deb4641ab5f83e227ec90e8188ff085b411b70ae00678618fe0f8
Domains
adamsaviary.com
joelgardens.com
hoomaxdrive.com