SGX zlonamjerni softver: kako zlikovci iskorištavaju novu Intelovu tehnologiju u druge svrhe od onih za koje je bila namijenjena

Kao što znate, kod koji se izvodi u enklavi ozbiljno je ograničen u svojoj funkcionalnosti. Ne može upućivati ​​sistemske pozive. Ne može izvoditi I/O operacije. Ne zna osnovnu adresu segmenta koda glavne aplikacije. Ne može jmp niti pozvati kod aplikacije hosta. Nema pojma o strukturi adresnog prostora koja upravlja glavnom aplikacijom (na primjer, koje su stranice mapirane ili kakvi se podaci nalaze na tim stranicama). Ne može tražiti od operativnog sustava da preslika dio memorije glavne aplikacije na njega (na primjer, kroz /proc/pid/maps). Naivni pokušaji slijepog čitanja proizvoljne memorijske regije host aplikacije, da ne spominjemo pokušaje pisanja, prije ili kasnije će (najvjerojatnije prvo) dovesti do prisilnog prekida enklavnog programa. To se događa svaki put kada je područje virtualnog adresnog prostora koje zahtijeva enklava nedostupno glavnoj aplikaciji.

S obzirom na tako surovu stvarnost, hoće li pisac virusa moći koristiti SGX enklave za postizanje svojih zloćudnih ciljeva?

– Hack za ispitivanje adresa da se vidi mogu li se čitati
– Hack za ispitivanje adresa za mogućnost pisanja
– Hack za preusmjeravanje toka kontrole
– Što tri gore navedena hacka daju zlikovcu?
– Kako negativac koristi ove hakove za stvaranje ranzowari

SGX zlonamjerni softver: kako zlikovci iskorištavaju novu Intelovu tehnologiju u druge svrhe od onih za koje je bila namijenjena

Na temelju svega navedenog, opće je prihvaćeno da je enklava sposobna služiti samo glavnoj aplikaciji, te da enklava ne može ostvariti vlastitu inicijativu, uključujući zlonamjerne. To znači da enklave nemaju praktičnu vrijednost za pisce virusa. Ova ishitrena pretpostavka je jedan od razloga zašto je SGX zaštita asimetrična: kod host aplikacije ne može pristupiti memoriji enklave, dok kod enklave može čitati i pisati na bilo koju adresu memorije host aplikacije.

Stoga, ako je zlonamjerni kod enklave bio u mogućnosti izvršiti proizvoljne sistemske pozive u ime glavne aplikacije, izvršiti proizvoljni kod u njeno ime, skenirati memoriju glavne aplikacije i u njoj pronaći zlouporabene ROP lance, mogao bi preuzeti potpunu kontrolu nad glavnom aplikacijom, u stealth mod. Ne samo da može ukrasti i šifrirati korisničke datoteke, već i djelovati u ime korisnika. Na primjer, šaljite phishing e-poštu u njegovo ime ili provodite DoS napade. Bez straha čak i od najsuvremenijih zaštitnih mehanizama, kao što su stack canary i dezinfekcija adresa.

Pokazat ćemo vam nekoliko hakova koje napadači koriste za prevladavanje gore opisanih ograničenja kako bi iskoristili SGX za vlastite zlonamjerne svrhe: ROP napadi. Ili za izvršavanje proizvoljnog koda prerušenog u proces glavne aplikacije (slično šupljini procesa, što često koristi zlonamjerni softver), ili za maskiranje gotovog zlonamjernog softvera (kako bi se njegov zlonamjerni softver spasio od progona antivirusa i drugih obrambenih mehanizama).

Hack za ispitivanje adresa da vidim mogu li se čitati

Budući da enklava ne zna koji su rasponi virtualnog adresnog prostora dostupni glavnoj aplikaciji i budući da je enklava prisiljena prekinuti rad pri pokušaju čitanja nedostupne adrese, napadač se suočava sa zadatkom pronalaženja načina da pokvari- tolerantno skenirajte adresni prostor. Pronađite način mapiranja dostupnih virtualnih adresa. Ovaj problem zlikovac rješava zlouporabom Intelove TSX tehnologije. Koristi jednu od nuspojava TSX-a: ako je funkcija pristupa memoriji smještena u TSX transakciju, tada TSX potiskuje iznimke koje proizlaze iz pristupanja nevažećim adresama bez dosezanja operativnog sustava. Ako se pokuša pristupiti nevažećoj memorijskoj adresi, prekida se samo trenutna transakcija, a ne cijeli program enklave. Da. TSX omogućuje enklavi siguran pristup bilo kojoj adresi unutar transakcije - bez rizika od kolapsa.

