
Ryuk on üks tuntumaid šifreerijate variante viimastel aastatel. Alates oma esmakordsest ilmumisest 2018. aasta suvel on ta kogunud , eriti äriedukeskkonnas, mis on tema rünnakute peamine sihtmärk.
1. Üldteave
Käesolev dokument sisaldab analüüsi Ryuki šifreerija variandi kohta, samuti laadijat, mis vastutab pahavara süsteemi laadimise eest.
Ryuki šifreerija ilmus esmakordselt 2018. aasta suvel. Üks Ryuki eripära teistest šifreerijatest on see, et ta keskendub ettevõtete keskkondade ründamisele.
2019. aasta keskpaiku ründasid küberkuritegevuse rühmitused suuri arvu Hispaania ettevõtteid selle šifreerijaga.

Kujutis 1: Lõik El Confidencialist Ryuki šifreerija rünnaku kohta [1]

Kujutis 2: Lõik El País'st rünnaku kohta, mille viis läbi Ryuki šifreerija [2]
Sel aastal on Ryuk rünnanud suurt hulka ettevõtteid erinevates riikides. Nagu allolevatelt joonistelt näha, on enim kahjustatud Saksamaa, Hiina, Alžeeria ja India.
Võrreldes küberrünnakute arvu, näeme, et Ryuki tõttu on kannatama pidanud miljonid kasutajad ning on lekitatud tohutul hulgal andmeid, mis on põhjustanud tõsist majanduslikku kahju.

Joonis 3: Ryuki globaalse tegevuse illustratsioon.

Joonis 4: 16 riiki, mis on Ryukist kõige enam kannatanud.

Joonis 5: Rünnaku all olnud Ryuki krüpteerija kasutajate arv (miljonites).
Tavapärase tööpõhimõtte kohaselt näitab see krüpteerija pärast krüpteerimise lõpetamist ohvrile lunavara teavitust, mis peab olema makstud bitcoini aadressile, et taastada ligipääs krüpteeritud failidele.
See pahavara on oma esimesest ilmumisest peale muutunud.
Käesolevas dokumendis analüüsitud versioon sellest ohust tuvastati rünnaku läbiviimise katsel jaanuaris 2020.
Oma keerukuse tõttu seostatakse seda pahavara sageli organiseeritud küberkuritegevuse rühmadega, tuntud ka kui APT-grupid.
Ryuki koodil on märgatav sarnasus teise tuntud krüptori koodi ja struktuuriga, Hermes, millel on mitmeid sarnaseid funktsioone. Just seetõttu seostati algselt Ryuki põhjal põhja-korea rühmitusega Lazarus, keda kahtlustati sel ajal Hermes krüptori taga seismises.
Hiljem märkis CrowdStrike'i Falcon X teenus, et tegelikult oli Ryuki loonud rühm WIZARD SPIDER [4].
Selle oletuse toetuseks on mitmeid tõendeid. Esiteks reklaamiti seda krüptorit veebisaidil exploit.in, mis on tuntud Vene pahavara turg ja on varem olnud seotud mitmete Vene APT-gruppidega.
See fakt välistab teooria, et Ryuki oleks võinud olla arendatud APT-grupi Lazarus poolt, kuna see ei vasta grupi tegevusviisile.
Lisaks reklaamiti Ryuk'i kui lunavara, mis ei tööta Venemaa, Ukraina ja Valgevene süsteemides. Selline käitumine tuleneb funktsioonist, mis on leitud mõnes Ryuk'i versioonis, kus kontrollitakse käivitatud lunavara süsteemi keelt ja peatatakse selle töö, kui süsteemi keel on vene, ukraina või valgevene. Lõpuks leiti ekspertanalüüsi käigus masinast, mille häkkis WIZARD SPIDER, mitu „artefakti“, mis arvatavasti on kasutatud Ryuk'i arendamisel kui Hermes-i variandi.
Teiselt poolt oletavad eksperdid Gabriela Nikolao ja Luciano Martins, et lunavara on tõenäoliselt välja töötatud APT-grupi CryptoTech poolt [5].
See tuleneb tõsiasjast, et mitu kuud enne Ryuk'i ilmumist postitas see grupp sama saidi foorumisse teavet uue Hermes'i lunavara versiooni arendamisest.
Mitmed foorumi kasutajad küsisid, kas CryptoTech tõepoolest lõi Ryuki. Pärast seda kaitses see grupp end ja väitis, et neil on tõendid selle kohta, et nad arendasid 100% sellest lunavargast.
2. Omadused
Alustame laadijast, mille ülesanne on tuvastada süsteem, milles ta asub, et käivitada "õige" Ryuki lunavara versioon.
Laadija hash on järgmine:
MD5 A73130B0E379A989CBA3D695A157A495
SHA256 EF231EE1A2481B7E627921468E79BB4369CCFAEB19A575748DD2B664ABC4F469
Üks selle laadija eripära on see, et see ei sisalda mingeid metaandmeid, st selle pahavara loojad ei ole sellesse mingeid andmeid lisanud.
Mõnikord lisavad nad valeandmeid, et sundida kasutajat arvama, et ta käivitab seadusliku rakenduse. Kuid nagu me hiljem näeme, juhul kui nakatumine ei eelda kasutajaga suhtlemist (nagu sel juhul selle lunavara puhul), ei pea kurjategijad vajalikuks kasutada metaandmeid.

