
Ryuk Àr en av de mest kÀnda varianterna av ransomware under de senaste Ären. Sedan den först dök upp sommaren 2018 har den samlat , sÀrskilt inom affÀrsvÀrlden, som Àr det frÀmsta mÄlet för dess attacker.
1. AllmÀn information
Detta dokument innehÄller en analys av ransomware-varianten Ryuk, samt en loader som ansvarar för att ladda ner den skadliga programvaran till systemet.
Ransomware Ryuk dök först upp sommaren 2018. En av de saker som sÀrskiljer Ryuk frÄn andra ransomware Àr att den riktar sig mot att attackera företagsmiljöer.
I mitten av 2019 attackerade cyberkriminella grupper ett stort antal spanska företag med detta ransomware.

Fig. 1: Utdrag frÄn El Confidencial om Ryuk-ransomwareattacken [1]

Fig. 2: Utdrag frĂ„n El PaĂs om attacken som utfördes med Ryuk-ransomware [2]
I Är har Ryuk attackerat ett stort antal företag i olika lÀnder. Som ni kan se i de nedan angivna bilderna drabbades Tyskland, Kina, Algeriet och Indien hÄrdast.
Genom att jÀmföra antalet cyberattacker kan vi se att miljontals anvÀndare drabbades av Ryuk, och en enorm mÀngd data komprometterades, vilket ledde till betydande ekonomiska förluster.

Fig. 3: Illustration av Ryuks globala aktivitet.

Fig. 4: 16 lÀnder som drabbades mest av Ryuk

Fig. 5: Antal anvÀndare som attackerades av Ryuk-ransomware (i miljoner)
Enligt det vanliga arbetssÀttet för sÄdana hot, visar detta ransomware efter att krypteringen Àr klar ett meddelande till offret om en lösesumma som mÄste betalas i bitcoins till den angivna adressen för att ÄterfÄ tillgÄng till de krypterade filerna.
Denna skadliga programvara har förÀndrats sedan den först dök upp.
Varianten av detta hot som analyseras i detta dokument upptÀcktes nÀr man försökte genomföra en attack i januari 2020.
PÄ grund av sin komplexitet tillskrivs denna skadliga programvara ofta organiserade cyberkriminella grupper, Àven kÀnda som APT-grupper.
En del av Ryuk-koden har en mÀrkbar likhet med koden och strukturen hos en annan kÀnd ransomware, Hermes, som de har flera gemensamma funktioner. Just dÀrför kopplades Ryuk ursprungligen till den nordkoreanska gruppen Lazarus, som dÄ misstÀnktes ligga bakom ransomwaret Hermes.
Senare noterade Falcon X-tjÀnsten frÄn CrowdStrike att Ryuk faktiskt skapades av gruppen WIZARD SPIDER [4].
Det finns flera bevis som stöder denna teori. För det första annonserades denna ransomware pÄ webbplatsen exploit.in, som Àr en kÀnd rysk marknadsplats för skadlig programvara och tidigare har kopplats till vissa ryska APT-grupper.
Denna fakta utesluter teorin om att Ryuk skulle ha utvecklats av APT-gruppen Lazarus, eftersom det inte stÀmmer överens med hur gruppen agerar.
Dessutom annonserades Ryuk som en ransomware som inte skulle fungera pÄ ryska, ukrainska och vitryska system. Detta beteende bestÀms av funktioner som upptÀckts i vissa versioner av Ryuk, dÀr den kontrollerar sprÄket pÄ det system som ransomware Àr aktiverad i och stoppar dess drift om systemet har ryska, ukrainska eller vitryska sprÄk. Slutligen, vid en expertanalys av en maskin som hackades av WIZARD SPIDER, upptÀcktes flera 'artefakter' som antas ha anvÀnts vid utvecklingen av Ryuk som en variant av ransomwaret Hermes.
Ă
andra sidan föreslog experterna Gabriela Nicolo och Luciano Martins att ransomwaret möjligtvis utvecklades av APT-gruppen CryptoTech [5].
Detta följer av det faktum att nÄgra mÄnader före Ryuks debut publicerade denna grupp information pÄ forumet pÄ samma webbplats om att de hade utvecklat en ny version av ransomwaret Hermes.
Flera anvÀndare pÄ forumet undrade om CryptoTech verkligen hade skapat Ryuk. Efter detta försvarade gruppen sig och hÀvdade att de hade bevis för att de utvecklade 100% av detta ransomware.
2. Egenskaper
Vi börjar med bootloadern, vars uppgift Àr att identifiera systemet dÀr den befinner sig, sÄ att rÀtt version av Ryuk-ransomware kan startas.
Hashen av bootloadern Àr följande:
MD5 A73130B0E379A989CBA3D695A157A495
SHA256 EF231EE1A2481B7E627921468E79BB4369CCFAEB19A575748DD2B664ABC4F469
En av funktionerna hos denna bootloader Àr att den inte innehÄller nÄgon metadata, det vill sÀga att skaparna av detta skadliga program inte inkluderade nÄgon information i den.
Ibland inkluderar de felaktiga data för att fÄ anvÀndaren att tro att de pÄ nÄgot sÀtt kör en legitim applikation. Men som vi kommer att se senare, om infektionen inte krÀver anvÀndarinteraktion (som i fallet med denna ransomware), anser angriparna att det inte Àr nödvÀndigt att anvÀnda metadata.

