
Ryuk je ena najbolj razvpitih različic izsiljevalske programske opreme zadnjih nekaj let. Odkar se je prvič pojavila poleti 2018, se je nabrala , zlasti v poslovnem okolju, ki je glavna tarča njegovih napadov.
1. Splošne informacije
Ta dokument vsebuje analizo različice izsiljevalske programske opreme Ryuk in nalagalnika, ki je odgovoren za nalaganje zlonamerne programske opreme v sistem.
Izsiljevalska programska oprema Ryuk se je prvič pojavila poleti 2018. Ena od razlik med Ryukom in drugimi izsiljevalskimi programi je, da je namenjena napadom na poslovna okolja.
Sredi leta 2019 so kibernetske kriminalne skupine napadle veliko število španskih podjetij z uporabo te izsiljevalske programske opreme.

Slika 1: Odlomek iz časopisa El Confidencial o napadu izsiljevalske programske opreme Ryuk [1]

Slika 2: Odlomek iz časopisa El País o napadu, izvedenem z izsiljevalsko programsko opremo Ryuk [2]
Letos je Ryuk napadel veliko število podjetij v različnih državah. Kot lahko vidite iz spodnjih slik, so bile Nemčija, Kitajska, Alžirija in Indija najbolj prizadete.
Če primerjamo število kibernetskih napadov, lahko vidimo, da je Ryuk prizadel milijone uporabnikov in ogrozil ogromno količino podatkov, kar je povzročilo resno gospodarsko škodo.

Slika 3: Ilustracija Ryukove globalne dejavnosti.

Slika 4: 16 držav, ki jih je Ryuk najbolj prizadel

Slika 5: Število uporabnikov, ki jih je napadla izsiljevalska programska oprema Ryuk (v milijonih)
Kot je značilno za takšne grožnje, izsiljevalska programska oprema po končanem šifriranju žrtvi prikaže sporočilo z zahtevo za odkupnino, ki jo je treba plačati v Bitcoinih na določen naslov, da se obnovi dostop do šifriranih datotek.
Ta zlonamerna programska oprema se je od svojega prvega pojava spremenila.
Različica te grožnje, analizirana v tem članku, je bila odkrita med poskusom napada januarja 2020.
Zaradi svoje kompleksnosti se ta zlonamerna programska oprema pogosto pripisuje organiziranim skupinam za kibernetski kriminal, znanim tudi kot APT skupine.
Del Ryukove kode je opazno podoben kodi in strukturi drugega znanega programa za izsiljevalsko programsko opremo, Hermes, s katerim si deli številne funkcije. Zato je bil Ryuk sprva povezan s severnokorejsko skupino Lazarus, za katero so takrat sumili, da stoji za izsiljevalsko programsko opremo Hermes.
Storitev Falcon X podjetja CrowdStrike je kasneje ugotovila, da je Ryuka v resnici ustvarila skupina WIZARD SPIDER [4].
To domnevo podpira več dokazov. Prvič, ta izsiljevalska programska oprema je bila oglaševana na spletnem mestu exploit.in, znanem ruskem trgu zlonamerne programske opreme, ki je bil prej povezan z več ruskimi skupinami APT.
To dejstvo izključuje teorijo, da bi Ryuk lahko razvila skupina APT Lazarus, saj ne ustreza načinu delovanja skupine.
Poleg tega je bil Ryuk oglaševan kot izsiljevalska programska oprema, ki ne bo delovala v ruskih, ukrajinskih ali beloruskih sistemih. To vedenje je posledica funkcije v nekaterih različicah Ryuka, ki preveri jezik sistema, v katerem se izvaja izsiljevalska programska oprema, in jo ustavi, če sistem izvaja ruščino, ukrajinščino ali beloruščino. Nazadnje je strokovna analiza računalnika, v katerega je vdrla skupina WIZARD SPIDER, razkrila več "artefaktov", ki so bili domnevno uporabljeni pri razvoju Ryuka kot različice izsiljevalske programske opreme Hermes.
Po drugi strani pa sta strokovnjaka Gabriela Nicolao in Luciano Martins namignila, da je izsiljevalsko programsko opremo morda razvila skupina CryptoTech [5].
To izhaja iz dejstva, da je ta skupina nekaj mesecev pred pojavom Ryuka na forumu istega spletnega mesta objavila, da so razvili novo različico izsiljevalske programske opreme Hermes.
Več uporabnikov foruma je podvomilo, ali je CryptoTech dejansko ustvaril Ryuk. Skupina se je nato branila in trdila, da ima dokaze, ki dokazujejo, da je razvila 100 % izsiljevalske programske opreme.
2. Značilnosti
Začnemo z zagonskim nalagalnikom, katerega naloga je prepoznati sistem, na katerem je nameščen, da se lahko zažene "pravilna" različica izsiljevalske programske opreme Ryuk.
Zgoščena vrednost zagonskega nalagalnika je naslednja:
MD5 A73130B0E379A989CBA3D695A157A495
SHA256 EF231EE1A2481B7E627921468E79BB4369CCFAEB19A575748DD2B664ABC4F469
Ena od posebnosti tega programa za prenos je, da ne vsebuje nobenih metapodatkov, tj. ustvarjalci te zlonamerne programske opreme vanj niso vključili nobenih informacij.
Včasih vključijo napačne podatke, da bi uporabnika zavedli, da zaganja legitimno aplikacijo. Vendar, kot bomo videli kasneje, če okužba ne zahteva interakcije uporabnika (kot je to v primeru te izsiljevalske programske opreme), napadalci ne menijo, da je uporaba metapodatkov potrebna.

