
Ryuk je jedním z nejznámějších variant šifrovacích programů v posledních několika letech. Od svého prvního výskytu v létě 2018 nashromáždil , zejména v podnikatelském prostředí, které je hlavním cílem jeho útoků.
1. Obecné informace
Tento dokument obsahuje analýzu varianty šifrovacího programu Ryuk spolu s bootloaderem, který je zodpovědný za zavedení malware do systému.
Šifrovací program Ryuk se poprvé objevil v létě 2018. Jedním z rozdílů mezi Ryukem a jinými šifrovacími programy je jeho zaměření na korporátní prostředí.
V polovině roku 2019 kybernetické zločinecké skupiny zaútočily na obrovské množství španělských společností pomocí tohoto šifrovacího programu.

Obr. 1: Úryvek z El Confidencial o útoku šifrovacího programu Ryuk [1]

Obr. 2: Úryvek z El País o útoku provedeném šifrovacím programem Ryuk [2]
V tomto roce Ryuk zaútočil na velké množství společností v různých zemích. Jak můžete vidět na níže uvedených obrázcích, nejvíce postiženy byly Německo, Čína, Alžírsko a Indie.
Porovnáním počtu kybernetických útoků vidíme, že milióny uživatelů byly postižené Ryukem a obrovské objemy dat byly kompromitovány, což vedlo k vážným ekonomickým škodám.

Obr. 3: Ilustrace globální aktivity Ryuk.

Obr. 4: 16 zemí nejvíce postižených Ryukem

Obr. 5: Počet uživatelů, které zaútočil šifrovací program Ryuk (v milionech)
Podle obvyklého principu fungování podobných hrozeb tento šifrovací program po dokončení šifrování zobrazí oběti oznámení o výkupném, které má být zaplaceno v bitcoinech na určenou adresu pro obnovení přístupu k zašifrovaným souborům.
Tento malware se od svého prvního výskytu změnil.
Analyzovaná varianta této hrozby byla odhalena při pokusu o útok v lednu 2020.
Vzhledem ke své složitosti je tento malware často připisován organizovaným kyberkriminálním skupinám, známým také jako APT skupiny.
Část kódu Ryuk vykazuje značnou podobnost s kódem a strukturou dalšího známého ransomwaru Hermes, s nímž mají několik shodných funkcí. Právě proto byl Ryuk původně spojován se severokorejskou skupinou Lazarus, která byla v té době podezřelá z útoků s ransomwarovým programem Hermes.
Později služba Falcon X od společnosti CrowdStrike poznamenala, že Ryuk byl ve skutečnosti vytvořen skupinou WIZARD SPIDER [4].
Existuje několik důkazů podporujících tuto domněnku. Za prvé, tento ransomware byl inzerován na webu exploit.in, což je známý ruský trh s malwarem, který byl dříve spojen s některými ruskými APT skupinami.
Tento fakt vylučuje teorii, že Ryuk mohl být vyvinut APT skupinou Lazarus, neboť to nesouvisí s postupy této skupiny.
Kromě toho byl Ryuk inzerován jako ransomware, který nebude fungovat na systémech v Rusku, na Ukrajině a v Bělorusku. Toto chování je vymezeno funkcí nalezenou v některých verzích Ryuk, kde se kontroluje jazyk systému, na kterém je ransomware spuštěn, a práce se zastaví, pokud je nastaven ruský, ukrajinský nebo běloruský jazyk. Nakonec, při forenzní analýze stroje, který byl napaden skupinou WIZARD SPIDER, bylo nalezeno několik „artefaktů“, které pravděpodobně byly použity při vývoji Ryuk jako varianty ransomwaru Hermes.
Na druhé straně experti Gabriela Nicolo a Luciano Martins navrhli, že ransomware mohl být vyvinut APT skupinou CryptoTech [5].
To vyplývá z faktu, že několik měsíců před vznikem Ryuku tato skupina na fóru stejného webu zveřejnila informace o tom, že vyvinuli novou verzi ransomwaru Hermes.
Někteří uživatelé fóra se ptali, zda skutečně CryptoTech vytvořil Ryuk. Poté tato skupina se hájila a prohlásila, že má důkazy, že vyvinuli 100% tohoto ransomwaru.
2. Vlastnosti
Začínáme se spouštěčem, jehož úkolem je identifikovat systém, ve kterém se nachází, aby bylo možné spustit správnou verzi ransomwaru Ryuk.
Hash spouštěče je následující:
MD5 A73130B0E379A989CBA3D695A157A495
SHA256 EF231EE1A2481B7E627921468E79BB4369CCFAEB19A575748DD2B664ABC4F469
Jednou z vlastností tohoto spouštěče je, že neobsahuje žádná meta-data, tedy tvůrci tohoto malware do něj nezahrnuli žádné informace.
Někdy zahrnují chybná data, aby přiměli uživatele myslet si, že údajně spouští legitimní aplikaci. Jak uvidíme později, v případě, že infekce nevyžaduje interakci s uživateli (jako v případě tohoto šifrovacího programu), útočníci nepovažují za nutné používat meta-data.