Fig. 6: Metadata för provet
Provfilen har kompilerats i 32-bitarsformat sÄ att den kan köras bÄde pÄ 32-bitars och 64-bitars system.
3. IntrÄngvektor
Provfilen som laddar och kör Ryuk kom in i vÄrt system via en fjÀrranslutning, och Ätkomstparametrarna erhölls genom en förhands-RDP-attack.

Fig. 7: Attackregister
Angriparen lyckades logga in pÄ systemet pÄ distans. Efter det skapade han en körbar fil med vÄrt prov.
Denna körbara fil blockades av antiviruslösningen innan den kördes.

Fig. 8: Blockering av provet


Fig. 9: Blockering av provet
NÀr den skadliga filen blockerades försökte angriparen ladda ner en krypterad version av den körbara filen, som ocksÄ blockerades.

Fig. 10: UppsÀttning av prover som angriparen försökte köra
Till slut försökte han ladda ner en annan skadlig fil via en krypterad konsol
PowerShell för att kringgÄ antivirusförsvaret. Men den blockerades ocksÄ.

Fig. 11: PowerShell med blockerat skadligt innehÄll

Fig. 12: PowerShell med blockerat skadligt innehÄll
4. Bootloader
NÀr den körs skriver den ReadMe-filen i mappen %temp%, vilket Àr typiskt för Ryuk. Denna fil Àr ett lösenkrav som innehÄller en e-postadress i domÀnen protonmail, som Àr ganska vanlig i denna typ av skadlig programvara: msifelabem1981@protonmail.com
![]()

Fig. 13: Lösenkrav
Under körningen av bootloadern kan du se att den startar flera körbara filer med slumpmÀssiga namn. De lagras i en dold mapp PUBLIC, men om alternativet «Visa dolda filer och mappar» inte Àr aktiverat i operativsystemet., de sÄ kommer de förbli dolda. Dessutom Àr dessa filer 64-bitars till skillnad frÄn moderfilen som Àr 32-bitars.


Fig. 14: Exekverbara filer som körs av provet
Som du kan se i ovanstÄende bild, kör Ryuk icacls.exe, som kommer att anvÀndas för att Àndra alla Ätkomstkontrollistor (ACL), vilket sÀkerstÀller Ätkomst och förÀndring av flaggor.
Han fÄr full tillgÄng under alla anvÀndare till alla filer pÄ enheten (/T) oavsett fel (/C) och utan att visa nÄgra meddelanden (/Q).
![]()
Fig. 15: Körningsparametrar för icacls.exe, som körs av provet
Det Àr viktigt att notera att Ryuk kontrollerar vilken version av Windows som körs. För detta
utför han en versionskontroll med hjÀlp av GetVersionExW, dÀr han kontrollerar vÀrdet för flaggan lpVersionInformation, som visar om den nuvarande versionen av Windows Àr senare Àn Windows XP.


Beroende pĂ„ om du har en senare version Ă€n Windows XP, kommer laddaren att skriva till den lokala anvĂ€ndarmappen â i detta fall till mappen %Public%.
![]()
Fig. 17: Versionskontroll av operativsystemet
Den skrivna filen Àr Ryuk. Sedan kör han den och passerar sin egen adress som parameter.

Fig. 18: Utförande av Ryuk via ShellExecute
Det första Ryuk gör Àr att hÀmta inparameterar. Denna gÄng finns det tvÄ ingÄngsparameter (sjÀlva den exekverbara filen och dropparens adress) som anvÀnds för att ta bort sina egna spÄr.
![]()
![]()
Fig. 19: Skapande av process
Du kan ocksÄ se att sÄ snart han har kört sina exekverbara filer, tar han bort sig sjÀlv, vilket inte lÀmnar nÄgra spÄr av sin egen nÀrvaro i den mapp dÀr han blev utförd.