Slika 6: Vzorčni metapodatki
Vzorec je bil preveden v 32-bitni obliki, tako da ga je mogoče izvajati tako na 32-bitnih kot na 64-bitnih sistemih.
3. Vektor penetracije
Vzorec, ki prenese in zažene Ryuk, je v naš sistem vstopil prek oddaljene povezave, poverilnice pa so bile pridobljene s predhodnim napadom RDP.

Slika 7: Register napadov
Napadalcu se je uspelo na daljavo prijaviti v sistem. Nato je ustvaril izvedljivo datoteko, ki je vsebovala naš vzorec.
To izvedljivo datoteko je pred zagonom blokirala protivirusna rešitev.

Slika 8: Blokiranje vzorca


Slika 9: Blokiranje vzorca
Ko je bila zlonamerna datoteka zaklenjena, je napadalec poskušal prenesti šifrirano različico izvedljive datoteke, ki je bila prav tako zaklenjena.

Slika 10: Nabor vzorcev, ki jih je napadalec poskušal zagnati
Končno je poskušal prenesti še eno zlonamerno datoteko prek šifrirane konzole.
PowerShell je bil uporabljen za obhod protivirusne zaščite. Vendar je bil tudi blokiran.

Slika 11: PowerShell z blokirano zlonamerno vsebino

Slika 12: PowerShell z blokirano zlonamerno vsebino
4. Nakladalnik
Ko se zažene, zapiše datoteko ReadMe v mapo % Temp%, kar je značilno za Ryuk. Ta datoteka je sporočilo z zahtevo za odkupnino, ki vsebuje e-poštni naslov v domeni protonmail, kar je v tej družini zlonamerne programske opreme precej pogosto: msifelabem1981@protonmail.com
![]()

Slika 13: Zahteva za odkupnino
Med delovanjem programa za prenos lahko opazite, da zažene več izvedljivih datotek z naključnimi imeni. Shranjene so v skriti mapi. JAVNO, če pa možnost ni aktivna v operacijskem sistemu Prikaži skrite datoteke in mape, bodo ostale skrite. Poleg tega so te datoteke 64-bitne, za razliko od nadrejene datoteke, ki je 32-bitna.


Slika 14: Izvedljive datoteke, ki jih je zagnal vzorec
Kot lahko vidite na zgornji sliki, Ryuk zažene icacls.exe, ki bo uporabljen za spreminjanje vseh ACL-jev (seznamov za nadzor dostopa), s čimer se zagotovi dostop in spremembe zastavic.
Dobi poln dostop pod okriljem vseh uporabnikov do vseh datotek na napravi (/T), ne glede na napake (/C) in brez prikazovanja kakršnih koli sporočil (/Q).
![]()
Slika 15: Izvedbeni parametri datoteke icacls.exe, ki jo je zagnal vzorec
Pomembno je omeniti, da Ryuk preveri, katera različica sistema Windows se izvaja. Da bi to naredil,
izvede preverjanje različice z uporabo GetVersionExW, pri čemer preveri vrednost zastavice Informacije o različici lp, ki prikazuje, ali je trenutna različica sistema Windows novejša od Windows XP.


Odvisno od tega, ali uporabljate novejšo različico sistema Windows XP, bo zagonski nalagalnik zapisal v lokalno uporabniško mapo – v tem primeru v mapo %Javno%.
![]()
Slika 17: Preverjanje različice operacijskega sistema
Datoteka, ki se zapisuje, je Ryuk. Nato jo zažene in kot parameter posreduje svoj naslov.

