RATKing: kanpaina berria urrutiko sarbideko troiarrekin
Maiatzaren amaieran, Urruneko Sarbide Troiako (RAT) malwarea banatzeko kanpaina bat aurkitu genuen, erasotzaileei kutsatutako sistema bat urrutitik kontrolatzeko aukera ematen dieten programak.
Aztertu genuen taldea infekziorako RAT familia zehatzik hautatu ez izanagatik bereizten zen. Kanpainaren barruan hainbat troiako erasoetan ikusi ziren (guztiak eskuragarri zeuden). Ezaugarri honekin, taldeak arratoiaren erregea ekarri digu gogora, buztan elkarri lotuta dauden karraskariek osatzen duten animalia mitikoa.
Jatorrizkoa K. N. Rossikov-en "Saguak eta saguaren antzeko karraskariak, ekonomikoki garrantzitsuenak" (1908) monografiatik hartua da.
Izaki honen omenez, kontuan hartzen ari garen taldeari RATKing izena jarri genion. Argitalpen honetan, erasotzaileek erasoa nola gauzatu duten, zer tresna erabili duten zehatz-mehatz azalduko dugu, eta kanpaina honen atribuzioari buruzko gure gogoetak ere partekatuko ditugu.
Erasoaren aurrerapena
Kanpaina honetako eraso guztiak algoritmo honen arabera gertatu ziren:
Erabiltzaileak phishing-mezu bat jaso du Google Drive-rako esteka batekin.
Esteka erabiliz, biktimak VBS script maltzur bat deskargatu zuen DLL liburutegi bat zehazten zuen azken karga Windows erregistroan kargatzeko eta PowerShell abiarazi zuen hura exekutatzeko.
DLL liburutegiak azken karga injektatu zuen -hain zuzen ere, erasotzaileek erabilitako RATetako bat- sistema-prozesuan eta VBS script bat erregistratu zuen autorrunean infektatutako makinan lekua hartzeko.
Azken karga sistema prozesu batean exekutatu zen eta erasotzaileari kutsatutako ordenagailua kontrolatzeko gaitasuna eman zion.
Eskematikoki honela irudikatu daiteke:
Jarraian, lehenengo hiru etapetan zentratuko gara, malwarea emateko mekanismoa interesatzen zaigulako. Ez dugu zehatz-mehatz deskribatuko malwarearen beraren funtzionamendu-mekanismoa. Eskuragarri asko daude - foro espezializatuetan saltzen dira, edo kode irekiko proiektu gisa banatzen dira - eta, beraz, ez dira RATKing taldekoak.
Eraso-etapeen analisia
1. etapa. Phishing posta elektronikoa
Erasoa biktimak gutun maltzur bat jaso zuenean hasi zen (erasotzaileek testuarekin txantiloi desberdinak erabili zituzten; beheko pantaila-argazkiak adibide bat erakusten du). Mezuak biltegi legitimo baterako esteka zuen drive.google.com, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΊΠΎΠ±Ρ Π²Π΅Π»Π° Π½Π° ΡΡΡΠ°Π½ΠΈΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ° Π² ΡΠΎΡΠΌΠ°ΡΠ΅ PDF.
Phishing posta elektronikoaren adibidea
Hala ere, egia esan, ez zen PDF dokumentu bat kargatu zena, VBS script bat baizik.
Goiko pantaila-argazkiko mezu elektronikoko estekan klik egin duzunean, fitxategi bat izendatzen da Cargo Flight Details.vbs. Kasu honetan, erasotzaileak ez ziren saiatu fitxategia legezko dokumentu gisa mozorrotzen ere.
Aldi berean, kanpaina honen baitan, izeneko gidoi bat aurkitu genuen Cargo Trip Detail.pdf.vbs. Dagoeneko PDF legitimotzat pasa daiteke Windows-ek fitxategi-luzapenak lehenespenez ezkutatzen dituelako. Egia da, kasu honetan, susmoa piztu zitekeen oraindik bere ikonoak, VBS gidoiari zegokiona.
Fase honetan, biktimak engainua antzeman dezake: deskargatutako fitxategiei segundo batez begiratu besterik ez dago. Hala ere, horrelako phishing kanpainetan, erasotzaileak sarritan arretarik ez duen edo presazko erabiltzaile batengan oinarritzen dira.
2. etapa. VBS script-en eragiketa
Erabiltzaileak nahi gabe ireki zezakeen VBS scriptak DLL liburutegi bat erregistratu zuen Windows erregistroan. Gidoia lausotu egin zen: bertan dauden lerroak karaktere arbitrario batez bereizitako byte gisa idazten ziren.
Lausotutako gidoi baten adibidea
Desobfuskazio-algoritmoa nahiko erraza da: hirugarren karaktere bakoitza lausotutako katetik kanpo geratzen zen, eta ondoren, emaitza base16-tik jatorrizko katera deskodetu zen. Adibidez, baliotik 57Q53s63t72s69J70r74e2El53v68m65j6CH6Ct (Goiko pantaila-argazkian nabarmenduta) ondoriozko lerroa zen WScript.Shell.
Kateak desobfuskatzeko, Python funtzioa erabili dugu:
def decode_str(data_enc):
return binascii.unhexlify(''.join([data_enc[i:i+2] for i in range(0, len(data_enc), 3)]))
Jarraian, 9-10 lerroetan, desobfuskatzeak DLL fitxategi bat sortu duen balioa nabarmenduko dugu. Bera izan zen PowerShell erabiliz hurrengo fasean abian jarri zena.
DLL lausotutako katea
VBS script-eko funtzio bakoitza kateak desobfuskatu ahala exekutatu ziren.
Scripta exekutatu ondoren, funtzioari deitu zitzaion wscript.sleep β exekuzio geroratua egiteko erabiltzen zen.
Ondoren, scriptak Windows erregistroarekin funtzionatu zuen. WMI teknologia erabili zuen horretarako. Bere laguntzarekin, gako esklusibo bat sortu zen, eta fitxategi exekutagarriaren gorputza bere parametroan idatzi zen. Erregistrora WMI bidez sartu zen komando hau erabiliz:
Hirugarren fasean, DLL gaiztoak azken karga kargatu zuen, sistemaren prozesuan sartu zuen eta erabiltzailea saioa hasten zenean VBS script-a automatikoki abiarazten zela ziurtatu zuen.
Exekutatu PowerShell bidez
DLL PowerShellen komando hau erabiliz exekutatu zen:
jaso erregistroko balio datuak izenarekin rnd_value_name β datu hau .Net plataforman idatzitako DLL fitxategi bat zen;
sortutako .Net modulua prozesuko memorian kargatu du powershell.exe funtzioa erabiliz [System.Threading.Thread]::GetDomain().Load()(Load() funtzioaren deskribapen zehatza Microsoft-en webgunean eskuragarri);
funtzioa bete zuen GUyyvmzVhebFCw]::EhwwK() - DLL liburutegiaren exekuzioa berarekin hasi zen - parametroekin vbsScriptPath, xorKey, vbsScriptName. Parametroa xorKey azken karga deszifratzeko gakoa gorde zuen, eta parametroak vbsScriptPath ΠΈ vbsScriptName transferitu ziren VBS script bat autorrunean erregistratzeko.
DLL liburutegiaren deskribapena
Deskonpilatu moduan, abio-kargatzaileak itxura hau zuen:
Kargatzailea deskonpilatu moduan (DLL liburutegiaren exekuzioa hasi zen funtzioa gorriz azpimarratuta dago)
Abio-kargatzailea .Net Reactor babesleak babestuta dago. de4dot utilitateak babes hau kentzeko lan bikaina egiten du.
Kargatzaile hau:
karga injektatu du sistemaren prozesuan (adibide honetan svchost.exe);
VBS script bat gehitu dut autorun-era.
Karga erabilgarria injekzioa
Ikus dezagun PowerShell script-ak deitu duen funtzioa.
PowerShell script-ek deitutako funtzioa
Funtzio honek ekintza hauek egin zituen:
bi datu multzo deszifratu (array ΠΈ array2 pantaila-argazkian). Hasieran gzip erabiliz konprimitu ziren eta gakoarekin XOR algoritmoarekin zifratu ziren xorKey;
esleitutako memoria-eremuetan datuak kopiatu ditu. Datuak array - adierazitako memoria eremura intPtr (payload pointer pantaila-argazkian); ren datuak array2 - adierazitako memoria eremura intPtr2 (shellcode pointer pantaila-argazkian);
funtzioa izenekoa CallWindowProcA(ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Funtzio hau Microsoft-en webgunean dago eskuragarri) parametro hauekin (parametroen izenak behean zerrendatzen dira, pantaila-argazkian ordena berean daude, baina lan balioekin):
lpPrevWndFunc --ko datuen erakuslea array2;
hWnd β Fitxategi exekutagarriaren bidea duen kate baten erakuslea svchost.exe;
Msg --ko datuen erakuslea array;
wParam, lParam - mezu-parametroak (kasu honetan, parametro hauek ez ziren erabiltzen eta 0 balioak zituzten);
fitxategi bat sortu du %AppData%MicrosoftWindowsStart MenuProgramsStartup<name>.urlNon <name> - parametroaren lehen 4 karaktereak dira vbsScriptName (pantaila-argazkian, ekintza honekin kode zatia komandoarekin hasten da File.Copy). Modu honetan, malwareak URL fitxategi bat gehitu zuen automatikoki exekutatzeko fitxategien zerrendan erabiltzailea saioa hasi zenean eta, horrela, kutsatutako ordenagailura atxikitzen zen. URL fitxategiak scripterako esteka zuen:
Injekzioa nola egin den ulertzeko, datu-matrizeak deszifratu ditugu array ΠΈ array2. Horretarako Python funtzio hau erabili dugu:
def decrypt(data, key):
return gzip.decompress(
bytearray([data[i] ^ key[i % len(key)] for i in range(len(data))])[4:])
Ondorioz, zera jakin dugu:
array PE fitxategia zen - hau da azken karga;
array2 injekzioa egiteko behar zen shellcode zen.
Shellcode array batetik array2 funtzio-balio gisa pasatu da lpPrevWndFunc funtzio batean sartu CallWindowProcA. lpPrevWndFunc β callback funtzioa, bere prototipoa honelakoa da:
Beraz, funtzioa exekutatzen duzunean CallWindowProcA parametroekin hWnd, Msg, wParam, lParam Arrayko shellcode exekutatzen da array2 argudioekin hWnd ΠΈ Msg. hWnd fitxategi exekutagarriaren bidea duen kate baten erakuslea da svchost.exeEta Msg β azken kargaren erakuslea.
Shellcode-k funtzioen helbideak jaso ditu kernel32.dll ΠΈ ntdll32.dll beren izenetatik hash balioetan oinarrituta eta azken karga karga prozesuko memorian sartu zuten svchost.exeProcess Hollowing teknika erabiliz (horretan gehiago irakur dezakezu Artikulu). Shellcode injektatzen duzunean:
prozesu bat sortu zuen svchost.exe eseki egoeran funtzioa erabiliz CreateProcessW;
ondoren, atalaren bistaratzea prozesuaren helbide-espazioan ezkutatu svchost.exe funtzioa erabiliz NtUnmapViewOfSection. Horrela, programak jatorrizko prozesuaren memoria askatu zuen svchost.exegero kargarako memoria esleitzeko helbide honetan;
esleitutako memoria prozesuko helbide-espazioan kargarako svchost.exe funtzioa erabiliz VirtualAllocEx;
Injekzio-prozesuaren hasiera
kargaren edukia prozesuaren helbide-espazioan idatzi zuen svchost.exe funtzioa erabiliz WriteProcessMemory (beheko pantaila-argazkian bezala);
prozesuari berriro ekin dio svchost.exe funtzioa erabiliz ResumeThread.
Injekzio-prozesua amaitzea
Deskarga daitekeen malwarea
Deskribatutako ekintzen ondorioz, kutsatutako sisteman RAT klaseko malwareetako bat instalatu zen. Beheko taulan erasoan erabilitako malwarea ageri da, erasotzaile talde bati ziurtasunez egotzi diezaiokegun, laginak komando eta kontrol zerbitzari berera sartu baitira.
Kontrol-zerbitzari berarekin banatutako malwarearen adibideak
Hemen bi gauza nabarmentzen dira.
Lehenik eta behin, erasotzaileek hainbat RAT familia ezberdin erabili izana aldi berean. Jokaera hori ez da ohikoa ziber-talde ezagunentzat, askotan ezagutzen dituzten tresna multzo bera erabiltzen baitute.
Bigarrenik, RATKing-ek foro espezializatuetan prezio baxuan saltzen den malwarea erabiltzen zuen, edo kode irekiko proiektu bat ere bada.
Kanpainan erabilitako malware-zerrenda osatuagoa βoharra garrantzitsu batekinβ artikuluaren amaieran ematen da.
Taldeari buruz
Ezin diegu deskribatutako kanpaina gaiztoa erasotzaile ezagunei egotzi. Oraingoz, eraso hauek funtsean talde berri batek egin zituela uste dugu. Hasieran idatzi genuen bezala, RATKing deitu genion.
VBS script-a sortzeko, taldeak ziurrenik utilitatearen antzeko tresna bat erabili zuen VBS-Crypter garatzailearengandik NYAN-x-CAT. Programa honek erasotzaileen gidoiarekin sortzen duen script-aren antzekotasunak adierazten du hori. Zehazki, biak:
exekutatu fitxategi hau PowerShell erabiliz bere helbide-espazioan.
Argitasuna lortzeko, alderatu PowerShell komandoa erregistroko fitxategi bat exekutatzeko, VBS-Crypter erabiliz sortutako script batek erabiltzen duena:
Kontuan izan erasotzaileek NYAN-x-CAT-ren beste erabilgarritasun bat erabili zutela kargaren bat bezala - LimeRAT.
C&C zerbitzarien helbideek RATKing-en beste ezaugarri bereizgarri bat adierazten dute: taldeak DNS zerbitzu dinamikoak nahiago ditu (ikus C&Cen zerrenda IoC taulan).
IoC
Beheko taulak ziurrenik deskribatutako kanpainari egotzi daitezkeen VBS scripten zerrenda osoa eskaintzen du. Script hauek guztiak antzekoak dira eta gutxi gorabehera ekintza-sekuentzia bera egiten dute. Horiek guztiek RAT klaseko malwarea Windows prozesu fidagarri batean sartzen dute. Guztiek C&C helbideak dituzte erregistratuta DNS dinamikoko zerbitzuak erabiliz.
Hala ere, ezin dugu esan script horiek guztiak erasotzaile berdinek banatu zituztenik, C&C helbide berdinak dituzten laginak izan ezik (adibidez, kimjoy007.dyndns.org).