Joon. 6: Näidise metaandmed
Proovik leidis aset 32-bitises formaadis, et seda saaks käitada nii 32-bitistes kui ka 64-bitistes süsteemides.
3. Sissetungi vektor
Proovik, mis laadib ja käivitab Ryuki, pääses meie süsteemi kaugühenduse kaudu, ja juurdepääsu parameetrid saadud eelneva RDP-rünnaku käigus.

Joonis 7: Rünnakuregister
Ründajal õnnestus süsteemi kaugelt sisse logida. Pärast seda lõi ta meie proovikast täidetava faili.
See täidetav fail blokeeriti enne käivitamist viirusetõrje lahenduse poolt.

Joonis 8: Proovi blokeerimine


Joonis 9: Proovi blokeerimine
Kui pahavara fail blokeeriti, üritas ründaja laadida šifreeritud versiooni täidetavast failist, mis samuti blokeeriti.

Joonis 10: Proovide kogum, mida ründaja üritas käivitada
Lõpuks üritas ta via šifreeritud konsooli PowerShell laadida teise pahavara faili, et mööda hiilida viirusetõrjelt. Kuid see blokeeriti samuti.
Joonis 11: PowerShell blokeeritud pahavara sisuga

Joonis 12: PowerShell blokeeritud pahavara sisuga

Joon. 12: PowerShell blokeeritud kahjuliku sisu
4. Laadija
Kui see toimub, loob see ReadMe faili kausta %temp%, mis on tüüpiline Ryuk'i jaoks. See fail on lunaraha nõue, mis sisaldab e-posti aadressi protonmail domeenis, mis esineb selles pahavaras üsna sageli: msifelabem1981@protonmail.com
![]()

Joonis 13: Lunaraha nõue
Laadija käivitamisel võite näha, et see käivitab mitu täidesaatvat faili juhuslike nimedega. Need on salajases kaustas PUBLIC, kuid kui operatsioonisüsteemis pole aktiveeritud valikut „Kuvage peidetud faile ja kaustu“, jäävad need peidetuks. Lisaks on need failid 64-bitised, erinevalt vanemast failist, mis on 32-bitine.


Joonis 14: Täidesaatvad failid, mida proov käivitab
Kuidas näete ülaltoodud jooniselt, käivitab Ryuk icacls.exe, mida kasutatakse kõigi juurdepääsukontrolli loendite (ACL) muutmiseks, tagades seeläbi juurdepääsu ja lipu muutmise.
See annab täieliku juurdepääsu kõikide kasutajate jaoks kõigile seadme failidele (/T), sõltumata vigadest (/C) ja ilma mingeid teateid näitamata (/Q).
![]()
Joon. 15: icacls.exe käivitamise parameetrid, käivitatud näidisega
Oluline on arvestada, et Ryuk kontrollib, milline Windowsi versioon on käivitatud. Selleks ta
teostab versiooni kontrolli kasutades GetVersionExW, kus ta kontrollib lipu väärtust lpVersionInformation, mis näitab, kas praegune Windowsi versioon on uuem kui Windows XP.


Sõltuvalt sellest, kas teil on installitud uuem versioon kui Windows XP, laadija salvestab kohaliku kasutaja kausta — antud juhul kausta %Public%.
![]()
Joon. 17: Operatsioonisüsteemi versiooni kontrollimine
Salvestatav fail on Ryuk. Siis käivitab ta selle, edastades oma enda aadressi parameetrina.