Slika 18: Izvajanje Ryuka prek ShellExecute
Najprej Ryuk prejme vhodne parametre. Tokrat sta vhodna parametra dva (izvršljiva datoteka sama in naslov spuščalca), ki se uporabljata za odstranjevanje lastnih sledi.
![]()
![]()
Slika 19: Ustvarjanje procesa
Vidite lahko tudi, da se po zagonu izvedljivih datotek izbriše, tako da v mapi, kjer je bila izvedena, ne pusti sledi svoje prisotnosti.

Slika 20: Brisanje datoteke
5. RYUK
5.1 Prisotnost
Ryuk, tako kot druga zlonamerna programska oprema, poskuša ostati v sistemu čim dlje. Kot je prikazano zgoraj, je eden od načinov za dosego tega prikrito ustvarjanje in izvajanje izvedljivih datotek. Najpogostejša metoda za to je spreminjanje ključa registra. Trenutna različica.
V tem primeru lahko vidite, da je prva datoteka, ki se bo za ta namen izvedla, VWjRF.exe
(ime datoteke je naključno generirano) se zažene cmd.exe.

![]()
Slika 21: Izvajanje datoteke VWjRF.exe
Nato se vnese ukaz RUN z imenom "svchos". Če torej kadar koli preverite ključe registra, lahko to spremembo zlahka spregledate, glede na podobnost tega imena s svchost. Ryuk uporablja ta ključ, da zagotovi svojo prisotnost v sistemu. Če sistem še ni okužen, bo izvedljiva datoteka poskusila znova, ko boste znova zagnali sistem.
![]()
Slika 22: Vzorec zagotavlja prisotnost v registrskem ključu
Vidimo lahko tudi, da ta izvedljiva datoteka ustavi dve storitvi:
"graditelj zvočnih končnih točk", kar, kot že ime pove, ustreza sistemskemu zvoku,
![]()
Slika 23: Vzorec ustavi storitev sistemskega zvoka
и samss, ki je storitev upravljanja računov. Zaustavitev teh dveh storitev je značilna za Ryuk. V tem primeru, če je sistem povezan s sistemom SIEM, izsiljevalska programska oprema poskuša prenehati pošiljati Opozorila niso izdana. To ščiti njegove naslednje korake, saj nekatere storitve SAM po izvedbi Ryuka ne bodo mogle pravilno zagnati.
![]()
Slika 24: Primer zaustavitve storitve Samss
5.2 Privilegiji
Na splošno se Ryuk začne s premikanjem po omrežju ali pa ga zažene druga zlonamerna programska oprema, kot je ali , ki v primeru povečanja privilegijev te povišane pravice prenesejo na izsiljevalsko programsko opremo.
Vnaprej, kot uvod v proces izvedbe, ga vidimo, kako izvaja postopek PoosebljanjeSamega, kar pomeni, da bo varnostna vsebina dostopnega žetona posredovana toku, kjer jo bo takoj pridobil Pridobi trenutno nit.

Slika 25: Klic funkcije ImpersonateSelf
Nato vidimo, da bo s tokom povezal žeton za dostop. Vidimo tudi, da je ena od zastavic Želeni dostop, ki ga je mogoče uporabiti za nadzor dostopa, ki ga bo imela nit. V tem primeru bi morala biti vrednost, ki jo bo prejel edx, VSI_ŽETONI DOSTOP ali drugače - ŽETON_PISANJE.


Riža. 26: Ustvarjanje žetona pretoka
Potem bo uporabil SeDebugPrivilege in bo poklical za pridobitev dovoljenj za odpravljanje napak v niti, zaradi česar bo z določitvijo DOSTOP_DO_VSEH_OBDELAV, bo lahko dostopal do vseh zahtevanih procesov. Glede na to, da ima izsiljevalska programska oprema že pripravljen tok, je treba le še nadaljevati z zadnjo fazo.

Slika 27: Klic SeDebugPrivilege in funkcija eskalacije privilegijev
Na eni strani imamo LookupPrivilegeValueW, ki nam zagotavlja potrebne informacije o privilegijih, ki jih želimo povečati.

Slika 28: Zahteva po informacijah o privilegijih za eskalacijo
Po drugi strani pa imamo Prilagodi pravice žetona, kar nam omogoča, da pridobimo potrebne pravice za naš prenos. V tem primeru je najpomembneje Nova država, čigar zastava bo podeljevala privilegije.


