Kuten lupasimme eräässä aiemmassa blogikirjoituksessamme exploit-paketeista (Nuclear EK), aiomme tarkastella Angler Exploit Kitiä syvällisemmin. Angler EK on mahdollisesti kehittynein exploit-kitti, jota kyberrikolliset tällä hetkellä käyttävät. Se on ollut edelläkävijä ratkaisuissa, joita muut exploit-kitit alkoivat käyttää myöhemmin, kuten virustorjunnan havaitsemisessa ja salatuissa dropper-tiedostoissa. Lisäksi Angler on yleensä nopein integroimaan uusimmat nollapäivät, kuten Adobe Flashin nollapäivän (CVE-2015-0311) muutama viikko sitten, ja se käyttää huomattavan ainutlaatuista hämäystä. Lopuksi Angler ajaa pudotetun haittaohjelman muistista ilman, että sen tarvitsee koskaan kirjoittaa kiintolevylle. Tämä hyväksikäyttökokoonpanojen joukossa ainutlaatuinen tekniikka tekee perinteisten virustorjuntatekniikoiden havaitsemisen äärimmäisen vaikeaksi, sillä ne luottavat tiedostojärjestelmän skannaukseen.
Vaikka Angler on nykypäivän uhkakuvien kehittynein exploit kit, Websensen asiakkaat on suojattu tältä uhalta ACE:llä, Advanced Classification Engine -toiminnolla, seuraavissa vaiheissa:
- Vaihe 2 (houkutuskeino) – ACE:llä on havainto vaarantuneista verkkosivustoista.
- Vaihe 3 (Uudelleenohjaus) – ACE:llä on havainto injektoidusta koodista, joka ohjaa käyttäjän exploit-sivulle.
- Vaihe 4 (Exploit Kit) – ACE:llä on havainto haitallisesta koodista, jolla yritetään toteuttaa tämä kyberhyökkäys.
- Stage 5 (Dropper Files) – ACE:lla on havainto tähän hyökkäykseen liittyvistä binääritiedostoista
Obfuscation
Anglerin laskeutumissivu koostuu neljästä perusosasta. Ensinnäkin siellä on näkyvissä jonkin verran englanninkielistä tekstiä, jonka avulla exploit kitin uhri saadaan uskomaan, että hän on selaillut lailliselle sivulle. Toiseksi siinä on erilaisia deobfuskurointirutiineja varsinaisten haittaohjelmakomentosarjojen deobfuskuroimiseksi. Nämä skriptit sijaitsevat p-luokan tunnisteissa, ja ne on koodattu base64-koodilla. Base64-merkkijonojen purkaminen paljastaa varsinaisen peitetyn exploit kit -koodin. Lopuksi aloitussivu sisältää useita salattuja merkkijonoja, jotka sisältävät erilaisia URL-osoitteita, jotka johtavat pakettiin sisältyviin eri hyväksikäyttöohjelmiin (Flash, Silverlight, Internet Explorer).
Näytteitä Angler-laskeutumissivulta
Deobfuscated Exploit-koodi
Kun laskeutumissivu on deobfuscattu, koodin todellinen luonne paljastuu. Angler, aivan kuten Nuclear ja monet muutkin exploit-kitit, käyttää hyvin yksinkertaista toisen kerroksen peittämistä tehdäkseen tietoturvatuotteiden havaitsemisen entistäkin vaikeammaksi.
Se käyttää myös virustorjunnan havaitsemisen lisäksi erilaisten virtualisointiratkaisujen (VMWare, VirtualBox, Parallels) sekä tietoturvatutkijoiden laajasti käyttämän Fiddler-nimisen web-debuggausproxyn havaitsemiseen. Näiden toimenpiteiden toteuttaminen tekee tämän exploit-kitin havaitsemisesta ja tutkimisesta luonnossa hyvin vaikeaa, sillä useimmat tietoturvatutkijat tukeutuvat usein voimakkaasti näihin työkaluihin.
Erilaisten .sys- ja .dll-tiedostojen havaitseminen, jotka kuuluvat AV- ja virtualisointiohjelmistoihin
VMWare-, VirtualBox- ja Parallels-ohjelmistojen havaitseminen sekä Fiddler-verkkoselainten debuggausvälityspalvelin
Anglersin ainutlaatuisin piirre on näiden salattujen URL-verkkosoiteosoitteiden (URL-tietokantojen) käyttäminen. Se käyttää yksinkertaista transpositioon perustuvaa salausmenetelmää (maallikon sanoin: kirjainten sekoittamista) näiden tietojen salaamiseen ja purkamiseen.
Purkurutiini on upotettu exploit-paketin peitettyyn osaan.
Purkurutiini sellaisena kuin se löytyy kitistä
Purkurutiini muotoiltuna ja kommentoituna
Käytämme hyvin yksinkertaista esimerkkiä havainnollistaaksemme, miten purku toimii. Oletetaan, että salattu tekstimme (salattu tieto) on ”TEER CSURH TO PLTAOEL IX TP” ja salauksen purkuavaimemme on ”OBFUSCATE”. Angler ottaa avaimen kirjainten aakkosjärjestyksen ja järjestää salakirjoitustekstin uudelleen sen perusteella. Esimerkiksi:
OBFUSCATE → 6,2,5,9,7,3,1,8,4
Näin saamme salakirjoitustekstin kirjainten järjestyksen. Tämän avulla voimme helposti purkaa salauksen järjestämällä kirjaimet uudelleen.
Esimerkki salauksen purkamisesta
Ja lopuksi puretusta merkkijonosta poistetaan välilyönnit . On selvää, että tämä on äärimmäisen alkeellinen salausmuoto, ja se olisi erittäin helppo murtaa jopa ilman avainta, jos (kuten yllä olevassa esimerkissä) selkoteksti koostuisi todellisista sanoista. Angler käyttää kuitenkin hyvin satunnaistettuja URL-osoitteita, joten tällainen salaus on enemmän kuin riittävä piilottamaan näiden merkkijonojen todellisen luonteen ja todelliset URL-polut erilaisilta tietoturvatuotteilta.
Loppuosa deobfuscoidusta koodista noudattaa tavanomaisia exploit-kitin malleja: siinä on erilaisia lisäosien havaitsemis- ja versiotarkistusrutiineja, joiden avulla exploit-kitti ”tietää”, mikä(t) exploit(t) on kohdistettava kohteeseen. On myös melko monta shellcode builder rutiinia, koska Angler käyttää monivaiheista shellcodea, jossa eri vaiheet koodataan ja dekoodataan edellisten vaiheiden avulla. Se sisältää myös kovakoodatun salaus-/purkuavaimen dropperitiedostoa varten.
Hyötykuorman salausavain
Monivaiheinen Shellcode
Dropperi
Jos hyväksikäyttö onnistuu, Anglerin hyötykuorma pudotetaan uhrin järjestelmään. Hyötykuorman kulkiessa verkon läpi se on edelleen salattu ja se puretaan myöhemmin loppuvaiheen shellcodella. Tätä tekniikkaa käytetään, jotta perinteiset tunkeutumisen havaitsemisjärjestelmät (IDS) eivät pysty havaitsemaan haitallista pudottajaa. Kuten aiemmin mainittiin, Angler käyttää ”tiedostottomia” droppereita, mikä tarkoittaa, että ne ajetaan suoraan muistista. Anglerin käyttämä dropperi on nimeltään Bedep, joka on itse asiassa vain latausohjelma – eli se ei sinänsä ole haitallinen, mutta sitä käytetään erilaisten haittaohjelmien lataamiseen ja suorittamiseen.
Hyötykuorma koostuu shellkoodin ja Bedepin DLL:n yhdistelmästä. Jos hyötykuorman ensimmäiset tavut ovat ”909090” (NOPs eli No Operations x86-kokoonpanossa), DLL ladataan muistista, muuten se kirjoitetaan levylle kuten tavallinen dropperitiedosto. Shellcode on vastuussa DLL:n suorittamisesta muistista.
Shellcode ratkaisee API:t, kuten kernel32.dll ja wininet.dll
Yhteenveto
Angler Exploit Kit on epäilemättä yksi vaarallisimmista riistakoodeista, joita nykyään luonnossa esiintyy. Sen arsenaalissa on erilaisia tekniikoita perinteisten havaitsemismenetelmien päihittämiseksi, kuten:
- Unique Obfuscation
- Havaitsee virustorjunta-/virtualisointiohjelmistot
- Kryptattu hyötykuorma
- Tiedostottomat tartunnat
Sen lisäksi Angler omaksuu usein ensimmäisinä käyttöönsä viimeisimmät hyväksikäyttökohteet, joihin kuuluu myös nollapäiviä aika ajoin. Anglerin jatkuvasti kehittyvä luonne korostaa myös tarvetta tietoturvaratkaisuille, jotka tarjoavat suojaa koko tappoketjussa sen sijaan, että keskityttäisiin vain sen yhteen vaiheeseen.