
Ryuk je jednou z najznámejších variánt ransomware za posledné roky. Od jeho prvého objavenia v lete 2018 nazbieral , najmä v podnikateľskom prostredí, ktoré je jeho hlavným cieľom.
1. Všeobecné informácie
Tento dokument obsahuje analýzu varianty ransomware Ryuk, ako aj loadera, ktorý zodpovedá za nahrávanie škodlivého programu do systému.
Ransomware Ryuk sa prvýkrát objavil v lete 2018. Jedným z rozdielov Ryuk od iných ransomware je to, že je zameraný na útoky v korporátnych prostrediach.
V polovici roku 2019 kyberzločinecké skupiny napadli obrovské množstvo španielskych spoločností pomocou tohto ransomware.

Obr. 1: Úryvok z El Confidencial týkajúci sa útoku ransomware Ryuk [1]

Obr. 2: Úryvok z El País o útoku vykonanom pomocou ransomware Ryuk [2]
V tomto roku Ryuk napadol veľké množstvo spoločností v rôznych krajinách. Ako môžete vidieť na nižšie uvedených obrázkoch, najviac postihnuté boli Nemecko, Čína, Alžírsko a India.
Porovnaním počtu kybernetických útokov môžeme vidieť, že Ryuk postihol milióny používateľov a skompromitoval obrovské množstvo údajov, čo viedlo k vážnemu ekonomickému poškodeniu.

Obr. 3: Ilustrácia globálnej aktivity Ryuk.

Obr. 4: 16 krajín, ktoré najviac postihol Ryuk

Obr. 5: Počet používateľov, ktorých napadol ransomware Ryuk (v miliónoch)
Podľa bežného princípu fungovania takýchto hrozieb tento ransomware po dokončení šifrovania zobrazuje obeti oznámenie o výnose, ktorý má byť zaplatený v bitcoinoch na uvedenú adresu na obnovenie prístupu k zašifrovaným súborom.
Tento škodlivý program sa odvtedy zmenil pri svojom prvom objavení.
Variant tejto hrozby analyzovanej v tomto dokumente bol objavený pri pokuse o útok v januári 2020.
Vzhľadom na svoju zložitosti sa tento škodlivý program často pripisuje organizovaným kyberzločineckým skupinám, známych aj ako APT skupiny.
Časť kódu Ryuk vykazuje výraznú podobnosť s kódom a štruktúrou iného známeho ransomvéru Hermes, s ktorým zdieľa množstvo rovnakých funkcií. Práve preto bol Ryuk pôvodne spájaný so severokórejskou skupinou Lazarus, ktorá bola v tom čase podozrievaná z použitia ransomvéru Hermes.
Následne služba Falcon X spoločnosti CrowdStrike označila, že Ryuk bol skutočne vytvorený skupinou WIZARD SPIDER [4].
Existuje niekoľko dôkazov podporujúcich túto hypotézu. Po prvé, tento ransomvér bol propagovaný na webovej stránke exploit.in, ktorá je známy ruský trh s malwareom a bola predtým spojená s niektorými ruskými APT skupinami.
Tento fakt vylučuje teóriu, že Ryuk mohol byť vyvinutý APT skupinou Lazarus, pretože to nezodpovedá spôsobu, akým táto skupina funguje.
Okrem toho bol Ryuk inzerovaný ako ransomvér, ktorý nebude fungovať na ruských, ukrajinských a bieloruských systémoch. Takéto správanie je definované funkciou, objavenou v niektorých verziách Ryuk, kde sa overuje jazyk systému, na ktorom je tento ransomvér spustený, a zastaví jeho činnosť, ak má systém ruský, ukrajinský alebo bieloruský jazyk. Nakoniec, pri expertnom analyzovaní stroja, ktorý bol napadnutý skupinou WIZARD SPIDER, sa našlo niekoľko „artefaktov“, ktoré údajne boli použité pri vývoji Ryuk ako variantu ransomvéru Hermes.
Na druhej strane odborníci Gabriela Nicolaou a Luciano Martins naznačili, že ransomvér mohol byť vyvinutý APT skupinou CryptoTech [5].
To vyplýva z toho, že niekoľko mesiacov pred objavením Ryuk táto skupina na fóre tej istej webovej stránky uviedla, že vyvinuli novú verziu ransomvéru Hermes.
Niekoľko užívateľov fóra sa pýtalo, či naozaj CryptoTech vytvoril Ryuk. Po tom sa táto skupina bránila a tvrdila, že má dôkazy, že vyvinula 100 % tohto ransomvéru.
2. Vlastnosti
Začneme s loaderom, ktorého úlohou je identifikovať systém, v ktorom sa nachádza, aby bolo možné spustiť "správnu" verziu ransomvéru Ryuk.
Hash loadera je nasledujúci:
MD5 A73130B0E379A989CBA3D695A157A495
SHA256 EF231EE1A2481B7E627921468E79BB4369CCFAEB19A575748DD2B664ABC4F469
Jednou z vlastností tohto načítača je, že neobsahuje žiadne metaúdaje, to znamená, že jeho tvorcovia do neho nezahrnuli žiadne informácie.
Niekedy zahrňujú chybné údaje, aby používateľa prinútili myslieť si, že spúšťa legitímnu aplikáciu. Ako však neskôr uvidíme, ak infekcia nevyžaduje interakciu používateľa (ako v prípade tohto šifrovača), zločinci nepovažujú za potrebné používať metaúdaje.