Slika 29: Nastavitev dovoljenj za žetone
5.3 Izvajanje
V tem razdelku bomo pokazali, kako vzorec izvaja postopek implementacije, ki je bil prej omenjen v tem poročilu.
Glavni cilj procesa implementacije, pa tudi eskalacije, je pridobiti dostop do senčne kopijeDa bi to dosegel, se mora izvajati v niti z višjimi privilegiji kot lokalni uporabnik. Ko pridobi te povišane privilegije, bo izbrisal kopije in spremenil druge procese tako, da se ne bo mogoče vrniti na prejšnjo obnovitveno točko v operacijskem sistemu.
Kot je značilno za to vrsto zlonamerne programske opreme, za izvedbo injiciranja uporablja koristni tovor. CreateToolHelp32Snapshot, zato naredi posnetek trenutno delujočih procesov in poskuša dostopati do teh procesov z uporabo OpenProcessKo dobi dostop do procesa, odpre tudi žeton s svojimi informacijami, da pridobi parametre procesa.

Slika 30: Pridobivanje procesov iz računalnika
Vidimo lahko, kako dinamično pridobi seznam delujočih procesov v podprogramu 140002D9C z uporabo CreateToolhelp32Snapshot. Ko jih pridobi, iterira po seznamu in poskuša odpreti vsak proces enega za drugim z uporabo OpenProcess, dokler mu ne uspe. V tem primeru je bil prvi proces, ki ga je uspel odpreti, taskhost.exe.

Slika 31: Dinamično izvajanje postopka za pridobitev procesa
Vidimo lahko, da nato prebere informacije o žetonu procesa, zato pokliče Žeton odprtega procesa s parametrom "20008"

Slika 32: Informacije o žetonu procesa branja
Prav tako preverja, ali postopek, v katerega bo implementiran, ni Csrss.exe, explorer.exe, lsaas.exe ali da ima določene pravice Avtoriteta NT.

Slika 33: Izključeni procesi
Dinamično lahko vidimo, kako najprej izvede preverjanje z uporabo informacij o žetonu procesa v 140002D9C ugotoviti, ali je račun, katerega pravice se uporabljajo za izvedbo postopka, račun NT AVTORITETA.

Riža. 34: Preverjanje NT AUTHORITY
In kasneje, zunaj postopka, preveri, ali ni csrss.exe, explorer.exe ali lsaas.exe.

Riža. 35: Preverjanje NT AUTHORITY
Ko posname posnetek procesov, jih odpre in preveri, da nobeden od njih ni izključen, je pripravljen zapisati procese, ki jih je treba vbrizgati v pomnilnik.
Da bi to naredil, najprej rezervira območje v pomnilniku (VirtualAllocEx), zapiše vanj (WriteProcessMemory) in ustvari tok (UstvariOddaljenoNit). Za delo s temi funkcijami uporablja PID-je izbranih procesov, ki jih je predhodno pridobil z uporabo Posnetek orodja CreateToolhelp32.

Slika 36: Vdelana koda
Tukaj lahko dinamično opazujemo, kako uporablja procesni PID za klic funkcije VirtualAllocEx.

Slika 37: Klic VirtualAllocEx
5.4 Šifriranje
V tem razdelku si bomo ogledali del tega vzorca, ki se nanaša na šifriranje. Na naslednji sliki lahko vidite dva podprograma z imenom "LoadLibrary_EncodeString"in"Funkcija_kodiranja", ki so odgovorni za izvajanje postopka šifriranja.

Slika 38: Postopki šifriranja
Na začetku lahko vidimo, kako naloži niz, ki bo kasneje uporabljen za deobfuskacijo vsega potrebnega: uvozov, DLL-jev, ukazov, datotek in CSP-jev.

Slika 39: Veriga deobfuskacije
Naslednja slika prikazuje prvi uvoz, ki ga deobfuscira v registru R4, LoadlibraryTo bo kasneje uporabljeno za nalaganje potrebnih DLL-jev. V registru R12 lahko vidimo tudi drug niz, ki se skupaj s prejšnjim nizom uporablja za izvedbo deobfuskacije.

Slika 40: Dinamična deobfuskacija
Nadaljuje z nalaganjem ukazov, ki jih bo izvedel pozneje, da bi onemogočil varnostne kopije, obnovitvene točke in varne načine zagona.

Slika 41: Ukazi za nalaganje
Nato naloži lokacijo, kamor bo spustil 3 datoteke: Windows.bat, run.sct и start.bat.




Slika 42: Lokacije datotek
Te tri datoteke se uporabljajo za preverjanje privilegijev posamezne lokacije. Če zahtevani privilegiji niso na voljo, Ryuk ustavi izvajanje.
Nadaljuje z nalaganjem vrstic, ki ustrezajo trem datotekam. Prva, DEŠIFRIRAJ_INFORMACIJE.html, vsebuje informacije, potrebne za obnovitev datotek. Drugi, JAVNO, vsebuje javni ključ RSA.

