RATKing: fushatë e re me Trojans me qasje në distancë
Në fund të majit, ne zbuluam një fushatë për shpërndarjen e malware të Trojanit me qasje në distancë (RAT) - programe që lejojnë sulmuesit të kontrollojnë nga distanca një sistem të infektuar.
Grupi që ne ekzaminuam u dallua nga fakti se nuk zgjodhi asnjë familje specifike RAT për infeksion. Disa trojanë u vunë re në sulmet brenda fushatës (të gjithë ishin gjerësisht të disponueshëm). Me këtë veçori, grupi na kujtoi mbretin e minjve - një kafshë mitike që përbëhet nga brejtës me bishta të ndërthurur.
Origjinali është marrë nga monografia e K. N. Rossikov "Minjtë dhe brejtësit e ngjashëm me miun, më të rëndësishmit ekonomikisht" (1908)
Për nder të kësaj krijese, ne e emërtuam grupin që po konsiderojmë RATKing. Në këtë postim, ne do të shkojmë në detaje se si sulmuesit e kryen sulmin, çfarë mjetesh përdorën dhe gjithashtu do të ndajmë mendimet tona për atribuimin për këtë fushatë.
Ecuria e sulmit
Të gjitha sulmet në këtë fushatë u zhvilluan sipas algoritmit të mëposhtëm:
Përdoruesi mori një email phishing me një lidhje në Google Drive.
Duke përdorur lidhjen, viktima shkarkoi një skrip me qëllim të keq VBS që specifikonte një bibliotekë DLL për të ngarkuar ngarkesën përfundimtare në regjistrin e Windows dhe nisi PowerShell për ta ekzekutuar atë.
Biblioteka DLL injektoi ngarkesën përfundimtare - në fakt, një nga RAT-të e përdorur nga sulmuesit - në procesin e sistemit dhe regjistroi një skript VBS në autorun në mënyrë që të fitonte një terren në makinën e infektuar.
Ngarkesa përfundimtare u ekzekutua në një proces sistemi dhe i dha sulmuesit mundësinë për të kontrolluar kompjuterin e infektuar.
Skematikisht mund të paraqitet si kjo:
Më pas, ne do të përqendrohemi në tre fazat e para, pasi jemi të interesuar për mekanizmin e shpërndarjes së malware. Ne nuk do të përshkruajmë në detaje mekanizmin e funksionimit të vetë malware. Ato janë gjerësisht të disponueshme - ose shiten në forume të specializuara, ose shpërndahen edhe si projekte me burim të hapur - dhe për këtë arsye nuk janë unike për grupin RATKing.
Analiza e fazave të sulmit
Faza 1. Email phishing
Sulmi filloi me marrjen e një letre keqdashëse nga viktima (sulmuesit përdorën shabllone të ndryshëm me tekst; pamja e ekranit më poshtë tregon një shembull). Mesazhi përmbante një lidhje me një depo legjitime drive.google.com, e cila supozohet se çoi në një faqe të shkarkimit të dokumentit PDF.
Shembull phishing email
Sidoqoftë, në fakt, nuk ishte një dokument PDF që u ngarkua fare, por një skenar VBS.
Kur klikoni në lidhjen nga emaili në pamjen e mësipërme, një skedar me emrin Cargo Flight Details.vbs. Në këtë rast, sulmuesit as nuk u përpoqën ta maskonin dosjen si një dokument legjitim.
Në të njëjtën kohë, si pjesë e kësaj fushate, ne zbuluam një skenar të quajtur Cargo Trip Detail.pdf.vbs. Ai tashmë mund të kalojë për një PDF të ligjshëm sepse Windows fsheh shtesat e skedarëve si parazgjedhje. Vërtetë, në këtë rast, dyshimi mund të ngjallte ende nga ikona e tij, e cila korrespondonte me skenarin VBS.
Në këtë fazë, viktima mund ta njohë mashtrimin: thjesht hidhini një vështrim më të afërt skedarëve të shkarkuar për një sekondë. Megjithatë, në fushata të tilla phishing, sulmuesit shpesh mbështeten te një përdorues i pavëmendshëm ose i nxituar.
Faza 2. Operacioni i skriptit VBS
Skripti VBS, të cilin përdoruesi mund ta hapte pa dashje, regjistroi një bibliotekë DLL në regjistrin e Windows. Skenari ishte i turbullt: rreshtat në të ishin shkruar si bajt të ndara nga një karakter arbitrar.
Shembull i një skenari të turbullt
Algoritmi i deobfuzimit është mjaft i thjeshtë: çdo karakter i tretë u përjashtua nga vargu i errësuar, pas së cilës rezultati u deshifrua nga baza16 në vargun origjinal. Për shembull, nga vlera 57Q53s63t72s69J70r74e2El53v68m65j6CH6Ct (e theksuar në pamjen e mësipërme) vija që rezulton ishte WScript.Shell.
Për të zbërthyer vargjet, ne përdorëm funksionin Python:
def decode_str(data_enc):
return binascii.unhexlify(''.join([data_enc[i:i+2] for i in range(0, len(data_enc), 3)]))
Më poshtë, në rreshtat 9–10, ne theksojmë vlerën deobfuscimi i së cilës rezultoi në një skedar DLL. Ishte ai që u nis në fazën tjetër duke përdorur PowerShell.
Varg me DLL të turbullt
Secili funksion në skriptin VBS u ekzekutua pasi vargjet u deobfuscate.
Pas ekzekutimit të skriptit, funksioni u thirr wscript.sleep - është përdorur për të kryer ekzekutimin e shtyrë.
Më pas, skripti funksionoi me regjistrin e Windows. Ai përdori teknologjinë WMI për këtë. Me ndihmën e tij, u krijua një çelës unik dhe trupi i skedarit të ekzekutueshëm u shkrua në parametrin e tij. Regjistri u aksesua përmes WMI duke përdorur komandën e mëposhtme:
Në fazën e tretë, DLL-ja me qëllim të keq ngarkoi ngarkesën përfundimtare, e injektoi atë në procesin e sistemit dhe siguroi që skripti VBS të fillonte automatikisht kur përdoruesi hynte.
Ekzekutoni përmes PowerShell
DLL u ekzekutua duke përdorur komandën e mëposhtme në PowerShell:
mori të dhënat e vlerës së regjistrit me emër rnd_value_name — këto të dhëna ishin një skedar DLL i shkruar në platformën .Net;
ngarkoi modulin .Net që rezulton në memorien e procesit powershell.exe duke përdorur funksionin [System.Threading.Thread]::GetDomain().Load()(përshkrim i detajuar i funksionit Load(). në dispozicion në faqen e internetit të Microsoft);
kryer funksionin GUyyvmzVhebFCw]::EhwwK() - ekzekutimi i bibliotekës DLL filloi me të - me parametra vbsScriptPath, xorKey, vbsScriptName... Parametri xorKey ruajti çelësin për deshifrimin e ngarkesës përfundimtare dhe parametrat vbsScriptPath и vbsScriptName u transferuan për të regjistruar një skript VBS në autorun.
Përshkrimi i bibliotekës DLL
Në formë të dekompiluar, bootloader dukej kështu:
Ngarkues në formë të dekompiluar (funksioni me të cilin filloi ekzekutimi i bibliotekës DLL është nënvizuar me të kuqe)
Bootloader mbrohet nga mbrojtësi .Net Reactor. Shërbimi de4dot bën një punë të shkëlqyer për heqjen e këtij mbrojtësi.
Ky ngarkues:
injektoi ngarkesën në procesin e sistemit (në këtë shembull ai svchost.exe);
Shtova një skript VBS në autorun.
Injeksioni i ngarkesës
Le të shohim funksionin që thirri skripti PowerShell.
Funksioni i thirrur nga skripti PowerShell
Ky funksion kryente veprimet e mëposhtme:
deshifroi dy grupe të dhënash (array и array2 në pamjen e ekranit). Ato fillimisht u kompresuan duke përdorur gzip dhe u koduan me algoritmin XOR me çelës xorKey;
të dhënat e kopjuara në zonat e alokuara të memories. Të dhënat nga array - në zonën e kujtesës ku tregohet intPtr (payload pointer në pamjen e ekranit); të dhëna nga array2 - në zonën e kujtesës ku tregohet intPtr2 (shellcode pointer në pamjen e ekranit);
quhet funksioni CallWindowProcA(описание Ky funksion është i disponueshëm në faqen e internetit të Microsoft) me parametrat e mëposhtëm (emrat e parametrave janë renditur më poshtë, në pamjen e ekranit ato janë në të njëjtin rend, por me vlera pune):
lpPrevWndFunc - tregues për të dhënat nga array2;
hWnd — treguesi i një vargu që përmban shtegun për në skedarin e ekzekutueshëm svchost.exe;
Msg - tregues për të dhënat nga array;
wParam, lParam - parametrat e mesazhit (në këtë rast, këto parametra nuk u përdorën dhe kishin vlera 0);
krijoi një skedar %AppData%MicrosoftWindowsStart MenuProgramsStartup<name>.urlKu <name> - këto janë 4 karakteret e para të parametrit vbsScriptName (në pamjen e ekranit, fragmenti i kodit me këtë veprim fillon me komandën File.Copy). Në këtë mënyrë, malware shtoi një skedar URL në listën e skedarëve autorun kur përdoruesi u identifikua dhe kështu u lidh me kompjuterin e infektuar. Skedari URL përmbante një lidhje me skriptin:
Për të kuptuar se si u krye injektimi, ne deshifruam grupet e të dhënave array и array2. Për ta bërë këtë, ne përdorëm funksionin e mëposhtëm Python:
def decrypt(data, key):
return gzip.decompress(
bytearray([data[i] ^ key[i % len(key)] for i in range(len(data))])[4:])
Si rezultat, ne zbuluam se:
array ishte një skedar PE - kjo është ngarkesa përfundimtare;
array2 ishte shellkodi i kërkuar për të kryer injeksionin.
Shellcode nga një grup array2 kalohet si vlerë funksioni lpPrevWndFunc në një funksion CallWindowProcA. lpPrevWndFunc — funksioni i kthimit të thirrjes, prototipi i tij duket si ky:
Pra, kur ekzekutoni funksionin CallWindowProcA me parametra hWnd, Msg, wParam, lParam shellcode nga grupi është ekzekutuar array2 me argumente hWnd и Msg. hWnd është një tregues në një varg që përmban shtegun për në skedarin e ekzekutueshëm svchost.exeDhe Msg - treguesi për ngarkesën përfundimtare.
Shellcode mori adresat e funksionit nga kernel32.dll и ntdll32.dll bazuar në vlerat hash nga emrat e tyre dhe injektuan ngarkesën përfundimtare në kujtesën e procesit svchost.exeduke përdorur teknikën Process Hollowing (mund të lexoni më shumë rreth saj në këtë artikull). Kur injektoni kodin shell:
krijoi një proces svchost.exe në gjendje të pezulluar duke përdorur funksionin CreateProcessW;
pastaj fshehu shfaqjen e seksionit në hapësirën e adresave të procesit svchost.exe duke përdorur funksionin NtUnmapViewOfSection. Kështu, programi çliroi kujtesën e procesit origjinal svchost.exepër të ndarë më pas memorien për ngarkesën në këtë adresë;
memoria e alokuar për ngarkesën në hapësirën e adresave të procesit svchost.exe duke përdorur funksionin VirtualAllocEx;
Fillimi i procesit të injektimit
shkruajti përmbajtjen e ngarkesës në hapësirën e adresave të procesit svchost.exe duke përdorur funksionin WriteProcessMemory (si në pamjen e mëposhtme të ekranit);
rifilloi procesin svchost.exe duke përdorur funksionin ResumeThread.
Përfundimi i procesit të injektimit
Malware i shkarkueshëm
Si rezultat i veprimeve të përshkruara, një nga disa malware të klasës RAT u instalua në sistemin e infektuar. Tabela e mëposhtme liston malware-in e përdorur në sulm, të cilin mund t'ia atribuojmë me siguri një grupi sulmuesish, pasi mostrat kishin akses në të njëjtin server komandimi dhe kontrolli.
Shembuj të malware të shpërndarë me të njëjtin server kontrolli
Dy gjëra janë të rëndësishme këtu.
Së pari, vetë fakti që sulmuesit përdorën disa familje të ndryshme RAT menjëherë. Kjo sjellje nuk është tipike për grupet e njohura kibernetike, të cilat shpesh përdorin afërsisht të njëjtin grup mjetesh që janë të njohura për ta.
Së dyti, RATKing përdori malware që ose shitet në forume të specializuara për një çmim të ulët, ose është edhe një projekt me burim të hapur.
Një listë më e plotë e malware të përdorur në fushatë - me një paralajmërim të rëndësishëm - jepet në fund të artikullit.
Rreth grupit
Ne nuk mund t'ia atribuojmë fushatën e përshkruar keqdashëse ndonjë sulmuesi të njohur. Tani për tani, ne besojmë se këto sulme janë kryer nga një grup thelbësisht i ri. Siç kemi shkruar në fillim, e quajtëm RATKing.
Për të krijuar skriptin VBS, grupi ndoshta ka përdorur një mjet të ngjashëm me programin VBS-Crypter nga zhvilluesi NYAN-x-CAT. Kjo tregohet nga ngjashmëria e skriptit që krijon ky program me skenarin e sulmuesve. Konkretisht, ata të dy:
kryeni ekzekutim të vonuar duke përdorur funksionin Sleep;
përdorni WMI;
regjistroni trupin e skedarit të ekzekutueshëm si një parametër kyç të regjistrit;
ekzekutoni këtë skedar duke përdorur PowerShell në hapësirën e tij të adresave.
Për qartësi, krahasoni komandën PowerShell për të ekzekutuar një skedar nga regjistri, i cili përdoret nga një skript i krijuar duke përdorur VBS-Crypter:
Vini re se sulmuesit përdorën një mjet tjetër nga NYAN-x-CAT si një nga ngarkesat - LimeRAT.
Adresat e serverëve C&C tregojnë një veçori tjetër dalluese të RATKing: grupi preferon shërbimet dinamike DNS (shih listën e C&C në tabelën IoC).
IoC
Tabela më poshtë ofron një listë të plotë të skripteve VBS që ka shumë të ngjarë t'i atribuohen fushatës së përshkruar. Të gjitha këto skripta janë të ngjashëm dhe kryejnë afërsisht të njëjtën sekuencë veprimesh. Të gjithë ata injektojnë malware të klasës RAT në një proces të besuar të Windows. Të gjithë ata kanë adresa C&C të regjistruara duke përdorur shërbimet Dynamic DNS.
Megjithatë, ne nuk mund të pretendojmë se të gjithë këta skripta janë shpërndarë nga të njëjtët sulmues, me përjashtim të mostrave me të njëjtat adresa C&C (për shembull, kimjoy007.dyndns.org).