
Ryuk on yksi viime vuosien pahamaineisimmista kiristyshaittaohjelmamuunnelmista. Sen ensiesiintymisestä kesällä 2018 lähtien se on kerännyt , erityisesti liike-elämässä, joka on hänen hyökkäystensä pääkohde.
1. Yleistä tietoa
Tämä dokumentti sisältää analyysin Ryuk-kiristyshaittaohjelman muunnelmasta sekä lataajasta, joka lataa haittaohjelman järjestelmään.
Ryuk-kiristyshaittaohjelma ilmestyi ensimmäisen kerran kesällä 2018. Yksi Ryukin ja muiden kiristyshaittaohjelmien eroista on, että se on suunnattu hyökkäämään yritysympäristöihin.
Vuoden 2019 puolivälissä kyberrikollisryhmät hyökkäsivät lukuisten espanjalaisten yritysten kimppuun tätä kiristysohjelmaa käyttäen.

Kuva 1: Ote El Confidencial -lehdestä Ryuk-kiristysohjelmahyökkäyksestä [1]

Kuva 2: Ote El País -lehdestä Ryuk-kiristysohjelmalla tehdystä hyökkäyksestä [2]
Tänä vuonna Ryuk on hyökännyt lukuisten yritysten kimppuun eri maissa. Kuten alla olevista luvuista näkyy, Saksa, Kiina, Algeria ja Intia kärsivät eniten.
Verrattuna kyberhyökkäysten määrään voimme nähdä, että Ryuk vaikutti miljooniin käyttäjiin ja vaaransi valtavan määrän tietoja, mikä aiheutti vakavia taloudellisia vahinkoja.

Kuva 3: Ryukin globaalin toiminnan havainnollistaminen.

Kuva 4: Ryuk-iskun eniten koettelemat 16 maata

Kuva 5: Ryuk-kiristysohjelman hyökkäyksen kohteeksi joutuneiden käyttäjien määrä (miljoonina)
Kuten tällaisille uhkille on tyypillistä, salauksen valmistuttua kiristyshaittaohjelma näyttää uhrille lunnasvaatimuksen, joka on maksettava Bitcoineina määritettyyn osoitteeseen, jotta salattujen tiedostojen käyttöoikeus voidaan palauttaa.
Tämä haittaohjelma on muuttunut ensimmäisestä ilmestymisestään lähtien.
Tässä artikkelissa analysoitu uhkan variantti löydettiin tammikuussa 2020 tehdyn hyökkäysyrityksen aikana.
Monimutkaisuutensa vuoksi tätä haittaohjelmaa pidetään usein järjestäytyneiden kyberrikollisryhmien, eli APT-ryhmien, tekeminä.
Osa Ryukin koodista muistuttaa huomattavasti toisen tunnetun kiristyshaittaohjelman, Hermesin, koodia ja rakennetta, ja sillä on useita yhteisiä toimintoja sen kanssa. Tästä syystä Ryuk yhdistettiin alun perin pohjoiskorealaiseen Lazarus-ryhmään, jonka epäiltiin tuolloin olevan Hermesin kiristyshaittaohjelman takana.
CrowdStriken Falcon X -palvelu huomautti myöhemmin, että Ryukin oli itse asiassa luonut WIZARD SPIDER -ryhmä [4].
Tätä oletusta tukevat useat todisteet. Ensinnäkin tätä kiristyshaittaohjelmaa mainostettiin exploit.in-verkkosivustolla, joka on tunnettu venäläinen haittaohjelmien markkinapaikka, joka on aiemmin yhdistetty useisiin venäläisiin APT-ryhmiin.
Tämä tosiasia sulkee pois teorian, jonka mukaan APT-ryhmä Lazarus olisi voinut kehittää Ryukin, koska se ei sovi ryhmän toimintatapaan.
Lisäksi Ryukia mainostettiin kiristyshaittaohjelmana, joka ei toimisi venäläisillä, ukrainalaisilla tai valkovenäläisillä järjestelmillä. Tämä johtuu Ryukin joissakin versioissa olevasta toiminnosta, joka tarkistaa kiristyshaittaohjelmaa suorittavan järjestelmän kielen ja pysäyttää sen, jos järjestelmä käyttää venäjää, ukrainaa tai valkovenäjää. Lopuksi WIZARD SPIDER -ryhmän hakkeroiman koneen asiantuntija-analyysi paljasti useita "artefakteja", joita oletettavasti käytettiin Ryukin kehittämisessä Hermes-kiristyshaittaohjelman varianttina.
Toisaalta asiantuntijat Gabriela Nicolao ja Luciano Martins ehdottivat, että kiristysohjelman olisi saattanut kehittää APT-ryhmä CryptoTech [5].
Tämä johtuu siitä, että useita kuukausia ennen Ryukin ilmestymistä tämä ryhmä julkaisi saman sivuston foorumilla ilmoituksen kehittäneensä uuden version Hermes-kiristysohjelmasta.
Useat foorumin käyttäjät kyseenalaistivat, oliko CryptoTech todella luonut Ryukin. Ryhmä puolusti myöhemmin itseään väittämällä, että sillä oli todisteita siitä, että se oli kehittänyt 100-prosenttisesti kiristyshaittaohjelman.
2. Ominaisuudet
Aloitamme käynnistyslataimesta, jonka tehtävänä on tunnistaa järjestelmä, jossa se on, jotta Ryuk-kiristysohjelman "oikea" versio voidaan suorittaa.
Käynnistyslataimen hajautusarvo on seuraava:
MD5 A73130B0E379A989CBA3D695A157A495
SHA256 EF231EE1A2481B7E627921468E79BB4369CCFAEB19A575748DD2B664ABC4F469
Yksi tämän latausohjelman erikoisuuksista on, että se ei sisällä mitään metadataa, eli haittaohjelman luojat eivät ole sisällyttäneet siihen mitään tietoja.
Joskus ne sisältävät virheellisiä tietoja huijatakseen käyttäjää luulemaan, että hän käynnistää laillisen sovelluksen. Kuten myöhemmin näemme, jos tartunta ei kuitenkaan vaadi käyttäjän toimia (kuten tämän kiristyshaittaohjelman tapauksessa), hyökkääjät eivät pidä metatietojen käyttöä tarpeellisena.