Fig. 20: Ta bort filen
5. RYUK
5.1 NĂ€rvaro
Ryuk, liksom andra skadliga program, försöker att förbli i systemet sÄ lÀnge som möjligt. Som visats ovan Àr en av sÀtten att uppnÄ detta mÄl att pÄ ett dolt sÀtt skapa och köra exekverbara filer. För detta Àr det vanligaste förfarandet att Àndra registernyckeln CurrentVersionRun.
I det hÀr fallet kan du se att för detta syfte den första exekverbara filen VWjRF.exe
(filnamnet genereras slumpmÀssigt) kör cmd.exe.

![]()
Fig. 21: Utföra filen VWjRF.exe
Sedan anges kommandot RUN med namnet "svchos". PÄ sÄ sÀtt, om du vill kontrollera registernycklarna vid nÄgot tillfÀlle, kan du enkelt missa denna Àndring pÄ grund av likheten med namnet svchost. Genom denna nyckel sÀkerstÀller Ryuk sin nÀrvaro i systemet. Om systemet fortfarande inte har blivit infekterat, kommer det exekverbara filen att försöka igen efter omstart av systemet.
![]()
Fig. 22: Provet sÀkerstÀller nÀrvaro i registernyckeln
Vi kan ocksÄ se att denna exekverbara fil stoppar tvÄ tjÀnster:
"audioendpointbuilder", som, som namnet antyder, motsvarar den systemiska ljudtjÀnsten,
![]()
Fig. 23: Provet stoppar den systemiska ljudtjÀnsten
och samss, som Àr en tjÀnst för hantering av anvÀndarkonton. Att stoppa dessa tvÄ tjÀnster Àr en kÀnnetecken för Ryuk. I det hÀr fallet, om systemet Àr kopplat till ett SIEM-system, försöker krypteraren stoppa överföringen av eventuella varningar. PÄ sÄ sÀtt skyddar den sina efterföljande steg, eftersom vissa SAM-tjÀnster inte kommer att kunna starta korrekt efter att Ryuk har kört.
![]()
Fig. 24: Provet stoppar tjÀnsten Samss
5.2 Privilegier
Generellt sett börjar Ryuk med horisontell rörlighet inom nÀtverket eller körs av en annan skadlig programvara, som eller , som vid privilegieförhöjning överför dessa upphöjda rÀttigheter till krypteraren.
I förvÀg, som en inledning till implementeringsprocessen, ser vi att det kör processen ImpersonateSelf, vilket innebÀr att sÀkerhetsinnehÄllet för Ätkomsttoken kommer att överföras till trÄden, dÀr det omedelbart kommer att erhÄllas med hjÀlp av GetCurrentThread.

Fig. 25: Anrop av ImpersonateSelf
Sedan ser vi att den kommer att koppla Ätkomsttoken med trÄden. Vi ser ocksÄ att en av flaggorna Àr DesiredAccess, som kan anvÀndas för att kontrollera Ätkomsten som trÄden kommer att ha. I det hÀr fallet bör vÀrdet som edx fÄr vara TOKEN_ALL_ACESS eller annars - TOKEN_WRITE.


Fig. 26: Skapande av trÄdtokens
Sedan kommer den att anvÀnda SeDebugPrivilege och göra ett anrop för att fÄ debug-rÀttigheter Debug i relation till trÄden, vilket gör att den, genom att ange PROCESS_ALL_ACCESS, kan fÄ tillgÄng till alla nödvÀndiga processer. Nu, med tanke pÄ att krypteraren redan har en förberedd trÄd, finns det bara en sista fas kvar att genomföra.

Fig. 27: Anrop av SeDebugPrivilege och privilegihöjande funktion
Ă
ena sidan har vi LookupPrivilegeValueW, som ger oss nödvÀndig information om de privilegier som vi vill höja.

Fig. 28: BegÀran om privilegier för deras höjning
à andra sidan har vi AdjustTokenPrivileges, som gör det möjligt att fÄ de nödvÀndiga rÀttigheterna för vÄr process. I det hÀr fallet Àr det viktigaste NewState, vars flagga kommer att tillhandahÄlla privilegier.


