
Ryuk je jedan od najpoznatijih tipova ransomware-a u posljednjih nekoliko godina. Otkako se prvi put pojavio ljeta 2018. godine, skupio je , posebno u poslovnom okruženju koje je glavni cilj njegovih napada.
1. Opće informacije
Ovaj dokument sadrži analizu varijante ransomware-a Ryuk, kao i učitavača koji je odgovoran za učitavanje zloćudnog programa u sustav.
Ransomware Ryuk prvi put se pojavio ljeta 2018. godine. Jedna od razlika Ryuka u odnosu na druge ransomware programe je ta što je usmjeren na napad korporativnih okruženja.
Sredinom 2019. godine, kibernetičke kriminalne grupe napale su ogroman broj španjolskih tvrtki pomoću ovog ransomware-a.

Slika 1: Isječak iz El Confidencial o napadu ransomware-a Ryuk [1]

Slika 2: Isječak iz El País o napadu izvedenom pomoću ransomware-a Ryuk [2]
Ove godine Ryuk je napao veliki broj tvrtki u različitim zemljama. Kao što možete vidjeti na prikazanim slikama, najviše su stradale Njemačka, Kina, Alžir i Indija.
U usporedbi s brojem kibernetičkih napada, možemo vidjeti da je Ryuk pogodio milijune korisnika i kompromitirao ogroman volumen podataka, što je dovelo do ozbiljne ekonomske štete.

Slika 3: Ilustracija globalne aktivnosti Ryuka.

Slika 4: 16 zemalja najviše pogođenih Ryukom

Slika 5: Broj korisnika napadnutih ransomware-om Ryuk (u milijunima)
Prema uobičajenim pravilima rada sličnih prijetnji, ovaj ransomware nakon završetka šifriranja prikazuje žrtvi obavijest o otkupnini koja mora biti plaćena u bitcoinima na navedenu adresu za obnavljanje pristupa šifriranim datotekama.
Ovaj zloćudni program se promijenio od svog prvog pojavljivanja.
Varijanta ove prijetnje koja se analizira u ovom dokumentu otkrivena je tijekom pokušaja napada u siječnju 2020. godine.
Zbog svoje složenosti, ovaj zloćudni program često se pripisuje organiziranim kibernetičkim kriminalnim grupama, poznatim i kao APT grupe.
Dio koda Ryuk ima značajnu sličnost s kodom i strukturom drugog poznatog ransomware-a Hermes, s kojim dijeli niz zajedničkih funkcija. Zbog toga je u početku Ryuk bio povezan sa sjevernokorejskom grupom Lazarus, koja je tada bila sumnjiva za ransomware Hermes.
Kasnije je servis Falcon X kompanije CrowdStrike napomenuo da je zapravo Ryuk razvila grupa WIZARD SPIDER [4].
Postoji nekoliko dokaza koji potkrepljuju ovu pretpostavku. Prvo, ovaj ransomware oglašavan je na web stranici exploit.in, koja je poznato rusko tržište zlonamjernog softvera i ranije je bila povezana s nekim ruskim APT grupama.
Ova činjenica isključuje teoriju da je Ryuk mogao razviti APT grupa Lazarus, jer se to ne poklapa s načinom na koji ta grupa djeluje.
Osim toga, Ryuk je reklamiran kao ransomware koji neće raditi na ruskim, ukrajinskim i bjeloruskim sustavima. Ovo ponašanje definirano je funkcijom otkrivenom u nekim verzijama Ryuka, gdje provjerava jezik sustava na kojem je pokrenut te zaustavlja njegov rad ako je jezik sustava ruski, ukrajinski ili bjeloruski. Na kraju, tijekom forenzičke analize računala koje je hakirala grupa WIZARD SPIDER, pronađeno je nekoliko 'artefakata' za koje se pretpostavlja da su korišteni u razvoju Ryuka kao varijante ransomware-a Hermes.
S druge strane, stručnjaci Gabriela Nicolo i Luciano Martins pretpostavili su da je ransomware možda razvila APT grupa CryptoTech [5].
To proizlazi iz činjenice da je nekoliko mjeseci prije pojave Ryuka ta grupa objavila na forumu iste web stranice informacije o tome da su razvili novu verziju ransomware-a Hermes.
Nekoliko korisnika foruma pitalo se je li CryptoTech zapravo stvorio Ryuk. Nakon toga, ova je grupa zaštitila sebe i izjavila da ima dokaze da su razvili 100% ovog ransomware-a.
2. Karakteristike
Počinjemo s bootloader-om, čija je zadaća identificirati sustav u kojem se nalazi, kako bi mogao pokrenuti 'pravu' verziju ransomware-a Ryuk.
Hash bootloader-a je sljedeći:
MD5 A73130B0E379A989CBA3D695A157A495
SHA256 EF231EE1A2481B7E627921468E79BB4369CCFAEB19A575748DD2B664ABC4F469
Jedna od karakteristika ovog učitavača je ta što ne sadrži nikakve metapodatke, tj. kreatori ovog zloćudnog programa nisu uključili nikakve informacije.
Ponekad uključuju netačne podatke kako bi naveli korisnika da pomisli da pokreće legitimnu aplikaciju. Međutim, kao što ćemo videti kasnije, u slučaju kada infekcija ne podrazumeva interakciju s korisnikom (kao u slučaju ovog enkriptera), zlonamernici ne smatraju potrebnim koristiti metapodatke.