Obr. 6: Meta-data vzorku
Vzorek byl zkompilován ve 32bitovém formátu, aby mohl být spuštěn jak v 32bitových, tak v 64bitových systémech.
3. Vektor pronikání
Vzorek, který stahuje a spouští Ryuk, se dostal do našeho systému přes vzdálené spojení a přístupové parametry byly získány díky předchozím útokům RDP.

Obr. 7: Registr útoku
Útočník se mu podařilo vzdáleně přihlásit do systému. Poté vytvořil spustitelný soubor s naším vzorkem.
Tento spustitelný soubor byl zablokován antivirovým řešením před spuštěním.

Obr. 8: Blokování vzorku


Obr. 9: Blokování vzorku
Když byl škodlivý soubor zablokován, útočník se pokusil stáhnout zašifrovanou verzi spustitelného souboru, která byla také zablokována.

Obr. 10: Sada vzorků, které se útočník pokusil spustit
Nakonec se pokusil stáhnout jiný škodlivý soubor přes zašifrovanou konzoli
PowerShell, aby obcházel antivirovou ochranu. Ale také byl zablokován.

Obr. 11: PowerShell se zablokovaným škodlivým obsahem

Obr. 12: PowerShell se zablokovaným škodlivým obsahem
4. Spouštěč
Když se spustí, zapíše soubor ReadMe do složky %temp%, což je pro Ryuk typické. Tento soubor je výkupné, které obsahuje e-mailovou adresu v doméně protonmail, která se v této rodině malware objevuje docela často: msifelabem1981@protonmail.com
![]()

Obr. 13: Výkupné
Během spuštění spouštěče můžete vidět, že spouští několik spustitelných souborů s náhodnými názvy. Tyto soubory jsou uloženy ve skryté složce PUBLIC, ale pokud není v operačním systému aktivní možnost „Zobrazit skryté soubory a složky“, zůstanou tak skryté. Navíc jsou tyto soubory 64-bitové na rozdíl od rodičovského souboru, který je 32-bitový.


Obr. 14: Spustitelné soubory spouštěné vzorkem
Jak je vidět na výše uvedeném obrázku, Ryuk spouští icacls.exe, který se použije k úpravě všech seznamů řízení přístupu ACL (Access Control List), čímž se zaručí přístup a změna příznaků.
Získává plný přístup pro všechny uživatele ke všem souborům na zařízení (/T) bez ohledu na chyby (/C) a bez zobrazení jakýchkoli zpráv (/Q).
![]()
Obr. 15: Parametry spuštění icacls.exe spuštěného vzorkem
Je důležité vzít na vědomí, že Ryuk kontroluje, jaká verze Windows běží. K tomu
provádí kontrolu verze pomocí GetVersionExW, ve které kontroluje hodnotu příznaku lpVersionInformation, ukazující, zda je současná verze Windows novější než Windows XP.


V závislosti na tom, zda máte novější verzi než Windows XP, loader zapíše do složky místního uživatele — v tomto případě do složky %Public%.
![]()
Obr. 17: Kontrola verze operačního systému
Zapisovaný soubor je Ryuk. Poté jej spustí a předává svou vlastní adresu jako parametr.