Fig. 29: InstÀllning av rÀttigheter för token
5.3 Injektion
I det hÀr avsnittet visar vi hur ett exempel genomför den injektionsprocess som redan nÀmnts i denna rapport.
Huvudsyftet med injektionsprocessen, liksom med höjningen, Àr att fÄ tillgÄng till skuggkopior.För detta behöver det arbeta med en process med högre rÀttigheter Àn den lokala anvÀndaren. SÄ snart det fÄr sÄdana högre rÀttigheter kommer det att ta bort kopior och göra Àndringar i andra processer för att förhindra ÄtergÄng till en tidigare ÄterstÀllningspunkt i operativsystemet.
Som vanligt med denna typ av skadlig kod anvÀnder det CreateToolHelp32Snapshot, sÄ det tar en bild av för nÀrvarande körande processer och försöker fÄ Ätkomst till dessa processer med hjÀlp av OpenProcess.SÄ snart det fÄr Ätkomst till processen öppnar det ocksÄ en token med dess information för att hÀmta processparametrarna.

Fig. 30: HÀmtar processer frÄn datorn
Vi kan dynamiskt se hur det fÄr en lista över körande processer i underprogrammet 140002D9C med hjÀlp av CreateToolhelp32Snapshot. Efter att ha erhÄllit dem gÄr det igenom listan och försöker öppna processerna en efter en med hjÀlp av OpenProcess tills det lyckas. I detta fall Àr den första processen som det kunde öppna "taskhost.exe".

Fig. 31: Dynamisk utförandeprocedur för att hÀmta processen
Vi kan se att det senare lÀser information om token för processen, sÄ det anropar OpenProcessToken med parametern "20008"

Fig. 32: LĂ€sning av information om processens token
Det kontrollerar ocksÄ att processen som det kommer att injicera sig i inte Àr csrss.exe, explorer.exe, lsaas.exe, eller att den har en uppsÀttning rÀttigheter NT authority. Fig. 33: Uteslutna processer.

Vi kan dynamiskt se hur det först genomför kontrollen med hjÀlp av informationen frÄn processens token i
140002D9C. 140002D9C för att ta reda pÄ om kontot vars rÀttigheter anvÀnds för att köra processen Àr ett konto NT AUTHORITY.

Fig. 34: Kontroll av NT AUTHORITY
Och senare, utanför proceduren, kontrollerar han att detta inte Àr csrss.exe, explorer.exe eller lsaas.exe.

Fig. 35: Kontroll av NT AUTHORITY
Efter att han har tagit en snapshot av processerna öppnar han processerna och kontrollerar att ingen av dem Àr undantagen, han Àr redo att skriva in i minnet de processer som kommer att injiceras.
För detta reserverar han först ett omrÄde i minnet (VirtualAllocEx), skriver i det (WriteProcessmemory) och skapar en trÄd (CreateRemoteThread). För att arbeta med dessa funktioner anvÀnder han PID:er för de valda processerna, som han tidigare har fÄtt med hjÀlp av CreateToolhelp32Snapshot.

Fig. 36: Kod för injektion
HÀr kan vi dynamiskt observera hur han anvÀnder PID för att anropa funktionen VirtualAllocEx.

Fig. 37: Anrop av VirtualAllocEx
5.4 Kryptering
I detta avsnitt kommer vi att titta pÄ den del av detta exempel som rör kryptering. PÄ nÀsta bild kan du se tvÄ underprogram med namnen "LoadLibrary_EncodeString" och "Encode_Func", som ansvarar för att utföra krypteringsproceduren.

Fig. 38: Krypteringsprocedurer
I början kan vi se hur han laddar en strÀng som senare kommer att anvÀndas för att deobfuskera allt som behövs: importer, DLL, kommandon, filer och CSP.

Fig. 39: Deobfuskeringens kedja
PÄ nÀsta bild visas den första importen som han deobfuskera i registret R4, LoadLibrary. Detta kommer att anvÀndas senare för att ladda de nödvÀndiga DLL:erna. Vi kan ocksÄ se en annan strÀng i registret R12, som anvÀnds tillsammans med den föregÄende strÀngen för att utföra deobfuskering.

Fig. 40: Dynamisk deobfuskering
Han fortsÀtter att ladda kommandon som han senare kommer att köra för att stÀnga av sÀkerhetskopior, ÄterstÀllningspunkter och sÀkra startlÀgen.

Fig. 41: Laddning av kommandon
Sedan laddar han platsen dÀr han kommer att dumpa 3 filer: Windows.bat, run.sct och start.bat.