Kuva 6: Esimerkki metatiedoista
Näyte käännettiin 32-bittiseen muotoon, jotta sitä voidaan käyttää sekä 32- että 64-bittisissä järjestelmissä.
3. Läpäisyvektori
Ryukin lataava ja ajava näyte pääsi järjestelmäämme etäyhteyden kautta, ja tunnistetiedot saatiin alustavan RDP-hyökkäyksen kautta.

Kuva 7: Hyökkäysrekisteri
Hyökkääjä onnistui kirjautumaan järjestelmään etänä. Jälkeenpäin he loivat suoritettavan tiedoston, joka sisälsi esimerkkimme.
Virustorjuntaohjelmisto esti tämän suoritettavan tiedoston ennen sen suorittamista.

Kuva 8: Näytteen estäminen


Kuva 9: Näytteen estäminen
Kun haitallinen tiedosto oli lukittu, hyökkääjä yritti ladata suoritettavan tiedoston salatun version, joka myös lukittiin.

Kuva 10: Joukko esimerkkejä, joita hyökkääjä yritti suorittaa
Lopuksi hän yritti ladata toisen haitallisen tiedoston salatun konsolin kautta.
PowerShelliä käytettiin virustorjunnan ohittamiseen, mutta sekin estettiin.

Kuva 11: PowerShell, jonka haitallista sisältöä on estetty

Kuva 12: PowerShell, jonka haitallista sisältöä on estetty
4. Kuormaaja
Kun se suoritetaan, se kirjoittaa ReadMe-tiedoston kansioon % Temp%, mikä on tyypillistä Ryukille. Tämä tiedosto on lunnasvaatimus, joka sisältää sähköpostiosoitteen protonmail-verkkotunnuksessa, mikä on melko yleinen tässä haittaohjelmaperheessä: msifelabem1981@protonmail.com
![]()

