Zlonamerna programska oprema SGX: kako zlobneži izkoriščajo novo Intelovo tehnologijo za druge namene od tistih, za katere je bila namenjena

Kot veste, je koda, ki se izvaja v enklavi, resno omejena v svoji funkcionalnosti. Ne more izvajati sistemskih klicev. Ne more izvajati V/I operacij. Ne pozna osnovnega naslova segmenta kode gostiteljske aplikacije. Ne more jmp ali klicati kode gostiteljske aplikacije. Nima pojma o strukturi naslovnega prostora, ki ureja gostiteljsko aplikacijo (na primer, katere strani so preslikane ali kakšni podatki se nahajajo na teh straneh). Od operacijskega sistema ne more zahtevati, da vanj preslika del pomnilnika gostiteljske aplikacije (na primer prek /proc/pid/maps). Naivni poskusi slepega branja poljubne pomnilniške regije gostiteljske aplikacije, da ne omenjamo poskusov pisanja, bodo prej ali slej (najverjetneje prvo) pripeljali do prisilne prekinitve programa enklave. To se zgodi vedno, ko je območje virtualnega naslovnega prostora, ki ga zahteva enklava, nedostopno za gostiteljsko aplikacijo.

Ali bo pisec virusov lahko uporabil enklave SGX za dosego svojih zlonamernih ciljev glede na tako kruto realnost?

– Hack za sondiranje naslovov, da bi ugotovili, ali jih je mogoče prebrati
– Hack za sondiranje naslovov za zapisljivost
– Vdor za preusmeritev nadzornega toka
– Kaj trije zgoraj našteti vdori dajo zlobnežu?
– Kako zlobnež uporablja te vdore za ustvarjanje ranzowari

Zlonamerna programska oprema SGX: kako zlobneži izkoriščajo novo Intelovo tehnologijo za druge namene od tistih, za katere je bila namenjena

Na podlagi vsega zgoraj navedenega je splošno sprejeto, da je enklava sposobna služiti samo gostiteljski aplikaciji in da enklava ne more izvajati lastne pobude, vključno z zlonamernimi. To pomeni, da enklave za pisce virusov nimajo praktične vrednosti. Ta prenagljena predpostavka je eden od razlogov, zakaj je zaščita SGX asimetrična: koda gostiteljske aplikacije ne more dostopati do pomnilnika enklave, medtem ko lahko koda enklave bere in piše na kateri koli naslov pomnilnika gostiteljske aplikacije.

Če bi torej zlonamerna koda enklave lahko izvajala poljubne sistemske klice v imenu gostiteljske aplikacije, izvajala poljubno kodo v njenem imenu, pregledovala pomnilnik gostiteljske aplikacije in v njem našla zlorabljive verige ROP, bi lahko prevzela popoln nadzor nad gostiteljsko aplikacijo, v prikrit način. Ne more samo ukrasti in šifrirati uporabniških datotek, temveč tudi delovati v imenu uporabnika. V njegovem imenu na primer pošiljajte e-poštna sporočila z lažnim predstavljanjem ali izvajajte napade DoS. Brez strahu pred celo najsodobnejšimi zaščitnimi mehanizmi, kot sta nalaganje kanarčkov in razkuževanje naslovov.

Pokazali vam bomo nekaj vdorov, ki jih napadalci uporabljajo za premagovanje zgoraj opisanih omejitev, da izkoristijo SGX za lastne zlonamerne namene: napadi ROP. Bodisi za izvajanje poljubne kode, prikrite kot proces gostiteljske aplikacije (podobno izdolbenju procesa, ki ga pogosto uporablja zlonamerna programska oprema), bodisi za prikrivanje že pripravljene zlonamerne programske opreme (da bi njeno zlonamerno programsko opremo rešili pred preganjanjem protivirusnih programov in drugih obrambnih mehanizmov).

Hack za sondiranje naslovov, da ugotovi, ali jih je mogoče prebrati

Ker enklava ne ve, kateri obsegi navideznega naslovnega prostora so dostopni gostiteljski aplikaciji, in ker se je enklava prisiljena končati, ko poskuša prebrati nedostopen naslov, se napadalec sooči z nalogo, da najde pot do napake. tolerantno skenirajte naslovni prostor. Poiščite način za preslikavo razpoložljivih virtualnih naslovov. Zlobnež to težavo reši z napačno uporabo Intelove tehnologije TSX. Uporablja enega od stranskih učinkov TSX: če je funkcija dostopa do pomnilnika postavljena v transakcijo TSX, potem TSX zatre izjeme, ki izhajajo iz dostopa do neveljavnih naslovov, ne da bi dosegel operacijski sistem. Če se poskusi dostopati do neveljavnega pomnilniškega naslova, se prekine samo trenutna transakcija, ne pa celoten program enklave. to. TSX omogoča enklavi varen dostop do katerega koli naslova znotraj transakcije – brez nevarnosti propada.