Obr. 6: Metaúdaje vzorky
Vzor bol skompilovaný v 32-bitovom formáte, aby mohol byť spúšťaný ako v 32-bitových, tak aj v 64-bitových systémoch.
3. Vektor prieniku
Vzor, ktorý načíta a spustí Ryuk, sa do nášho systému dostal cez vzdialené pripojenie a prístupové údaje boli získané vďaka predchádzajúcemu útoku RDP.

Obr. 7: Registrácia útoku
Útočník sa podarilo vzdialene vstúpiť do systému. Potom vytvoril spustiteľný súbor s naším vzorom.
Tento spustiteľný súbor bol zablokovaný antivírusovým riešením pred spustením.

Obr. 8: Zablokovanie vzorky


Obr. 9: Zablokovanie vzorky
Keď bol škodlivý súbor zablokovaný, útočník sa pokúsil načítať zašifrovanú verziu spustiteľného súboru, ktorá bola taktiež zablokovaná.

Obr. 10: Súbor vzorov, ktoré sa útočník pokúsil spustiť
Nakoniec sa pokúsil načítať iný škodlivý súbor cez zašifrovanú konzolu
PowerShell, aby obchádzal antivírusovú ochranu. Ale tiež bol zablokovaný.

Obr. 11: PowerShell so zablokovaným škodlivým obsahom

Obr. 12: PowerShell so zablokovaným škodlivým obsahom
4. Načítač
Keď sa vykonáva, zapíše súbor ReadMe do priečinka %temp%, čo je typické pre Ryuk. Tento súbor je požiadavka na výkupné, obsahujúca e-mailovú adresu v doméne protonmail, ktorá sa v tejto rodine škodlivých programov vyskytuje pomerne často: msifelabem1981@protonmail.com
![]()

Obr. 13: Požiadavka na výkupné
Počas vykonávania načítača môžete vidieť, že spúšťa niekoľko spustiteľných súborov so zlomyseľnými názvami. Uložia sa v skrytom priečinku PUBLIC, ale ak nie je v operačnom systéme aktivovaná možnosť „Zobraziť skryté súbory a priečinky“, tak zostanú skryté. Navyše, tieto súbory sú 64-bitové na rozdiel od rodičovského súboru, ktorý je 32-bitový.


Obr. 14: Spustiteľné súbory spúšťané vzorom
Ako vidíte na uvedenom obrázku, Ryuk spúšťa icacls.exe, ktorý sa použije na zmenu všetkých zoznamov riadenia prístupu ACL (Access control list), čím sa zaručuje prístup a zmena príznakov.
Získa úplný prístup pod všetkými používateľmi ku všetkým súborom na zariadení (/T) bez ohľadu na chyby (/C) a bez zobrazovania akýchkoľvek správ (/Q).
![]()
Obr. 15: Parametre spustenia icacls.exe, spusteného vzorom
Je dôležité mať na pamäti, že Ryuk kontroluje, ktorá verzia Windows je spustená. Na tento účel
vykonáva kontrolu verzie pomocou GetVersionExW, kde kontroluje hodnotu príznaku lpVersionInformation, ktorý ukazuje, či je aktuálna verzia Windows novšia ako Windows XP.


V závislosti od toho, či máte novšiu verziu než Windows XP, bootloader zapíše do priečinka lokálneho používateľa — v tomto prípade do priečinka %Public%.
![]()
Obr. 17: Kontrola verzie operačného systému
Zapisovaný súbor je Ryuk. Potom ho spúšťa, pričom odovzdáva svoju vlastnú adresu ako parameter.