Sl. 6: Metapodaci uzorka
Uzorak je kompajliran u 32-bitnom formatu kako bi mogao da se pokreće i na 32-bitnim i na 64-bitnim sistemima.
3. Vektor prodora
Uzorak koji učitava i pokreće Ryuk ušao je u naš sistem putem udaljene konekcije, a podaci za pristup su dobijeni zahvaljujući prethodnom RDP napadu.

Sl. 7: Registar napada
Zlonamerna osoba uspela je da se udaljeno prijavi u sistem. Nakon toga je kreirala izvršni fajl s našim uzorkom.
Ovaj izvršni fajl je blokiran antivirusnim rešenjem pre nego što je pokrenut.

Sl. 8: Blokada uzorka


Sl. 9: Blokada uzorka
Kada je zloćudni fajl bio blokiran, zlonamerna osoba je pokušala da učita enkriptovanu verziju izvršnog fajla, koja je takođe bila blokirana.

Sl. 10: Set uzoraka koje je zlonamerna osoba pokušala da pokrene
Na kraju, pokušala je da učita drugi zloćudni fajl putem enkriptovane konzole
PowerShell kako bi obšla antivirusnu zaštitu. Ali je takođe bila blokirana.

Sl. 11: PowerShell sa blokiranim zloćudnim sadržajem

Sl. 12: PowerShell sa blokiranim zloćudnim sadržajem
4. Učitavač
Kada se izvršava, zapisuje fajl ReadMe u folder %temp%, što je tipično za Ryuk. Ovaj fajl je zahtev za otkupninu, koji sadrži adresu e-pošte u domenu protonmail, koja se prilično često susreće u ovoj porodici zloćudnih programa: msifelabem1981@protonmail.com
![]()

Sl. 13: Zahtev za otkupninu
Tokom izvođenja učitavača možete primetiti da pokreće nekoliko izvršnih fajlova sa slučajnim nazivima. Oni se čuvaju u skrivenom folderu PUBLIC, ali ako u operativnom sistemu nije aktivna opcija „Prikaži skrivene fajlove i foldere“, ostaju skrivene. Štoviše, ti su datoteke u 64-bitnom formatu, dok je roditeljska datoteka u 32-bitnom formatu.


Sl. 14: Izvršne datoteke koje pokreće uzorak
Kao što možete vidjeti na gornjoj slici, Ryuk pokreće icacls.exe, koji će se koristiti za promjenu svih kontrolnih lista pristupa (ACL), osiguravajući tako pristup i promjenu oznaka.
On dobiva potpuni pristup pod svim korisnicima do svih datoteka na uređaju (/T), bez obzira na greške (/C) i bez prikazivanja bilo kakvih poruka (/Q).
![]()
Sl. 15: Parametri izvršavanja icacls.exe, pokrenuti uzorkom
Važno je napomenuti da Ryuk provjerava koja verzija Windowsa je pokrenuta. Da bi to učinio,
provodi provjeru verzije putem GetVersionExW, gdje provjerava vrijednost oznake lpVersionInformation, koja pokazuje je li trenutna verzija Windowsa novija od Windows XP.


Ovisno o tome radi li vaša verzija Windowsa noviju od Windows XP, bootloader će zapisati u lokalnu korisničku mapu — u ovom slučaju u mapu %Public%.
![]()
Sl. 17: Provjera verzije operativnog sustava
Zapisana datoteka je Ryuk. Zatim je pokreće, prosljeđujući svoju vlastitu adresu kao parametar.