Slika 43: Vrstica DEŠIFRIRAJ INFORMATION.html
Tretjič, UNIQUE_ID_DO_NE_ODSTRANITE, vsebuje šifriran ključ, ki bo uporabljen v naslednji rutini za izvedbo šifriranja.

Slika 44: Vrstica UNIQUE ID DO NE REMOVE
Končno naloži potrebne knjižnice skupaj z zahtevanimi uvozi in CSP (Microsoft Enhanced RSA и Ponudnik kriptografskih storitev AES).

Slika 45: Nalaganje knjižnic
Ko je vsa deobfuskacija končana, nadaljuje z izvajanjem dejanj, potrebnih za šifriranje: naštevanje vseh logičnih pogonov, izvajanje tistega, kar je bilo naloženo v prejšnji podrutini, krepitev prisotnosti v sistemu, brisanje datoteke RyukReadMe.html, šifriranje, naštevanje vseh omrežnih pogonov, preklop na zaznane naprave in njihovo šifriranje.
Vse se začne z nalaganjem "cmd.exe" in zapise javnega ključa RSA.

Slika 46: Priprava na šifriranje
Nato dobi vse logične pogone z uporabo PridobiLogičnePogone in onemogoči vse varnostne kopije, obnovitvene točke in varne načine zagona.

Slika 47: Deaktiviranje orodij za obnovitev
Po tem okrepi svojo prisotnost v sistemu, kot smo videli zgoraj, in zapiše prvo datoteko RyukReadMe.html в Temp.

Slika 48: Objava obvestila o odkupnini
Na naslednji sliki si lahko ogledate, kako ustvari datoteko, naloži vsebino in jo zapiše:

Slika 49: Nalaganje in zapisovanje vsebine datoteke
Da bi lahko izvajal enaka dejanja na vseh napravah, uporablja
"icacls.exe«, kot smo pokazali zgoraj.

Slika 50: Uporaba datoteke icalcls.exe
Končno začne šifrirati datoteke, razen datotek *.exe, *.dll, sistemskih datotek in drugih lokacij, navedenih na šifriranem belem seznamu. Za to uporablja uvoze: KriptaPridobiKontekstZ (kjer je navedena uporaba AES in RSA), CryptDeriveKey, CryptGenKey, KljučUničenjaKripte itd. Prav tako se poskuša razširiti delovanje na odkrite omrežne naprave z uporabo WNetEnumResourceW in jih nato šifrirati.

Slika 51: Šifriranje sistemskih datotek
6. Uvoz in ustrezne zastavice
Spodaj je tabela s seznamom najpomembnejših uvozov in zastavic, ki jih uporablja vzorec:

7. MOK

reference
- uporabnikiPublicrun.sct
- Meni StartProgramiZagonstart.batAplikacijaPodatkiGomestanjeMicrosoftWindowsStart
- MeniProgramiZagonstart.bat

Strokovnjaki iz protivirusnega laboratorija PandaLabs so sestavili tehnično poročilo o izsiljevalski programski opremi Ryuk.
8. Povezave
1. »Everis y Prisa Radio sufren un grave ciberataque que secuestra sus sistemas.« https://www. elconfidencial.com/tecnologia/2019-11-04/everis-la-ser-ciberataque-ransomware-15_2312019/, objavljeno 04. 11. 2019.
2. "Un virus de origen ruso ataca a importantes empresas españolas." https: //elpais.com/tecnologia/2019/11/04/actualidad/1572897654_ 251312.html, objavljeno 04. 11. 2019.
3. »Članek VB2019: Šinigamijevo maščevanje: dolgi rep zlonamerne programske opreme Ryuk.« https://securelist.com/story-of-the-year-2019-cities-under-ransomware-siege/95456/, objavljeno 11. 12. 2019
4. »Lov na veliko divjad z Ryukom: Še ena donosna ciljno usmerjena izsiljevalska programska oprema.« https://www.crowdstrike.com/blog/big-game-hunting-with-ryuk-another-lucrative-targeted-ransomware/, objavljeno 10. 01. 2019.
5. »Članek VB2019: Šinigamijevo maščevanje: dolgi rep zlonamerne programske opreme Ryuk.« https://www.virusbulletin.com/virusbulletin/2019/10/ vb2019-paper-shinigamis-revenge-long-tail-r
Vir: www.habr.com