Joon. 18: Ryuki käivitamine ShellExecute'i kaudu
Esimene asi, mida Ryuk teeb, on sisendparameetrite hankimine. Seekord on kaks sisendparameetrit (iseennast käivitatav fail ja droppari aadress), mida kasutatakse oma jälgede eemaldamiseks.
![]()
![]()
Joon. 19: Protsessi loomine
Samuti võite näha, et niipea, kui ta on oma käivitatavad failid käivitanud, kustutab ta enda ja seega ei jäta mingeid jälgi oma kohalolekust kausta, kus ta käivitati.

Joon. 20: Faili kustutamine
5. RYUK
5.1 Oleku olemasolu
Nagu ka teised pahavara, üritab Ryuk süsteemis võimalikult kaua püsida. Üks viis selle eesmärgi saavutamiseks on peidetud käivitavate failide loomine ja käivitamine. Selleks on kõige levinum praktika registrivõtme muutmine. CurrentVersionRun.
Antud juhul näete, et selle eesmärgi saavutamiseks käivitab esimene käivitatav fail VWjRF.exe
(failinimi genereeritakse juhuslikult) käivitab cmd.exe.

![]()
Joon. 21: Faili VWjRF.exe käivitamine
Seejärel sisestatakse käsk RUN nimega "svchos". Seega, kui soovite igal ajal registrivõtmeid kontrollida, võite selle muudatuse kergesti tähelepanuta jätta, arvestades selle nime sarnasust svchostiga. Selle registrivõtme abil tagab Ryuk oma olemasolu süsteemis. Kui süsteem pole veel nakatunud, siis pärast süsteemi taaskäivitamist proovib käivitatav fail uuesti.
![]()
Joon. 22: Näidis tagab olemasolu registrivõtmes
Samuti näeme, et see käivitatav fail peatab kaks teenust:
"audioendpointbuilder", mis nagu nimigi näitab, vastab süsteemi helile,
![]()
Kujutis 23: Proov peatab süsteemi heli teenuse
ja samss, mis on kasutajakontode haldamise teenus. Nende kahe teenuse peatamine on Ryuki eripära. Sellisel juhul, kui süsteem on seotud SIEM-süsteemiga, üritab krüpteerimine peatada iga tüüpi hoiatusi saatmise. Nii kaitseb ta oma järgmisi samme, kuna mõned SAM-teenused ei suuda pärast Ryuki käivitamist korralikult alustada.
![]()
Kujutis 24: Proov peatab Samssis teenuse
5.2 Omandatud õigused
Üldiselt algab Ryuk horisontaalse liikumisega võrgu sees või käivitub ta teise pahavara poolt, nagu või , mis, juhul kõrgendatud õiguste eskaleerimisel, edastavad need kõrgendatud õigused krüpteerijale.
Eelnevalt, protsessi sissejuhatusena, näeme, et ta käivitab protsessi ImpersonateSelf, mis tähendab, et juurdepääsu turvatöötlemise sisu edastatakse voogu, kus see võetakse kohe vastu koos GetCurrentThread.

Kujutis 25: ImpersonateSelf kutse
Seejärel näeme, et ta seob juurdepääsutokeni vooga. Näeme ka, et üks lipu väärtustest on DesiredAccess, mida saab kasutada juurdepääsu kontrollimiseks voole. Sel juhul peaks edx saama väärtuse, mis on TOKEN_ALL_ACCESS või muul juhul — TOKEN_WRITE.


Joonis 26: Voogutokeni loomine
Seejärel kasutab ta SeDebugPrivilege ja kutsub välja lähtet õiguste saamiseks voogude suhtes, mille tulemusena, kui ta näitab PROCESS_ALL_ACCESS, suudab ta pääseda ligi igale vajalikele protsessidele. Nüüd, arvestades, et krüpteerijal on juba ettevalmistatud voog, jääb vaid alustada lõppstaadiumiga.

Joonis 27: SeDebugPrivilege'i väljakutse ja õiguste eskaleerimise funktsioon
Ühest küljest on meil LookupPrivilegeValueW, mis annab meile vajalikku teavet privileegide kohta, mida soovime suurendada.

Joonis 28: Privilege'ide teabe taotlemine nende eskaleerimiseks
Teisest küljest on meil AdjustTokenPrivileges, mis võimaldab meil saada meie voogude jaoks vajalikke õigusi. Sel juhul on kõige olulisem NewState, mille lipp annab privileegid.


