Angler Exploit Kit – Toiminta kärjessä

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

Angler

Exploit

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

Ohjelmistot

VMWare-, VirtualBox- ja Parallels-ohjelmistojen havaitseminen sekä Fiddler-verkkoselainten debuggausvälityspalvelin

Hyökkäyspakkaus

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ä

Rutiini

Purkurutiini muotoiltuna ja kommentoituna

Hyökkäys

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

Malware

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

Salaus

Monivaiheinen Shellcode

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.

API

Shellcode ratkaisee API:t, kuten kernel32.dll ja wininet.dll

API

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.

Vastaa

Sähköpostiosoitettasi ei julkaista.