Obr. 18: Spuštění Ryuk přes ShellExecute
To první, co Ryuk dělá, je získání vstupních parametrů. Tentokrát existují dva vstupní parametry (samotný spustitelný soubor a adresa droppera), které se používají k odstranění vlastních stop.
![]()
![]()
Obr. 19: Vytvoření procesu
Můžete také vidět, že jakmile spustí své spustitelné soubory, odstraňuje se, čímž nezanechává žádné stopy svého přítomnosti v té složce, kde byl spuštěn.

Obr. 20: Odstranění souboru
5. RYUK
5.1 Přítomnost
Ryuk, podobně jako jiné škodlivé programy, se snaží zůstat v systému co nejdéle. Jak bylo uvedeno výše, jedním ze způsobů, jak toho dosáhnout, je tajné vytváření a spouštění spustitelných souborů. K tomu je nejběžnější praxí změna klíče registru CurrentVersionRun.
V tomto případě můžete vidět, že pro tento cíl první spustitelný soubor VWjRF.exe
(název souboru je generován náhodně) spouští cmd.exe.

![]()
Obr. 21: Spuštění souboru VWjRF.exe
Poté je zadán příkaz RUN s názvem "svchos". Takže, pokud chcete kdykoli zkontrolovat registry, můžete snadno ignorovat tuto změnu, vzhledem k podobnosti tohoto názvu se svchost. Díky této registraci Ryuk zajišťuje svou přítomnost v systému. Pokud systém ještě nebyl nakažen, po restartování systému spustí spustitelný soubor znovu.
![]()
Obr. 22: Vzorek zajišťuje přítomnost v registru
Také můžeme vidět, že tento spustitelný soubor zastavuje dvě služby:
"audioendpointbuilder", která podle názvu odpovídá systémovému zvuku,
![]()
Obr. 23: Vzorek zastavuje službu systémového zvuku
a samss, což je služba správy účtů. Zastavení těchto dvou služeb je charakteristické pro Ryuk. V tomto případě, pokud je systém spojen se SIEM systémem, ransomware se pokouší zastavit odesílání jakýchkoli upozornění. . Tímto chrání své další kroky, protože některé služby SAM nebudou schopny správně zahájit provoz po provedení Ryuk.
![]()
Obr. 24: Vzorek zastavuje službu Samss
5.2 Oprávnění
Obecně lze říci, že Ryuk začíná horizontálním pohybem v síti, nebo je spuštěn jiným malwarem, jako je nebo , které v případě eskalace oprávnění předávají tato zvýšená práva ransomware.
Předem, jako předchůdce procesu nasazení, vidíme, že provádí proces ImpersonateSelf, což znamená, že obsah bezpečnosti tokenu přístupu bude přenesen do vlákna, kde bude okamžitě získán pomocí GetCurrentThread.

Obr. 25: Volání ImpersonateSelf
Poté vidíme, že spojí token přístupu s vláknem. Také vidíme, že jeden z příznaků — to je DesiredAccess, který může být použit k řízení přístupu, který bude mít vlákno. V tomto případě hodnota, kterou edx obdrží, by měla být TOKEN_ALL_ACCESS nebo jinak — TOKEN_WRITE.


Obr. 26: Vytvoření tokenu vlákna
Poté použije SeDebugPrivilege a provede volání k získání ladících práv Debug ve vztahu k vláknu, čímž uvede PROCESS_ALL_ACCESS, schopný přistupovat k jakémukoli požadovanému procesu. Nyní, vezmeme-li v úvahu, že ransomware má již připravené vlákno, zbývá pouze přistoupit k závěrečné fázi.

Obr. 27: Volání SeDebugPrivilege a funkce eskalace práv
Na jedné straně máme LookupPrivilegeValueW, který nám poskytuje potřebné informace o oprávněních, která chceme zvýšit.

Obr. 28: Dotaz na informace o oprávněních k jejich eskalaci
Na druhé straně máme AdjustTokenPrivileges, který nám umožňuje získat potřebná práva pro náš proces. V tomto případě je nejdůležitější, že NewState, jehož příznak poskytne oprávnění.