Ako navedena adresa je dostupna host aplikacije, TSX transakcija je najčešće uspješna. U rijetkim slučajevima može zakazati zbog vanjskih utjecaja kao što su prekidi (kao što su prekidi planera), izbacivanja iz predmemorije ili istovremene izmjene memorijske lokacije od strane više procesa. U tim rijetkim slučajevima, TSX vraća kod pogreške koji pokazuje da je kvar privremen. U tim slučajevima samo trebate ponovno pokrenuti transakciju.

Ako navedena adresa je nedostupna host aplikaciju, TSX potiskuje iznimku koja se dogodila (OS nije obaviješten) i prekida transakciju. Kod enklave vraća se kod pogreške kako bi mogao reagirati na činjenicu da je transakcija otkazana. Ovi kodovi grešaka pokazuju da predmetna adresa nije dostupna glavnoj aplikaciji.

SGX zlonamjerni softver: kako zlikovci iskorištavaju novu Intelovu tehnologiju u druge svrhe od onih za koje je bila namijenjena

SGX zlonamjerni softver: kako zlikovci iskorištavaju novu Intelovu tehnologiju u druge svrhe od onih za koje je bila namijenjena

Ova manipulacija TSX-om unutar enklave ima zgodnu značajku za zlikovca: budući da većina brojača performansi hardvera nije ažurirana u vrijeme izvršavanja koda enklave, nemoguće je pratiti TSX transakcije izvršene unutar enklave. Dakle, zlonamjerna manipulacija TSX-om ostaje potpuno nevidljiva operativnom sustavu.

Dodatno, budući da se gornji hack ne oslanja ni na kakve sistemske pozive, ne može se niti otkriti niti spriječiti jednostavnim blokiranjem sistemskih poziva; što obično daje pozitivan rezultat u borbi protiv lova na jaja.

Zlikovac koristi gore opisano hakiranje kako bi pretražio kod host aplikacije za gadgete prikladne za formiranje ROP lanca. U isto vrijeme, on ne mora sondirati svaku adresu. Dovoljno je ispitati jednu adresu sa svake stranice virtualnog adresnog prostora. Ispitivanje svih 16 gigabajta memorije traje oko 45 minuta (na Intel i7-6700K). Kao rezultat toga, negativac dobiva popis izvršnih stranica koje su prikladne za izradu ROP lanca.

Hack za ispitivanje adresa za mogućnost pisanja

Za izvođenje enklave verzije ROP napada, napadač mora biti u mogućnosti pretraživati ​​neiskorištena memorijska područja aplikacije glavnog računala koja se mogu pisati. Napadač koristi te memorijske lokacije za ubacivanje lažnog okvira snopa i za ubacivanje korisnog sadržaja (shellcode). Suština je da zlonamjerna enklava ne može zahtijevati od glavne aplikacije da sama sebi dodijeli memoriju, već umjesto toga može zloupotrijebiti memoriju koju je već dodijelila glavna aplikacija. Ako, naravno, uspije pronaći takva područja bez urušavanja enklave.

Zlikovac provodi ovu potragu iskorištavajući drugu nuspojavu TSX-a. Prvo, kao u prethodnom slučaju, ispituje adresu radi njezinog postojanja, a zatim provjerava je li stranica koja odgovara ovoj adresi pisana. Da bi to učinio, zlikovac koristi sljedeći hack: on postavlja funkciju pisanja u TSX transakciju, a nakon što je dovršena, ali prije nego što je dovršena, on prisilno prekida transakciju (eksplicitni abort).

Gledajući povratni kod iz TSX transakcije, napadač razumije može li se pisati. Ako se radi o "eksplicitnom pobačaju", zlobnik shvaća da bi snimka bila uspješna da je nastavio. Ako je stranica samo za čitanje, tada transakcija završava s pogreškom koja nije "eksplicitno prekidanje".

SGX zlonamjerni softver: kako zlikovci iskorištavaju novu Intelovu tehnologiju u druge svrhe od onih za koje je bila namijenjena

Ova manipulacija TSX-om ima još jednu značajku koja je zgodna za zlonamjernika (osim nemogućnosti praćenja kroz hardverske brojače performansi): budući da se sve naredbe za pisanje u memoriju predaju samo ako je transakcija uspješna, prisiljavanje na dovršetak transakcije osigurava da će ispitana memorijska ćelija ostaje nepromjenjen.

Hack za preusmjeravanje toka kontrole

Prilikom izvođenja ROP napada iz enklave - za razliku od tradicionalnih ROP napada - napadač može preuzeti kontrolu nad RIP registrom bez iskorištavanja grešaka u napadnutom programu (prelijevanje međuspremnika ili nešto slično). Napadač može izravno prebrisati vrijednost RIP registra pohranjenog na stogu. Konkretno, može zamijeniti vrijednost ovog registra vlastitim ROP lancem.