Kuva 13: Lunnaiden kysyntä
Saatat huomata latausohjelman käynnistyvän useita satunnaisnimisiä suoritettavia tiedostoja. Ne on tallennettu piilotettuun kansioon. JULKINEN, mutta jos vaihtoehto ei ole aktiivinen käyttöjärjestelmässä Näytä piilotetut tiedostot ja kansiot, ne pysyvät piilossa. Lisäksi nämä tiedostot ovat 64-bittisiä, toisin kuin päätiedosto, joka on 32-bittinen.


Kuva 14: Esimerkin käynnistämät suoritettavat tiedostot
Kuten yllä olevasta kuvasta näkyy, Ryuk suorittaa icacls.exe-tiedoston, jota käytetään kaikkien ACL-luetteloiden (käyttöoikeusluetteloiden) muokkaamiseen, mikä varmistaa käyttöoikeudet ja lippujen muutokset.
Se saa täydet käyttöoikeudet kaikkiin laitteen tiedostoihin (/T) kaikilta käyttäjiltä virheistä (/C) riippumatta ja näyttämättä viestejä (/Q).
![]()
Kuva 15: Esimerkkikomennon käynnistämän icacls.exe-tiedoston suoritusparametrit
On tärkeää huomata, että Ryuk tarkistaa, mikä Windows-versio on käynnissä. Tätä varten se
suorittaa version tarkistuksen käyttämällä GetVersionExW, jossa se tarkistaa lipun arvon lpVersiotiedot, joka näyttää, onko Windowsin nykyinen versio uudempi kuin Windows XP.


Riippuen siitä, käytätkö uudempaa versiota kuin Windows XP, käynnistyslataaja kirjoittaa paikalliseen käyttäjäkansioon – tässä tapauksessa kansioon %Julkinen%.
![]()
Kuva 17: Käyttöjärjestelmän version tarkistaminen
Kirjoitettava tiedosto on Ryuk. Sitten se suorittaa sen ja välittää oman osoitteensa parametrina.

Kuva 18: Ryukin suorittaminen ShellExecuten kautta
Ensimmäiseksi Ryuk vastaanottaa syöteparametreja. Tällä kertaa syöteparametreja on kaksi (itse suoritettava tiedosto ja dropperin osoite), joita käytetään omien jälkien poistamiseen.
![]()
![]()
Kuva 19: Prosessin luominen
Voit myös nähdä, että kun se suorittaa suoritettavat tiedostonsa, se poistaa itsensä, jolloin siitä ei jää jälkeäkään kansioon, jossa se suoritettiin.

Kuva 20: Tiedoston poistaminen
5. RYUK
5.1 Läsnäolo
Ryuk, kuten muutkin haittaohjelmat, pyrkii pysymään järjestelmässä mahdollisimman pitkään. Kuten yllä on esitetty, yksi tapa saavuttaa tämä on luoda ja suorittaa suoritettavia tiedostoja salaa. Yleisin tapa tähän on muokata rekisteriavainta. Nykyinen versioSuorita.
Tässä tapauksessa näet, että ensimmäinen tätä tarkoitusta varten suoritettava tiedosto on VWjRF.exe
(tiedostonimi luodaan satunnaisesti) käynnistyy cmd.exe.

![]()
Kuva 21: VWjRF.exe-tiedoston suorittaminen
Sitten syötetään komento JUOSTA nimellä "svchos". Siksi, jos tarkistat rekisteriavaimet milloin tahansa, saatat helposti ohittaa tämän muutoksen, koska tämä nimi on niin samanlainen kuin svchost. Ryuk käyttää tätä avainta varmistaakseen sen läsnäolon järjestelmässä. Jos järjestelmää ei ole vielä tartutettu, suoritettava tiedosto yrittää uudelleen, kun käynnistät sen uudelleen.
![]()
Kuva 22: Esimerkki varmistaa läsnäolon rekisteriavaimessa
Voimme myös nähdä, että tämä suoritettava tiedosto pysäyttää kaksi palvelua:
"audiopäätepisteiden rakentaja", joka nimensä mukaisesti vastaa järjestelmän ääntä,
![]()
Kuva 23: Esimerkki pysäyttää järjestelmän äänipalvelun
и samss, joka on tilinhallintapalvelu. Näiden kahden palvelun pysäyttäminen on Ryukin ominaisuus. Tässä tapauksessa, jos järjestelmä on yhdistetty SIEM-järjestelmään, kiristysohjelma yrittää lopettaa lähettämisen Varoituksia ei anneta. Tämä suojaa hänen seuraavia vaiheitaan, koska jotkin SAM-palvelut eivät pysty käynnistymään oikein Ryukin suorittamisen jälkeen.
![]()
Kuva 24: Esimerkki pysäyttää Samss-palvelun
5.2 Etuoikeudet
Yleisesti ottaen Ryuk aloittaa liikkumalla sivusuunnassa verkossa tai sen käynnistää jokin toinen haittaohjelma, kuten tai , jotka etuoikeuksien laajentumisen yhteydessä siirtävät nämä korotetut oikeudet kiristysohjelmalle.
Etukäteen, toteutusprosessin johdantona, näemme hänen suorittavan prosessin Tekijä itse, mikä tarkoittaa, että käyttöoikeustunnuksen suojaussisältö välitetään striimiin, josta se noudetaan välittömästi GetCurrentThread.