Obr. 29: Nastavení práv pro token
5.3 Vniknutí
V této části ukážeme, jak vzorek provádí proces vniknutí, dříve již zmíněný v této zprávě.
Hlavním cílem procesu vniknutí, stejně jako eskalace, je získání přístupu k stínovým kopiím. K tomu musí pracovat s procesem s právy vyššími, než má místní uživatel. Jakmile získá taková vyšší práva, odstraní kopie a provede změny v jiných procesech, aby se znemožnilo vrátit k dřívější obnovovací bodu v operačním systému.
Jak již obvykle bývá s tímto typem škodlivého softwaru, pro provedení vniknutí používá CreateToolHelp32Snapshot, takže pořizuje snímek aktuálně spuštěných procesů a pokouší se k těmto procesům získat přístup prostřednictvím OpenProcess. Jakmile získá přístup k procesu, také otevře token s jeho informacemi pro získání parametrů procesu.

Obr. 30: Získání procesů z počítače
Dynamicky můžeme vidět, jak získává seznam spuštěných procesů v podprogramu 140002D9C pomocí CreateToolhelp32Snapshot. Jakmile je získá, prochází seznamem a pokouší se jeden po druhém otevřít procesy pomocí OpenProcess, dokud se mu to nepodaří. V tomto případě je prvním procesem, který se mu podařilo otevřít, "taskhost.exe".

Obr. 31: Dynamické provedení procedury pro získání procesu
Můžeme vidět, že následně čte informace tokenu procesu, takže vyvolává OpenProcessToken s parametrem "20008"

Obr. 32: Čtení informací tokenu procesu
Také kontroluje, že proces, do kterého se bude vnikat, není csrss.exe, explorer.exe, lsaas.exe nebo že má sadu oprávnění NT authority.

Obr. 33: Vyloučené procesy
Dynamicky můžeme vidět, jak nejprve provádí kontrolu pomocí informací tokenu procesu v 140002D9C s cílem zjistit, zda účet, jehož oprávnění se používají k provedení procesu, je účtem NT AUTHORITY.

Obr. 34: Kontrola NT AUTHORITY
A později, mimo proceduru, kontroluje, že to není csrss.exe, explorer.exe nebo lsaas.exe.

Obr. 35: Kontrola NT AUTHORITY
Poté, co pořídil snímek procesů, otevřel procesy a zkontroloval, že žádný z nich není vyloučen, je připraven zapisovat do paměti procesy, které budou injektovány.
K tomu nejprve rezervuje oblast v paměti (VirtualAllocEx), zapíše do ní (WriteProcessMemory) a vytváří vlákno (CreateRemoteThread). K práci s těmito funkcemi používá PIDy vybraných procesů, které předtím získal pomocí CreateToolhelp32Snapshot.

Obr. 36: Kód pro injekci
Zde můžeme dynamicky pozorovat, jak používá PID procesu k volání funkce VirtualAllocEx.

Obr. 37: Volání VirtualAllocEx
5.4 Šifrování
V této části si projdeme část tohoto vzoru, související se šifrováním. Na dalším obrázku uvidíte dvě podprogramy nazvané "LoadLibrary_EncodeString" a "Encode_Func", které odpovídají za provedení šifrovací procedury.

Obr. 38: Šifrovací procedury
Na začátku vidíme, jak načítá řetězec, který později bude použit pro deobfuskaci všeho, co je třeba: importy, DLL, příkazy, soubory a CSP.

Obr. 39: Řetězec deobfuskace
Na dalším obrázku je první import, který deobfuskuje v registru R4, LoadLibrary. Ten bude použit později pro načtení potřebných DLL. Můžeme také vidět další řetězec v registru R12, který je použit spolu s předchozím řetězcem pro deobfuskaci.

Obr. 40: Dynamická deobfuskace
Pokračuje načítáním příkazů, které později provede, aby zakázal zálohy, body obnovení a režimy bezpečného spouštění.

Obr. 41: Načítání příkazů
Poté načítá umístění, kam umístí 3 soubory: Windows.bat, run.sct a start.bat.