Sl. 18: Izvršavanje Ryuk putem ShellExecute
Prvo što Ryuk radi je prikupljanje ulaznih parametara. Ovaj put postoje dva ulazna parametra (izvršna datoteka i adresa dropera), koji se koriste za uklanjanje vlastitih tragova.
![]()
![]()
Sl. 19: Kreiranje procesa
Možete također vidjeti da, čim pokrene svoje izvršne datoteke, uklanja sebe, čime ne ostavlja nikakve tragove svog prisustva u toj mapi gdje je izvršen.

Sl. 20: Uklanjanje datoteke
5. RYUK
5.1 Prisutnost
Ryuk, poput drugih zlonamjernih programa, pokušava ostati u sustavu što je duže moguće. Kao što je pokazano, jedan od načina za postizanje ovog cilja je skriveno kreiranje i pokretanje izvršnih datoteka. Najčešća praksa za to je promjena ključa registra CurrentVersionRun.
U ovom slučaju možete vidjeti da za tu svrhu prvi pokrenuti datoteka VWjRF.exe
(ime datoteke generira se nasumično) pokreće cmd.exe.

![]()
Sl. 21: Izvršavanje datoteke VWjRF.exe
Zatim se unosi komanda POCNI s imenom "svchos". Tako, ako želite u bilo kojem trenutku provjeriti ključeve registra, to možete lako učiniti ne primijetivši ovu promjenu, imajući u vidu sličnost ovog naziva sa svchost. Zahvaljujući ovom ključu, Ryuk osigurava svoje prisustvo u sustavu. Ako sustav još nije bio zaražen, prilikom ponovnog pokretanja sustava, izvršna datoteka će ponovno pokušati.
![]()
Sl. 22: Uzorak osigurava prisustvo u registru
Također možemo vidjeti da ova izvršna datoteka zaustavlja dvije usluge:
"audioendpointbuilder", što, kako proizlazi iz njenog naziva, odgovara sistemskoj audio funkciji,
![]()
Sl. 23: Uzorak zaustavlja uslugu sistemskog audioa
i samss, koja je usluga upravljanja računima. Zaustavljanje ovih dviju usluga karakteristika je Ryuka. U ovom slučaju, ako je sustav povezan sa SIEM sustavom, ransomware pokušava zaustaviti slanje bilo kakvih upozorenja. . Tako se štite slijedeći koraci, jer neke SAM usluge neće moći pravilno započeti svoj rad nakon izvođenja Ryuka.
![]()
Sl. 24: Uzorak zaustavlja uslugu Samss
5.2 Privilegije
Općenito, Ryuk započinje horizontalnim premještanjem unutar mreže ili se pokreće drugom zloćudnom aplikacijom, kao što su ili , koje, u slučaju eskalacije privilegija, dodjeljuju ova povišena prava ransomwareu.
Unaprijed, kao dijelom pripreme za proces infiltracije, vidimo da izvršava proces ImpersonateSelf, što znači da će sadržaj sigurnosti tokena za pristup biti prebačen u tok, gdje će odmah biti primljen putem GetCurrentThread.

Sl. 25: Poziv ImpersonateSelf
Zatim vidimo da će povezati token za pristup s tokom. Također možemo vidjeti da je jedna od oznaka DesiredAccess, koja se može koristiti za kontrolu pristupa koji će imati tok. U ovom slučaju, vrijednost koju će edx dobiti mora biti TOKEN_ALL_ACCESS ili u suprotnom — TOKEN_WRITE.


Sl. 26: Kreiranje tokena toka
Zatim će koristiti SeDebugPrivilege i napraviti poziv za dobivanje prava za ispravljanje u vezi s tokom, što mu omogućuje, navodeći PROCESS_ALL_ACCESS, da pristupi bilo kojem potrebnom procesu. S obzirom na to da ransomware već ima pripremljen tok, ostaje samo započeti završnu fazu.

Slika 27: Pozivanje SeDebugPrivilege i funkcija eskalacije prava
S jedne strane, imamo LookupPrivilegeValueW, koji nam pruža potrebne informacije o privilegijama koje želimo povećati.

Slika 28: Upit za informacije o privilegijama radi njihove eskalacije
S druge strane, imamo AdjustTokenPrivileges, koji omogućava dobivanje potrebnih prava za naš tok. U ovom slučaju, najvažnije je NewState, čija će oznaka pružiti privilegije.