Međutim, ako je ROP lanac dugačak, tada prepisivanje velikog dijela stoga glavne aplikacije može dovesti do oštećenja podataka i neočekivanog ponašanja programa. Zlikovac, koji nastoji tajno izvesti svoj napad, nije zadovoljan ovakvim stanjem stvari. Stoga za sebe stvara lažni privremeni okvir stoga i u njega pohranjuje svoj ROP lanac. Lažni okvir snopa postavlja se na nasumičnu memorijsku lokaciju koja se može pisati, ostavljajući pravi snop netaknut.

SGX zlonamjerni softver: kako zlikovci iskorištavaju novu Intelovu tehnologiju u druge svrhe od onih za koje je bila namijenjena

Što tri gore navedena hacka daju zlikovcu?

(1) Prvo, zlonamjerna enklava kroz hack za ispitivanje adresa da se vidi mogu li se čitati, – pretražuje aplikaciju glavnog računala za ROP gadgete koji se mogu zloupotrijebiti.

SGX zlonamjerni softver: kako zlikovci iskorištavaju novu Intelovu tehnologiju u druge svrhe od onih za koje je bila namijenjena

(2) Zatim prema hack za ispitivanje adresa za mogućnost pisanja, – zlonamjerna enklava identificira područja u memoriji glavne aplikacije koja su prikladna za ubacivanje korisnog tereta.

SGX zlonamjerni softver: kako zlikovci iskorištavaju novu Intelovu tehnologiju u druge svrhe od onih za koje je bila namijenjena

(3) Zatim, enklava stvara ROP lanac od gadgeta otkrivenih u koraku (1) i ubacuje ovaj lanac u stog aplikacije glavnog računala.

SGX zlonamjerni softver: kako zlikovci iskorištavaju novu Intelovu tehnologiju u druge svrhe od onih za koje je bila namijenjena

(4) Konačno, kada glavna aplikacija naiđe na ROP lanac stvoren u prethodnom koraku, počinje se izvršavati zlonamjerni korisni teret - s privilegijama glavne aplikacije i mogućnošću upućivanja sistemskih poziva.

Kako negativac koristi ove hakove za stvaranje ranzowari

Nakon što glavna aplikacija prenese kontrolu na enklavu putem jednog od ECALL-ova (bez sumnje da je ta enklava zlonamjerna), zlonamjerna enklava traži slobodan prostor u memoriji glavne aplikacije za ubacivanje koda (uzimajući kao slobodne prostore one sekvence ćelija koji je ispunjen nulama). Zatim kroz hack za ispitivanje adresa da se vidi mogu li se čitati, – enklava traži izvršne stranice u glavnoj aplikaciji i generira ROP lanac koji stvara novu datoteku pod nazivom "RANSOM" u trenutnom direktoriju (u stvarnom napadu, enklava šifrira postojeće korisničke datoteke) i prikazuje poruku o otkupnini. U isto vrijeme, glavna aplikacija naivno vjeruje da enklava jednostavno zbraja dva broja. Kako ovo izgleda u kodu?

Radi lakše percepcije, uvedimo neke mnemotehnike kroz definicije:

SGX zlonamjerni softver: kako zlikovci iskorištavaju novu Intelovu tehnologiju u druge svrhe od onih za koje je bila namijenjena

Spremamo izvorne vrijednosti RSP i RBP registara kako bismo vratili normalan rad glavne aplikacije nakon izvršavanja korisnog opterećenja:

SGX zlonamjerni softver: kako zlikovci iskorištavaju novu Intelovu tehnologiju u druge svrhe od onih za koje je bila namijenjena

Tražimo odgovarajući okvir stoga (pogledajte kod iz odjeljka “hack za preusmjeravanje toka kontrole”).

Pronalaženje odgovarajućih ROP naprava:

SGX zlonamjerni softver: kako zlikovci iskorištavaju novu Intelovu tehnologiju u druge svrhe od onih za koje je bila namijenjena

Pronalaženje mjesta za ubrizgavanje korisnog tereta:

SGX zlonamjerni softver: kako zlikovci iskorištavaju novu Intelovu tehnologiju u druge svrhe od onih za koje je bila namijenjena

Gradimo ROP lanac:

SGX zlonamjerni softver: kako zlikovci iskorištavaju novu Intelovu tehnologiju u druge svrhe od onih za koje je bila namijenjena

Ovo je način na koji zlikovci iskorištavaju Intelovu SGX tehnologiju, osmišljenu za suzbijanje zlonamjernih programa, za postizanje suprotnih ciljeva.

Izvor: www.habr.com

Dodajte komentar