Ryuk is een van de bekendste ransomware-opties van de afgelopen jaren. Sinds het voor het eerst verscheen in de zomer van 2018, heeft het zich verzameld
1. Algemene informatie
Dit document bevat een analyse van de Ryuk-ransomwarevariant, evenals de lader die verantwoordelijk is voor het laden van de malware in het systeem.
De Ryuk-ransomware verscheen voor het eerst in de zomer van 2018. Een van de verschillen tussen Ryuk en andere ransomware is dat het gericht is op het aanvallen van bedrijfsomgevingen.
Medio 2019 vielen cybercriminele groepen een groot aantal Spaanse bedrijven aan met behulp van deze ransomware.
Rijst. 1: Fragment uit El Confidencial over de Ryuk-ransomware-aanval [1]
Rijst. 2: Fragment uit El País over een aanval uitgevoerd met de Ryuk-ransomware [2]
Dit jaar heeft Ryuk een groot aantal bedrijven in verschillende landen aangevallen. Zoals je in onderstaande figuren kunt zien, werden Duitsland, China, Algerije en India het zwaarst getroffen.
Door het aantal cyberaanvallen te vergelijken, kunnen we zien dat Ryuk miljoenen gebruikers heeft getroffen en een enorme hoeveelheid gegevens in gevaar heeft gebracht, wat tot ernstige economische verliezen heeft geleid.
Rijst. 3: Illustratie van Ryuks mondiale activiteit.
Rijst. 4: 16 landen die het zwaarst getroffen zijn door Ryuk
Rijst. 5: Aantal gebruikers aangevallen door Ryuk-ransomware (in miljoenen)
Volgens het gebruikelijke werkingsprincipe van dergelijke bedreigingen toont deze ransomware het slachtoffer, nadat de codering is voltooid, een losgeldmelding die in bitcoins aan het opgegeven adres moet worden betaald om de toegang tot de gecodeerde bestanden te herstellen.
Deze malware is veranderd sinds deze voor het eerst werd geïntroduceerd.
De variant van deze dreiging die in dit document wordt geanalyseerd, werd ontdekt tijdens een aanvalspoging in januari 2020.
Vanwege de complexiteit ervan wordt deze malware vaak toegeschreven aan georganiseerde cybercriminele groepen, ook wel APT-groepen genoemd.
Een deel van de Ryuk-code vertoont opvallende gelijkenis met de code en structuur van een andere bekende ransomware, Hermes, waarmee ze een aantal identieke functies delen. Daarom werd Ryuk in eerste instantie gelinkt aan de Noord-Koreaanse groep Lazarus, die destijds verdacht werd achter de Hermes-ransomware te zitten.
CrowdStrike's Falcon X-service merkte vervolgens op dat Ryuk in feite was gemaakt door de WIZARD SPIDER-groep [4].
Er is enig bewijs dat deze veronderstelling ondersteunt. Ten eerste werd deze ransomware geadverteerd op de website exploit.in, een bekende Russische malwaremarktplaats en eerder in verband gebracht met enkele Russische APT-groepen.
Dit feit sluit de theorie uit dat Ryuk ontwikkeld zou kunnen zijn door de Lazarus APT-groep, omdat het past niet bij de manier waarop de groep opereert.
Bovendien werd Ryuk geadverteerd als een ransomware die niet werkt op Russische, Oekraïense en Wit-Russische systemen. Dit gedrag wordt bepaald door een functie die in sommige versies van Ryuk aanwezig is. Deze controleert de taal van het systeem waarop de ransomware draait en stopt deze als het systeem een Russische, Oekraïense of Wit-Russische taal heeft. Ten slotte bracht een deskundige analyse van de machine die door het WIZARD SPIDER-team was gehackt verschillende ‘artefacten’ aan het licht die naar verluidt zijn gebruikt bij de ontwikkeling van Ryuk als een variant van de Hermes-ransomware.
Aan de andere kant suggereerden experts Gabriela Nicolao en Luciano Martins dat de ransomware mogelijk is ontwikkeld door de APT-groep CryptoTech [5].
Dit volgt uit het feit dat deze groep enkele maanden voor de verschijning van Ryuk op het forum van dezelfde site informatie plaatste dat ze een nieuwe versie van de Hermes-ransomware hadden ontwikkeld.
Verschillende forumgebruikers vroegen zich af of CryptoTech Ryuk daadwerkelijk heeft gemaakt. De groep verdedigde zich vervolgens en verklaarde over bewijs te beschikken dat zij 100% van de ransomware hadden ontwikkeld.
2. арактеристики
We beginnen met de bootloader, wiens taak het is om het systeem waarop deze zich bevindt te identificeren, zodat de “juiste” versie van de Ryuk-ransomware kan worden gelanceerd.
De bootloader-hash is als volgt:
MD5 A73130B0E379A989CBA3D695A157A495
SHA256 EF231EE1A2481B7E627921468E79BB4369CCFAEB19A575748DD2B664ABC4F469
Een van de kenmerken van deze downloader is dat deze geen metadata bevat, d.w.z. De makers van deze malware hebben er geen informatie in opgenomen.
Soms bevatten ze foutieve gegevens om de gebruiker te laten denken dat hij een legitieme applicatie gebruikt. Maar zoals we later zullen zien, vinden aanvallers het niet nodig om metadata te gebruiken als de infectie geen gebruikersinteractie met zich meebrengt (zoals het geval is bij deze ransomware).
Rijst. 6: Voorbeeld van metagegevens
Het voorbeeld is gecompileerd in 32-bits formaat, zodat het op zowel 32-bits als 64-bits systemen kan worden uitgevoerd.
3. Penetratievector
Het voorbeeld waarmee Ryuk wordt gedownload en uitgevoerd, kwam ons systeem binnen via een externe verbinding en de toegangsparameters werden verkregen via een voorlopige RDP-aanval.
Rijst. 7: Aanvalsregister
De aanvaller slaagde erin om op afstand in te loggen op het systeem. Daarna maakte hij een uitvoerbaar bestand met ons voorbeeld.
Dit uitvoerbare bestand werd vóór uitvoering geblokkeerd door een antivirusoplossing.
Rijst. 8: Patroonvergrendeling
Rijst. 9: Patroonvergrendeling
Toen het kwaadaardige bestand werd geblokkeerd, probeerde de aanvaller een gecodeerde versie van het uitvoerbare bestand te downloaden, maar die werd ook geblokkeerd.
Rijst. 10: Set monsters die de aanvaller probeerde uit te voeren
Ten slotte probeerde hij nog een kwaadaardig bestand te downloaden via de gecodeerde console
PowerShell om antivirusbescherming te omzeilen. Maar hij werd ook geblokkeerd.
Rijst. 11: PowerShell met geblokkeerde kwaadaardige inhoud
Rijst. 12: PowerShell met geblokkeerde kwaadaardige inhoud
4. Lader
Wanneer het wordt uitgevoerd, schrijft het een ReadMe-bestand naar de map % Temp%, wat typisch is voor Ryuk. Dit bestand is een losgeldbrief met een e-mailadres in het protonmail-domein, wat vrij gebruikelijk is in deze malwarefamilie: [e-mail beveiligd]
Rijst. 13: Vraag om losgeld
Terwijl de bootloader actief is, kun je zien dat deze verschillende uitvoerbare bestanden met willekeurige namen start. Ze worden opgeslagen in een verborgen map OPENBAAR, maar als de optie niet actief is in het besturingssysteem "Toon verborgen bestanden en mappen", dan blijven ze verborgen. Bovendien zijn deze bestanden 64-bits, in tegenstelling tot het bovenliggende bestand, dat 32-bits is.
Rijst. 14: Uitvoerbare bestanden gelanceerd door het voorbeeld
Zoals je in de afbeelding hierboven kunt zien, start Ryuk icacls.exe, dat zal worden gebruikt om alle ACL's (toegangscontrolelijsten) te wijzigen, waardoor toegang en aanpassing van vlaggen wordt gegarandeerd.
Het krijgt voor alle gebruikers volledige toegang tot alle bestanden op het apparaat (/T), ongeacht fouten (/C) en zonder dat er berichten worden weergegeven (/Q).
Rijst. 15: Uitvoeringsparameters van icacls.exe gelanceerd door het voorbeeld
Het is belangrijk op te merken dat Ryuk controleert welke versie van Windows u gebruikt. Hiervoor hij
voert een versiecontrole uit met behulp van GetVersionExW, waarin het de waarde van de vlag controleert lpVersieInformatiegeeft aan of de huidige versie van Windows nieuwer is dan Windows XP.
Afhankelijk van of u een latere versie dan Windows XP gebruikt, schrijft de bootloader naar de lokale gebruikersmap - in dit geval naar de map %Openbaar%.
Rijst. 17: De versie van het besturingssysteem controleren
Het bestand dat wordt geschreven is Ryuk. Vervolgens wordt het uitgevoerd, waarbij het zijn eigen adres als parameter doorgeeft.
Rijst. 18: Voer Ryuk uit via ShellExecute
Het eerste dat Ryuk doet, is de invoerparameters ontvangen. Deze keer zijn er twee invoerparameters (het uitvoerbare bestand zelf en het dropperadres) die worden gebruikt om zijn eigen sporen te verwijderen.
Rijst. 19: Een proces creëren
Je kunt ook zien dat zodra het de uitvoerbare bestanden heeft uitgevoerd, het zichzelf verwijdert en dus geen spoor achterlaat van zijn eigen aanwezigheid in de map waar het werd uitgevoerd.
Rijst. 20: Een bestand verwijderen
5. RYUK
5.1 Aanwezigheid
Ryuk probeert, net als andere malware, zo lang mogelijk op het systeem te blijven. Zoals hierboven weergegeven, is een manier om dit doel te bereiken het in het geheim maken en uitvoeren van uitvoerbare bestanden. Om dit te doen, is de meest gebruikelijke praktijk het wijzigen van de registersleutel Huidige versieRun.
In dit geval kunt u zien dat voor dit doel het eerste bestand wordt gestart VWjRF.exe
(bestandsnaam wordt willekeurig gegenereerd) wordt gestart cmd.exe.
Rijst. 21: VWjRF.exe uitvoeren
Voer vervolgens de opdracht in VLUCHTEN Met naam "svcho's". Als u dus op elk moment de registersleutels wilt controleren, kunt u deze wijziging gemakkelijk missen, gezien de gelijkenis van deze naam met svchost. Dankzij deze sleutel verzekert Ryuk zijn aanwezigheid in het systeem. Als het systeem dat niet heeft gedaan nog niet is geïnfecteerd, en wanneer u het systeem opnieuw opstart, zal het uitvoerbare bestand het opnieuw proberen.
Rijst. 22: Het voorbeeld zorgt voor aanwezigheid in de registersleutel
We kunnen ook zien dat dit uitvoerbare bestand twee services stopt:
"audio-eindpuntbouwer", wat, zoals de naam al doet vermoeden, overeenkomt met systeemaudio,
Rijst. 23: Sample stopt de systeemaudioservice
и sass, een service voor accountbeheer. Het stoppen van deze twee diensten is een kenmerk van Ryuk. In dit geval, als het systeem is verbonden met een SIEM-systeem, probeert de ransomware te stoppen met het verzenden van berichten naar
Rijst. 24: Sample stopt de service van Sams
5.2 Voorrechten
Over het algemeen beweegt Ryuk zich lateraal binnen het netwerk of wordt het gelanceerd door een andere malware zoals
Vooraf, als opmaat naar het implementatieproces, zien we hem het traject uitvoeren Imiteer jezelf, wat betekent dat de beveiligingsinhoud van het toegangstoken wordt doorgegeven aan de stream, waar deze onmiddellijk wordt opgehaald met behulp van GetCurrentThread.
Rijst. 25: Bel ImpersonateSelf
We zien dan dat het een toegangstoken aan een thread zal koppelen. We zien ook dat één van de vlaggen staat Gewenste toegang, die kan worden gebruikt om de toegang tot de thread te beheren. In dit geval zou de waarde die edx zal ontvangen moeten zijn TOKEN_ALL_ACES of anders - TOKEN_WRITE.
Rijst. 26: Een stroomtoken maken
Dan zal hij gebruiken SeDebug-privilege en zal een oproep doen om debug-machtigingen voor de thread te verkrijgen, wat resulteert in PROCESS_ALL_ACCESS, heeft hij toegang tot elk vereist proces. Aangezien de encryptor al een voorbereide stream heeft, hoeft u alleen nog maar door te gaan naar de laatste fase.
Rijst. 27: SeDebugPrivilege en privilege-escalatiefunctie aanroepen
Enerzijds hebben we LookupPrivilegeValueW, die ons de nodige informatie geeft over de rechten die we willen vergroten.
Rijst. 28: Informatie opvragen over bevoegdheden voor escalatie van bevoegdheden
Aan de andere kant hebben we dat wel gedaan AdjustTokenPrivileges, waarmee we de benodigde rechten op onze stream kunnen verkrijgen. In dit geval is het belangrijkste Nieuwe staat, wiens vlag privileges zal verlenen.
Rijst. 29: Machtigingen voor een token instellen
5.3 Implementatie
In deze sectie laten we zien hoe het voorbeeld het implementatieproces uitvoert dat eerder in dit rapport werd genoemd.
Het belangrijkste doel van het implementatieproces, evenals van escalatie, is het verkrijgen van toegang tot schaduwkopieën. Om dit te doen, moet hij werken met een thread met rechten die hoger zijn dan die van de lokale gebruiker. Zodra het dergelijke verhoogde rechten heeft verkregen, zal het kopieën verwijderen en wijzigingen aanbrengen in andere processen om het onmogelijk te maken terug te keren naar een eerder herstelpunt in het besturingssysteem.
Zoals typisch is voor dit soort malware, wordt er gebruik gemaakt van CreateToolHelp32Snapshotdus het maakt een momentopname van de momenteel lopende processen en probeert toegang te krijgen tot die processen met behulp van OpenProces. Zodra het toegang krijgt tot het proces, opent het ook een token met zijn informatie om de procesparameters te verkrijgen.
Rijst. 30: Processen ophalen van een computer
We kunnen dynamisch zien hoe het de lijst met actieve processen in routine 140002D9C krijgt met behulp van CreateToolhelp32Snapshot. Nadat hij ze heeft ontvangen, doorloopt hij de lijst en probeert hij processen één voor één te openen met OpenProcess totdat hij daarin slaagt. In dit geval was het eerste proces dat hij kon openen "taskhost.exe".
Rijst. 31: Voer dynamisch een procedure uit om een proces te verkrijgen
We kunnen zien dat het vervolgens de procestokeninformatie leest, zodat het aanroept OpenProcessToken met parameter "20008"
Rijst. 32: Lees procestokeninformatie
Het controleert ook of het proces waarin het wordt geïnjecteerd dat niet is Csrss.exe-, explorer.exe, lsaas.exe of dat hij een aantal rechten heeft NT-autoriteit.
Rijst. 33: Uitgesloten processen
We kunnen dynamisch zien hoe de controle voor het eerst wordt uitgevoerd met behulp van de procestokeninformatie in 140002D9C om na te gaan of het account waarvan de rechten worden gebruikt om een proces uit te voeren, een account is NT-AUTORITEIT.
Rijst. 34: NT-AUTHORITEITscontrole
En later, buiten de procedure, controleert hij of dit niet zo is csrss.exe, explorer.exe of lsaas.exe.
Rijst. 35: NT-AUTHORITEITscontrole
Zodra hij een momentopname van de processen heeft gemaakt, de processen heeft geopend en heeft geverifieerd dat geen van deze is uitgesloten, is hij klaar om de processen die zullen worden geïnjecteerd naar het geheugen te schrijven.
Om dit te doen, reserveert het eerst een gebied in het geheugen (VirtueleAllocEx), schrijft erin (Schrijfprocesgeheugen) en maakt een thread (MaakRemoteThread). Om met deze functies te werken, gebruikt het de PID's van de geselecteerde processen, die het eerder heeft verkregen CreëerToolhelp32Snapshot.
Rijst. 36: Embedcode
Hier kunnen we dynamisch observeren hoe het het proces PID gebruikt om de functie aan te roepen VirtueleAllocEx.
Rijst. 37: Roep VirtualAllocEx op
5.4 Encryptie
In deze sectie bekijken we het versleutelingsgedeelte van dit voorbeeld. In de volgende afbeelding ziet u twee subroutines genaamd "LoadLibrary_EncodeString"En"Codeer_Func", die verantwoordelijk zijn voor het uitvoeren van de coderingsprocedure.
Rijst. 38: Coderingsprocedures
In het begin kunnen we zien hoe het een string laadt die later zal worden gebruikt om alles wat nodig is te verduidelijken: imports, DLL's, opdrachten, bestanden en CSP's.
Rijst. 39: Deobfuscatiecircuit
De volgende afbeelding toont de eerste import die wordt gedeobfusceerd in register R4. Laadbibliotheek. Dit zal later worden gebruikt om de vereiste DLL's te laden. We kunnen ook een andere regel zien in register R12, die samen met de vorige regel wordt gebruikt om deobfuscatie uit te voeren.
Rijst. 40: Dynamische deobfuscatie
Het blijft opdrachten downloaden die het later zal uitvoeren om back-ups, herstelpunten en veilige opstartmodi uit te schakelen.
Rijst. 41: Opdrachten laden
Vervolgens laadt het de locatie waar het 3 bestanden neerzet: Windows.bat, run.sct и start.bat.
Rijst. 42: Bestandslocaties
Deze 3 bestanden worden gebruikt om de rechten van elke locatie te controleren. Als de vereiste rechten niet beschikbaar zijn, stopt Ryuk met de uitvoering.
Het blijft de regels laden die overeenkomen met de drie bestanden. Eerst, DECRYPT_INFORMATION.html, bevat informatie die nodig is om bestanden te herstellen. Seconde, OPENBAAR, bevat de openbare RSA-sleutel.
Rijst. 43: Regel DECRYPT INFORMATION.html
Derde, UNIQUE_ID_DO_NOT_REMOVE, bevat de gecodeerde sleutel die in de volgende routine zal worden gebruikt om de codering uit te voeren.
Rijst. 44: Lijn UNIEKE ID NIET VERWIJDEREN
Ten slotte downloadt het de vereiste bibliotheken samen met de vereiste importbestanden en CSP's (Verbeterde RSA van Microsoft и AES cryptografische aanbieder).
Rijst. 45: Bibliotheken laden
Nadat alle deobfuscatie is voltooid, gaat het verder met het uitvoeren van de acties die nodig zijn voor de codering: het opsommen van alle logische schijven, het uitvoeren van wat in de vorige routine is geladen, het versterken van de aanwezigheid in het systeem, het gooien van het RyukReadMe.html-bestand, het versleutelen, het opsommen van alle netwerkschijven , overgang naar gedetecteerde apparaten en hun codering.
Het begint allemaal met laden"cmd.exe" en openbare RSA-sleutelrecords.
Rijst. 46: Voorbereiden op encryptie
Vervolgens worden alle logische schijven gebruikt Logische schijven ophalen en schakelt alle back-ups, herstelpunten en veilige opstartmodi uit.
Rijst. 47: Hersteltools deactiveren
Daarna versterkt het zijn aanwezigheid in het systeem, zoals we hierboven zagen, en schrijft het het eerste bestand RyukReadMe.html в TEMP.
Rijst. 48: Publicatie van een losgeldbericht
In de volgende afbeelding kunt u zien hoe het een bestand aanmaakt, de inhoud downloadt en schrijft:
Rijst. 49: Bestandsinhoud laden en schrijven
Om op alle apparaten dezelfde acties te kunnen uitvoeren, gebruikt hij
"icacls.exe", zoals we hierboven lieten zien.
Rijst. 50: icalcls.exe gebruiken
En ten slotte begint het met het coderen van bestanden, behalve “*.exe”, “*.dll”-bestanden, systeembestanden en andere locaties die zijn gespecificeerd in de vorm van een gecodeerde witte lijst. Om dit te doen, gebruikt het import: CryptAcquireContextW (waar het gebruik van AES en RSA is gespecificeerd), CryptDeriveKey, CryptGenKey, CryptDestroyKey enz. Het probeert ook zijn bereik uit te breiden naar ontdekte netwerkapparaten met behulp van WNetEnumResourceW en deze vervolgens te coderen.
Rijst. 51: Systeembestanden coderen
6. Invoer en bijbehorende vlaggen
Hieronder vindt u een tabel met de meest relevante importen en vlaggen die in de steekproef zijn gebruikt:
7. IOC
referenties
- gebruikersPublicrun.sct
- Menu StartProgramma'sStartupstart.bat AppDataRoamingMicrosoftWindowsStart
- MenuProgramma'sStartupstart.bat
Een technisch rapport over de Ryuk-ransomware is samengesteld door experts van het antiviruslaboratorium PandaLabs.
8. Koppelingen
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/, gepubliceerd op 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, gepubliceerd op 04/11/2019.
3. “VB2019 paper: Shinigami's wraak: de lange staart van de Ryuk-malware.” https://securelist.com/story-of-the-year-2019-cities-under-ransomware-siege/95456/, Publicatie op 11 /12/2019
4. “Jagen op groot wild met Ryuk: nog een lucratieve, doelgerichte ransomware.”https://www. crowdstrike.com/blog/big-game-hunting-with-ryuk-another-lucrative-targeted-ransomware/, Publicatie op 10/01/2019.
5. "VB2019-paper: Shinigami's wraak: de lange staart van de Ryuk-malware." https://www. virusbulletin.com/virusbulletin/2019/10/ vb2019-paper-shinigamis-revenge-long-tail-r
Bron: www.habr.com