Obr. 42: Umístění souborů
Tyto 3 soubory se používají k ověření oprávnění, kterými disponuje každé z umístění. Pokud nejsou požadovaná oprávnění dostupná, Ryuk zastaví provádění.
Pokračuje načítáním řetězců, které odpovídají třem souborům. První, DECRYPT_INFORMATION.html, obsahuje informace potřebné pro obnovení souborů. Druhý, PUBLIC, obsahuje veřejný klíč RSA.

Obr. 43: Řetězec DECRYPT INFORMATION.html
Třetí, UNIQUE_ID_DO_NOT_REMOVE, obsahuje šifrovaný klíč, který bude použit v následujícím podprogramu pro provedení šifrování.

Obr. 44: Řetězec UNIQUE ID DO NOT REMOVE
Nakonec načte potřebné knihovny spolu s požadovanými importy a CSP (Microsoft Enhanced RSA a AES Cryptographic Provider).

Obr. 45: Načítání knihoven
Jakmile je celá deobfuskace dokončena, přechází k provádění akcí potřebných pro šifrování: procházení všech logických disků, provádění toho, co bylo načteno v předchozím podprogramu, posílení přítomnosti v systému, umístění souboru RyukReadMe.html, šifrování, procházení všech síťových disků, přechod na nalezená zařízení a jejich šifrování.
Vše začíná načtením "cmd.exe" a zápisem otevřeného RSA klíče.

Obr. 46: Příprava na šifrování
Poté získá všechny logické disky pomocí GetLogicalDrives a deaktivuje všechny zálohy, body obnovení a bezpečné režimy spuštění.

Obr. 47: Deaktivace obnovovacích prostředků
Po tomto posiluje svou přítomnost v systému, jak jsme viděli výše, a zapisuje první soubor RyukReadMe.html v TEMP.

Obr. 48: Zveřejnění oznámení o výkupném
Na následujícím obrázku můžete vidět, jak vytváří soubor, načítá obsah a zapisuje ho:

Obr. 49: Načítání a zapisování obsahu souboru
Aby mohl provádět stejné akce na všech zařízeních, používá
"icacls.exe", jak jsme ukázali výše.

Obr. 50: Použití icalcls.exe
A nakonec začíná šifrování souborů s výjimkou souborů "*.exe", "*.dll", systémových souborů a dalších umístění uvedených v šifrovaném bílém seznamu. K tomu používá importy: CryptAcquireContextW (kde je uvedeno použití AES a RSA), CryptDeriveKey, CryptGenKey, CryptDestroyKey atd. Také se pokouší rozšířit svůj dosah na nalezená síťová zařízení pomocí WNetEnumResourceW a poté je zašifrovat.

Obr. 51: Šifrování systémových souborů
6. Importy a odpovídající příznaky
Níže je uvedena tabulka se seznamem nejrelevantnějších importů a příznaků používaných vzorkem:

7. IOC

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

Technická zpráva o šifrovači Ryuk byla vyhotovena experty antivirusní laboratoře PandaLabs.
8. Odkazy
1. „Everis a Prisa Radio čelí závažnému kybernetickému útoku, který zahnízdil jejich systémy.“ https://www.elconfidencial.com/tecnologia/2019-11-04/everis-la-ser-ciberataque-ransomware-15_2312019/, Publikováno 04/11/2019.
2. „Virus ruského původu napadá významné španělské firmy.“ https://elpais.com/tecnologia/2019/11/04/actualidad/1572897654_251312.html, Publikováno 04/11/2019.
3. „VB2019 příspěvek: Pomsta Shinigamiho: dlouhý ocásek malwaru Ryuk.“ https://securelist.com/story-of-the-year-2019-cities-under-ransomware-siege/95456/, Publikováno 11/12/2019.
4. „Big Game Hunting s Ryukem: Další lukrativní cílený ransomware.“ https://www.crowdstrike.com/blog/big-game-hunting-with-ryuk-another-lucrative-targeted-ransomware/, Publikováno 10/01/2019.
5. „VB2019 příspěvek: Pomsta Shinigamiho: dlouhý ocásek malwaru Ryuk.“ https://www.virusbulletin.com/virusbulletin/2019/10/vb2019-paper-shinigamis-revenge-long-tail-r
Zdroj: habr.com