če navedeni naslov je na voljo gostiteljski aplikaciji je transakcija TSX največkrat uspešna. V redkih primerih lahko odpove zaradi zunanjih vplivov, kot so prekinitve (kot so prekinitve razporejevalnika), izbris predpomnilnika ali hkratno spreminjanje pomnilniške lokacije z več procesi. V teh redkih primerih TSX vrne kodo napake, ki nakazuje, da je napaka začasna. V teh primerih morate samo znova začeti transakcijo.

če navedeni naslov ni na voljo gostiteljsko aplikacijo, TSX zatre izjemo, ki se je zgodila (OS ni obveščen) in prekine transakcijo. Kodi enklave se vrne koda napake, da se lahko odzove na dejstvo, da je bila transakcija preklicana. Te kode napak kažejo, da zadevni naslov ni na voljo gostiteljski aplikaciji.

Zlonamerna programska oprema SGX: kako zlobneži izkoriščajo novo Intelovo tehnologijo za druge namene od tistih, za katere je bila namenjena

Zlonamerna programska oprema SGX: kako zlobneži izkoriščajo novo Intelovo tehnologijo za druge namene od tistih, za katere je bila namenjena

Ta manipulacija TSX znotraj enklave ima lepo lastnost za zlobneža: ker večina števcev zmogljivosti strojne opreme ni posodobljena v času izvajanja kode enklave, je nemogoče slediti transakcijam TSX, izvedenim znotraj enklave. Tako ostane zlonamerna manipulacija TSX za operacijski sistem popolnoma nevidna.

Poleg tega, ker zgornji vdor ni odvisen od sistemskih klicev, ga ni mogoče niti zaznati niti preprečiti s preprostim blokiranjem sistemskih klicev; ki običajno daje pozitiven rezultat v boju proti lovu na jajca.

Zlobnež uporablja zgoraj opisani vdor za iskanje pripomočkov, primernih za oblikovanje verige ROP, v kodi gostiteljske aplikacije. Hkrati mu ni treba preiskati vsakega naslova. Dovolj je, da preizkusite en naslov z vsake strani virtualnega naslovnega prostora. Preizkušanje vseh 16 gigabajtov pomnilnika traja približno 45 minut (na Intel i7-6700K). Posledično zlobnež prejme seznam izvršljivih strani, ki so primerne za izdelavo verige ROP.

Vdor za preverjanje zapisljivosti naslovov

Za izvedbo enklavne različice napada ROP mora biti napadalec sposoben iskati zapisljiva neuporabljena pomnilniška področja gostiteljske aplikacije. Napadalec uporablja te pomnilniške lokacije za vbrizgavanje lažnega okvirja sklada in za vbrizgavanje koristnega tovora (shellcode). Bistvo je, da zlonamerna enklava ne more zahtevati od gostiteljske aplikacije, da dodeli pomnilnik zase, temveč lahko zlorabi pomnilnik, ki ga je že dodelila gostiteljska aplikacija. Če mu bo seveda uspelo najti taka območja, ne da bi se enklava zrušila.

Zlobnež izvede to iskanje z izkoriščanjem drugega stranskega učinka TSX. Najprej, kot v prejšnjem primeru, preišče naslov za njegov obstoj in nato preveri, ali je stran, ki ustreza temu naslovu, zapisljiva. Da bi to naredil, zlobnež uporabi naslednji vdor: postavi funkcijo pisanja v transakcijo TSX in po tem, ko je končana, vendar še preden je končana, na silo prekine transakcijo (eksplicitna prekinitev).

Ko pogleda povratno kodo iz transakcije TSX, napadalec razume, ali je zapisljiva. Če gre za »eksplicitni abortus«, zlobnež razume, da bi bil posnetek uspešen, če bi mu sledil. Če je stran samo za branje, se transakcija konča z napako, ki ni »eksplicitna prekinitev«.

Zlonamerna programska oprema SGX: kako zlobneži izkoriščajo novo Intelovo tehnologijo za druge namene od tistih, za katere je bila namenjena

Ta manipulacija s TSX ima še eno lastnost, ki je prijetna za zlobneža (poleg nezmožnosti sledenja prek števcev zmogljivosti strojne opreme): ker so vsi ukazi za pisanje v pomnilnik odobreni samo, če je transakcija uspešna, prisilno dokončanje transakcije zagotavlja, da preiskana pomnilniška celica ostane nespremenjena.

Vdor za preusmeritev nadzornega toka