Joonis 29: Õiguste seadmine tokenile
5.3 Süstimine
Selles osas näitame, kuidas malli rakendamisprotsess, mis on selles raportis varem mainitud, töötab.
Rakendamisprotsessi, nagu ka eskaleerimise põhieesmärk, on saada juurdepääs varjatud koopiatele. Selleks peab see töötama voogus, millel on kõrgemad õigused kui kohalikel kasutajatel. Kui ta sellised kõrgemad õigused saab, kustutab ta koopiad ja muudab teisi protsesse, et takistada taastumist varasematele taastamispunktidele operatsioonisüsteemis.
Kuna see on tüüpiline selle tüüpi pahavara puhul, kasutab ta rakendamise korral CreateToolHelp32Snapshot, seega teeb ta hetkeprotsesside hetkeseisu ja üritab neid protsesse avada OpenProcess. Kui ta saab protsessile juurdepääsu, avab ta ka selle teabe tokeni, et saada protsessi parameetreid.

Joon. 30: Protsesside saamine arvutist
Saame dünaamiliselt näha, kuidas ta saab 140002D9C alamprogrammis käivitatud protsesside loendi, kasutades CreateToolhelp32Snapshot. Pärast nende saamist läbib ta loendi, üritades ükshaaval avada protsesse OpenProcess'i abil kuni tal õnnestub see teha. Antud juhul on esimene protsess, mille ta suutis avada, "taskhost.exe".

Joonis 31: Düstütseerimise protseduuri dünaamiline teostamine protsessi saamiseks
Saame näha, et seejärel loeb ta protsessi tokeni teavet, seega kutsub ta välja OpenProcessToken parameetriga "20008"

Joonis 32: Protsessi tokeni teabe lugemine
Ta kontrollib ka, et protsess, kuhu ta kavatseb siseneda, ei oleks csrss.exe, explorer.exe, lsaas.exe või et tal on õiguste kogum NT authority.

Joonis 33: Välja jäetud protsessid
Saame dünaamiliselt näha, kuidas ta esmalt teostab kontrolli protsessi tokeni teabe abil 140002D9C et teada saada, kas konto, mille õigusi kasutatakse protsessi täitmiseks, on konto NT AUTHORITY.

Joonis 34: NT AUTHORITY kontrollimine
Ja hiljem, väljaspool protseduuri, kontrollib ta, et see ei oleks csrss.exe, explorer.exe või lsaas.exe.

Joonis 35: NT AUTHORITY kontrollimine
Pärast protsesside pildistamist avas ta need ja kontrollis, et ükski neist ei oleks välistatud, ning nüüd on ta valmis salvestama mälus protsessid, mis tuleb sisestada.
Selleks reserveerib ta esmalt mäluala (VirtualAllocEx), kirjutab sinna (WriteProcessMemory) ja loob lõime (CreateRemoteThread). Nende funktsioonidega töötamiseks kasutab ta valitud protsesside PID-sid, mis on eelnevalt saadud funktsiooniga CreateToolhelp32Snapshot.

Joonis 36: Kood süstimise jaoks
Siin saame dünaamiliselt jälgida, kuidas ta kasutab protsessi PID-d, et kutsuda funktsiooni VirtualAllocEx.

Joonis 37: VirtualAllocEx-i kutsumine
5.4 Krüpteerimine
Selles jaotises käsitleme selle malli osa, mis on seotud krüpteerimisega. Järgneval joonisel näete kahte alamprogrammi nimega "LoadLibrary_EncodeString" ja "Encode_Func", mis vastutavad krüpteerimisprotseduuri teostamise eest.

Joonis 38: Krüpteerimisprotseduurid
Alguses näeme, kuidas ta laadib stringi, mida hiljem kasutatakse kõigi vajalike komponentide deobfuskatsiooniks: impordid, DLL-id, käsklused, failid ja CSP.

Joonis 39: Deobfuskatsiooni ahel
Järgneval pildil on näidatud esimene imporditav osa, mille ta deobfuskatsiooniks registreerib R4, LoadLibrary. Seda kasutatakse hiljem vajalike DLL-ide laadimiseks. Samuti näeme teist rida registris R12, mis kasutatakse koos eelneva reaga deobfuskatsiooni teostamiseks.

Joonis 40: Dünaamiline deobfuskatsioon
Ta jätkab käskude laadimist, mida ta hiljem täidab, et keelata varukoopiad, taastamispunktid ja turvarežiim.

Joonis 41: Käskude laadimine
Seejärel laadib ta asukoha, kuhu ta viskab kolm faili: Windows.bat, run.sct ja start.bat.




