ProHoster > Blog > İdarə > RATKing: Yeni Uzaqdan Giriş Trojan Kampaniyası
RATKing: Yeni Uzaqdan Giriş Trojan Kampaniyası
May ayının sonunda biz Remote Access Trojan (RAT) zərərli proqram təminatını yaymaq üçün bir kampaniya aşkarladıq - bu, təcavüzkarlara yoluxmuş sistemi uzaqdan idarə etməyə imkan verən proqramlardır.
Tədqiq etdiyimiz qrup infeksiya üçün heç bir xüsusi RAT ailəsi seçməməsi ilə fərqlənirdi. Kampaniya daxilindəki hücumlarda bir neçə troyan müşahidə edildi (bunların hamısı geniş yayılmışdı). Bu xüsusiyyəti ilə qrup bizə siçovullar padşahını – quyruqları iç-içə olan gəmiricilərdən ibarət mifik heyvanı xatırlatdı.
Orijinalı K. N. Rossikovun “Sıçanlar və siçanbənzər gəmiricilər, iqtisadi cəhətdən ən vacibi” (1908) monoqrafiyasından götürülmüşdür.
Bu məxluqun şərəfinə nəzərdən keçirdiyimiz qrupa RATKing adını verdik. Bu yazıda hücum edənlərin hücumu necə həyata keçirdikləri, hansı vasitələrdən istifadə etdikləri barədə ətraflı məlumat verəcəyik, həmçinin bu kampaniya üçün atribut haqqında fikirlərimizi bölüşəcəyik.
Hücumun gedişi
Bu kampaniyadakı bütün hücumlar aşağıdakı alqoritmə uyğun olaraq baş verdi:
İstifadəçi Google Diskə keçidi olan fişinq e-poçtu aldı.
Linkdən istifadə edərək qurban son faydalı yükü Windows reyestrinə yükləmək üçün DLL kitabxanasını təyin edən zərərli VBS skriptini yükləyib və onu icra etmək üçün PowerShell proqramını işə salıb.
DLL kitabxanası son faydalı yükü - əslində, təcavüzkarlar tərəfindən istifadə edilən RAT-lardan birini - sistem prosesinə daxil etdi və yoluxmuş maşında möhkəmlənmək üçün VBS skriptini autorun-da qeyd etdi.
Son faydalı yük sistem prosesində yerinə yetirildi və təcavüzkara yoluxmuş kompüteri idarə etmək imkanı verdi.
Sxematik olaraq bu şəkildə təqdim edilə bilər:
Bundan sonra, zərərli proqramların çatdırılma mexanizmi ilə maraqlandığımız üçün ilk üç mərhələyə diqqət yetirəcəyik. Zərərli proqramın özünün işləmə mexanizmini ətraflı təsvir etməyəcəyik. Onlar geniş şəkildə mövcuddur - ya ixtisaslaşmış forumlarda satılır, ya da hətta açıq mənbə layihələri kimi paylanır - və buna görə də RATKing qrupuna xas deyil.
Hücum mərhələlərinin təhlili
Mərhələ 1. Fişinq e-poçtu
Hücum qurbanın zərərli məktub alması ilə başladı (təcavüzkarlar mətnlə müxtəlif şablonlardan istifadə etdilər; aşağıdakı ekran görüntüsü bir nümunə göstərir). Mesajda qanuni depoya keçid var idi drive.google.com, bu, guya PDF sənədinin endirmə səhifəsinə gətirib çıxardı.
Fişinq e-poçt nümunəsi
Ancaq əslində bu, ümumiyyətlə yüklənmiş bir PDF sənədi deyil, VBS skripti idi.
Yuxarıdakı ekran görüntüsündə e-poçtdakı linkə kliklədiyiniz zaman, adlı bir fayl Cargo Flight Details.vbs. Bu halda hücumçular faylı qanuni sənəd kimi ört-basdır etməyə belə cəhd etməyiblər.
Eyni zamanda, bu kampaniya çərçivəsində biz adlı bir ssenari kəşf etdik Cargo Trip Detail.pdf.vbs. O, artıq qanuni PDF üçün keçə bilər, çünki Windows standart olaraq fayl uzantılarını gizlədir. Düzdür, bu vəziyyətdə VBS skriptinə uyğun gələn onun simvolu hələ də şübhə doğura bilər.
Bu mərhələdə qurban aldadıcılığı tanıya bilər: bir saniyəlik yüklənmiş fayllara daha yaxından nəzər salmaq kifayətdir. Bununla belə, bu cür fişinq kampaniyalarında təcavüzkarlar çox vaxt diqqətsiz və ya tələsik istifadəçiyə etibar edirlər.
Mərhələ 2. VBS skriptinin işləməsi
İstifadəçinin təsadüfən aça biləcəyi VBS skripti Windows reyestrində DLL kitabxanasını qeyd etdi. Skript qarışıq idi: içindəki sətirlər ixtiyari simvolla ayrılmış bayt kimi yazılmışdır.
Qarışıq skript nümunəsi
Deobfuscation alqoritmi olduqca sadədir: hər üçüncü simvol qarışıq sətirdən çıxarıldı, bundan sonra nəticə baza16-dan orijinal sətirə deşifrə edildi. Məsələn, dəyərdən 57Q53s63t72s69J70r74e2El53v68m65j6CH6Ct (yuxarıdakı ekran görüntüsündə vurğulanmışdır) nəticədə xətt idi WScript.Shell.
Sətirləri gizlətmək üçün Python funksiyasından istifadə etdik:
def decode_str(data_enc):
return binascii.unhexlify(''.join([data_enc[i:i+2] for i in range(0, len(data_enc), 3)]))
Aşağıda, 9-10-cu sətirlərdə deobfuscation DLL faylı ilə nəticələnən dəyəri vurğulayırıq. Məhz o, PowerShell-dən istifadə edərək növbəti mərhələdə işə salındı.
Qarışıq DLL ilə sətir
VBS skriptindəki hər bir funksiya sətirlərin gizlədildiyi üçün yerinə yetirildi.
Skript işə salındıqdan sonra funksiya çağırıldı wscript.sleep — təxirə salınmış icranı yerinə yetirmək üçün istifadə edilmişdir.
Sonra, skript Windows qeyd dəftəri ilə işlədi. Bunun üçün o, WMI texnologiyasından istifadə edib. Onun köməyi ilə unikal açar yaradılmış və icra olunan faylın gövdəsi onun parametrinə yazılmışdır. Reyestrə aşağıdakı əmrdən istifadə edərək WMI vasitəsilə daxil oldu:
Üçüncü mərhələdə zərərli DLL son faydalı yükü yüklədi, onu sistem prosesinə daxil etdi və istifadəçi daxil olduqda VBS skriptinin avtomatik işə salınmasını təmin etdi.
PowerShell vasitəsilə işə salın
DLL PowerShell-də aşağıdakı əmrdən istifadə edərək icra edildi:
adı ilə reyestr dəyəri məlumatı aldı rnd_value_name — bu verilənlər .Net platformasında yazılmış DLL faylı idi;
nəticədə .Net modulunu proses yaddaşına yüklədi powershell.exe funksiyasından istifadə etməklə [System.Threading.Thread]::GetDomain().Load()(Load() funksiyasının ətraflı təsviri Microsoft saytında mövcuddur);
funksiyasını yerinə yetirdi GUyyvmzVhebFCw]::EhwwK() - DLL kitabxanasının icrası onunla başladı - parametrlərlə vbsScriptPath, xorKey, vbsScriptName. Parametr xorKey son faydalı yükün şifrəsini açmaq üçün açarı və parametrləri saxladı vbsScriptPath и vbsScriptName VBS skriptini autorun-da qeydiyyatdan keçirmək üçün köçürüldü.
DLL kitabxanasının təsviri
Dekompilyasiya edilmiş formada yükləyici belə görünürdü:
Dekompilyasiya edilmiş formada yükləyici (DLL kitabxanasının icrasının başladığı funksiya qırmızı rənglə vurğulanır)
Yükləyici .Net Reactor qoruyucusu ilə qorunur. de4dot yardım proqramı bu qoruyucunu aradan qaldırmaq üçün əla iş görür.
Bu yükləyici:
faydalı yükü sistem prosesinə daxil etdi (bu nümunədə o svchost.exe);
Autorun üçün VBS skripti əlavə etdim.
Faydalı yük enjeksiyonu
PowerShell skriptinin çağırdığı funksiyaya baxaq.
PowerShell skripti tərəfindən çağırılan funksiya
Bu funksiya aşağıdakı hərəkətləri yerinə yetirdi:
iki məlumat dəstinin şifrəsi açıldı (array и array2 ekran görüntüsündə). Onlar əvvəlcə gzip istifadə edərək sıxılmış və açarla XOR alqoritmi ilə şifrələnmişdir xorKey;
məlumatların ayrılmış yaddaş sahələrinə kopyalanması. Məlumat array - göstərilən yaddaş sahəsinə intPtr (payload pointer ekran görüntüsündə); məlumatlardan array2 - göstərilən yaddaş sahəsinə intPtr2 (shellcode pointer ekran görüntüsündə);
funksiyası adlanır CallWindowProcA(описание Bu funksiya Microsoft veb saytında mövcuddur) aşağıdakı parametrlərlə (parametrlərin adları aşağıda verilmişdir, ekran görüntüsündə onlar eyni qaydadadır, lakin iş qiymətləri ilə):
lpPrevWndFunc - məlumat üçün göstərici array2;
hWnd — icra edilə bilən faylın yolunu ehtiva edən sətirin göstəricisi svchost.exe;
Msg - məlumat üçün göstərici array;
wParam, lParam — mesaj parametrləri (bu halda bu parametrlər istifadə olunmayıb və 0 qiymətinə malik olub);
fayl yaratdı %AppData%MicrosoftWindowsStart MenuProgramsStartup<name>.urlHara <name> - bunlar parametrin ilk 4 simvoludur vbsScriptName (ekran görüntüsündə bu hərəkətlə kod parçası əmrlə başlayır File.Copy). Beləliklə, zərərli proqram istifadəçi daxil olduqdan sonra avtomatik işləmə faylları siyahısına URL faylı əlavə etdi və bununla da yoluxmuş kompüterə qoşuldu. URL faylında skriptə keçid var:
Enjeksiyonun necə aparıldığını anlamaq üçün məlumat massivlərinin şifrəsini açdıq array и array2. Bunu etmək üçün aşağıdakı Python funksiyasından istifadə etdik:
def decrypt(data, key):
return gzip.decompress(
bytearray([data[i] ^ key[i % len(key)] for i in range(len(data))])[4:])
Nəticədə məlum oldu ki:
array PE faylı idi - bu son faydalı yükdür;
array2 enjeksiyonu həyata keçirmək üçün tələb olunan qabıq kodu idi.
Massivdən Shellcode array2 funksiya dəyəri kimi ötürülür lpPrevWndFunc funksiyaya çevrilir CallWindowProcA. lpPrevWndFunc — geri çağırış funksiyası, onun prototipi belə görünür:
Beləliklə, siz funksiyanı çalıştırdığınızda CallWindowProcA parametrləri ilə hWnd, Msg, wParam, lParam massivdən shellcode yerinə yetirilir array2 arqumentlərlə hWnd и Msg. hWnd icra edilə bilən faylın yolunu ehtiva edən sətirin göstəricisidir svchost.exeVə Msg — son faydalı yükün göstəricisi.
Shellcode funksiya ünvanlarını ondan aldı kernel32.dll и ntdll32.dll adlarından hash dəyərlərinə əsaslanaraq son faydalı yükü proses yaddaşına daxil etdilər svchost.exeProcess Hollowing texnikasından istifadə edərək (bu barədə daha çox oxuya bilərsiniz məqalə). Qabıq kodunu daxil edərkən:
proses yaratdı svchost.exe funksiyasından istifadə edərək dayandırılmış vəziyyətdə CreateProcessW;
sonra bölmənin ekranını prosesin ünvan məkanında gizlədin svchost.exe funksiyasından istifadə etməklə NtUnmapViewOfSection. Beləliklə, proqram orijinal prosesin yaddaşını azad etdi svchost.exesonra bu ünvanda faydalı yük üçün yaddaş ayırmaq;
proses ünvan məkanında faydalı yük üçün ayrılmış yaddaş svchost.exe funksiyasından istifadə etməklə VirtualAllocEx;
Enjeksiyon prosesinin başlanğıcı
faydalı yükün məzmununu prosesin ünvan sahəsinə yazdı svchost.exe funksiyasından istifadə etməklə WriteProcessMemory (aşağıdakı ekran görüntüsündə olduğu kimi);
prosesi bərpa etdi svchost.exe funksiyasından istifadə etməklə ResumeThread.
Enjeksiyon prosesinin tamamlanması
Yüklənə bilən zərərli proqram
Təsvir edilən hərəkətlər nəticəsində yoluxmuş sistemdə bir neçə RAT sinifli zərərli proqramdan biri quraşdırılıb. Aşağıdakı cədvəldə hücumda istifadə edilən zərərli proqramların siyahısı verilmişdir, nümunələr eyni komanda və idarəetmə serverinə daxil olduğundan əminliklə bir hücumçu qrupuna aid edə bilərik.
Eyni idarəetmə serveri ilə paylanmış zərərli proqramların nümunələri
Burada iki məqam diqqəti cəlb edir.
Birincisi, təcavüzkarların eyni anda bir neçə fərqli RAT ailəsindən istifadə etməsi faktı. Bu davranış, tez-tez onlara tanış olan təxminən eyni alətlər dəstindən istifadə edən tanınmış kiberqruplar üçün xarakterik deyil.
İkincisi, RATKing xüsusi forumlarda aşağı qiymətə satılan və ya hətta açıq mənbəli layihə olan zərərli proqramlardan istifadə edirdi.
Kampaniyada istifadə edilən zərərli proqramların daha tam siyahısı - bir vacib xəbərdarlıqla - məqalənin sonunda verilmişdir.
Qrup haqqında
Təsvir edilən zərərli kampaniyanı heç bir məlum hücumçuya aid edə bilmərik. Hələlik bu hücumların prinsipcə yeni qrup tərəfindən həyata keçirildiyinə inanırıq. Başlanğıcda yazdığımız kimi bunu RATKing adlandırdıq.
VBS skriptini yaratmaq üçün qrup, ehtimal ki, yardım proqramına oxşar alətdən istifadə edib VBS-Crypter tərtibatçıdan NYAN-x-CAT. Bu, bu proqramın təcavüzkarların skripti ilə yaratdığı skriptin oxşarlığı ilə göstərilir. Konkret olaraq, onların hər ikisi:
funksiyasından istifadə edərək gecikmiş icranı yerinə yetirin Sleep;
WMI istifadə edin;
icra olunan faylın gövdəsini reyestr açarı parametri kimi qeyd etmək;
öz ünvan məkanında PowerShell istifadə edərək bu faylı icra edin.
Aydınlıq üçün, VBS-Crypter istifadə edərək yaradılmış skript tərəfindən istifadə edilən reyestrdən faylı işə salmaq üçün PowerShell əmrini müqayisə edin:
Qeyd edək ki, təcavüzkarlar faydalı yüklərdən biri kimi NYAN-x-CAT-dan başqa bir yardım proqramından istifadə ediblər - LimeRAT.
C&C serverlərinin ünvanları RATKing-in başqa bir fərqləndirici xüsusiyyətini göstərir: qrup dinamik DNS xidmətlərinə üstünlük verir (IoC cədvəlində C&C-lərin siyahısına baxın).
IoC
Aşağıdakı cədvəl çox güman ki, təsvir edilən kampaniyaya aid edilə bilən VBS skriptlərinin tam siyahısını təqdim edir. Bütün bu skriptlər oxşardır və təxminən eyni hərəkət ardıcıllığını yerinə yetirir. Onların hamısı etibarlı Windows prosesinə RAT sinifli zərərli proqramları yeridir. Onların hamısının Dinamik DNS xidmətlərindən istifadə edərək qeydiyyatdan keçmiş C&C ünvanları var.
Bununla belə, eyni C&C ünvanları olan nümunələr (məsələn, kimjoy007.dyndns.org) istisna olmaqla, bu skriptlərin hamısının eyni hücumçular tərəfindən paylandığını iddia edə bilmərik.