Seuraavassa blogikirjoituksessa esitellään Vaihtoehtoisen tietovirran käsite ja se, miten sitä on käytetty luonnossa sekä aiemmin että nykyään: tekniikkana, jota käytetään haitallisen hyötykuorman piilottamiseen tiedostojärjestelmään. Vaikka sitä voidaan pitää vanhana tekniikkana, se on edelleen ajankohtainen ja yleinen luonnossa.
Mikä on vaihtoehtoinen tietovirta?
Vaihtoehtoinen tietovirta (ADS, Alternate Data Stream) on NTFS-tiedostojärjestelmän (Windowsin pääasiallinen tiedostojärjestelmäformaatti) kyky tallentaa erilaisia tietovirtoja tiedoston normaalisti käyttämän oletusvirran lisäksi. Kun tämä ominaisuus luotiin, sen päätarkoitus oli tarjota tuki macOS:n hierarkkiselle tiedostojärjestelmälle (Hierarchical File System, HFS).
NTFS-tiedostojärjestelmä sisältää tiedostoja, joilla on attribuutteja. Soveltamisalamme kannalta olennainen attribuutti on $DATA-attribuutti, jota käytetään tiedoston tietovirtojen tallentamiseen.
Viime aikoina oli yleistä tallentaa haitallista hyötykuormaa laillisen tiedoston ADS:n sisään. Nykyään monet tietoturvaratkaisut kuitenkin havaitsevat ja tutkivat ADS:t. Näytämme kuitenkin tässä kirjoituksessa, että ADS:ää voidaan edelleen käyttää hyötykuormien suorittamiseen samalla kun se on piilossa käyttäjältä sekä erilaisilta tietoturvatuotteilta.
Tämässä artikkelissa esiteltyjen käsitteiden yksinkertaistamiseksi kaikki esimerkit perustuvat Windowsin natiiveihin työkaluihin.
AdS:n käyttö
Vanhoina vanhoina hyvinä päivinä Windows Vistan vaihtoehtoinen tietovirta (Alternate Data Streams, ADS) oli haittaohjelmien kehittäjille yleinen tapa piilottaa haitallista koodiaan. Vaihtoehtoista tietovirtaa käytettiin tehokkaasti hänen läsnäolonsa haitallisten korruptoivien tiedostojen puristamalla se laillisen tiedoston sisään. Laittamalla haittaohjelmat vaihtoehtoiseen tietovirtaan Windows-tiedosto sisältäisi tietoja ja ohjeita laillisille tiedostoille, mutta myös haitalliselle tiedostolle. Käyttääkseen haitallista koodia, jonka hakkeri on tallettanut vaihtoehtoiseen tietovirtaan, hän haluaisi luoda symlinkin mklink-komennolla. Tämä edellyttää kuitenkin, että koneella on järjestelmänvalvojan oikeudet. Ottaen huomioon, että käyttäjän normaali käyttäytyminen ei edellytä ylläpitäjänä toimimisen suorittamista, hakkereilla on tapana lähestyä kohdettaan olettaen, että he laskeutuvat koneelle, jolla ei ole ylläpitäjän oikeuksia.
Luettelu – $DATA:n alla oleva valtavirta on tyhjä merkkijono (siis: ””, jota kutsutaan myös nimettömäksi virraksi). Tämä virta sisältää tiedoston tavallisen virran.
Seuraava esimerkki tiedoston tietovirtojen luettelemisesta PowerShellin avulla:
Voit myös käyttää dir /R:ää tai SysInternals\streams.exe:tä tiedoston ADS:n luettelemiseen / rekursiivisesti hakemistoon
Kuten yllä näkyy, tiedosto sisältää vain nimeämättömän virran.
Joskus voit kuitenkin löytää ADS:n laillisen tiedoston sisältä, sillä tälle tekniikalle on useita laillisia käyttötarkoituksia.
Alhaalla on esimerkki tiedoston tietovirtojen luettelemisesta ADS:llä PowerShellin avulla:
Tämä on myös esimerkki ADS:n laillisesta käyttötarkoituksesta: Zone. Identifier. Tämä kenttä esittää tiedoston lähteen luotettavuustason. Tämä on selainten käyttö tallentaa Sen macOS:n vastaava on ”karanteenibitti”.
Luonti – Vaikka ADS:lle voi olla laillisia käyttötarkoituksia, ADS:ää voidaan käyttää myös haitallisen hyötykuorman tallentamiseen. Hyökkääjät saattavat pitää tätä menetelmää parempana kuin hyötykuorman tallentamista nimeämättömään streamiin, koska sen läsnäolo jää käyttäjältä piiloon – siihen ei pääse käsiksi explorer.exe:stä (ja tiedoston näytetty koko ei sisällä ADS:n kokoa). Lisäksi se ei näy oletusarvoisesti dir-komennolla (/R-lippu kuitenkin näyttää ADS:n, ja sitä sovelletaan Windows Vistasta alkaen).
AdS:n luominen on melko yksinkertaista.
Esimerkki ADS:n luomisesta type-komennolla:
Viimeistään Windows XP:ssä ADS:n saattoi ajaa start-komennolla. Myöhemmistä Windows-versioista lähtien se ei kuitenkaan ole enää mahdollista.
Datan käyttö – ADS:n väärinkäyttö on edelleen ajankohtainen uhka, sillä ADS:n lukemiseen ja suorittamiseen on useita tapoja.
Ensimmäinen käyttötapa on tietojen käyttö. ADS:n sisältöön pääsee helposti käsiksi. Seuraavassa on esimerkki PowerShellin avulla:
Toteutus – Tietojen lukemisen lisäksi niitä on mahdollista myös suorittaa. Vaikka ADS:ää ei ole mahdollista suorittaa komennolla ”start”, se voidaan kuitenkin suorittaa muista ohjelmista. Esimerkiksi WMI:llä:
”wmic process call creates” – suorittaa prosessin WMI:llä. Se voi myös suorittaa ADS:n. Esimerkki:
On olemassa muitakin Windowsin laillisia natiiveja työkaluja, joita voidaan käyttää suoraan ADS:n suorittamiseen. Esimerkiksi DLL voidaan tallentaa ADS:n sisälle ja DllMain voi kutsua sitä rundll32.exe:n kautta; myös HTA voidaan tallentaa ADS:n sisälle ja kutsua sitä mshta.exe:n kautta ja niin edelleen.
Pahansuopa ADS:ää väärinkäyttävät kampanjat
Voi vaikuttaa siltä, että Windows on onnistunut käsittelemään ADS:n sisällä olevat uhat. Luonnossa on kuitenkin monia haittaohjelmaperheitä, jotka edelleen väärinkäyttävät ADS:iä.
Toinen esimerkki vuodelta 2017 on BitPaymer, lunnasohjelma, joka käytti hyökkäyssekvenssissä kahta ADS:ää lisätäkseen toimintaan salamyhkäisyyttä ja peittääkseen haitallisen toiminnan. Ensimmäinen ADS luotiin ”net view”-komennon suorittamiseksi verkkojakojen saamiseksi, minkä jälkeen toinen ADS sekoittaa levyn ja verkkojakojen tiedot.
Johtopäätöksenä voidaan todeta, että ADS:ien väärinkäyttö on tekniikka, joka on edelleen ajankohtainen nykypäivänä. Viimeisimmät Windows-versiot ovatkin rajoittaneet ja koventaneet ADS:n toimintoja. Kuitenkin Windows-työkalujen, kuten Power-Shellin ja WMI:n, peruskäytön tai Windowsin komentorivin tuntemuksen avulla uhkaajat voivat jatkaa ja hyödyntää ADS:ää hyökkäyksissään. Mielenkiintoista on, että viimeaikaisia ADS:ää käyttäviä kampanjoita pidetään melko kehittyneinä, ja niissä pyritään minimoimaan levyllä olevien pysyvien tiedostojen käyttö.