Joonis 42: Failide asukohad
Need kolm faili kontrollivad privileege, millel iga asukoht on. Kui vajalikke privileege ei ole, peatab Ryuk täitmise.
Ta jätkab ridade laadimist, mis vastavad kolmele failile. Esimene, DECRYPT_INFORMATION.html, sisaldab teavet, mis on vajalik failide taastamiseks. Teine, PUBLIC, sisaldab RSA avalikku võtme.

Joonis 43: Rida DECRYPT INFORMATION.html
Kolmas, UNIQUE_ID_DO_NOT_REMOVE, sisaldab šifreeritud võtit, mida kasutatakse järgmises alprogrammis krüpteerimise teostamiseks.

Joonis 44: UNIKAALNE ID RIDA EI TOHI KUSTUTADA
Lõpuks laadib ta vajalikud teegid koos vajalike impordiga ja CSP (Microsoft Enhanced RSA ja AES krüptograafia pakkuja).

Joonis 45: Teekide laadimine
Pärast kogu deobfuskatsiooni lõpetamist jätkab ta tegevustega, mis on vajalikud krüpteerimiseks: kõikide loogiliste draivide läbimine, eelnevalt laaditud koodide täitmine, süsteemis kohaloleku tugevdamine, faili RyukReadMe.html laadimine, krüpteerimine, kõikide võrgu draivide läbimine, avastatud seadmete leidmine ja nende krüpteerimine.
Kõik algab faili laadimisest "cmd.exe" ja avatud RSA-võtme salvestamisest.

Joonis 46: Krüpteerimise ettevalmistamine
Seejärel saab ta kõik loogilised draivide kasutades GetLogicalDrives ja keelab kõik varukoopiad, taastamispunktid ja turvarežiimi käivitamise.

Joonis 47: Taastusmeetmete deaktiveerimine
Pärast seda tugevdab ta oma kohalolekut süsteemis, nagu eespool nägime, ja salvestab esimese faili RyukReadMe.html ühes AJUTINE.

Joonis 48: Lunaraha teadete avalikustamine
Järgmises joonises näete, kuidas ta faili loob, sisu laadib ja seda salvestab:

Joonis 49: Faili sisu laadimine ja salvestamine
Selleks, et saaks neid samme kõikides seadmetes teha, kasutab ta
"icacls.exe", nagu me eespool näitasime.

Joonis 50: icacls.exe kasutamine
Ja lõpuks alustab ta failide krüpteerimist, välja arvatud failid "*.exe", "*.dll", süsteemifailid ja teised asukohad, mis on määratud krüpteeritud valgesse nimekirja. Selleks kasutab ta importe: CryptAcquireContextW (kus on määratud AES ja RSA kasutamine), CryptDeriveKey, CryptGenKey, CryptDestroyKey jne. Samuti püütakse laiendada oma toimet ja avastatud võrgu seadmete jaoks kasutada WNetEnumResourceW, et seejärel need krüpteerida.

Joonis 51: Süsteemifailide krüpteerimine
6. Impordid ja vastavad lipud
Allpool on tabel, kus on loetletud kõige asjakohasemad impordid ja lipud, mida näidis kasutab:

7. IOC

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

Ryuki krüpteerija tehniline aruanne on koostatud PandaLabi viirusetõrjetehnika ekspertide poolt.
8. Viidatud allikad
1. “Everis ja Prisa Radio kannatavad tõsise küberrünnaku all, mis pantvangistab nende süsteemid.” https://www.elconfidencial.com/tecnologia/2019-11-04/everis-la-ser-ciberataque-ransomware-15_2312019/, Avaldatud 04/11/2019.
2. "Venemaa päritolu viirus ründab olulisi Hispaania ettevõtteid." https://elpais.com/tecnologia/2019/11/04/actualidad/1572897654_251312.html, Avaldatud 04/11/2019.
3. "VB2019 essee: Shinigami kättemaks: Ryuk pahavara pikk saba." https://securelist.com/story-of-the-year-2019-cities-under-ransomware-siege/95456/, Avaldatud 11/12/2019
4. "Suur mängu jaht Ryukiga: Veel üks tulusalt sihitud lunavararünnak." https://www.crowdstrike.com/blog/big-game-hunting-with-ryuk-another-lucrative-targeted-ransomware/, Avaldatud 10/01/2019.
5. "VB2019 essee: Shinigami kättemaks: Ryuk pahavara pikk saba." https://www.virusbulletin.com/virusbulletin/2019/10/vb2019-paper-shinigamis-revenge-long-tail-r
Allikas: habr.com