Fig. 42: Filplatser
Dessa 3 filer anvÀnds för att kontrollera de behörigheter som varje plats har. Om de nödvÀndiga behörigheterna inte Àr tillgÀngliga stoppar Ryuk körningen.
Han fortsÀtter att ladda strÀngarna för de tre filerna. Den första, DECRYPT_INFORMATION.html, innehÄller information som behövs för att ÄterstÀlla filer. Den andra, PUBLIC, innehÄller den öppna RSA-nyckeln.

Fig. 43: Row DECRYPT INFORMATION.html
Tredje, UNIQUE_ID_DO_NOT_REMOVE, innehÄller en krypterad nyckel som kommer att anvÀndas i nÀsta delprogram för att utföra kryptering.

Fig. 44: Rad UNIQUE ID DO NOT REMOVE
Till slut laddar den de nödvÀndiga biblioteken tillsammans med de nödvÀndiga importerna och CSP (Microsoft Enhanced RSA och AES Cryptographic Provider).

Fig. 45: Laddning av bibliotek
Efter att hela deobfuskeringen Àr klar, gÄr den vidare till att utföra de ÄtgÀrder som krÀvs för kryptering: genomsöka alla logiska enheter, utföra det som laddades i föregÄende delprogram, förstÀrka nÀrvaron i systemet, placera filen RyukReadMe.html, kryptera, genomsöka alla nÀtverksenheter, gÄ till upptÀckta enheter och deras kryptering.
Allt börjar med att ladda "cmd.exe" och skriva den öppna RSA-nyckeln.

Fig. 46: Förberedelse för kryptering
Sedan fÄr den alla logiska enheter med hjÀlp av GetLogicalDrives och stÀnger av alla sÀkerhetskopior, ÄterstÀllningspunkter och sÀkra startlÀgen.

Fig. 47: Deaktivera ÄterstÀllningsmedel
Efter detta förstÀrker den sin nÀrvaro i systemet, som vi sÄg tidigare, och skriver den första filen RyukReadMe.html pÄ TEMP.

Fig. 48: Publicering av lösenordsavisering
I nÀsta bild kan du se hur den skapar en fil, laddar innehÄllet och skriver det:

Fig. 49: Ladda och skriv filinnehÄll
För att kunna utföra dessa ÄtgÀrder pÄ alla enheter anvÀnder den
"icacls.exe", som vi visade tidigare.

Fig. 50: AnvÀndning av icalcls.exe
Och slutligen börjar den kryptera filer, med undantag för filer "*.exe", "*.dll", systemfiler och andra platser som anges i form av en krypterad vitlista. För detta anvÀnder den importerna: CryptAcquireContextW (dÀr AES och RSA anvÀnds), CryptDeriveKey, CryptGenKey, CryptDestroyKey etc. Det görs Àven ett försök att utöka sin pÄverkan pÄ upptÀckta nÀtverksenheter med hjÀlp av WNetEnumResourceW för att sedan kryptera dem.

Fig. 51: Kryptering av systemfiler
6. Importer och motsvarande flaggor
Nedan Àr en tabell med en lista över de mest relevanta importerna och flaggorna som anvÀnds av mallen:

7. IOC

LĂ€nkar
- usersPublicrun.sct
- Start MenuProgramsStartupstart.bat AppDataRoamingMicrosoftWindowsStart
- MenuProgramsStartupstart.bat

Den tekniska rapporten om Ryuk-krypteraren har sammanstÀllts av experter frÄn antiviruslaboratoriet PandaLabs.
8. Referenser
1. "Everis och Prisa Radio drabbas av en allvarlig cyberattack som kapar deras system." https://www.elconfidencial.com/tecnologia/2019-11-04/everis-la-ser-ciberataque-ransomware-15_2312019/, Publicerad den 04/11/2019.
2. "Ett virus av ryskt ursprung attackerar viktiga spanska företag." https://elpais.com/tecnologia/2019/11/04/actualidad/1572897654_251312.html, Publicerad den 04/11/2019.
3. "VB2019-papper: Shinigamis hÀmnd: den lÄnga svansen av Ryuk-malware." https://securelist.com/story-of-the-year-2019-cities-under-ransomware-siege/95456/, Publicerad den 11/12/2019.
4. "Big Game Hunting med Ryuk: En annan lukrativt riktad ransomware." https://www.crowdstrike.com/blog/big-game-hunting-with-ryuk-another-lucrative-targeted-ransomware/, Publicerad den 10/01/2019.
5. "VB2019-papper: Shinigamis hÀmnd: den lÄnga svansen av Ryuk-malware." https://www.virusbulletin.com/virusbulletin/2019/10/vb2019-paper-shinigamis-revenge-long-tail-r
KĂ€lla: habr.com