Kuva 25: ImpersonateSelf-funktion kutsuminen
Sitten näemme, että se liittää käyttöoikeustunnuksen työnkulkuun. Näemme myös, että yksi lipuista on Haluttu käyttöoikeus, jota voidaan käyttää säikeen käyttöoikeuksien hallintaan. Tässä tapauksessa edx:n vastaanottaman arvon tulisi olla TOKEN_ALL_ACESS tai muuten - TOKEN_WRITE.


Kuva 26: Flow-tokenin luominen
Sitten hän käyttää SeDebugPrivilege ja tekee kutsun hakeakseen säikeen virheenkorjausoikeudet, minkä seurauksena määrittämällä PROSESSIN_KAIKKI_KÄYTTÖ, se pystyy käyttämään kaikkia vaadittuja prosesseja. Koska kiristysohjelmalla on jo valmiina oleva tietovirta, jäljellä on enää vain siirtyä viimeiseen vaiheeseen.

Kuva 27: SeDebugPrivilege-kutsu ja oikeuksien eskalointifunktio
Toisaalta meillä on LookupPrivilegeValueW, joka antaa meille tarvittavat tiedot oikeuksista, joita haluamme lisätä.

Kuva 28: Tietojen pyytäminen oikeuksista eskalointia varten
Toisaalta meillä on AdjustTokenPrivileges, jonka avulla voimme hankkia tarvittavat oikeudet suoratoistoomme. Tässä tapauksessa tärkeintä on Uusi osavaltio, jonka lippu myöntää etuoikeuksia.


Kuva 29: Tunnuksen käyttöoikeuksien määrittäminen
5.3 Toteutus
Tässä osiossa näytämme, miten esimerkki suorittaa tässä raportissa aiemmin mainitun käyttöönottoprosessin.
Toteutusprosessin ja eskaloinnin päätavoitteena on saada pääsy varjokopiotTätä varten sen on suoritettava säikeessä, jolla on korkeammat oikeudet kuin paikallisella käyttäjällä. Kun se saa nämä laajennetut oikeudet, se poistaa kopiot ja muokkaa muita prosesseja niin, että käyttöjärjestelmän aiempaan palautuspisteeseen palaaminen on mahdotonta.
Kuten tämän tyyppisille haittaohjelmille on tyypillistä, se käyttää hyötykuormaa injektion suorittamiseen. CreateToolHelp32Snapshot, joten se ottaa tilannekuvan parhaillaan käynnissä olevista prosesseista ja yrittää käyttää niitä käyttämällä OpenProcessKun se saa pääsyn prosessiin, se avaa myös tokenin, jossa on sen tiedot, prosessin parametrien hankkimiseksi.

Kuva 30: Prosessien hakeminen tietokoneelta
Voimme nähdä, kuinka se hakee dynaamisesti luettelon käynnissä olevista prosesseista 140002D9C-aliohjelmassa käyttämällä CreateToolhelp32Snapshot-komentoa. Kun se on hakenut ne, se käy läpi luettelon yrittäen avata jokaisen prosessin yksi kerrallaan OpenProcess-komennolla, kunnes se onnistuu. Tässä tapauksessa ensimmäinen prosessi, jonka se pystyi avaamaan, oli taskhost.exe.