Slika 29: Podešavanje prava za token
5.3 Uvođenje
U ovom odjeljku ćemo pokazati kako uzorak provodi proces uvođenja koji je već spomenut u ovom izvještaju.
Osnovna svrha procesa uvođenja, kao i eskalacije, je sticanje pristupa senoznim kopijama. Da bi to postigao, mora raditi s tokom koji ima veća prava od lokalnog korisnika. Čim stekne takva viša prava, uklonit će kopije i izvršiti promjene u drugim procesima kako bi onemogućio povratak na raniju tačku vraćanja u operativnom sistemu.
Kako to obično biva s ovakvom vrstom zlonamjernog softvera, za izvođenje uvođenja koristi CreateToolHelp32Snapshot, stoga pravi snimak trenutno pokrenutih procesa i pokušava pristupiti tim procesima pomoću OpenProcess. Čim dobije pristup procesu, također otvara token s njegovim informacijama radi dobivanja parametara procesa.

Slika 30: Dobijanje procesa s računala
Možemo dinamički vidjeti kako dobiva popis pokrenutih procesa u podprogramu 140002D9C pomoću CreateToolhelp32Snapshot. Nakon što ih dobije, prolazi kroz popis, pokušavajući jedan po jedan otvoriti procese pomoću OpenProcess dok ne uspije. U ovom slučaju, prvi proces koji je uspio otvoriti je „taskhost.exe“.

Slika 31: Dinamičko izvođenje procedure za dobivanje procesa
Možemo vidjeti da potom čita informacije o tokenu procesa, stoga poziva OpenProcessToken s parametrom "20008"

Slika 32: Čitanje informacija o tokenu procesa
Također provjerava je li proces u koji će se uvući csrss.exe, explorer.exe, lsaas.exe ili ima set prava NT authority.

Slika 33: Isključeni procesi
Možemo dinamički vidjeti kako najprije izvršava provjeru pomoću informacija o tokenu procesa u 140002D9C s ciljem saznanja je li račun čija prava se koriste za izvršavanje procesa nalog NT AUTHORITY.

Sl. 34: Provjera NT AUTHORITY
A kasnije, izvan procedure, provjerava da to nije csrss.exe, explorer.exe ili lsaas.exe.

Sl. 35: Provjera NT AUTHORITY
Nakon što je napravio snimak procesa, otvorio je procese i provjerio da nijedan od njih nije izostavljen, spreman je zabilježiti u memoriju procese koje će ugraditi.
Za to prvo rezervira prostor u memoriji (VirtualAllocEx), zapisuje u nju (WriteProcessmemory) i stvara nit (CreateRemoteThread). Za rad s ovim funkcijama koristi PID-ove odabranih procesa, koje je prethodno dobio pomoću CreateToolhelp32Snapshot.

Sl. 36: Kod za ugradnju
Ovdje možemo dinamički pratiti kako koristi PID procesa za pozivanje funkcije VirtualAllocEx.

Sl. 37: Poziv VirtualAllocEx
5.4 Šifriranje
U ovom odjeljku ćemo razmotriti dio ovog uzorka vezanog za šifriranje. Na sljedećem crtežu možete vidjeti dvije podrutine nazvane "LoadLibrary_EncodeString" i "Encode_Func", koje su odgovorne za izvođenje procedure šifriranja.

Sl. 38: Procedure šifriranja
Na početku možemo vidjeti kako učitava string koji će se kasnije koristiti za deobfuskaciju svega što je potrebno: uvozi, DLL-ove, komande, datoteke i CSP.

Sl. 39: Lanac deobfuskacije
Na sljedećem crtežu prikazan je prvi uvoz koji deobfuskira u registru R4, LoadLibrary. Ovo će se kasnije koristiti za učitavanje potrebnih DLL-ova. Također možemo vidjeti drugi string u registru R12, koji se koristi zajedno s prethodnim stringom za izvršavanje deobfuskacije.

Sl. 40: Dinamička deobfuskacija
Nastavlja učitavati komande koje će kasnije izvršiti kako bi isključio sigurnosne kopije, točke vraćanja i sigurne režime pokretanja.

Sl. 41: Učitavanje komandi
Zatim učitava lokaciju gdje će ostaviti 3 datoteke: Windows.bat, run.sct i start.bat.