Obr. 18: Spustenie Ryuk cez ShellExecute
Prvá vec, ktorú Ryuk robí, je získať vstupné parametre. Tentoraz existujú dva vstupné parametre (samotný spustiteľný súbor a adresa droppera), ktoré sa používajú na odstránenie vlastných stôp.
![]()
![]()
Obr. 19: Vytvorenie procesu
Môžete si tiež všimnúť, že akonáhle spustil svoje spustiteľné súbory, odstráni sám seba, čím nezanechá žiadne stopy svojho prítomnosti v priečinku, kde bol vykonaný.

Obr. 20: Odstránenie súboru
5. RYUK
5.1 Prítomnosť
Ryuk, podobne ako iné škodlivé programy, sa snaží zostať v systéme čo najdlhšie. Ako bolo uvedené vyššie, jeden zo spôsobov, ako dosiahnuť tento cieľ, je tajné vytvorenie a spustenie spustiteľných súborov. Na tento účel je najbežnejšou praxou zmena kľúča registru CurrentVersionRun.
V tomto prípade môžete vidieť, že na tento účel prvý spustiteľný súbor VWjRF.exe
(názov súboru sa generuje náhodne) spúšťa cmd.exe.

![]()
Obr. 21: Spustenie súboru VWjRF.exe
Potom sa zadá príkaz RUN s menom "svchos". Takže, ak sa rozhodnete kedykoľvek skontrolovať registračné kľúče, nemusíte si to zmeniť, vzhľadom na podobnosť tohto názvu so svchost. Vďaka tomuto kľúču Ryuk zabezpečuje svoje prítomnosť v systéme. Ak systém nebol doteraz infikovaný, po reštartovaní systému sa spustiteľný súbor opäť pokúsi o to.
![]()
Obr. 22: Vzor zabezpečuje prítomnosť v registračnom kľúči
Tiež môžeme vidieť, že tento spustiteľný súbor zastavuje dve služby:
"audioendpointbuilder", čo, ako naznačuje jej názov, zodpovedá systémovému audionastaveniu,
![]()
Obr. 23: Vzor zastavuje službu systémového audia
a samss, čo je služba správy účtov. Zastavenie týchto dvoch služieb je charakteristické pre Ryuk. V tomto prípade, ak je systém prepojený so SIEM systémom, šifrovací program sa snaží zastaviť odosielanie akýchkoľvek upozornení. Týmto spôsobom chráni svoje nasledujúce kroky, keďže niektoré SAM služby nebudú môcť správne začať svoju prácu po vykonaní Ryuk.
![]()
Obr. 24: Vzor zastavuje službu Samss
5.2 Privilégia
Vo všeobecnosti Ryuk začína horizontálnym pohybom v sieti, alebo je spustený iným škodlivým programom, ako je alebo , ktoré v prípade eskalácie privilégií prenášajú tieto zvýšené práva šifrovaciemu programu.
Vopred, ako predohra k procesu nasadenia, vidíme, že vykonáva proces ImpersonateSelf, čo znamená, že bezpečnostný obsah prístupového tokenu bude prenesený do vlákna, kde bude okamžite získaný pomocou GetCurrentThread.

Obr. 25: Volanie ImpersonateSelf
Potom vidíme, že prepojí prístupový token s vláknom. Takisto vidíme, že jeden z flagov je DesiredAccess, ktorý môže byť použitý na kontrolu prístupu, ktorý má vlákno. V tomto prípade hodnota, ktorú edx získa, by mala byť TOKEN_ALL_ACESS alebo inak — TOKEN_WRITE.


Obr. 26: Vytvorenie tokenu vlákna
Potom použije SeDebugPrivilege a vykoná volanie na získanie odladzovacích práv Debug vo vzťahu k vláknu, čím, zadaním PROCESS_ALL_ACCESS, získa prístup k akémukoľvek požadovanému procesu. Teraz, keď šifrovací program už má pripravené vlákno, zostáva iba prejsť na poslednú fázu.

Obr. 27: Volanie SeDebugPrivilege a funkcia eskalácie práv
Na jednej strane máme LookupPrivilegeValueW, ktorý nám poskytuje potrebné informácie o privilégiách, ktoré chceme povýšiť.

Obr. 28: Žiadosť o informácie o privilégiach na ich eskaláciu
Na druhej strane máme AdjustTokenPrivileges, ktorý umožňuje získať potrebné práva pre náš tok. V tomto prípade je najdôležitejšie, že NewState, ktorého príznak bude poskytovať privilégiá.