Kuva 31: Proseduurin dynaaminen suorittaminen prosessin saamiseksi
Näemme, että se lukee myöhemmin prosessitokenin tiedot, joten se kutsuu OpenProcessToken parametrilla "20008"

Kuva 32: Prosessitunnisteen tietojen lukeminen
Se tarkistaa myös, että prosessi, johon se otetaan käyttöön, ei ole Csrss.exe, explorer.exe, lsaas.exe tai että hänellä on joukko oikeuksia NT-auktoriteetti.

Kuva 33: Poissuljetut prosessit
Voimme dynaamisesti nähdä, kuinka se ensin suorittaa tarkistuksen käyttämällä prosessitunnustietoja kohdassa 140002D9C selvittääkseen, onko tili, jonka oikeuksia käytetään prosessin suorittamiseen, se tili NT-VIRANOMAISUUS.

Riisi. 34: NT:n AUKTORITEETIN tarkistus
Ja myöhemmin, toimenpiteen ulkopuolella, hän tarkistaa, ettei se ole csrss.exe, explorer.exe tai lsaas.exe.

Riisi. 35: NT:n AUKTORITEETIN tarkistus
Kun se on ottanut tilannekuvan prosesseista, avannut ne ja varmistanut, ettei yhtäkään niistä ole poissuljettu, se on valmis kirjoittamaan prosessit muistiin injektoitavaksi.
Tätä varten se ensin varaa alueen muistista (VirtualAllocEx), kirjoittaa siihen (Kirjoitusprosessin muisti) ja luo virran (Luo RemoteThread). Näiden funktioiden kanssa työskentelyyn se käyttää valittujen prosessien PID-tunnuksia, jotka se on aiemmin hankkinut käyttämällä CreateToolhelp32Snapshot.

Kuva 36: Upotuskoodi
Tässä voimme dynaamisesti tarkkailla, kuinka se käyttää prosessin PID:tä funktion kutsumiseen. VirtuaaliallocEx.

Kuva 37: VirtualAllocEx-funktion kutsuminen
5.4 Salaus
Tässä osiossa tarkastelemme tämän esimerkin salausosuutta. Seuraavassa kuvassa näkyy kaksi aliohjelmaa nimeltä "LataaKirjasto_Koodausmerkkijono"ja"Koodaustoiminto", jotka vastaavat salausmenettelyn suorittamisesta.

Kuva 38: Salausmenettelyt
Alussa näemme, kuinka se lataa merkkijonon, jota käytetään myöhemmin kaiken tarvittavan deobfusointiin: tuonnit, DLL-tiedostot, komennot, tiedostot ja CSP:t.

Kuva 39: Deobfuskaation ketju
Seuraava kuva näyttää ensimmäisen tuonnin, jonka se deobfuskoi R4-rekisterissä, LoadLibraryTätä käytetään myöhemmin tarvittavien DLL-tiedostojen lataamiseen. Rekisterissä R12 näkyy myös toinen merkkijono, jota käytetään yhdessä edellisen merkkijonon kanssa deobfuskaation suorittamiseen.

Kuva 40: Dynaaminen deobfuskointi
Se jatkaa komentojen lataamista, joita se suorittaa myöhemmin varmuuskopioiden, palautuspisteiden ja vikasietoisten käynnistystilojen poistamiseksi käytöstä.

Kuva 41: Komentojen lataus
Sitten hän lataa sijainnin, johon hän pudottaa 3 tiedostoa: Windows.bat, suorita.sct и start.bat.




Kuva 42: Tiedostojen sijainnit
Näitä kolmea tiedostoa käytetään kunkin sijainnin oikeuksien tarkistamiseen. Jos vaadittuja oikeuksia ei ole saatavilla, Ryuk pysäyttää suorituksen.
Se jatkaa kolmen tiedoston rivien lataamista. Ensimmäinen, PURKAA_TIEDOT.html, sisältää tiedostojen palauttamiseen tarvittavat tiedot. Toinen, JULKINEN, sisältää RSA-julkisen avaimen.

Kuva 43: DECRYPT INFORMATION.html-rivi
Kolmanneksi, YKSILÖLLINEN_TUNNUS_EI_POISTA_, sisältää salatun avaimen, jota käytetään seuraavassa rutiinissa salauksen suorittamiseen.

