Agent-Tesla uzun müddətdir yerli dövlət qurumlarını hədəf almaqdadır.
Bu dəfəki analiz prosesi Azərbaycan Texniki Universitetinin tələbəsi və hal hazırda "Malware Research Lab" -da təcrübəçi olan R. Abdinov tərəfindən aparılmışdır.
"rrDmetnnff.exe" icra edilə bilən faylı “1937003987.xz” adı altında arxivlənmişdir.
Fayl haqqında məlumatlara nəzər saldıqda, onun .NET platforması üzərindən yazıldığını görə bilərik.
Əlavə olaraq fayl, naməlum obfuskator vasitəsilə mühafizə olunurdu.
Ətraflı analizi izolasiya olunmuş virtual mühitdə davam edəcəyik. Analiz zamanı Windows 7 və Windows 10 əməliyyat sistemlərindən istifadə olundu. Təhlükəsiz mühiti və şəbəkəni təmin etdikdən sonra, zərərverici işə salındı. İlk öncə fayl sistemində bir neçə şübhəli aktivliklər diqqətimizi çəkdi. Zərərverici proses paşladıldıqdan sonra eyni adlı konfiqurasiya(config) faylı (Şəkil 1), resurs(resource) fayllar və dll kitabxanalar (Şəkil 2) oxumağa cəhd edir.
Bundan əlavə “Bjhrcsdj” adı altında digər resurs, .dll və .exe faylları yaradıb oxumağa cəhd edir.
Şəbəkə aktivliyinə nəzər salsaq diqqətimizi çəkən smtp sorğular oldu.
Zərərverici “cp.gencoldfire.com” domeni ilə SMTP əlaqəsini 587-ci port üzərindən qurmağa cəhd edir. Məhz bu port məlumatların smtp protokolu ilə şifrələnmiş vəziyyətdə göndərməyi təmin edir. Buradan haker zərərçəkmiş sistemdən hər hansı məlumatları oğurlayıb, onu hədəf sistemdən poçt vasitəsilə göndərdiyi aydın olur. Hədəf kompüterdə SMTP servisini aktivləşdirmək üçün isə “185.196.11.12” ip ünvanına sorğu göndərilir.
Və beləliklə kompüterin public ip ünvanını öyrənib elektron poçtu autentifikasiya üçün hazır edir.
Bununla yanaşı http sorğularında “ip-api.com” domen adına sorğu getdiyini görə bilərik. IP-api.com, İP ünvanlar haqqında ətraflı məlumat vermək üçün istifadə olunan bir xidmətdi.
Sorğunun tam linki (1) APİ servisi vasitəsilə hədəf sistemin hər hansı bir hostinqə bağlı olub və ya olmadığını öyrənmək üçün müraciət edir və cavab (2) olaraq “false” sətrini qaytarır. Hostinq məlumatlarını öyrənmək zərərvericinin sonrakı addımlarını, məsələn, yeni hostinqə (bizim situasiyada smtp) qoşulmağı müəyyən edir.
Zərərverici obfuskasiya olunduğuna görə metod və funksiyaların həqiqi adlarını tapmaq mümkün olmadı. Buna görədə faylı dnSpy aləti vasitəsilə birbaşa debuging üsulu ilə mənbə kodlarını çıxarmağa başlayaq.
İlk olaraq faylın hansı moduldan başlandığını görürük. Növbəti addımlarda zərərvericinin resurslara yeni bir “Dabyg” adlı fayl yüklədiyini aşkar etdik.
Bu faylın içərisindəki verilənlər növbəti mərhələdə istifadə olunacaq.
Bu mərhələ bizim üçün əsas açar olacaq. Koda diqqət etsək aşağıdakı ardıcıllığı müəyyən edəcəyik:
- SearchTokenizer metodu “Dabyg” resurs faylı qaytaran və sonra bayt massivinə ötürür.
- Massivlə eyni uzunluqda yeni bayt array2 massivi yaradır.
- "133" dəyəri ilə sətir mətnini təyin edir.
- Array massivinin hər bir baytı mətn sətirindən müvafiq bayt ilə XOR əməliyyatı icra edir. Bu halda, mənbə massivinin uzunluğu(Array) sətirin uzunluğundan çox olarsa, sətir mətni təkrarlanır.
- Əldə edilmiş nəticələr array2 massivində saxlanılır.
Birinci və ikinci massiv müvafiq olaraq aşağıda göstərilmişdir:
Burada ikinci massivdə 4D 5A dəyərini (MZ) görürük və bu massivi dump edərək yeni bir fayl almış oluruq.
Kod analizinə davam edək. Artıq növbəti mərhələdə zərərverici yaddaşa “Bjhrcsdj.dll” kitabxana faylını yükləyir və onun daxilində işini davam etdirir. Bu fayl digər sistem dll kitabxanalarını çağırır. Diqqətimizi çəkən aşağıdakı kod hissəsi oldu:
Kod daxili metodlarından istifadə edərək növbəti addımları icra etmiş olur:
- Arqumentlərin mövcudluğunun yoxlanılması: Arqumentlər massivinin boş və ya 0 olduğunu yoxlayır.
- Arqumentlər yoxdursa və ya arqumentlərin sayı 0-dırsa, metod hədəf metodunu arqumentlərin sıfır massivi ilə çağırır. Əks halda, növbəti mərhələyə keçir.
- Metod çağırılması: RuntimeMethodHandle.InvokeMethod-dan ötürülən arqumentlərlə birbaşa metod çağırmaq üçün istifadə edir.
- Parametrlərin yenilənməsi: Əgər arqumentlər ötürülübsə, metodun parametrləri arqumentlərin dəyərləri ilə yenilənir. Bu, arqument dəyərlərini parameters massivinə köçürməklə baş verir.
Bu kodu dövri olaraq icra edəndən sonra nəticədə yeni icraedilə bilən fayl aşkar etdik. Bu fayl zərərverici daxilində alt proses kimi işə düşür.
Az öncə kod vasitəsilə əldə edilmiş massivlərə nəzər salaq:
Parameters massivini dump edərək növbəti və sonuncu icraedilə bilən faylı əldə etmiş oluruq. Yeni faylın parametrləri ilə tanış olaq və analizinə başlayaq.
Yeni “a7f861d2-3d66-4995-972a-5d94b8c87db1.exe” adlı zərərvericini dnSpy alətində analiz edərək artefaktları toplayaq. İlk öncə klas adlarını görə bilərik.
Artıq bu fayl obfuskasiya olunmadığından mənbə kodlarını analiz etmək asan oldu.
Fayl icra ediləndən sonra ilk olaraq CheckRemoteDebuggerPresent metodundan istifadə edərək debugger olub-olmadığını yoxlayır. Bu anti-debug metodu, tərəfimizdən uğurla bypass edildi.
Daha sonra Wireshark trafikində rastlaşdığımız ip-api.com domeninə sorğu göndərmək üçün istifadə edilən kod parçası aşkar edilir.
Bu əməliyyatları icra etdikdən sonra “FSNN0ox” adlı əsas klasın icrası başlayır. Burada metodların adındanda göründüyü kimi əsas məqsəd əsasən şəbəkə əməliyatları üçün verilənləri təqdim etməkdir.
Bu verilənlərə smtp əlaqəsini qurmaq üçün istifadə olunacaq elektron poçt domeni və həmçinin bu poçta giriş etmək üçün istifadəçi adı və parolunu aid etmək olar. Bu məlumatları daha sonra yaddaşın dump-nı çıxardıqdan sonrada əldə edəcəyik.
Daha sonrakı addımlarda isə zərərvericinin məlumatları hansı klaslar və metod ilə topladığı üzə çıxır.
"TNp9kYucc5a" klasında “Grab” metodundan istifadə etməklə kritik məlumatların toplanılması baş verir.
Məsələn: “Flash FXP” adlı ftp servisi üçün nəzərdə tutulmuş tətbiqindən məlumatların çıxarılması:
Bu üsul ilə zərərverici hədəf kompüterdən məlumatları əldə etmiş olur. Bütün toplanılacaq məlumatlar məqalənin sonrakı gedişatında göstəriləcək.
Kod analizinin sonunda isə bu məlumatları hansı formatda topladığını öyrəndik. Sonuncu klası analiz etdikdə toplanılmış verilənləri html fayl formatında cəmləyir. Prosesi bitirdiyi vaxtı isə faylın adı olaraq müəyyənləşdirir.
Bununlada kod analizi başa çatır.
Analizin növbəti mərhələsində məqsəd zərərvericinin hansı məlumatları oğurladığını fayl sistemi aktivlikləri ilə daha aydın görmək olacaq. Bunun üçün Process Monitor alətindən istifadə etdik:
Şəkildən görə bilərik ki, zərərverici ilk öncə çox saylı brauzerdən istifadəçi məlumatlarını əldə etmək üçün müvafiq qovluqlar yaradıb daha sonra həmin qovluqlara müraciət edir. Həmçinin brauzerlərdən əlavə, zərərverici mümkün mesajlaşma və poçt tətbiqlərindəndə məlumatları oğurlayır. Bütün siyahı aşağıda göstərilmişdir:
Firefox\profiles.ini |
Citrio\User Data |
Opera Software\Opera Stable |
SeaMonkey\profiles.ini |
Edge\User Data |
YandexBrowser\User Data |
Thunderbird\profiles.ini |
Uran\User Data |
Iridium\User Data |
BlackHawk\profiles.ini |
liebao\User Data |
Chromium\User Data |
Cyberfox\profiles.ini |
Elements Browser\User Data |
7Star\User Data |
K-Meleon\profiles.ini |
Epic Privacy Browser\User Data |
Torch\User Data |
icecat\profiles.ini |
CocCoc\Browser\User Data |
Chrome\User Data |
Pale Moon\profiles.ini |
ChromiumViewer |
Kometa\User Data |
IceDragon\profiles.ini |
Flock\Browser\profiles.ini |
Amigo\User Data |
Waterfox\profiles.ini |
Claws-mail |
Brave-Browser\User Data |
Postbox\profiles.ini |
Foxmail\mail |
CentBrowser\User Data |
Microsoft\Credentials |
Opera Mail\wand.dat |
Chedot\User Data |
Microsoft\Protect |
Pocomail\accounts.ini |
Orbitum\User Data |
QQBrowser\User Data |
eM Client\accounts.dat |
Sputnik\User Data |
falkon\profiles\ |
Mailbird\Store\Store.db |
Dragon\User Data |
The Bat! |
FileZilla\recentservers.xml |
Vivaldi\User Data |
Epic Privacy Browser\User Data |
FlashFXP |
QIP Surf\User Data |
CocCoc\Browser\User Data |
FTP Navigator\Ftplist.txt |
Coowon\User Data |
Uran\User Data |
liebao\User Data |
Citrio\User Data |
Discord |
Elements Browser\User Data |
Edge\User Data |
Kod analizində əldə edilmiş elektron poçt məlumatlarını yaddaşdan çıxararaq da əldə edə bilərik.
Filterləmədə dəyişiklik edib aşağıdakı nəticəni alırıq:
Burada “Gencoldfire”-a məxsus mail domeni və elektron poçt ünvanı görə bilərik. İstifadəçi adı “rocc@gencoldfire.com” və parolu “GM6Jıf&/R7KLPtL?” yoxlamaq üçün poçtun domeninə keçid edək:
Nəticədə bu poçtdan məlumatların ötürülməsi ilə yanaşı, fişing məqsədi üçün də istifadə olunduğunu aşkar etdik.
“AgentTesla”-ın ssenarisi aşağıdakı kimidir:
- Zərərverici arxiv faylı formatında hədəf kompüterə çatdırılıb.
- Zərərverici başladıldıqdan sonra fon rejimdə işləyir.
- İlk öncə zərərverici müvafiq resurs faylından istifadə edərək dll kitabxana faylı yaradır.
- Yaradılmış dll faylından istifadə edərək kitabxana daxilindəki resursları çağırır və yeni zərərverici icraedilə bilən fayl generasiya edir.
- Artıq ikinci icraedilə bilən zərərverici “Stealer” oğru funksiyasını icra edir.
- Hədəf kompüterdə SMTP servisini aktivləşdirdikdən sonra zərərvericinin əvvəlcədən generasiya etdiyi autentifikasiya məlumatları ilə “rocc@gencoldfire.com” poçtuna daxil olur və məlumatları html formatında toplayaraq “rorocc@gencoldfire.com” poçt ünvanına göndərir.
Indicators of Compromise
3648E7CCCF7A4386F13A72BAF02429AA67CE4B81
8E6B7697C6827B0C6A822AB57A72BE2405C60536
4836CC461786D582A2088A16A92F8F517CFA00ED
htt[x]://ip-api.com/line/?fields=hosting
htt[x]://mail.gencoldfire.com
htt[x]://185.196.11.12