Obr. 29: Nastavenie práv pre token
5.3 Vykonávanie
V tejto časti ukážeme, ako vzor vykonáva proces vykonávania, ktorý bol už spomenutý v tejto správe.
Hlavným cieľom procesu vykonávania, rovnako ako eskalácie, je získať prístup k zatvoreným kópiám. Na to musí pracovať s tokom s právami vyššími ako sú práva lokálneho používateľa. Akonáhle získa také vyššie práva, odstráni kópie a vykoná zmeny v iných procesoch, aby znemožnil návrat k skoršiemu bodu obnovenia v operačnom systéme.
Ako je obvyklé pri takýchto typoch škodlivého softvéru, na vykonanie vykonávania používa CreateToolHelp32Snapshot, a preto robí snímok aktuálne spustených procesov a pokúša sa získať prístup k týmto procesom pomocou OpenProcess. Akonáhle získa prístup k procesu, taktiež otvorí token s jeho informáciami na získanie parametrov procesu.

Obr. 30: Získanie procesov z počítača
Môžeme dynamicky vidieť, ako získava zoznam spustených procesov v podprogramu 140002D9C pomocou CreateToolhelp32Snapshot. Po ich získaní prechádza zoznamom a pokúša sa jeden po druhom otvoriť procesy pomocou OpenProcess, až kým sa mu to nepodarí. V tomto prípade je prvý proces, ktorý sa mu podarilo otvoriť, "taskhost.exe".

Obr. 31: Dynamické vykonávanie procedúry na získanie procesu
Môžeme vidieť, že neskôr číta informácie tokenu procesu, a preto volá OpenProcessToken s parametrom "20008"

Obr. 32: Čítanie informácií tokenu procesu
Taktiež kontroluje, že proces, do ktorého sa bude vykonávať, nie je csrss.exe, explorer.exe, lsaas.exe alebo že má súbor práv NT authority.

Obr. 33: Vylúčené procesy
Môžeme dynamicky vidieť, ako najprv vykonáva kontrolu s pomocou informácií tokenu procesu v 140002D9C aby zistil, či je účet, ktorého práva sa používajú na vykonanie procesu, účtom NT AUTHORITY.

Obr. 34: Kontrola NT AUTHORITY
A neskôr, mimo procedúry, overí, že to nie je csrss.exe, explorer.exe alebo lsaas.exe.

Obr. 35: Kontrola NT AUTHORITY
Po tom, ako urobil snímku procesov, otvoril procesy a skontroloval, že žiadny z nich nie je vylúčený, je pripravený zaznamenať do pamäte procesy, ktoré budú zavedené.
Na to najprv rezervuje oblasť v pamäti (VirtualAllocEx), zapíše do nej (WriteProcessmemory) a vytvorí vlákno (CreateRemoteThread). Na prácu s týmito funkciami používa PID-ky vybraných procesov, ktoré predtým získal pomocou CreateToolhelp32Snapshot.

Obr. 36: Kód na zavedenie
Tu môžeme dynamicky sledovať, ako používa PID procesu na volanie funkcie VirtualAllocEx.

Obr. 37: Volanie VirtualAllocEx
5.4 Šifrovanie
V tejto časti sa pozrieme na časť tohto vzorku, ktorá sa týka šifrovania. Na nasledujúcom obrázku môžete vidieť dve podprogramy nazvané "LoadLibrary_EncodeString" a "Encode_Func" ktoré sú zodpovedné za vykonávanie šifrovacej procedúry.

Obr. 38: Šifrovacie procedúry
Na začiatku vidíme, ako načíta reťazec, ktorý sa neskôr použije na deobfuskáciu všetkého, čo je potrebné: importy, DLL, príkazy, súbory a CSP.

Obr. 39: Reťazec deobfuskácie
Na nasledujúcom obrázku je prvý import, ktorý deobfuská v registri R4, LoadLibrary. To sa použije neskôr na načítanie potrebných DLL. Vidíme tiež iný reťazec v registri R12, ktorý sa používa spolu s predchádzajúcim reťazcom na vykonanie deobfuskácie.

Obr. 40: Dynamická deobfuskácia
Pokračuje načítaním príkazov, ktoré vykoná neskôr, aby vypol zálohy, body obnovenia a bezpečné režimy spúšťania.

Obr. 41: Načítanie príkazov
Následne načíta miesto, kam umiestni 3 súbory: Windows.bat, run.sct a start.bat.