Pri izvajanju napada ROP iz enklave - za razliko od tradicionalnih napadov ROP - lahko napadalec pridobi nadzor nad registrom RIP brez izkoriščanja napak v napadenem programu (prekoračitev medpomnilnika ali kaj podobnega). Napadalec lahko neposredno prepiše vrednost registra RIP, shranjenega v skladu. Zlasti lahko nadomesti vrednost tega registra z lastno verigo ROP.

Če pa je veriga ROP dolga, lahko prepisovanje velikega dela sklada gostiteljske aplikacije povzroči poškodbo podatkov in nepričakovano vedenje programa. Zlobnež, ki želi svoj napad izvesti prikrito, ni zadovoljen s tem stanjem. Zato ustvari lažni začasni okvir sklada in vanj shrani svojo verigo ROP. Lažni okvir sklada se postavi na naključno zapisljivo pomnilniško lokacijo, pri čemer ostane pravi sklad nedotaknjen.

Zlonamerna programska oprema SGX: kako zlobneži izkoriščajo novo Intelovo tehnologijo za druge namene od tistih, za katere je bila namenjena

Kaj trije zgoraj našteti vdori dajo zlobnežu?

(1) Prvič, zlonamerna enklava skozi kramp za sondiranje naslovov, da vidim, ali jih je mogoče prebrati, – išče v gostiteljski aplikaciji zlorabljive pripomočke ROP.

Zlonamerna programska oprema SGX: kako zlobneži izkoriščajo novo Intelovo tehnologijo za druge namene od tistih, za katere je bila namenjena

(2) Nato z kramp za preverjanje pisljivosti naslovov, – zlonamerna enklava identificira področja v pomnilniku gostiteljske aplikacije, ki so primerna za vbrizgavanje tovora.

Zlonamerna programska oprema SGX: kako zlobneži izkoriščajo novo Intelovo tehnologijo za druge namene od tistih, za katere je bila namenjena

(3) Nato enklava ustvari verigo ROP iz pripomočkov, odkritih v koraku (1), in to verigo vstavi v sklad gostiteljskih aplikacij.

Zlonamerna programska oprema SGX: kako zlobneži izkoriščajo novo Intelovo tehnologijo za druge namene od tistih, za katere je bila namenjena

(4) Končno, ko gostiteljska aplikacija naleti na verigo ROP, ustvarjeno v prejšnjem koraku, se začne izvajati zlonamerna koristna vsebina – s privilegiji gostiteljske aplikacije in možnostjo opravljanja sistemskih klicev.

Kako zlobnež uporablja te vdore za ustvarjanje ranzowari

Ko gostiteljska aplikacija prenese nadzor na enklavo prek enega od ECALL (brez suma, da je ta enklava zlonamerna), zlonamerna enklava išče prosti prostor v pomnilniku gostiteljske aplikacije za vbrizgavanje kode (kot proste prostore vzame ta zaporedja celic ki je napolnjena z ničlami). Potem skozi kramp za sondiranje naslovov, da vidim, ali jih je mogoče prebrati, – enklava išče izvršljive strani v gostiteljski aplikaciji in generira verigo ROP, ki ustvari novo datoteko z imenom »RANSOM« v trenutnem imeniku (v resničnem napadu enklava šifrira obstoječe uporabniške datoteke) in prikaže sporočilo o odkupnini. Hkrati gostiteljska aplikacija naivno verjame, da enklava preprosto sešteva dve številki. Kako je to videti v kodi?

Za lažje dojemanje uvedimo nekaj mnemotehnik skozi definicije:

Zlonamerna programska oprema SGX: kako zlobneži izkoriščajo novo Intelovo tehnologijo za druge namene od tistih, za katere je bila namenjena

Shranimo izvirne vrednosti registrov RSP in RBP, da obnovimo normalno delovanje gostiteljske aplikacije po izvedbi koristnega tovora:

Zlonamerna programska oprema SGX: kako zlobneži izkoriščajo novo Intelovo tehnologijo za druge namene od tistih, za katere je bila namenjena

Iščemo ustrezen okvir sklada (glej kodo iz razdelka “hack for redirecting control flow”).

Iskanje ustreznih pripomočkov ROP:

Zlonamerna programska oprema SGX: kako zlobneži izkoriščajo novo Intelovo tehnologijo za druge namene od tistih, za katere je bila namenjena

Iskanje mesta za vbrizgavanje tovora:

Zlonamerna programska oprema SGX: kako zlobneži izkoriščajo novo Intelovo tehnologijo za druge namene od tistih, za katere je bila namenjena

Gradimo ROP verigo:

Zlonamerna programska oprema SGX: kako zlobneži izkoriščajo novo Intelovo tehnologijo za druge namene od tistih, za katere je bila namenjena

Tako Intelovo tehnologijo SGX, zasnovano za boj proti zlonamernim programom, zlobneži izkoriščajo za doseganje nasprotnih ciljev.

Vir: www.habr.com

Dodaj komentar