Ryuk on yksi tunnetuimmista kiristyshaittaohjelmista viime vuosina. Siitä lähtien, kun se ilmestyi ensimmäisen kerran kesällä 2018, se on kerännyt
1. Yleistä tietoa
Tämä asiakirja sisältää analyysin Ryuk ransomware -versiosta sekä latausohjelmasta, joka vastaa haittaohjelman lataamisesta järjestelmään.
Ryuk-lunnasohjelma ilmestyi ensimmäisen kerran kesällä 2018. Yksi Ryukin ja muiden kiristysohjelmien eroista on se, että se on suunnattu hyökkäämään yritysympäristöjä vastaan.
Vuoden 2019 puolivälissä kyberrikollisryhmät hyökkäsivät valtavaan määrään espanjalaisia yrityksiä käyttämällä tätä kiristysohjelmaa.
Riisi. 1: Ote El Confidencialista Ryuk ransomware -hyökkäyksestä [1]
Riisi. 2: Ote El Paísista Ryuk-lunnasohjelmalla tehdystä hyökkäyksestä [2]
Tänä vuonna Ryuk on hyökännyt useisiin yrityksiin eri maissa. Kuten alla olevista kuvista näkyy, Saksa, Kiina, Algeria ja Intia kärsivät eniten.
Vertaamalla kyberhyökkäysten määrää voimme nähdä, että Ryuk on vaikuttanut miljooniin käyttäjiin ja vaarantanut valtavan määrän dataa, mikä on johtanut vakaviin taloudellisiin menetyksiin.
Riisi. 3: Kuva Ryukin maailmanlaajuisesta toiminnasta.
Riisi. 4: 16 maata, joihin Ryuk vaikuttaa eniten
Riisi. 5: Ryuk-lunnasohjelman hyökkäämien käyttäjien määrä (miljoonaa)
Tällaisten uhkien tavanomaisen toimintaperiaatteen mukaan tämä kiristysohjelma näyttää salauksen päätyttyä uhrille lunnaita koskevan ilmoituksen, joka on maksettava bitcoineina määritettyyn osoitteeseen pääsyn palauttamiseksi salattuihin tiedostoihin.
Tämä haittaohjelma on muuttunut sen ensimmäisen käyttöönoton jälkeen.
Tässä asiakirjassa analysoitu tämän uhan muunnelma löydettiin hyökkäysyrityksen aikana tammikuussa 2020.
Monimutkaisuutensa vuoksi tämä haittaohjelma liitetään usein järjestäytyneisiin kyberrikollisryhmiin, joita kutsutaan myös APT-ryhmiksi.
Osa Ryuk-koodista on huomattavan samankaltainen toisen tunnetun kiristysohjelman, Hermesin, koodin ja rakenteen kanssa, jonka kanssa niillä on useita identtisiä toimintoja. Tästä syystä Ryuk yhdistettiin alun perin pohjoiskorealaiseen Lazarus-ryhmään, jonka epäiltiin tuolloin olevan Hermes-lunnasohjelman takana.
CrowdStriken Falcon X -palvelu totesi myöhemmin, että Ryukin loi itse asiassa WIZARD SPIDER -ryhmä [4].
Tämän oletuksen tueksi on olemassa joitain todisteita. Ensinnäkin tätä kiristysohjelmaa mainostettiin verkkosivustolla exploit.in, joka on tunnettu venäläinen haittaohjelmamarkkinapaikka ja joka on aiemmin liitetty joihinkin venäläisiin APT-ryhmiin.
Tämä tosiasia sulkee pois teorian, jonka mukaan Ryukin olisi voinut kehittää Lazarus APT -ryhmä, koska se ei sovi ryhmän toimintatapaan.
Lisäksi Ryukia mainostettiin kiristysohjelmaksi, joka ei toimi Venäjän, Ukrainan ja Valko-Venäjän järjestelmissä. Tämän käyttäytymisen määrittää joissakin Ryuk-versioissa oleva ominaisuus, jossa se tarkistaa sen järjestelmän kielen, jossa kiristysohjelma on käynnissä, ja estää sen toiminnan, jos järjestelmässä on venäjän, ukrainan tai valkovenäläinen kieli. Lopuksi WIZARD SPIDER -tiimin hakkeroiman koneen asiantuntija-analyysi paljasti useita "esineitä", joita väitettiin käytetty Ryukin kehittämiseen Hermes-lunnasohjelman muunnelmana.
Toisaalta asiantuntijat Gabriela Nicolao ja Luciano Martins ehdottivat, että kiristysohjelman on saattanut kehittää APT-ryhmä CryptoTech [5].
Tämä johtuu siitä, että useita kuukausia ennen Ryukin ilmestymistä tämä ryhmä julkaisi saman sivuston foorumille tiedon, että he olivat kehittäneet uuden version Hermes-lunnasohjelmasta.
Useat foorumin käyttäjät kyseenalaistivat, loiko CryptoTech todella Ryukin. Sitten ryhmä puolusti itseään ja totesi, että sillä oli todisteita siitä, että he olivat kehittäneet 100 % kiristysohjelmasta.
2. Ominaisuudet
Aloitamme käynnistyslataimella, jonka tehtävänä on tunnistaa järjestelmä, jossa se on, jotta Ryuk ransomwaren "oikea" versio voidaan käynnistää.
Käynnistyslataimen hash on seuraava:
MD5 A73130B0E379A989CBA3D695A157A495
SHA256 EF231EE1A2481B7E627921468E79BB4369CCFAEB19A575748DD2B664ABC4F469
Yksi tämän latausohjelman ominaisuuksista on, että se ei sisällä metatietoja, ts. Tämän haittaohjelman luojat eivät ole sisällyttäneet siihen mitään tietoja.
Joskus ne sisältävät virheellisiä tietoja huijatakseen käyttäjän ajattelemaan, että he käyttävät laillista sovellusta. Kuitenkin, kuten näemme myöhemmin, jos tartuntaan ei liity käyttäjän vuorovaikutusta (kuten tämän kiristysohjelman tapauksessa), hyökkääjät eivät pidä metatietojen käyttöä tarpeellisena.
Riisi. 6: Esimerkki metatiedot
Näyte koottiin 32-bittiseen muotoon, jotta se voi toimia sekä 32- että 64-bittisissä järjestelmissä.
3. Läpäisyvektori
Ryukia lataava ja ajava näyte tuli järjestelmäämme etäyhteyden kautta, ja pääsyparametrit saatiin alustavan RDP-hyökkäyksen kautta.
Riisi. 7: Hyökkäysrekisteri
Hyökkääjä onnistui kirjautumaan järjestelmään etänä. Sen jälkeen hän loi suoritettavan tiedoston näytteemme kanssa.
Virustorjuntaratkaisu esti tämän suoritettavan tiedoston ennen suorittamista.
Riisi. 8: Kuviolukko
Riisi. 9: Kuviolukko
Kun haitallinen tiedosto estettiin, hyökkääjä yritti ladata suoritettavan tiedoston salatun version, joka myös estettiin.
Riisi. 10: Joukko näytteitä, joita hyökkääjä yritti ajaa
Lopulta hän yritti ladata toisen haitallisen tiedoston salatun konsolin kautta
PowerShell ohittaa virussuojauksen. Mutta hän oli myös estetty.
Riisi. 11: PowerShell, jossa haitallinen sisältö on estetty
Riisi. 12: PowerShell, jossa haitallinen sisältö on estetty
4. Kuormaaja
Kun se suoritetaan, se kirjoittaa ReadMe-tiedoston kansioon % Temp%, mikä on tyypillistä Ryukille. Tämä tiedosto on lunnaat, joka sisältää sähköpostiosoitteen protonmail-verkkotunnuksessa, joka on melko yleinen tässä haittaohjelmaperheessä: [sähköposti suojattu]
Riisi. 13: Ransom Demand
Kun käynnistyslatain on käynnissä, voit nähdä, että se käynnistää useita suoritettavia tiedostoja satunnaisilla nimillä. Ne tallennetaan piilotettuun kansioon JULKINEN, mutta jos vaihtoehto ei ole aktiivinen käyttöjärjestelmässä "Näytä piilotetut tiedostot ja kansiot", niin ne pysyvät piilossa. Lisäksi nämä tiedostot ovat 64-bittisiä, toisin kuin emotiedosto, joka on 32-bittinen.
Riisi. 14: Näytteen käynnistämät suoritettavat tiedostot
Kuten yllä olevasta kuvasta näet, Ryuk käynnistää icacls.exe-tiedoston, jota käytetään kaikkien ACL-luetteloiden (Access Control lists) muokkaamiseen, mikä varmistaa lippujen pääsyn ja muokkaamisen.
Se saa kaikkien käyttäjien täydet käyttöoikeudet kaikkiin laitteen tiedostoihin (/T) virheistä (/C) riippumatta ja ilman viestejä (/Q).
Riisi. 15: Näytteen käynnistämän icacls.exe-tiedoston suoritusparametrit
On tärkeää huomata, että Ryuk tarkistaa, mikä Windows-versio sinulla on käytössä. Tätä varten hän
suorittaa versiontarkistuksen käyttämällä GetVersionExW, jossa se tarkistaa lipun arvon lpVersionInformationosoittaa, onko nykyinen Windowsin versio uudempi kuin Windows XP.
Riippuen siitä, käytätkö Windows XP:tä uudempaa versiota, käynnistyslatain kirjoittaa paikalliseen käyttäjäkansioon - tässä tapauksessa kansioon %Julkinen%.
Riisi. 17: Käyttöjärjestelmän version tarkistaminen
Kirjoitettava tiedosto on Ryuk. Sitten se suorittaa sen välittäen oman osoitteensa parametrina.
Riisi. 18: Suorita Ryuk ShellExecuten kautta
Ensimmäinen asia, jonka Ryuk tekee, on vastaanottaa syöttöparametrit. Tällä kertaa on kaksi syöttöparametria (itse suoritettava tiedosto ja dropper-osoite), joita käytetään poistamaan sen omia jälkiä.
Riisi. 19: Prosessin luominen
Voit myös nähdä, että kun se on suorittanut suoritettavat tiedostonsa, se poistaa itsensä, jolloin se ei jätä jälkeäkään omasta läsnäolostaan kansioon, jossa se suoritettiin.
Riisi. 20: Tiedoston poistaminen
5. RYUK
5.1 Läsnäolo
Ryuk, kuten muut haittaohjelmat, yrittää pysyä järjestelmässä mahdollisimman pitkään. Kuten yllä näkyy, yksi tapa saavuttaa tämä tavoite on luoda ja suorittaa suoritettavia tiedostoja salaa. Tätä varten yleisin käytäntö on muuttaa rekisteriavainta CurrentVersionRun.
Tässä tapauksessa voit nähdä, että tätä tarkoitusta varten ensimmäinen tiedosto käynnistetään VWjRF.exe
(tiedoston nimi luodaan satunnaisesti) käynnistyy cmd.exe.
Riisi. 21: Suoritetaan VWjRF.exe
Anna sitten komento JUOSTA nimellä "svchos". Jos siis haluat tarkistaa rekisteriavaimet milloin tahansa, voit helposti ohittaa tämän muutoksen, koska tämä nimi on samankaltainen kuin svchost. Tämän avaimen ansiosta Ryuk varmistaa sen läsnäolon järjestelmässä. Jos järjestelmä ei ole on vielä saanut tartunnan, niin kun käynnistät järjestelmän uudelleen, suoritettava tiedosto yrittää uudelleen.
Riisi. 22: Esimerkki varmistaa läsnäolon rekisteriavaimessa
Voimme myös nähdä, että tämä suoritettava pysäyttää kaksi palvelua:
"audioendpointbuilder", joka nimensä mukaisesti vastaa järjestelmän ääntä,
Riisi. 23: Näyte pysäyttää järjestelmän äänipalvelun
и Samss, joka on tilinhallintapalvelu. Näiden kahden palvelun lopettaminen on Ryukille ominaista. Tässä tapauksessa, jos järjestelmä on kytketty SIEM-järjestelmään, kiristysohjelma yrittää lopettaa lähettämisen
Riisi. 24: Näyte pysäyttää Samss-palvelun
5.2 Etuoikeudet
Yleisesti ottaen Ryuk alkaa liikkumalla sivusuunnassa verkossa tai sen käynnistää jokin muu haittaohjelma, kuten
Ennen toteutusprosessia näemme hänen suorittavan prosessin Esittele itseäsi, mikä tarkoittaa, että pääsytunnuksen suojaussisältö välitetään streamiin, josta se haetaan välittömästi Hanki CurrentThread.
Riisi. 25: Soita ImpersonateSelfille
Sitten näemme, että se yhdistää pääsytunnuksen säiettä. Näemme myös, että yksi lipuista on Haluttu pääsy, jota voidaan käyttää säikeen pääsyn hallitsemiseen. Tässä tapauksessa edx:n vastaanottaman arvon pitäisi olla TOKEN_ALL_ACESS tai muuten - TOKEN_WRITE.
Riisi. 26: Flow Tokenin luominen
Sitten hän käyttää SeDebugPrivilege ja soittaa saadakseen virheenkorjausoikeudet ketjuun, mikä johtaa PROCESS_ALL_ACCESS, hän voi käyttää mitä tahansa vaadittua prosessia. Nyt, kun otetaan huomioon, että salaajalla on jo valmis stream, jäljellä on vain edetä viimeiseen vaiheeseen.
Riisi. 27: Kutsutaan SeDebugPrivilege- ja Privilege Escalation Function -toimintoa
Toisaalta meillä on LookupPrivilegeValueW, joka antaa meille tarvittavat tiedot oikeuksista, joita haluamme lisätä.
Riisi. 28: Pyydä tietoja oikeuksista oikeuksien eskalointia varten
Toisaalta meillä on SäädäToken-oikeuksia, jonka avulla voimme hankkia tarvittavat oikeudet streamiimme. Tässä tapauksessa tärkeintä on NewState, jonka lippu antaa oikeudet.
Riisi. 29: Tokenin käyttöoikeuksien määrittäminen
5.3 Toteutus
Tässä osiossa näytämme, kuinka näyte suorittaa tässä raportissa aiemmin mainitun toteutusprosessin.
Toteutusprosessin ja eskaloinnin päätavoite on päästä käsiksi varjokopiot. Tätä varten hänen on työskenneltävä säikeen kanssa, jonka oikeudet ovat korkeammat kuin paikallisella käyttäjällä. Kun se saa tällaiset korotetut oikeudet, se poistaa kopiot ja tekee muutoksia muihin prosesseihin, jotta käyttöjärjestelmän aikaisempaan palautuspisteeseen ei voida palata.
Kuten tämän tyyppisille haittaohjelmille on tyypillistä, se käyttää CreateToolHelp32Snapshotjoten se ottaa tilannekuvan parhaillaan käynnissä olevista prosesseista ja yrittää päästä näihin prosesseihin käyttämällä OpenProcess. Kun se pääsee käsiksi prosessiin, se avaa myös tunnuksen tiedoineen saadakseen prosessiparametrit.
Riisi. 30: Prosessien hakeminen tietokoneelta
Voimme dynaamisesti nähdä, kuinka se saa luettelon käynnissä olevista prosesseista rutiinissa 140002D9C käyttämällä CreateToolhelp32Snapshot-ohjelmaa. Saatuaan ne, hän käy luettelon läpi ja yrittää avata prosesseja yksitellen OpenProcessin avulla, kunnes onnistuu. Tässä tapauksessa ensimmäinen prosessi, jonka hän pystyi avaamaan, oli "taskhost.exe".
Riisi. 31: Suorita dynaamisesti prosessi saadaksesi prosessi
Voimme nähdä, että se lukee myöhemmin prosessitunnustiedot, joten se kutsuu OpenProcessToken parametrilla "20008"
Riisi. 32: Lue prosessitunnistetiedot
Se myös tarkistaa, että prosessi, johon se injektoidaan, ei ole sitä Csrss.exe, explorer.exe, lsaas.exe tai että hänellä on joukko oikeuksia NT viranomainen.
Riisi. 33: Poissuljetut prosessit
Voimme nähdä dynaamisesti, kuinka se ensin suorittaa tarkistuksen käyttämällä prosessitunnistetietoja 140002D9C selvittääkseen, onko tili, jonka oikeuksia käytetään prosessin suorittamiseen, tili NT-viranomainen.
Riisi. 34: NT AUTHORITY -tarkastus
Ja myöhemmin, menettelyn ulkopuolella, hän tarkistaa, ettei näin ole csrss.exe, explorer.exe tai lsaas.exe.
Riisi. 35: NT AUTHORITY -tarkastus
Kun hän on ottanut tilannekuvan prosesseista, avannut prosessit ja varmistanut, että yksikään niistä ei ole poissuljettu, hän on valmis kirjoittamaan muistiin prosessit, jotka ruiskutetaan.
Tätä varten se varaa ensin alueen muistiin (VirtualAllocEx), kirjoittaa siihen (WriteProcessmemory) ja luo säikeen (Luo RemoteThread). Näiden toimintojen kanssa työskentelyyn se käyttää valittujen prosessien PID:itä, jotka se on aiemmin hankkinut käyttämällä CreateToolhelp32Snapshot.
Riisi. 36: Upota koodi
Täällä voimme dynaamisesti tarkkailla, kuinka se käyttää prosessin PID:tä funktion kutsumiseen VirtualAllocEx.
Riisi. 37: Soita VirtualAllocEx
5.4 Salaus
Tässä osiossa tarkastelemme tämän näytteen salausosaa. Seuraavassa kuvassa näet kaksi aliohjelmaa nimeltä "LoadLibrary_EncodeString"ja"Encode_Func", jotka vastaavat salaustoimenpiteen suorittamisesta.
Riisi. 38: Salaustoimenpiteet
Alussa voimme nähdä, kuinka se lataa merkkijonon, jota käytetään myöhemmin kaiken tarvittavan deobfuskointiin: tuonnit, DLL:t, komennot, tiedostot ja CSP:t.
Riisi. 39: Deobfuskaatiopiiri
Seuraavassa kuvassa näkyy ensimmäinen tuonti, jonka se deobfuskoi rekisterissä R4. LoadLibrary. Tätä käytetään myöhemmin tarvittavien DLL-tiedostojen lataamiseen. Näemme myös toisen rivin rekisterissä R12, jota käytetään edellisen rivin kanssa deobfuskaatioon.
Riisi. 40: Dynaaminen deobfuskaatio
Se jatkaa myöhemmin suorittamien komentojen lataamista varmuuskopioiden, palautuspisteiden ja turvallisten käynnistystilojen poistamiseksi käytöstä.
Riisi. 41: Ladataan komentoja
Sitten se lataa paikan, johon se pudottaa 3 tiedostoa: Windows.bat, run.sct и start.bat.
Riisi. 42: Tiedostojen sijainnit
Näitä kolmea tiedostoa käytetään kunkin sijainnin oikeuksien tarkistamiseen. Jos vaaditut oikeudet eivät ole käytettävissä, Ryuk lopettaa suorituksen.
Se jatkaa kolmea tiedostoa vastaavien rivien lataamista. Ensimmäinen, DECRYPT_INFORMATION.html, sisältää tiedostojen palauttamiseen tarvittavia tietoja. Toinen, JULKINEN, sisältää julkisen RSA-avaimen.
Riisi. 43: Rivi DECRYPT INFORMATION.html
Kolmas, UNIQUE_ID_DO_NOT_REMOVE, sisältää salatun avaimen, jota käytetään seuraavassa rutiinissa salauksen suorittamiseen.
Riisi. 44: Rivi ERIKOISTUNNUS ÄLÄ POISTA
Lopuksi se lataa tarvittavat kirjastot sekä vaaditut tuonti- ja CSP:t (Microsoft Enhanced RSA и AES-salauksen toimittaja).
Riisi. 45: Ladataan kirjastoja
Kun kaikki deobfuskaatio on suoritettu, se jatkaa salauksen edellyttämien toimien suorittamista: kaikkien loogisten asemien luettelointi, edellisessä rutiinissa ladatun suorittaminen, läsnäolon vahvistaminen järjestelmässä, RyukReadMe.html-tiedoston heittäminen, salaus, kaikkien verkkoasemien luettelointi , siirtyminen havaittuihin laitteisiin ja niiden salaukseen.
Kaikki alkaa lataamisesta"cmd.exe" ja RSA:n julkisen avaimen tietueet.
Riisi. 46: Valmistaudutaan salaukseen
Sitten se saa kaikki loogiset asemat käyttöön Hanki LogicalDrives ja poistaa kaikki varmuuskopiot, palautuspisteet ja turvalliset käynnistystilat käytöstä.
Riisi. 47: Palautustyökalujen poistaminen käytöstä
Sen jälkeen se vahvistaa läsnäoloaan järjestelmässä, kuten näimme yllä, ja kirjoittaa ensimmäisen tiedoston RyukReadMe.html в TEMP.
Riisi. 48: Lunnaita koskevan ilmoituksen julkaiseminen
Seuraavassa kuvassa näet kuinka se luo tiedoston, lataa sisällön ja kirjoittaa sen:
Riisi. 49: Tiedoston sisällön lataaminen ja kirjoittaminen
Voidakseen suorittaa samat toiminnot kaikilla laitteilla, hän käyttää
"icacls.exe", kuten yllä osoitimme.
Riisi. 50: icalcls.exe:n käyttäminen
Ja lopuksi se alkaa salata tiedostoja paitsi "*.exe", "*.dll"-tiedostoja, järjestelmätiedostoja ja muita paikkoja, jotka on määritetty salatun sallittujen luettelon muodossa. Tätä varten se käyttää tuontia: CryptAcquireContextW (jos AES:n ja RSA:n käyttö on määritelty), CryptDeriveKey, CryptGenKey, CryptDestroyKey jne. Se yrittää myös laajentaa kattavuuttaan löydettyihin verkkolaitteisiin WNetEnumResourceW:n avulla ja sitten salata ne.
Riisi. 51: Järjestelmätiedostojen salaus
6. Tuonti ja vastaavat liput
Alla on taulukko, jossa luetellaan näytteen tärkeimmät tuontituotteet ja liput:
7. KOK
viittaukset
- usersPublicrun.sct
- Käynnistä MenuProgramsStartupstart.bat AppDataRoamingMicrosoftWindowsStart
- MenuProgramsStartupstart.bat
PandaLabsin virustorjuntalaboratorion asiantuntijat laativat teknisen raportin Ryuk-lunnasohjelmasta.
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 04.
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-paperi: Shinigamin kosto: Ryuk-haittaohjelman pitkä häntä." https://securelist.com/story-of-the-year-2019-cities-under-ransomware-siege/95456/, Publicada el 11 /12/2019
4. "Big Game Hunting with Ryuk: Another LucrativebTargeted Ransomware."https://www. crowdstrike.com/blog/big-game-hunting-with-ryuk-another-lucrative-targeted-ransomware/, julkaisu 10.
5. "VB2019-paperi: 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