Kuva 44: YKSILÖLLINEN TUNNUS ÄLÄ POISTA -rivi
Lopuksi se lataa tarvittavat kirjastot sekä tarvittavat tuonnit ja CSP:n (Microsoftin parannettu RSA и AES-kryptografinen tarjoaja).

Kuva 45: Kirjastojen lataaminen
Kun kaikki deobfuskointi on valmis, se suorittaa salaukseen tarvittavat toimenpiteet: luetteloi kaikki loogiset asemat, suorittaa edellisessä aliohjelmassa ladatut tiedostot, vahvistaa läsnäoloaan järjestelmässä, poistaa RyukReadMe.html-tiedoston, salaa, luetteloi kaikki verkkoasemat, vaihtaa havaittuihin laitteisiin ja salaa ne.
Kaikki alkaa lataamisesta"cmd.exe" ja julkisen RSA-avaimen tiedot.

Kuva 46: Salauksen valmistelu
Sitten se hakee kaikki loogiset asemat käyttämällä GetLogicalDrives ja poistaa käytöstä kaikki varmuuskopiot, palautuspisteet ja vikasietoiset käynnistystilat.

Kuva 47: Palautustyökalujen deaktivointi
Tämän jälkeen se vahvistaa läsnäoloaan järjestelmässä, kuten yllä näimme, ja kirjoittaa ensimmäisen tiedoston RyukReadMe.html в TEMP.

Kuva 48: Lunnasvaatimuksen julkaiseminen
Seuraavassa kuvassa näet, miten se luo tiedoston, lataa sisällön ja kirjoittaa sen:

Kuva 49: Tiedoston sisällön lataaminen ja kirjoittaminen
Jotta se voi suorittaa samat toiminnot kaikilla laitteilla, se käyttää
"icacls.exe-tiedosto", kuten yllä osoitimme.

Kuva 50: icalcls.exe-tiedoston käyttö
Lopuksi se alkaa salata tiedostoja, pois lukien *.exe- ja *.dll-tiedostot, järjestelmätiedostot ja muut salatulla valkoisella listalla määritetyt sijainnit. Tätä varten se käyttää tuontia: CryptAcquireContextW (jos AES:n ja RSA:n käyttö on aiheellista) KryptinDeriveKey, KryptinGenKey, KryptaTuhoaAvain jne. Yritetään myös laajentaa sen toimintaa löydettyihin verkkolaitteisiin WNetEnumResourceW:n avulla ja sitten salata ne.

Kuva 51: Järjestelmätiedostojen salaaminen
6. Tuonti ja vastaavat liput
Alla olevassa taulukossa luetellaan otoksen käyttämät olennaisimmat tuonnit ja liput:

7. KOK

viittaukset
- käyttäjätPublicrun.sct
- Käynnistä-valikkoOhjelmatKäynnistysstart.bat SovellustiedotRoamingMicrosoftWindowsKäynnistä
- Valikko-ohjelmat Käynnistysstart.bat

PandaLabsin virustorjuntalaboratorion asiantuntijat kokosivat teknisen raportin Ryuk-kiristysohjelmasta.
8. Linkit
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/, julkaisu 11.4.2019.
2. "Un virus de origen ruso ataca a fontoses empresas españolas." https: //elpais.com/tecnologia/2019/11/04/actualidad/1572897654_ 251312.html, Publicada el 04/11/2019.
3. ”VB2019-artikkeli: Shinigamin kosto: Ryuk-haittaohjelman pitkä häntä.” https://securelist.com/story-of-the-year-2019-cities-under-ransomware-siege/95456/, julkaistu 11.12.2019
4. ”Suurriistan metsästys Ryukilla: Toinen tuottoisa kohdennettu kiristysohjelma.” https://www.crowdstrike.com/blog/big-game-hunting-with-ryuk-another-lucrative-targeted-ransomware/, Julkaistu 1.10.2019.
5. ”VB2019-tutkimus: Shinigamin kosto: Ryuk-haittaohjelman pitkä häntä.” https://www.virusbulletin.com/virusbulletin/2019/10/vb2019-paper-shinigamis-revenge-long-tail-r
Lähde: will.com
