RATKing: Nuwe Trojaanse veldtog vir afstandtoegang
Aan die einde van Mei het ons 'n veldtog van wanwareverspreiding van die Remote Access Trojan (RAT)-klas ontdek, programme wat aanvallers toelaat om 'n besmette stelsel op afstand te beheer.
Die groep wat ons oorweeg, is gekenmerk deur die feit dat dit geen spesifieke RAT-familie vir infeksie gekies het nie. Verskeie Trojane is opgemerk in die aanvalle binne die veldtog (almal in die publieke domein). Met hierdie kenmerk het die groepering ons aan die rotkoning herinner – ’n mitiese dier wat bestaan uit knaagdiere met verweefde sterte.
Die oorspronklike is geneem uit die monografie deur K. N. Rossikov "Mice and muisagtige knaagdiere, die belangrikste in ekonomiese terme" (1908)
Ter ere van hierdie wese het ons die groepering wat ons oorweeg RATKing genoem. In hierdie pos sal ons in detail praat oor hoe die aanvallers die aanval uitgevoer het, watter gereedskap hulle gebruik het, en ook ons gedagtes oor die toeskrywing van hierdie veldtog deel.
Aanval vordering
Alle aanvalle in hierdie veldtog is volgens die volgende algoritme uitgevoer:
Die gebruiker het 'n uitvissing-e-pos met 'n skakel na Google Drive ontvang.
Vanaf die skakel het die slagoffer 'n kwaadwillige VBS-skrip afgelaai wat 'n DLL geskryf het om die finale loonvrag in die Windows-register te laai en PowerShell geloods om dit uit te voer.
Die DLL-biblioteek het die finale loonvrag - in werklikheid een van die RAT's wat deur die aanvallers gebruik word - in die stelselproses ingespuit en 'n VBS-skrip bygevoeg om outomaties te hardloop om 'n vastrapplek in die besmette masjien te kry.
Die finale loonvrag is in 'n stelselproses uitgevoer en het die aanvaller die vermoë gegee om die besmette rekenaar te beheer.
Skematies kan dit soos volg voorgestel word:
Vervolgens sal ons op die eerste drie fases fokus, aangesien ons belangstel in die meganisme vir die aflewering van wanware. Ons sal nie die meganisme van die wanware self in detail beskryf nie. Hulle is wyd beskikbaar - óf verkoop op gespesialiseerde forums, óf selfs versprei as oopbronprojekte - wat beteken dat hulle nie uniek aan die RATKing-groep is nie.
Ontleding van aanvalstadiums
Fase 1. Phishing-pos
Die aanval het begin met die slagoffer wat 'n kwaadwillige e-pos ontvang het (die aanvallers het verskillende sjablone met teks gebruik, een voorbeeld word in die skermkiekie hieronder getoon). Die boodskap het 'n skakel na 'n wettige bewaarplek bevat drive.google.com, wat na bewering gelei het tot 'n PDF-aflaaibladsy.
Voorbeeld van 'n uitvissing-e-pos
In werklikheid was dit egter glad nie 'n PDF-dokument wat gelaai is nie, maar 'n VBS-skrif.
As u op die skakel van die e-pos in die skermkiekie hierbo klik, 'n lêer met die naam Cargo Flight Details.vbs. In hierdie geval het die aanvallers nie eens probeer om die lêer as 'n wettige dokument te vermom nie.
Terselfdertyd, as deel van hierdie veldtog, het ons 'n draaiboek met die naam ontdek Cargo Trip Detail.pdf.vbs. Dit kan reeds vir 'n wettige PDF slaag, want by verstek versteek Windows die lêeruitbreiding. In hierdie geval kan sy ikoon, wat ooreenstem met die VBS-skrif, weliswaar steeds agterdog veroorsaak.
Op hierdie stadium kon die slagoffer die misleiding herken: kyk net vir 'n sekonde na die afgelaaide lêers. In sulke uitvissingsveldtogte maak aanvallers egter dikwels staat op 'n onoplettende of haastige gebruiker.
Fase 2. Werk van die VBS-skrif
Die VBS-skrip, wat die gebruiker deur nalatigheid kon oopmaak, het die DLL-biblioteek in die Windows-register geregistreer. Die skrif is verduister: die lyne daarin word geskryf as grepe geskei deur 'n arbitrêre karakter.
Verduisterde skrif voorbeeld
Die deobfuscation-algoritme is redelik eenvoudig: elke derde karakter is uitgesluit van die verduisterde string, waarna die resultaat van basis16 na die oorspronklike string gedekodeer is. Byvoorbeeld, van die waarde 57Q53s63t72s69J70r74e2El53v68m65j6CH6Ct (uitgelig in die skermkiekie hierbo) die resultaat was 'n lyn WScript.Shell.
Om stringe te vereenvoudig, het ons 'n Python-funksie gebruik:
def decode_str(data_enc):
return binascii.unhexlify(''.join([data_enc[i:i+2] for i in range(0, len(data_enc), 3)]))
Hieronder, op reëls 9-10, word die waarde uitgelig, by deobfuscation waarvan 'n DLL-lêer verkry is. Dit was hy wat in die volgende stap met behulp van PowerShell bekendgestel is.
Lyn met verduisterde DLL
Elke funksie in die VBS-skrip is uitgevoer soos die lyne gedeobfuskeerd is.
Nadat die skrip uitgevoer is, is die funksie genoem wscript.sleep - met die hulp daarvan is uitgestelde teregstelling uitgevoer.
Verder het die skrif saam met die Windows-register gewerk. Hy het WMI-tegnologie hiervoor gebruik. Met sy hulp is 'n unieke sleutel geskep, en die liggaam van die uitvoerbare lêer is na sy parameter geskryf. Toegang tot die register via WMI is uitgevoer met behulp van die volgende opdrag:
In die derde stadium het die kwaadwillige DLL die finale loonvrag gelaai, dit in die stelselproses ingespuit en verseker dat die VBS-skrip outomaties uitgevoer is wanneer die gebruiker by die stelsel aangemeld het.
Begin via PowerShell
Die DLL is uitgevoer met behulp van die volgende opdrag in PowerShell:
ontvang registerwaarde data genoem rnd_value_name - hierdie data was 'n DLL-lêer wat op die .Net-platform geskryf is;
het die resulterende .Net-module in die prosesgeheue gelaai powershell.exe die funksie te gebruik [System.Threading.Thread]::GetDomain().Load()(gedetailleerde beskrywing van die Load() funksie beskikbaar op die Microsoft-webwerf);
die funksie uitgevoer het GUyyvmzVhebFCw]::EhwwK() - die uitvoering van die DLL-biblioteek het daarmee begin - met parameters vbsScriptPath, xorKey, vbsScriptName... Parameter xorKey het die sleutel gestoor vir die dekripteer van die finale loonvrag, en die parameters vbsScriptPath и vbsScriptName is oorgedra om 'n VBS-skrip in autorun te registreer.
Beskrywing van die DLL
In die gedekompileerde vorm het die laaier soos volg gelyk:
Loader in gedekompileerde vorm (onderstreep in rooi is die funksie wat die uitvoering van die DLL begin het)
Die laaier word deur die .Net Reactor-beskermer beskerm. Die de4dot-nutsding doen 'n uitstekende werk om hierdie beskermer te verwyder.
Hierdie selflaaiprogram:
het die inspuiting van die loonvrag in die stelselproses uitgevoer (in hierdie voorbeeld, dit svchost.exe);
VBS-script in outorun voorskryf.
loonvrag inspuiting
Oorweeg die funksie wat die PowerShell-skrip genoem het.
Funksie genoem deur PowerShell script
Hierdie funksie het die volgende gedoen:
ontsyfer twee skikkings data (array и array2 op die skermkiekie). Hulle is oorspronklik gzip-saamgepers en geïnkripteer met die XOR-algoritme met die sleutel xorKey;
gekopieer data na toegekende geheue areas. Data van array - na die geheue area waarna gewys word intPtr (payload pointer op die kiekie); data van array2 - na die geheue area waarna gewys word intPtr2 (shellcode pointer op die kiekie);
'n funksie genoem CallWindowProcA(beskrywing hierdie kenmerk is beskikbaar op die Microsoft-webwerf) met die volgende parameters (die name van die parameters word hieronder gelys, in die skermkiekie gaan hulle in dieselfde volgorde, maar met werkwaardes):
lpPrevWndFunc - wyser na data van array2;
hWnd - wyser na 'n string wat die pad na die uitvoerbare lêer bevat svchost.exe;
Msg - wyser na data van array;
wParam, lParam - boodskapparameters (in hierdie geval is hierdie parameters nie gebruik nie en het waardes van 0 gehad);
'n lêer geskep %AppData%MicrosoftWindowsStart MenuProgramsStartup<name>.urlWaar <name> is die eerste 4 karakters van die parameter vbsScriptName (in die skermkiekie begin die kodefragment met hierdie aksie met die opdrag File.Copy). Op hierdie manier het die wanware 'n URL-lêer by die lys lêers gevoeg om outomaties te hardloop wanneer 'n gebruiker by die stelsel aangemeld het, en sodoende homself op die besmette rekenaar herstel. Die URL-lêer het 'n skakel na die skrif bevat:
Om te verstaan hoe die inspuiting uitgevoer is, het ons die data-skikkings ontsyfer array и array2. Om dit te doen, het ons die volgende Python-funksie gebruik:
def decrypt(data, key):
return gzip.decompress(
bytearray([data[i] ^ key[i % len(key)] for i in range(len(data))])[4:])
As gevolg hiervan het ons uitgevind dat:
array was 'n PE-lêer - dit is die finale loonvrag;
array2 was die dopkode wat benodig word vir die inspuiting.
Shellcode vanaf skikking array2 as funksiewaarde deurgegee lpPrevWndFunc in 'n funksie CallWindowProcA. lpPrevWndFunc is 'n terugbelfunksie, sy prototipe lyk soos volg:
So wanneer jy die funksie hardloop CallWindowProcA met parameters hWnd, Msg, wParam, lParam die uitvoering van dopkode vanaf 'n skikking array2 met argumente hWnd и Msg. hWnd is 'n wyser na 'n string wat die pad na die uitvoerbare lêer bevat svchost.exeEn Msg - 'n wyser na die finale loonvrag.
Die dopkode het funksie-adresse van ontvang kernel32.dll и ntdll32.dll deur hash-waardes uit hul name en het die inspuiting van die finale loonvrag in die prosesgeheue uitgevoer svchost.exemet behulp van die Proses Hollowing-tegniek (jy kan hierin meer daaroor lees Artikel). Wanneer dopkode ingespuit word:
'n proses geskep svchost.exe in 'n opgeskorte toestand met behulp van die funksie CreateProcessW;
versteek dan die seksie-kartering in die prosesadresspasie svchost.exe die funksie te gebruik NtUnmapViewOfSection. So het die program die geheue van die oorspronklike proses bevry svchost.exe, om geheue vir die loonvrag by hierdie adres toe te wys;
toegekende geheue vir die loonvrag in die adresruimte van die proses svchost.exe die funksie te gebruik VirtualAllocEx;
Begin die inspuitproses
skryf die inhoud van die loonvrag na die adresruimte van die proses svchost.exe die funksie te gebruik WriteProcessMemory (soos in die kiekie hieronder);
het die proses weer begin svchost.exe die funksie te gebruik ResumeThread.
Voltooiing van die inspuitproses
Aflaaibare wanware
As gevolg van die beskryfde aksies is een van verskeie kwaadwillige programme van die RAT-klas op die besmette stelsel geïnstalleer. Die tabel hieronder lys die wanware wat in die aanval gebruik is, wat ons met selfvertroue aan een groep aanvallers kan toeskryf, aangesien die monsters toegang tot dieselfde beheerbediener gehad het.
Voorbeelde van verspreide wanware met dieselfde beheerbediener
Twee dinge is hier opmerklik.
Eerstens, die feit dat die aanvallers verskeie verskillende RAT-families gelyktydig gebruik het. Hierdie gedrag is nie tipies vir bekende kubergroepe nie, wat dikwels ongeveer dieselfde stel gereedskap gebruik waaraan hulle gewoond is.
Tweedens het RATKing wanware gebruik wat óf op gespesialiseerde forums teen 'n klein prys verkoop word, óf heeltemal oopbronprojekte is.
'n Meer volledige lys van die wanware wat in die veldtog gebruik word - met een belangrike waarskuwing - word aan die einde van die artikel gegee.
Oor groepering
Ons kan nie die beskryfde kwaadwillige veldtog aan enige bekende aanvallers toeskryf nie. Tot dusver glo ons dat hierdie aanvalle deur 'n fundamenteel nuwe groep uitgevoer is. Soos ons aan die begin geskryf het, het ons dit RATKing genoem.
Om 'n VBS-skrip te skep, het die groepering waarskynlik 'n instrument soortgelyk aan die nut gebruik VBS-Crypter van die ontwikkelaar NYAN-x-CAT. Dit word aangedui deur die ooreenkoms van die script wat hierdie program skep met die aanvaller se script. Spesifiek, hulle is albei:
voer uitgestelde uitvoering uit met behulp van die funksie Sleep;
gebruik WMI;
die liggaam van die uitvoerbare lêer as 'n registersleutelparameter voor te skryf;
voer hierdie lêer uit met behulp van PowerShell in sy eie adresruimte.
Vir duidelikheid, vergelyk die PowerShell-opdrag om 'n lêer uit die register uit te voer, wat gebruik word deur 'n skrip wat met VBS-Crypter geskep is:
Let daarop dat die aanvallers 'n ander hulpprogram van NYAN-x-CAT as een van die loonvragte gebruik het - LimeRAT.
Die C&C-bedieneradresse dui op 'n ander kenmerk van RATKing: die groepering bevoordeel dinamiese DNS-dienste (sien lys van C&C's in die IoC-tabel).
IoC
Die tabel hieronder toon 'n volledige lys van VBS-skrifte wat heel waarskynlik aan die beskryfde veldtog toegeskryf kan word. Al hierdie skrifte is soortgelyk en voer ongeveer dieselfde volgorde van aksies uit. Almal van hulle spuit wanware van die RAT-klas in 'n betroubare Windows-proses. Almal van hulle het C&C-adresse wat geregistreer is met Dynamic DNS-dienste.
Ons kan egter nie sê dat al hierdie skrifte deur dieselfde aanvallers versprei is nie, behalwe vir monsters met dieselfde C&C-adresse (byvoorbeeld kimjoy007.dyndns.org).