„Ryuk“ yra viena iš labiausiai žinomų „ransomware“ parinkčių per pastaruosius kelerius metus. Nuo tada, kai pirmą kartą pasirodė 2018 m. vasarą, jis rinko
1. Bendra informacija
Šiame dokumente pateikiama Ryuk ransomware varianto analizė, taip pat įkroviklis, atsakingas už kenkėjiškos programos įkėlimą į sistemą.
„Ryuk“ išpirkos reikalaujanti programa pirmą kartą pasirodė 2018 m. vasarą. Vienas iš „Ryuk“ ir kitų „ransomware“ skirtumų yra tas, kad jis skirtas atakuoti įmonių aplinką.
2019 m. viduryje kibernetinės nusikaltėlių grupės užpuolė daugybę Ispanijos įmonių, naudojusių šią išpirkos programą.
Ryžiai. 1: „El Confidencial“ ištrauka apie „Ryuk“ išpirkos reikalaujančios programos ataką [1]
Ryžiai. 2: El País ištrauka apie ataką, įvykdytą naudojant Ryuk išpirkos programą [2]
Šiais metais „Ryuk“ užpuolė daugybę įmonių įvairiose šalyse. Kaip matote toliau pateiktuose paveiksluose, labiausiai nukentėjo Vokietija, Kinija, Alžyras ir Indija.
Palyginus kibernetinių atakų skaičių, matome, kad Ryuk paveikė milijonus vartotojų ir pakenkė didžiuliam duomenų kiekiui, todėl patyrė didelių ekonominių nuostolių.
Ryžiai. 3: Ryuko pasaulinės veiklos iliustracija.
Ryžiai. 4: 16 šalių, kurias labiausiai paveikė Ryuk
Ryžiai. 5: vartotojų, kuriuos užpuolė Ryuk išpirkos reikalaujančios programos, skaičius (milijonais)
Pagal įprastą tokių grėsmių veikimo principą, ši išpirkos programa, pasibaigus šifravimui, parodo aukai pranešimą apie išpirką, kurį reikia sumokėti bitkoinais nurodytu adresu, kad būtų atkurta prieiga prie užšifruotų failų.
Ši kenkėjiška programa pasikeitė nuo tada, kai buvo pirmą kartą pristatyta.
Šiame dokumente analizuojamas šios grėsmės variantas buvo aptiktas per bandymą atakuoti 2020 m. sausio mėn.
Dėl savo sudėtingumo ši kenkėjiška programa dažnai priskiriama organizuotoms kibernetinių nusikaltėlių grupėms, dar vadinamoms APT grupėmis.
Dalis „Ryuk“ kodo turi pastebimą panašumą į kitos gerai žinomos išpirkos reikalaujančios programos „Hermes“, su kuria jie atlieka daug identiškų funkcijų, kodą ir struktūrą. Štai kodėl Ryukas iš pradžių buvo siejamas su Šiaurės Korėjos grupe „Lazarus“, kuri tuo metu buvo įtariama už „Hermes“ išpirkos reikalaujančią programinę įrangą.
CrowdStrike Falcon X paslauga vėliau pažymėjo, kad Ryuk iš tikrųjų buvo sukurta WIZARD SPIDER grupės [4].
Yra keletas įrodymų, patvirtinančių šią prielaidą. Pirma, ši išpirkos programa buvo reklamuojama svetainėje exploit.in, kuri yra gerai žinoma Rusijos kenkėjiškų programų rinka ir anksčiau buvo siejama su kai kuriomis Rusijos APT grupėmis.
Šis faktas atmeta teoriją, kad Ryuk galėjo būti sukurtas Lazarus APT grupės, nes tai nedera su grupės veikimo būdu.
Be to, „Ryuk“ buvo reklamuojamas kaip išpirkos programa, kuri neveiks Rusijos, Ukrainos ir Baltarusijos sistemose. Tokį elgesį lemia kai kuriose „Ryuk“ versijose randama funkcija, kai ji tikrina sistemos, kurioje veikia išpirkos reikalaujanti programa, kalbą ir sustabdo jos paleidimą, jei sistemoje yra rusų, ukrainiečių ar baltarusių kalba. Galiausiai, ekspertinė mašinos, kurią nulaužė WIZARD SPIDER komanda, analizė atskleidė keletą „artefaktų“, kurie tariamai buvo naudojami kuriant „Ryuk“ kaip „Hermes“ išpirkos reikalaujančios programos variantą.
Kita vertus, ekspertai Gabriela Nicolao ir Luciano Martins teigė, kad išpirkos reikalaujančią programinę įrangą galėjo sukurti APT grupė CryptoTech [5].
Tai išplaukia iš to, kad likus keliems mėnesiams iki Ryuk pasirodymo ši grupė tos pačios svetainės forume paskelbė informaciją, kad sukūrė naują Hermes išpirkos reikalaujančios programos versiją.
Keletas forumo vartotojų abejojo, ar „CryptoTech“ iš tikrųjų sukūrė „Ryuk“. Tada grupė gynėsi ir pareiškė turinti įrodymų, kad jie sukūrė 100% išpirkos reikalaujančios programos.
2. Charakteristikos
Pradedame nuo įkrovos įkėlimo programos, kurios užduotis yra identifikuoti įjungtą sistemą, kad būtų galima paleisti „teisingą“ „Ryuk“ išpirkos reikalaujančios programos versiją.
Įkrovos įkrovos maiša yra tokia:
MD5 A73130B0E379A989CBA3D695A157A495
SHA256 EF231EE1A2481B7E627921468E79BB4369CCFAEB19A575748DD2B664ABC4F469
Viena iš šios parsisiuntimo programos ypatybių yra ta, kad jame nėra jokių metaduomenų, t.y. Šios kenkėjiškos programos kūrėjai į ją neįtraukė jokios informacijos.
Kartais juose pateikiami klaidingi duomenys, kad vartotojas būtų suklaidintas, kad jis manytų, kad jie naudoja teisėtą programą. Tačiau, kaip pamatysime vėliau, jei užkrėtimas nėra susijęs su vartotojo sąveika (kaip yra šios išpirkos reikalaujančios programos atveju), užpuolikai nemano, kad būtina naudoti metaduomenis.
Ryžiai. 6: pavyzdiniai metaduomenys
Pavyzdys buvo sudarytas 32 bitų formatu, kad galėtų veikti tiek 32, tiek 64 bitų sistemose.
3. Skverbties vektorius
Pavyzdys, kuris atsisiunčia ir paleidžia Ryuk, pateko į mūsų sistemą per nuotolinį ryšį, o prieigos parametrai buvo gauti per preliminarią KPP ataką.
Ryžiai. 7: atakų registras
Užpuolikui pavyko prisijungti prie sistemos nuotoliniu būdu. Po to jis sukūrė vykdomąjį failą su mūsų pavyzdžiu.
Prieš paleisdamas šį vykdomąjį failą užblokavo antivirusinis sprendimas.
Ryžiai. 8: rašto užraktas
Ryžiai. 9: rašto užraktas
Kai kenkėjiškas failas buvo užblokuotas, užpuolikas bandė atsisiųsti šifruotą vykdomojo failo versiją, kuri taip pat buvo užblokuota.
Ryžiai. 10: mėginių rinkinys, kurį užpuolikas bandė paleisti
Galiausiai per šifruotą pultą jis bandė atsisiųsti dar vieną kenkėjišką failą
PowerShell apeiti antivirusinę apsaugą. Bet jis taip pat buvo užblokuotas.
Ryžiai. 11: „PowerShell“ su užblokuotu kenkėjišku turiniu
Ryžiai. 12: „PowerShell“ su užblokuotu kenkėjišku turiniu
4. Krautuvas
Kai jis vykdomas, jis įrašo ReadMe failą į aplanką % Temp%, kas būdinga Ryukui. Šis failas yra išpirkos laiškas, kuriame yra protonmail domeno el. pašto adresas, kuris yra gana įprastas šioje kenkėjiškų programų šeimoje: [apsaugotas el. paštu]
Ryžiai. 13: Išpirkos reikalavimas
Kai įkrovos įkroviklis veikia, galite pamatyti, kad ji paleidžia kelis vykdomuosius failus atsitiktiniais pavadinimais. Jie saugomi paslėptame aplanke VISUOMENĖ, bet jei parinktis neaktyvi operacinėje sistemoje „Rodyti paslėptus failus ir aplankus“, tada jie liks paslėpti. Be to, šie failai yra 64 bitų, skirtingai nei pirminis failas, kuris yra 32 bitų.
Ryžiai. 14: pavyzdžio paleisti vykdomieji failai
Kaip matote aukščiau esančiame paveikslėlyje, Ryuk paleidžia icacls.exe, kuri bus naudojama visiems ACL (prieigos valdymo sąrašams) modifikuoti, taip užtikrinant prieigą ir vėliavėlių modifikavimą.
Jis gauna visišką prieigą prie visų įrenginyje esančių failų (/T) visiems vartotojams, nepaisant klaidų (/C) ir nerodo jokių pranešimų (/Q).
Ryžiai. 15: pavyzdžio paleistos icacls.exe vykdymo parametrai
Svarbu pažymėti, kad Ryuk patikrina, kurią „Windows“ versiją naudojate. Už tai jis
atlieka versijos patikrinimą naudojant GetVersionExW, kuriame tikrinama vėliavėlės reikšmė lpVersionInformacijanurodant, ar dabartinė „Windows“ versija yra naujesnė nei "Windows XP".
Priklausomai nuo to, ar naudojate naujesnę nei Windows XP versiją, įkrovos įkroviklis įrašys į vietinį vartotojo aplanką – šiuo atveju į aplanką % viešas %.
Ryžiai. 17: operacinės sistemos versijos tikrinimas
Rašoma byla yra Ryuk. Tada jis jį paleidžia, kaip parametrą perduodamas savo adresą.
Ryžiai. 18: Vykdykite Ryuk per ShellExecute
Pirmas dalykas, kurį Ryukas daro, yra gauti įvesties parametrus. Šį kartą yra du įvesties parametrai (pats vykdomasis failas ir lašintuvo adresas), kurie naudojami jo pėdsakams pašalinti.
Ryžiai. 19: Proceso kūrimas
Taip pat galite matyti, kad paleidus vykdomuosius failus, jis ištrina save ir nepalieka savo buvimo pėdsakų aplanke, kuriame buvo vykdomas.
Ryžiai. 20: failo ištrynimas
5. RYUK
5.1 Buvimas
Ryuk, kaip ir kitos kenkėjiškos programos, stengiasi išlikti sistemoje kuo ilgiau. Kaip parodyta aukščiau, vienas iš būdų pasiekti šį tikslą yra slapta kurti ir paleisti vykdomuosius failus. Norėdami tai padaryti, dažniausiai pakeičiamas registro raktas „CurrentVersionRun“.
Šiuo atveju galite pamatyti, kad šiuo tikslu pirmasis failas bus paleistas VWjRF.exe
(failo pavadinimas generuojamas atsitiktinai) paleidžiamas cmd.exe.
Ryžiai. 21: Vykdomas VWjRF.exe
Tada įveskite komandą RUN Su vardu"svchos". Taigi, jei norite bet kuriuo metu patikrinti registro raktus, galite lengvai praleisti šį pakeitimą, atsižvelgiant į šio pavadinimo panašumą į svchost. Šio rakto dėka Ryuk užtikrina jo buvimą sistemoje. Jei sistema to nepadarė dar buvo užkrėstas, tada, kai iš naujo paleisite sistemą, vykdomasis failas bandys dar kartą.
Ryžiai. 22: pavyzdys užtikrina buvimą registro rakte
Taip pat matome, kad šis vykdomasis failas sustabdo dvi paslaugas:
"garso pabaigos taškų kūrimo priemonė“, kuris, kaip rodo pavadinimas, atitinka sistemos garsą,
Ryžiai. 23: Mėginys sustabdo sistemos garso paslaugą
и Samss, kuri yra paskyros valdymo paslauga. Šių dviejų paslaugų sustabdymas yra Ryuk savybė. Tokiu atveju, jei sistema prijungta prie SIEM sistemos, išpirkos reikalaujanti programa bando nustoti siuntimą į
Ryžiai. 24: mėginys sustabdo „Samss“ paslaugą
5.2 Privilegijos
Paprastai tariant, Ryuk pradeda judėti į šoną tinkle arba jį paleidžia kita kenkėjiška programa, pvz.,
Iš anksto, kaip įžangą į įgyvendinimo procesą, matome, kaip jis atlieka procesą Apsimesti savimi, o tai reiškia, kad prieigos prieigos rakto saugos turinys bus perduotas į srautą, kur jis bus nedelsiant nuskaitytas naudojant Gauti CurrentThread.
Ryžiai. 25: Paskambinkite „ImpersonateSelf“.
Tada matome, kad jis susies prieigos raktą su gija. Taip pat matome, kad viena iš vėliavų yra Norima prieiga, kurį galima naudoti norint valdyti prieigą, kurią turės gija. Šiuo atveju vertė, kurią gaus edx, turėtų būti TOKEN_ALL_ACESS arba kitaip - TOKEN_WRITE.
Ryžiai. 26: Srauto prieigos rakto kūrimas
Tada jis naudosis SeDebugPrivilege ir paskambins, kad gautų gijos derinimo leidimus, todėl PROCESS_ALL_ACCESS, jis galės pasiekti bet kurį reikiamą procesą. Dabar, atsižvelgiant į tai, kad šifruotojas jau turi paruoštą srautą, belieka pereiti į paskutinį etapą.
Ryžiai. 27: „SeDebugPrivilege“ ir „Privilege Escalation“ funkcijos iškvietimas
Viena vertus, turime „LookupPrivilegeValueW“, kuri suteikia mums reikiamos informacijos apie privilegijas, kurias norime padidinti.
Ryžiai. 28: Prašyti informacijos apie privilegijas privilegijų eskalavimui
Kita vertus, turime AdjustTokenPrivilegijos, kuri leidžia mums gauti reikiamas teises į mūsų srautą. Šiuo atveju svarbiausia Naujoji valstybė, kurios vėliava suteiks privilegijų.
Ryžiai. 29: prieigos rakto leidimų nustatymas
5.3 Įgyvendinimas
Šiame skyriuje parodysime, kaip pavyzdys atlieka anksčiau šioje ataskaitoje paminėtą diegimo procesą.
Pagrindinis įgyvendinimo proceso tikslas, kaip ir eskalavimas, yra gauti prieigą prie šešėlinės kopijos. Norėdami tai padaryti, jis turi dirbti su gija, kurios teisės yra didesnės nei vietinio vartotojo. Įgijęs tokias padidintas teises, jis ištrins kopijas ir pakeis kitus procesus, kad būtų neįmanoma grįžti į ankstesnį operacinės sistemos atkūrimo tašką.
Kaip įprasta šio tipo kenkėjiškoms programoms, ji naudoja CreateToolHelp32Snapshottodėl daroma šiuo metu vykdomų procesų momentinė nuotrauka ir bandoma pasiekti tuos procesus naudojant OpenProcess. Kai jis gauna prieigą prie proceso, jis taip pat atidaro prieigos raktą su informacija, kad gautų proceso parametrus.
Ryžiai. 30: Procesų gavimas iš kompiuterio
Naudodami CreateToolhelp140002Snapshot galime dinamiškai pamatyti, kaip jis gauna įprastoje 9D32C vykdomų procesų sąrašą. Gavęs juos, jis eina per sąrašą, bandydamas atidaryti procesus po vieną, naudodamas OpenProcess, kol pavyksta. Šiuo atveju pirmasis procesas, kurį jis galėjo atidaryti, buvo „taskhost.exe“.
Ryžiai. 31: dinamiškai vykdykite procedūrą, kad gautumėte procesą
Matome, kad vėliau jis nuskaito proceso prieigos rakto informaciją, todėl iškviečia OpenProcessToken su parametru "20008"
Ryžiai. 32: skaitykite proceso prieigos rakto informaciją
Ji taip pat patikrina, ar procesas, į kurį bus suleidžiamas, nėra csrss.exe, explorer.exe, lsaas.exe arba kad jis turi tam tikras teises NT valdžia.
Ryžiai. 33: neįtraukti procesai
Galime dinamiškai pamatyti, kaip ji pirmiausia atlieka patikrinimą, naudodama proceso prieigos rakto informaciją 140002D9C siekiant išsiaiškinti, ar paskyra, kurios teisėmis naudojamasi procesui vykdyti, yra paskyra NT VALDYMAS.
Ryžiai. 34: NT VALDYMO patikrinimas
O vėliau ne procedūros metu patikrina, ar taip nėra csrss.exe, explorer.exe arba lsaas.exe.
Ryžiai. 35: NT VALDYMO patikrinimas
Kai jis padaro momentinę procesų nuotrauką, atidaro procesus ir patikrina, ar nė vienas iš jų nėra pašalintas, jis yra pasirengęs įrašyti į atmintį procesus, kurie bus įvesti.
Norėdami tai padaryti, ji pirmiausia rezervuoja vietą atmintyje (VirtualAllocEx), rašo į jį (WriteProcessmemory) ir sukuria giją (Sukurti RemoteThread). Norėdami dirbti su šiomis funkcijomis, jis naudoja pasirinktų procesų PID, kuriuos anksčiau gavo naudodamas CreateToolhelp32Snapshot.
Ryžiai. 36: įterpti kodą
Čia galime dinamiškai stebėti, kaip funkcijai iškviesti naudojamas proceso PID VirtualAllocEx.
Ryžiai. 37: skambinkite „VirtualAllocEx“.
5.4 Šifravimas
Šiame skyriuje apžvelgsime šio pavyzdžio šifravimo dalį. Toliau pateiktame paveikslėlyje matote dvi paprogrames, pavadintas "LoadLibrary_EncodeString„и“Encode_Func“, kurie yra atsakingi už šifravimo procedūros atlikimą.
Ryžiai. 38: Šifravimo procedūros
Pradžioje matome, kaip ji įkelia eilutę, kuri vėliau bus naudojama viskam, ko reikia: importui, DLL, komandoms, failams ir CSP deobfuskuoti.
Ryžiai. 39: Deobfuskacijos grandinė
Toliau pateiktame paveikslėlyje parodytas pirmasis importavimas, kurį jis panaikina registre R4. „LoadLibrary“. Tai vėliau bus naudojama norint įkelti reikiamus DLL. Taip pat galime matyti kitą eilutę registre R12, kuri naudojama kartu su ankstesne eilute, kad būtų galima panaikinti obfuskaciją.
Ryžiai. 40: Dinaminis obfuskacijos panaikinimas
Jis ir toliau atsisiunčia komandas, kurios bus paleistos vėliau, kad išjungtų atsargines kopijas, atkūrimo taškus ir saugaus įkrovos režimus.
Ryžiai. 41: įkeliamos komandos
Tada įkeliama vieta, kur bus numesti 3 failai: Windows.bat, run.sct и pradėti.šikšnosparnis.
Ryžiai. 42: Failų vietos
Šie 3 failai naudojami kiekvienos vietos privilegijoms patikrinti. Jei reikiamų privilegijų nėra, Ryukas sustabdo vykdymą.
Toliau įkeliamos eilutės, atitinkančios tris failus. Pirmas, DECRYPT_INFORMATION.html, yra informacijos, reikalingos failams atkurti. antra, VISUOMENĖ, yra RSA viešasis raktas.
Ryžiai. 43: eilutė DECRYPT INFORMATION.html
Trečias, UNIQUE_ID_DO_NOT_REMOVE, yra užšifruotas raktas, kuris bus naudojamas kitoje įprastoje šifravimui atlikti.
Ryžiai. 44: eilutė UNIKALUS ID NEPAŠALINKITE
Galiausiai jis atsisiunčia reikiamas bibliotekas kartu su reikiamais importais ir CSP („Microsoft Enhanced RSA“. и AES kriptografijos teikėjas).
Ryžiai. 45: įkeliamos bibliotekos
Atlikus visą debfuskavimą, atliekami šifravimui reikalingi veiksmai: surašomi visi loginiai diskai, vykdoma tai, kas buvo įkelta ankstesnėje rutinoje, sustiprinamas buvimas sistemoje, pašalinamas failas RyukReadMe.html, šifruojama, išvardijami visi tinklo diskai. , perėjimas prie aptiktų įrenginių ir jų šifravimas.
Viskas prasideda nuo įkrovimo“cmd.exe“ ir RSA viešojo rakto įrašai.
Ryžiai. 46: Pasiruošimas šifravimui
Tada jis naudoja visus loginius diskus GetLogicalDrives ir išjungia visas atsargines kopijas, atkūrimo taškus ir saugaus įkrovos režimus.
Ryžiai. 47: Atkūrimo įrankių išjungimas
Po to jis sustiprina savo buvimą sistemoje, kaip matėme aukščiau, ir įrašo pirmąjį failą RyukReadMe.html в TEMP.
Ryžiai. 48: Pranešimo apie išpirką paskelbimas
Toliau pateiktame paveikslėlyje galite pamatyti, kaip jis sukuria failą, atsisiunčia turinį ir jį įrašo:
Ryžiai. 49: failo turinio įkėlimas ir rašymas
Kad galėtų atlikti tuos pačius veiksmus visuose įrenginiuose, jis naudoja
"icacls.exe“, kaip parodėme aukščiau.
Ryžiai. 50: naudojant icalcls.exe
Ir galiausiai jis pradeda šifruoti failus, išskyrus „*.exe“, „*.dll“ failus, sistemos failus ir kitas vietas, nurodytas šifruoto baltojo sąrašo forma. Norėdami tai padaryti, jis naudoja importavimą: CryptAcquireContextW (kai nurodytas AES ir RSA naudojimas), „CryptDeriveKey“, „CryptGenKey“., CryptDestroyKey ir tt Ji taip pat bando išplėsti savo pasiekiamumą aptiktiems tinklo įrenginiams naudodama WNetEnumResourceW ir tada juos užšifruoti.
Ryžiai. 51: sistemos failų šifravimas
6. Importas ir atitinkamos vėliavėlės
Toliau pateikiama lentelė, kurioje išvardijami pavyzdyje naudojami svarbiausi importai ir žymos:
7. IOC
Nuorodos
- usersPublicrun.sct
- Pradėti MenuProgramsStartupstart.bat AppDataRoamingMicrosoftWindowsStart
- MenuProgramsStartupstart.bat
Antivirusinės laboratorijos „PandaLabs“ ekspertai parengė techninę „Ryuk“ išpirkos reikalaujančios programos ataskaitą.
8. Nuorodos
1. "Everis y Prisa Radio sufren un grave ciberataque que secuestra sus sistemos."https://www. elconfidencial.com/tecnologia/2019-11-04/everis-la-ser-ciberataque-ransomware-15_2312019/, Paskelbta 04-11-2019.
2. „Un virus de origen ruso ataca a fontoses empresas españolas.“ https: //elpais.com/tecnologia/2019/11/04/actualidad/1572897654_ 251312.html, Publicada el 04/11/2019.
3. „VB2019 dokumentas: Shinigami revenge: the long tail of the Ryuk kenkėjiškų programų.“ https://securelist.com/story-of-the-year-2019-cities-under-ransomware-siege/95456/, Publicada el 11 /12/2019
4. „Big Game Hunting with Ryuk: Another LucrativebTargeted Ransomware“ https://www. crowdstrike.com/blog/big-game-hunting-with-ryuk-another-lucrative-targeted-ransomware/, Paskelbta 10-01-2019.
5. „VB2019 dokumentas: Shinigami kerštas: „Ryuk“ kenkėjiškų programų ilga uodega.“ https://www. virusbulletin.com/virusbulletin/2019/10/ vb2019-paper-shinigamis-revenge-long-tail-r
Šaltinis: www.habr.com