Obr. 42: Miesta súborov
Tieto 3 súbory sa používajú na kontrolu oprávnení, ktoré má každé z miest. Ak požadované oprávnenia nie sú dostupné, Ryuk zastaví vykonávanie.
Pokračuje načítaním reťazcov, ktoré zodpovedajú trom súborom. Prvý, DECRYPT_INFORMATION.html, obsahuje informácie potrebné na obnovenie súborov. Druhý, PUBLIC, obsahuje verejný kľúč RSA.

Obr. 43: Riadok DECRYPT INFORMATION.html
Tretia, UNIQUE_ID_DO_NOT_REMOVE, obsahuje zašifrovaný kľúč, ktorý sa použije v nasledujúcom podprogramu na vykonanie šifrovania.

Obr. 44: Riadok UNIQUE ID DO NOT REMOVE
Nakoniec načíta potrebné knižnice spolu s požadovanými importami a CSP (Microsoft Enhanced RSA a AES Cryptographic Provider).

Obr. 45: Načítanie knižníc
Po dokončení deobfuskácie prechádza k vykonaniu akcií potrebných na šifrovanie: prehľadáva všetky logické disky, vykonáva to, čo bolo načítané v predchádzajúcom podprograme, posilňuje prítomnosť v systéme, umiestňuje súbor RyukReadMe.html, šifruje, prehľadáva všetky sieťové disky, prechádza na zistené zariadenia a šifruje ich.
Všetko sa začína načítaním "cmd.exe" a zápisom otvoreného RSA-kľúča.

Obr. 46: Príprava na šifrovanie
Potom získa všetky logické disky pomocou GetLogicalDrives a deaktivuje všetky zálohy, body obnovenia a bezpečné režimy spustenia.

Obr. 47: Deaktivácia nástrojov na obnovu
Potom posilňuje svoju prítomnosť v systéme, ako sme videli vyššie, a zapisuje prvý súbor RyukReadMe.html v TEMP.

Obr. 48: Publikovanie oznámenia o výkupe
Na nasledujúcom obrázku môžete vidieť, ako vytvára súbor, načítava obsah a zapisuje ho:

Obr. 49: Načítanie a zápis obsahu súboru
Aby mohol vykonať tieto isté akcie na všetkých zariadeniach, používa
"icacls.exe", ako sme ukázali vyššie.

Obr. 50: Použitie icalcls.exe
A nakoniec začína šifrovanie súborov s výnimkou súborov "*.exe", "*.dll", systémoch súborov a iných lokalít uvedených v podobe zašifrovaného bieleho zoznamu. Na to používa importy: CryptAcquireContextW (kde je uvedené použitie AES a RSA), CryptDeriveKey, CryptGenKey, CryptDestroyKey a pod. Taktiež sa pokúša rozšíriť svoje pôsobenie na zistené sieťové zariadenia pomocou WNetEnumResourceW a následne ich zašifrovať.

Obr. 51: Šifrovanie systémových súborov
6. Importy a príslušné príznaky
Nižšie je tabuľka so zoznamom najrelevantnejších importov a príznakov používaných vzorom:

7. IOC

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

Technická správa o šifrovači Ryuk bola vypracovaná expertmi antivírusovej laboratória PandaLabs.
8. Odkazy
1. "Everis a Prisa Radio utrpeli vážny kybernetický útok, ktorý uniesol ich systémy." https://www.elconfidencial.com/tecnologia/2019-11-04/everis-la-ser-ciberataque-ransomware-15_2312019/, Publikované 04/11/2019.
2. "Ruský pôvodný vírus napadá významné španielske firmy." https://elpais.com/tecnologia/2019/11/04/actualidad/1572897654_251312.html, Publikované 04/11/2019.
3. "VB2019 papier: Shinigamiho pomsta: dlhý chvost malvéru Ryuk." https://securelist.com/story-of-the-year-2019-cities-under-ransomware-siege/95456/, Publikované 11/12/2019.
4. "Veľké lovenie so Ryukom: Ďalší lukratívny cielený ransomware." https://www.crowdstrike.com/blog/big-game-hunting-with-ryuk-another-lucrative-targeted-ransomware/, Publikované 10/01/2019.
5. "VB2019 papier: Shinigamiho pomsta: dlhý chvost malvéru Ryuk." https://www.virusbulletin.com/virusbulletin/2019/10/vb2019-paper-shinigamis-revenge-long-tail-r
Zdroj: habr.com