Sl. 42: Lokacije datoteka
Ove 3 datoteke koriste se za provjeru privilegija koje svaka od lokacija ima. Ako potrebne privilegije nisu dostupne, Ryuk zaustavlja izvršavanje.
Nastavlja učitavati stringove koji odgovaraju tri datoteke. Prva, DECRYPT_INFORMATION.html, sadrži informacije potrebne za oporavak datoteka. Druga, PUBLIC, sadrži javni ključ RSA.

Sl. 43: String DECRYPT INFORMATION.html
Treći, UNIQUE_ID_DO_NOT_REMOVE, sadrži šifrirani ključ koji će se koristiti u sljedećem podprogramu za obavljanje šifriranja.

Sl. 44: Niz UNIQUE ID DO NOT REMOVE
Na kraju, učitava potrebne biblioteke zajedno s neophodnim importima i CSP (Microsoft Enhanced RSA i AES kriptografski pružatelj).

Sl. 45: Učitavanje biblioteka
Nakon što se sva deobfuskacija završi, prelazi na izvršavanje radnji potrebnih za šifriranje: pretraživanje svih logičkih diskova, izvršavanje onoga što je učitano u prethodnom podprogramu, jačanje prisutnosti u sistemu, postavljanje datoteke RyukReadMe.html, šifriranje, pretraživanje svih mrežnih diskova, pristup otkrivenim uređajima i njihovo šifriranje.
Sve počinje učitavanjem "cmd.exe" i zapisivanjem otvorenog RSA ključa.

Sl. 46: Priprema za šifriranje
Zatim dobiva sve logičke diskove preko GetLogicalDrives i onemogućava sve sigurnosne kopije, točke vraćanja i sigurne načine pokretanja.

Sl. 47: Deaktivacija sredstava za oporavak
Nakon toga jača svoje prisustvo u sistemu, kao što smo vidjeli gore, i zapisuje prvu datoteku RyukReadMe.html u TEMP.

Sl. 48: Objavljivanje obavijesti o otkupu
Na sljedećem crtežu možete vidjeti kako stvara datoteku, učitava sadržaj i zapisuje ga:

Sl. 49: Učitavanje i zapisivanje sadržaja datoteke
Da bi mogao izvršiti iste radnje na svim uređajima, koristi
"icacls.exe", kao što smo pokazali gore.

Sl. 50: Korištenje icacls.exe
I, na kraju, počinje šifriranje datoteka osim datoteka "*.exe", "*.dll", sistemskih datoteka i drugih lokacija navedenih kao šifrirani bijeli popis. Za to koristi importe: CryptAcquireContextW (gdje je navedena upotreba AES i RSA), CryptDeriveKey, CryptGenKey, CryptDestroyKey itd. Također se pokušava proširiti svoje djelovanje na otkrivene mrežne uređaje putem WNetEnumResourceW i zatim ih šifrirati.

Sl. 51: Šifriranje sistemskih datoteka
6. Importi i odgovarajući flagovi
Ispod se nalazi tablica sa popisom najrelevantnijih importi i flagova korištenih od strane uzorka:

7. IOC

Linkovi
- usersPublicrun.sct
- Start MenuProgramsStartupstart.bat AppDataRoamingMicrosoftWindowsStart
- MenuProgramsStartupstart.bat

Tehnički izvještaj o ransomware-u Ryuk sastavili su stručnjaci antivirusne laboratorije PandaLabs.
8. Reference
1. "Everis i Prisa Radio suprimili su ozbiljan kibernetički napad koji je zarobio njihove sustave." https://www.elconfidencial.com/tecnologia/2019-11-04/everis-la-ser-ciberataque-ransomware-15_2312019/, Objavljeno 04/11/2019.
2. "Virus ruskog porekla napada važne španske kompanije." https://elpais.com/tecnologia/2019/11/04/actualidad/1572897654_251312.html, Objavljeno 04/11/2019.
3. "VB2019 članak: Shinigamijeva osveta: duga repa Ryuk zloćudnog softvera." https://securelist.com/story-of-the-year-2019-cities-under-ransomware-siege/95456/, Objavljeno 11/12/2019.
4. "Veliko lov na igru s Ryuk: još jedna profitabilna meta za ransomware." https://www.crowdstrike.com/blog/big-game-hunting-with-ryuk-another-lucrative-targeted-ransomware/, Objavljeno 10/01/2019.
5. "VB2019 članak: Shinigamijeva osveta: duga repa Ryuk zloćudnog softvera." https://www.virusbulletin.com/virusbulletin/2019/10/vb2019-paper-shinigamis-revenge-long-tail-r
Izvor: habr.com
