Ryuk je ena najbolj znanih možnosti izsiljevalske programske opreme v zadnjih nekaj letih. Odkar se je prvič pojavil poleti 2018, je zbral
1. Splošne informacije
Ta dokument vsebuje analizo različice izsiljevalske programske opreme Ryuk ter nalagalnik, odgovoren za nalaganje zlonamernega programa v sistem.
Izsiljevalska programska oprema Ryuk se je prvič pojavila poleti 2018. Ena od razlik med Ryuk in drugo izsiljevalsko programsko opremo je, da je namenjena napadom na okolja podjetij.
Sredi leta 2019 so skupine kibernetskega kriminala s to izsiljevalsko programsko opremo napadle ogromno število španskih podjetij.
riž. 1: Izvleček iz El Confidencial v zvezi z napadom izsiljevalske programske opreme Ryuk [1]
riž. 2: Izvleček iz El Paísa o napadu, izvedenem z izsiljevalsko programsko opremo Ryuk [2]
Letos je Ryuk napadel veliko število podjetij v različnih državah. Kot lahko vidite na spodnjih slikah, so bile najbolj prizadete Nemčija, Kitajska, Alžirija in Indija.
Če primerjamo število kibernetskih napadov, lahko vidimo, da je Ryuk prizadel milijone uporabnikov in ogrozil ogromno količino podatkov, kar je povzročilo hudo gospodarsko izgubo.
riž. 3: Ilustracija Ryukove globalne dejavnosti.
riž. 4: 16 držav, ki jih Ryuk najbolj prizadene
riž. 5: Število uporabnikov, napadenih z izsiljevalsko programsko opremo Ryuk (v milijonih)
V skladu z običajnim principom delovanja tovrstnih groženj ta izsiljevalska programska oprema po končanem šifriranju žrtvi prikaže obvestilo o odkupnini, ki jo je treba plačati v bitcoinih na navedeni naslov, da obnovi dostop do šifriranih datotek.
Ta zlonamerna programska oprema se je spremenila, odkar je bila prvič predstavljena.
Različica te grožnje, analizirana v tem dokumentu, je bila odkrita med poskusom napada januarja 2020.
Zaradi svoje kompleksnosti se ta zlonamerna programska oprema pogosto pripisuje organiziranim skupinam kibernetskega kriminala, znanim tudi kot skupine APT.
Del kode Ryuk je opazno podoben kodi in strukturi druge znane izsiljevalske programske opreme Hermes, s katero si delita številne enake funkcije. Zato so Ryuka sprva povezovali s severnokorejsko skupino Lazarus, za katero so takrat sumili, da stoji za izsiljevalsko programsko opremo Hermes.
Storitev Falcon X podjetja CrowdStrike je pozneje opazila, da je Ryuk dejansko ustvarila skupina WIZARD SPIDER [4].
Obstaja nekaj dokazov, ki podpirajo to domnevo. Prvič, ta izsiljevalska programska oprema je bila oglaševana na spletnem mestu exploit.in, ki je znana ruska tržnica zlonamerne programske opreme in je bila prej povezana z nekaterimi ruskimi skupinami APT.
To dejstvo izključuje teorijo, da bi Ryuk lahko razvila skupina Lazarus APT, ker se ne ujema z načinom delovanja skupine.
Poleg tega je bil Ryuk oglaševan kot izsiljevalska programska oprema, ki ne bo delovala v ruskih, ukrajinskih in beloruskih sistemih. To vedenje določa funkcija, ki jo najdemo v nekaterih različicah Ryuka, kjer preverja jezik sistema, v katerem se izvaja izsiljevalska programska oprema, in jo ustavi, če ima sistem ruski, ukrajinski ali beloruski jezik. Končno je strokovna analiza stroja, v katerega je vdrla ekipa WIZARD SPIDER, razkrila več "artefaktov", ki so bili domnevno uporabljeni pri razvoju Ryuk kot različice izsiljevalske programske opreme Hermes.
Po drugi strani pa sta strokovnjaka Gabriela Nicolao in Luciano Martins predlagala, da je izsiljevalsko programsko opremo morda razvila skupina APT CryptoTech [5].
To izhaja iz dejstva, da je ta skupina nekaj mesecev pred pojavom Ryuka na forumu iste strani objavila informacijo, da so razvili novo različico izsiljevalske programske opreme Hermes.
Več uporabnikov foruma se je spraševalo, ali je CryptoTech dejansko ustvaril Ryuk. Skupina se je nato branila in izjavila, da ima dokaze, da so razvili 100 % izsiljevalske programske opreme.
2. Značilnosti
Začnemo z zagonskim nalagalnikom, katerega naloga je identificirati sistem, v katerem je, 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 značilnosti tega prenosnika je, da ne vsebuje metapodatkov, tj. Ustvarjalci te zlonamerne programske opreme vanjo niso vključili nobenih informacij.
Včasih vključujejo napačne podatke, da uporabnika zavedejo, da misli, da uporablja zakonito aplikacijo. Vendar, kot bomo videli kasneje, če okužba ne vključuje interakcije uporabnika (kot je v primeru te izsiljevalske programske opreme), se napadalcem ne zdi potrebna uporaba metapodatkov.
riž. 6: Vzorčni meta podatki
Vzorec je bil preveden v 32-bitnem formatu, tako da lahko deluje v 32-bitnem in 64-bitnem sistemu.
3. Vektor prodora
Vzorec, ki prenaša in izvaja Ryuk, je vstopil v naš sistem prek oddaljene povezave, parametri dostopa pa so bili pridobljeni s predhodnim napadom RDP.
riž. 7: Register napadov
Napadalec se je v sistem uspel prijaviti na daljavo. Po tem je ustvaril izvršljivo datoteko z našim vzorcem.
To izvršljivo datoteko je pred zagonom blokirala protivirusna rešitev.
riž. 8: Zaklepanje vzorca
riž. 9: Zaklepanje vzorca
Ko je bila zlonamerna datoteka blokirana, je napadalec poskušal prenesti šifrirano različico izvršljive datoteke, ki je bila prav tako blokirana.
riž. 10: Nabor vzorcev, ki jih je poskušal zagnati napadalec
Na koncu je poskušal prenesti še eno zlonamerno datoteko prek šifrirane konzole
PowerShell za obhod protivirusne zaščite. Bil pa je tudi blokiran.
riž. 11: PowerShell z blokirano zlonamerno vsebino
riž. 12: PowerShell z blokirano zlonamerno vsebino
4. Nakladalnik
Ko se izvede, v mapo zapiše datoteko ReadMe % Temp%, kar je značilno za Ryuk. Ta datoteka je obvestilo o odkupnini, ki vsebuje e-poštni naslov v domeni protonmail, ki je precej pogosta v tej družini zlonamerne programske opreme: [e-pošta zaščitena]
riž. 13: Zahteva po odkupnini
Medtem ko se zagonski nalagalnik izvaja, lahko vidite, da zažene več izvršljivih datotek z naključnimi imeni. Shranjeni so v skriti mapi JAVNO, vendar če možnost ni aktivna v operacijskem sistemu "Pokaži skrite datoteke in mape", potem bodo ostali skriti. Poleg tega so te datoteke 64-bitne, za razliko od nadrejene datoteke, ki je 32-bitna.
riž. 14: Izvršljive datoteke, ki jih zažene vzorec
Kot lahko vidite na zgornji sliki, Ryuk zažene icacls.exe, ki bo uporabljen za spreminjanje vseh ACL (seznamov za nadzor dostopa), s čimer se zagotovi dostop in spreminjanje zastavic.
Pod vsemi uporabniki dobi popoln dostop do vseh datotek v napravi (/T) ne glede na napake (/C) in brez prikazovanja sporočil (/Q).
riž. 15: Izvedbeni parametri icacls.exe, ki jih zažene vzorec
Pomembno je vedeti, da Ryuk preveri, katero različico sistema Windows uporabljate. Za to on
izvede preverjanje različice z uporabo GetVersionExW, v katerem preveri vrednost zastavice lpVersionInformationki označuje, ali je trenutna različica sistema Windows novejša od Windows XP.
Odvisno od tega, ali uporabljate različico, starejšo od Windows XP, bo zagonski nalagalnik pisal v lokalno uporabniško mapo – v tem primeru v mapo %Javno%.
riž. 17: Preverjanje različice operacijskega sistema
Datoteka, ki se piše, je Ryuk. Nato ga zažene in posreduje svoj naslov kot parameter.
riž. 18: Izvajanje Ryuka prek ShellExecute
Prva stvar, ki jo naredi Ryuk, je, da prejme vhodne parametre. Tokrat obstajata dva vhodna parametra (sama izvedljiva datoteka in naslov kapalke), ki se uporabljata za odstranjevanje lastnih sledi.
riž. 19: Ustvarjanje procesa
Vidite lahko tudi, da ko zažene svoje izvedljive datoteke, se izbriše in tako ne pušča nobene sledi o lastni prisotnosti v mapi, kjer je bila izvedena.
riž. 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 cilja skrivno ustvarjanje in zagon izvedljivih datotek. Če želite to narediti, je najpogostejša praksa sprememba registrskega ključa CurrentVersionRun.
V tem primeru lahko vidite, da se v ta namen zažene prva datoteka VWjRF.exe
(ime datoteke je naključno ustvarjeno) zažene cmd.exe.
riž. 21: Izvajanje VWjRF.exe
Nato vnesite ukaz RUN Z imenom "svchos". Torej, če želite kadar koli preveriti registrske ključe, lahko zlahka spregledate to spremembo, glede na podobnost tega imena s svchost. Zahvaljujoč temu ključu Ryuk zagotavlja svojo prisotnost v sistemu. Če sistem ni še okužen, bo izvedljiva datoteka poskusila znova, ko znova zaženete sistem.
riž. 22: Vzorec zagotavlja prisotnost v registrskem ključu
Vidimo lahko tudi, da ta izvršljiva datoteka ustavi dve storitvi:
"audioendpointbuilder", ki, kot že ime pove, ustreza sistemskemu zvoku,
riž. 23: Vzorec ustavi sistemsko zvočno storitev
и Samss, ki je storitev vodenja računa. Zaustavitev teh dveh storitev je značilnost Ryuka. V tem primeru, če je sistem povezan s sistemom SIEM, izsiljevalska programska oprema poskuša ustaviti pošiljanje
riž. 24: Vzorec ustavi storitev Samss
5.2 Privilegiji
Na splošno se Ryuk začne s premikom bočno znotraj omrežja ali pa ga zažene druga zlonamerna programska oprema, kot je npr
Predhodno, kot uvod v postopek izvajanja, ga vidimo, kako izvede postopek ImpersonateSelf, kar pomeni, da bo varnostna vsebina dostopnega žetona posredovana toku, kjer bo takoj pridobljena z GetCurrentThread.
riž. 25: Pokličite ImpersonateSelf
Nato vidimo, da bo žeton dostopa povezal z nitjo. Vidimo tudi, da je ena od zastav DesiredAccess, ki se lahko uporablja za nadzor dostopa, ki ga bo imela nit. V tem primeru bi morala biti vrednost, ki jo bo prejel edx TOKEN_ALL_ACESS ali drugače - TOKEN_WRITE.
riž. 26: Ustvarjanje žetona pretoka
Potem bo uporabil SeDebugPrivilege in bo opravil klic za pridobitev dovoljenj za odpravljanje napak v niti, kar bo povzročilo PROCESS_ALL_ACCESS, bo lahko dostopal do katerega koli zahtevanega procesa. Zdaj, glede na to, da ima šifrirnik že pripravljen tok, ostane le še nadaljevanje do končne faze.
riž. 27: Klicanje SeDebugPrivilege in funkcije stopnjevanja privilegijev
Na eni strani imamo LookupPrivilegeValueW, ki nam posreduje potrebne informacije o privilegijih, ki jih želimo povečati.
riž. 28: Zahtevajte informacije o privilegijih za stopnjevanje privilegijev
Po drugi strani pa imamo AdjustTokenPrivileges, ki nam omogoča pridobitev potrebnih pravic za naš tok. V tem primeru je najpomembnejše NewState, čigar zastava bo podeljevala privilegije.
riž. 29: Nastavitev dovoljenj za žeton
5.3 Izvedba
V tem razdelku bomo pokazali, kako vzorec izvaja postopek implementacije, ki je bil prej omenjen v tem poročilu.
Glavni cilj procesa implementacije, kot tudi stopnjevanja, je pridobiti dostop do senčne kopije. Za to mora delati z nitjo s pravicami, ki so višje od pravic lokalnega uporabnika. Ko pridobi tako povišane pravice, bo izbrisal kopije in spremenil druge procese, da bi onemogočil vrnitev na prejšnjo obnovitveno točko v operacijskem sistemu.
Kot je značilno za to vrsto zlonamerne programske opreme, uporablja CreateToolHelp32Snapshotzato naredi posnetek trenutno izvajanih procesov in poskuša dostopati do teh procesov z uporabo OpenProcess. Ko pridobi dostop do procesa, odpre tudi žeton s svojimi informacijami za pridobitev parametrov procesa.
riž. 30: Pridobivanje procesov iz računalnika
Dinamično lahko vidimo, kako dobi seznam izvajajočih se procesov v rutini 140002D9C z uporabo CreateToolhelp32Snapshot. Ko jih prejme, pregleda seznam in poskuša odpreti procese enega za drugim z uporabo OpenProcess, dokler mu ne uspe. V tem primeru je bil prvi proces, ki ga je lahko odprl "taskhost.exe".
riž. 31: Dinamično izvedite proceduro za pridobitev procesa
Vidimo lahko, da naknadno prebere informacije o žetonu procesa, zato pokliče OpenProcessToken s parametrom "20008"
riž. 32: Preberite informacije o žetonu procesa
Prav tako preveri, ali postopek, v katerega bo vbrizgan, ni Csrss.exe, explorer.exe, lsaas.exe ali da ima nabor pravic NT organ.
riž. 33: Izključeni procesi
Dinamično lahko vidimo, kako najprej izvede preverjanje z uporabo informacij žetona procesa v 140002D9C da bi ugotovili, ali je račun, katerega pravice se uporabljajo za izvajanje postopka, račun OBLAST NT.
riž. 34: Preverjanje OBLIKE NT
In kasneje zunaj postopka preveri, da to ni csrss.exe, explorer.exe ali lsaas.exe.
riž. 35: Preverjanje OBLIKE NT
Ko naredi posnetek procesov, jih odpre in preveri, da nobeden od njih ni izključen, je pripravljen zapisati v pomnilnik procese, ki bodo vstavljeni.
Da bi to naredil, najprej rezervira območje v pomnilniku (VirtualAllocEx), zapiše vanj (WriteProcessmemory) in ustvari nit (CreateRemoteThread). Za delo s temi funkcijami uporablja PID-je izbranih procesov, ki jih je predhodno pridobil z uporabo CreateToolhelp32Snapshot.
riž. 36: Vdelana koda
Tukaj lahko dinamično opazujemo, kako uporablja PID procesa za klic funkcije VirtualAllocEx.
riž. 37: Pokličite VirtualAllocEx
5.4 Šifriranje
V tem razdelku si bomo ogledali šifrirni del tega vzorca. Na naslednji sliki lahko vidite dva podprograma, imenovana "LoadLibrary_EncodeString"in"Encode_Func«, ki so odgovorni za izvedbo postopka šifriranja.
riž. 38: Postopki šifriranja
Na začetku lahko vidimo, kako naloži niz, ki bo kasneje uporabljen za odkrivanje vsega, kar je potrebno: uvozov, DLL-jev, ukazov, datotek in CSP-jev.
riž. 39: Vezje za odkrivanje
Naslednja slika prikazuje prvi uvoz, ki ga razoblači v registru R4. Loadlibrary. To bo uporabljeno pozneje za nalaganje zahtevanih DLL-jev. Vidimo lahko tudi drugo vrstico v registru R12, ki se uporablja skupaj s prejšnjo vrstico za izvajanje razkrivanja.
riž. 40: Dinamično odkrivanje
Še naprej prenaša ukaze, ki jih bo zagnal pozneje, da onemogoči varnostne kopije, obnovitvene točke in načine varnega zagona.
riž. 41: Nalaganje ukazov
Nato naloži lokacijo, kamor bo spustil 3 datoteke: Windows.bat, run.sct и start.bat.
riž. 42: Lokacije datotek
Te 3 datoteke se uporabljajo za preverjanje privilegijev, ki jih ima posamezna lokacija. Če zahtevani privilegiji niso na voljo, Ryuk ustavi izvajanje.
Nadaljuje z nalaganjem vrstic, ki ustrezajo trem datotekam. Prvič, DECRYPT_INFORMATION.html, vsebuje informacije, potrebne za obnovitev datotek. Drugič, JAVNO, vsebuje javni ključ RSA.
riž. 43: Vrstica DECRYPT INFORMATION.html
Tretjič, UNIQUE_ID_DO_NOT_REMOVE, vsebuje šifriran ključ, ki bo uporabljen v naslednji rutini za izvedbo šifriranja.
riž. 44: Vrstica UNIQUE ID NE ODSTRANI
Na koncu prenese zahtevane knjižnice skupaj z zahtevanimi uvozi in CSP-ji (Microsoftov izboljšan RSA и AES kriptografski ponudnik).
riž. 45: Nalaganje knjižnic
Ko je celotno odkrivanje končano, nadaljuje z izvajanjem dejanj, ki so potrebna za šifriranje: naštevanje vseh logičnih pogonov, izvajanje tistega, kar je bilo naloženo v prejšnji rutini, krepitev prisotnosti v sistemu, pošiljanje datoteke RyukReadMe.html, šifriranje, naštevanje vseh omrežnih pogonov , prehod na zaznane naprave in njihovo šifriranje.
Vse se začne z nalaganjem"cmd.exe" in zapise javnih ključev RSA.
riž. 46: Priprava na šifriranje
Nato začne uporabljati vse logične pogone GetLogicalDrives in onemogoči vse varnostne kopije, obnovitvene točke in načine varnega zagona.
riž. 47: Deaktiviranje orodij za obnovitev
Po tem okrepi svojo prisotnost v sistemu, kot smo videli zgoraj, in zapiše prvo datoteko RyukReadMe.html в Temp.
riž. 48: Objava obvestila o odkupnini
Na naslednji sliki lahko vidite, kako ustvari datoteko, prenese vsebino in jo zapiše:
riž. 49: Nalaganje in pisanje vsebine datoteke
Da lahko izvaja ista dejanja na vseh napravah, uporablja
"icacls.exe«, kot smo pokazali zgoraj.
riž. 50: Uporaba icalcls.exe
In končno začne šifrirati datoteke razen datotek »*.exe«, »*.dll«, sistemskih datotek in drugih lokacij, določenih v obliki šifriranega belega seznama. Za to uporablja uvoze: CryptAcquireContextW (kjer je določena uporaba AES in RSA), CryptDeriveKey, CryptGenKey, CryptDestroyKey itd. Prav tako poskuša razširiti svoj doseg na odkrite omrežne naprave z uporabo WNetEnumResourceW in jih nato šifrirati.
riž. 51: Šifriranje sistemskih datotek
6. Uvozi in ustrezne oznake
Spodaj je tabela s seznamom najpomembnejših uvozov in zastavic, uporabljenih v vzorcu:
7. MOK
reference
- usersPublicrun.sct
- Start MenuProgramsStartupstart.bat AppDataRoamingMicrosoftWindowsStart
- MenuProgramsStartupstart.bat
Tehnično poročilo o izsiljevalski programski opremi Ryuk so sestavili strokovnjaki protivirusnega laboratorija PandaLabs.
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, Publicada el 04/11/2019.
3. »VB2019 paper: Shinigami's revenge: the long tail of the Ryuk malware.« https://securelist.com/story-of-the-year-2019-cities-under-ransomware-siege/95456/, Publicada el 11 /12/2019
4. »Lov na veliko igro z Ryukom: še ena dobičkonosnab ciljno usmerjena izsiljevalska programska oprema.« https://www. crowdstrike.com/blog/big-game-hunting-with-ryuk-another-lucrative-targeted-ransomware/, Objavljeno 10. 01. 2019.
5. »Dokument 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