Ddiwedd mis Mai, fe wnaethom ddarganfod ymgyrch i ddosbarthu meddalwedd maleisus Trojan Mynediad o Bell (RAT) - rhaglenni sy'n caniatáu i ymosodwyr reoli system heintiedig o bell.
Roedd y grŵp a archwiliwyd gennym yn nodedig gan y ffaith nad oedd yn dewis unrhyw deulu RAT penodol ar gyfer haint. Sylwyd ar sawl Trojans mewn ymosodiadau o fewn yr ymgyrch (roedd pob un ohonynt ar gael yn eang). Gyda'r nodwedd hon, atgoffodd y grŵp ni o'r brenin llygod mawr - anifail chwedlonol sy'n cynnwys cnofilod â chynffonau wedi'u cydblethu.
Daw'r gwreiddiol o'r monograff gan K. N. Rossikov “Llygod a llygod tebyg i lygod, y pwysicaf yn economaidd” (1908)
Er anrhydedd i'r creadur hwn, fe wnaethom enwi'r grŵp yr ydym yn ystyried RATKing. Yn y swydd hon, byddwn yn manylu ar sut y gwnaeth yr ymosodwyr yr ymosodiad, pa offer a ddefnyddiwyd ganddynt, a hefyd yn rhannu ein barn ar briodoli ar gyfer yr ymgyrch hon.
Cynnydd yr ymosodiad
Digwyddodd pob ymosodiad yn yr ymgyrch hon yn unol â'r algorithm canlynol:
Derbyniodd y defnyddiwr e-bost gwe-rwydo gyda dolen i Google Drive.
Gan ddefnyddio'r ddolen, lawrlwythodd y dioddefwr sgript VBS maleisus a nododd lyfrgell DLL i lwytho'r llwyth tâl terfynol i gofrestrfa Windows a lansiodd PowerShell i'w weithredu.
Chwistrellodd y llyfrgell DLL y llwyth tâl terfynol - mewn gwirionedd, un o'r RATs a ddefnyddir gan ymosodwyr - i'r broses system a chofrestrodd sgript VBS yn autorun er mwyn ennill troedle yn y peiriant heintiedig.
Gweithredwyd y llwyth tâl terfynol mewn proses system a rhoddodd y gallu i'r ymosodwr reoli'r cyfrifiadur heintiedig.
Yn sgematig gellir ei gynrychioli fel hyn:
Nesaf, byddwn yn canolbwyntio ar y tri cham cyntaf, gan fod gennym ddiddordeb yn y mecanwaith cyflwyno malware. Ni fyddwn yn disgrifio mecanwaith gweithredu'r malware ei hun yn fanwl. Maent ar gael yn eang - naill ai'n cael eu gwerthu ar fforymau arbenigol, neu hyd yn oed eu dosbarthu fel prosiectau ffynhonnell agored - ac felly nid ydynt yn unigryw i'r grŵp RATKing.
Dadansoddiad o gamau ymosod
Cam 1. E-bost gwe-rwydo
Dechreuodd yr ymosodiad gyda'r dioddefwr yn derbyn llythyr maleisus (defnyddiodd yr ymosodwyr dempledi gwahanol gyda thestun; mae'r sgrinlun isod yn dangos un enghraifft). Roedd y neges yn cynnwys dolen i gadwrfa gyfreithlon drive.google.com, sydd i fod wedi arwain at dudalen lawrlwytho dogfen PDF.
Enghraifft o e-bost gwe-rwydo
Fodd bynnag, mewn gwirionedd, nid dogfen PDF a lwythwyd o gwbl ydoedd, ond sgript VBS.
Pan wnaethoch chi glicio ar y ddolen o'r e-bost yn y screenshot uchod, ffeil a enwir Cargo Flight Details.vbs. Yn yr achos hwn, ni cheisiodd yr ymosodwyr hyd yn oed guddio'r ffeil fel dogfen gyfreithlon.
Ar yr un pryd, fel rhan o'r ymgyrch hon, fe wnaethom ddarganfod sgript o'r enw Cargo Trip Detail.pdf.vbs. Gallai eisoes basio ar gyfer PDF cyfreithlon oherwydd bod Windows yn cuddio estyniadau ffeil yn ddiofyn. Yn wir, yn yr achos hwn, gallai ei eicon, a oedd yn cyfateb i'r sgript VBS, godi amheuaeth o hyd.
Ar y cam hwn, gallai'r dioddefwr adnabod y twyll: edrychwch yn agosach ar y ffeiliau a lawrlwythwyd am eiliad. Fodd bynnag, mewn ymgyrchoedd gwe-rwydo o'r fath, mae ymosodwyr yn aml yn dibynnu ar ddefnyddiwr disylw neu ddefnyddiwr brysiog.
Cam 2. Gweithrediad sgript VBS
Cofrestrodd y sgript VBS, y gallai'r defnyddiwr ei hagor yn anfwriadol, lyfrgell DLL yn y gofrestrfa Windows. Roedd y sgript yn aneglur: roedd y llinellau ynddi wedi'u hysgrifennu fel bytes wedi'u gwahanu gan gymeriad mympwyol.
Enghraifft o sgript wedi'i gorchuddio
Mae'r algorithm deobfuscation yn eithaf syml: cafodd pob trydydd cymeriad ei eithrio o'r llinyn wedi'i rwymo, ac ar ôl hynny cafodd y canlyniad ei ddadgodio o base16 i'r llinyn gwreiddiol. Er enghraifft, o'r gwerth 57Q53s63t72s69J70r74e2El53v68m65j6CH6Ct (a amlygir yn y sgrin uchod) y llinell ganlyniad oedd WScript.Shell.
I ddatgymalu tannau, defnyddiwyd y swyddogaeth Python:
def decode_str(data_enc):
return binascii.unhexlify(''.join([data_enc[i:i+2] for i in range(0, len(data_enc), 3)]))
Isod, ar linellau 9–10, rydym yn tynnu sylw at y gwerth y bu i'w ddarfodiad arwain at ffeil DLL. Ef a lansiwyd yn y cam nesaf gan ddefnyddio PowerShell.
Llinyn gyda DLL obfuscated
Gweithredwyd pob swyddogaeth yn y sgript VBS wrth i'r tannau gael eu datgymalu.
Ar ôl rhedeg y sgript, galwyd y swyddogaeth wscript.sleep — fe'i defnyddiwyd i gyflawni dienyddiad gohiriedig.
Nesaf, bu'r sgript yn gweithio gyda chofrestrfa Windows. Defnyddiodd dechnoleg WMI ar gyfer hyn. Gyda'i help, crëwyd allwedd unigryw, ac ysgrifennwyd corff y ffeil gweithredadwy i'w baramedr. Cyrchwyd y gofrestrfa trwy WMI gan ddefnyddio'r gorchymyn canlynol:
Yn y trydydd cam, llwythodd y DLL maleisus y llwyth tâl terfynol, ei chwistrellu i'r broses system, a sicrhau bod y sgript VBS yn cychwyn yn awtomatig pan fydd y defnyddiwr wedi mewngofnodi.
Rhedeg trwy PowerShell
Gweithredwyd y DLL gan ddefnyddio'r gorchymyn canlynol yn PowerShell:
derbyn data gwerth cofrestrfa gydag enw rnd_value_name — ffeil DLL oedd y data hwn a ysgrifennwyd ar y platfform .Net;
llwytho'r modiwl .Net canlyniadol i gof proses powershell.exe defnyddio'r swyddogaeth [System.Threading.Thread]::GetDomain().Load()(disgrifiad manwl o'r swyddogaeth Llwyth(). ar gael ar wefan Microsoft);
cyflawni'r swyddogaeth GUyyvmzVhebFCw]::EhwwK() - dechreuwyd gweithredu'r llyfrgell DLL ag ef - gyda pharamedrau vbsScriptPath, xorKey, vbsScriptName. Paramedr xorKey storio'r allwedd ar gyfer dadgryptio'r llwyth tâl terfynol, a'r paramedrau vbsScriptPath и vbsScriptName eu trosglwyddo er mwyn cofrestru sgript VBS yn autorun.
Disgrifiad o'r llyfrgell DLL
Mewn ffurf wedi'i dadgrynhoi, roedd y cychwynnwr yn edrych fel hyn:
Llwythwr ar ffurf wedi'i ddadgrynhoi (mae'r swyddogaeth y dechreuodd gweithredu'r llyfrgell DLL â hi wedi'i thanlinellu mewn coch)
Mae'r cychwynnydd wedi'i ddiogelu gan amddiffynnydd .Net Reactor. Mae'r cyfleustodau de4dot yn gwneud gwaith ardderchog o gael gwared ar yr amddiffynnydd hwn.
Y llwythwr hwn:
chwistrellu'r llwyth tâl i broses y system (yn yr enghraifft hon mae'n svchost.exe);
Ychwanegais sgript VBS at autorun.
Chwistrelliad llwyth tâl
Edrychwn ar y swyddogaeth a alwodd y sgript PowerShell.
Swyddogaeth a elwir gan sgript PowerShell
Cyflawnodd y swyddogaeth hon y gweithredoedd canlynol:
dadgryptio dwy set ddata (array и array2 yn y sgrinlun). Fe'u cywasgwyd yn wreiddiol gan ddefnyddio gzip a'u hamgryptio gyda'r algorithm XOR gyda'r allwedd xorKey;
data wedi'i gopïo i ardaloedd cof a neilltuwyd. Data o array - i'r man cof y pwyntiwyd ato intPtr (payload pointer yn y sgrin); data o array2 - i'r man cof y pwyntiwyd ato intPtr2 (shellcode pointer yn y sgrin);
a elwir yn swyddogaeth CallWindowProcA(y disgrifiad Mae'r swyddogaeth hon ar gael ar wefan Microsoft) gyda'r paramedrau canlynol (mae enwau'r paramedrau wedi'u rhestru isod, yn y sgrin maent yn yr un drefn, ond gyda gwerthoedd gweithio):
lpPrevWndFunc - pwyntydd i ddata o array2;
hWnd — pwyntydd at linyn sy'n cynnwys y llwybr i'r ffeil gweithredadwy svchost.exe;
Msg - pwyntydd i ddata o array;
wParam, lParam - paramedrau neges (yn yr achos hwn, ni ddefnyddiwyd y paramedrau hyn ac roedd ganddynt werthoedd o 0);
creu ffeil %AppData%MicrosoftWindowsStart MenuProgramsStartup<name>.urllle <name> - dyma 4 nod cyntaf y paramedr vbsScriptName (yn y sgrinlun, mae'r darn cod gyda'r weithred hon yn dechrau gyda'r gorchymyn File.Copy). Yn y modd hwn, ychwanegodd y malware ffeil URL at y rhestr o ffeiliau autorun pan fewngofnodiodd y defnyddiwr ac felly daeth ynghlwm wrth y cyfrifiadur heintiedig. Roedd y ffeil URL yn cynnwys dolen i'r sgript:
Er mwyn deall sut y gwnaed y pigiad, gwnaethom ddadgryptio'r araeau data array и array2. I wneud hyn fe wnaethom ddefnyddio'r swyddogaeth Python canlynol:
def decrypt(data, key):
return gzip.decompress(
bytearray([data[i] ^ key[i % len(key)] for i in range(len(data))])[4:])
O ganlyniad, cawsom wybod bod:
array oedd ffeil Addysg Gorfforol - dyma'r llwyth cyflog terfynol;
array2 oedd y cod cragen oedd ei angen i gynnal y pigiad.
Cod cragen o arae array2 pasio fel gwerth swyddogaeth lpPrevWndFunc i mewn i swyddogaeth CallWindowProcA. lpPrevWndFunc - swyddogaeth galw'n ôl, mae ei brototeip yn edrych fel hyn:
Felly pan fyddwch chi'n rhedeg y swyddogaeth CallWindowProcA gyda pharamedrau hWnd, Msg, wParam, lParam Mae cod cragen o'r arae yn cael ei weithredu array2 gyda dadleuon hWnd и Msg. hWnd yn bwyntydd i linyn sy'n cynnwys y llwybr i'r ffeil gweithredadwy svchost.exeAc Msg - pwyntydd at y llwyth cyflog terfynol.
Derbyniodd y cod cragen gyfeiriadau swyddogaeth gan kernel32.dll и ntdll32.dll yn seiliedig ar werthoedd hash o'u henwau a chwistrellu'r llwyth tâl terfynol i'r cof proses svchost.exegan ddefnyddio'r dechneg Proses Hollowing (gallwch ddarllen mwy amdano yn hwn Erthygl). Wrth chwistrellu'r cod cragen:
creu proses svchost.exe mewn cyflwr ataliedig gan ddefnyddio'r swyddogaeth CreateProcessW;
yna cuddio arddangosfa'r adran yng ngofod cyfeiriad y broses svchost.exe defnyddio'r swyddogaeth NtUnmapViewOfSection. Felly, rhyddhaodd y rhaglen y cof am y broses wreiddiol svchost.exei ddyrannu cof wedyn ar gyfer y llwyth tâl yn y cyfeiriad hwn;
cof a neilltuwyd ar gyfer y llwyth tâl yn y gofod cyfeiriad proses svchost.exe defnyddio'r swyddogaeth VirtualAllocEx;
Dechrau'r broses chwistrellu
ysgrifennu cynnwys y llwyth tâl i'r gofod cyfeiriad proses svchost.exe defnyddio'r swyddogaeth WriteProcessMemory (fel yn y screenshot isod);
O ganlyniad i'r camau gweithredu a ddisgrifiwyd, gosodwyd un o nifer o malware dosbarth RAT ar y system heintiedig. Mae'r tabl isod yn rhestru'r malware a ddefnyddiwyd yn yr ymosodiad, y gallwn ei briodoli'n hyderus i un grŵp o ymosodwyr, gan fod y samplau wedi cyrchu'r un gweinydd gorchymyn a rheoli.
Enghreifftiau o faleiswedd dosbarthedig gyda'r un gweinydd rheoli
Mae dau beth yn nodedig yma.
Yn gyntaf, yr union ffaith bod yr ymosodwyr wedi defnyddio sawl teulu RAT gwahanol ar unwaith. Nid yw'r ymddygiad hwn yn nodweddiadol ar gyfer grwpiau seiber adnabyddus, sy'n aml yn defnyddio tua'r un set o offer sy'n gyfarwydd iddynt.
Yn ail, defnyddiodd RATKing malware sydd naill ai'n cael ei werthu ar fforymau arbenigol am bris isel, neu sydd hyd yn oed yn brosiect ffynhonnell agored.
Rhoddir rhestr fwy cyflawn o'r malware a ddefnyddiwyd yn yr ymgyrch - gydag un cafeat pwysig - ar ddiwedd yr erthygl.
Am y grŵp
Ni allwn briodoli'r ymgyrch faleisus a ddisgrifir i unrhyw ymosodwyr hysbys. Am y tro, credwn fod yr ymosodiadau hyn wedi'u cyflawni gan grŵp sylfaenol newydd. Wrth i ni ysgrifennu ar y dechrau, fe wnaethon ni ei alw'n RATKing.
I greu'r sgript VBS, mae'n debyg bod y grŵp wedi defnyddio teclyn tebyg i'r cyfleustodau VBS-Crypter gan y datblygwr NYAN-x-CAT. Mae hyn yn cael ei nodi gan debygrwydd y sgript y mae'r rhaglen hon yn ei chreu â sgript yr ymosodwyr. Yn benodol, mae'r ddau:
perfformio oedi wrth gyflawni gan ddefnyddio'r swyddogaeth Sleep;
defnyddio WMI;
cofrestru corff y ffeil gweithredadwy fel paramedr allwedd cofrestrfa;
gweithredu'r ffeil hon gan ddefnyddio PowerShell yn ei ofod cyfeiriad ei hun.
Er eglurder, cymharwch y gorchymyn PowerShell i redeg ffeil o'r gofrestrfa, a ddefnyddir gan sgript a grëwyd gan ddefnyddio VBS-Crypter:
Sylwch fod yr ymosodwyr wedi defnyddio cyfleustodau arall o NYAN-x-CAT fel un o'r llwythi tâl - LimeRAT.
Mae cyfeiriadau'r gweinyddwyr C&C yn nodi nodwedd nodedig arall o RATKing: mae'n well gan y grŵp wasanaethau DNS deinamig (gweler y rhestr o C&Cs yn y tabl IoC).
IoC
Mae'r tabl isod yn rhoi rhestr gyflawn o sgriptiau VBS y mae'n debygol y gellir eu priodoli i'r ymgyrch a ddisgrifiwyd. Mae'r holl sgriptiau hyn yn debyg ac yn perfformio tua'r un dilyniant o gamau gweithredu. Mae pob un ohonynt yn chwistrellu malware dosbarth RAT i mewn i broses Windows y gellir ymddiried ynddi. Mae gan bob un ohonynt gyfeiriadau C&C wedi'u cofrestru gan ddefnyddio gwasanaethau Dynamic DNS.
Fodd bynnag, ni allwn honni bod yr holl sgriptiau hyn wedi'u dosbarthu gan yr un ymosodwyr, ac eithrio samplau gyda'r un cyfeiriadau C&C (er enghraifft, kimjoy007.dyndns.org).