SGX zlonamjerni softver: kako zlikovci iskorištavaju novu Intel tehnologiju u druge svrhe od onih za koje je zamišljena

Kao što znate, kod koji se izvršava u enklavi ozbiljno je ograničen u svojoj funkcionalnosti. Ne može vršiti sistemske pozive. Ne može izvoditi I/O operacije. Ne zna osnovnu adresu segmenta koda aplikacije domaćina. Ne može jmp ili pozvati kod aplikacije hosta. Nema pojma o strukturi adresnog prostora koja upravlja host aplikacijom (na primjer, koje su stranice mapirane ili koje vrste podataka se nalaze na tim stranicama). Ne može tražiti od operativnog sistema da mapira dio memorije host aplikacije na njega (na primjer, putem /proc/pid/maps). Naivni pokušaji slijepog čitanja proizvoljnog memorijskog područja host aplikacije, da ne spominjemo pokušaje pisanja, prije ili kasnije (najvjerovatnije prvi) će dovesti do prinudnog ukidanja enklavnog programa. Ovo se dešava kad god je region virtuelnog adresnog prostora koji zahteva enklava nedostupan glavnoj aplikaciji.

S obzirom na tako oštru stvarnost, hoće li pisac virusa moći koristiti SGX enklave da postigne svoje zlonamjerne ciljeve?

– Hak za ispitivanje adresa da se vidi da li se mogu pročitati
– Hak za ispitivanje adresa radi mogućnosti upisivanja
– Hak za preusmjeravanje toka kontrole
– Šta tri gore navedena haka daju negativcu?
– Kako zlikovac koristi ove hakove da stvori ranzowari

SGX zlonamjerni softver: kako zlikovci iskorištavaju novu Intel tehnologiju u druge svrhe od onih za koje je zamišljena

Na osnovu svega navedenog, općenito je prihvaćeno da enklava može poslužiti samo host aplikaciju, te da enklava ne može vršiti vlastitu inicijativu, uključujući i zlonamjernu. 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 enklavnoj memoriji, dok enklavni kod može čitati i pisati na bilo koju memorijsku adresu host aplikacije.

Stoga, ako je zlonamjerni enklavni kod bio u mogućnosti da izvrši proizvoljne sistemske pozive u ime host aplikacije, izvrši proizvoljni kod u njeno ime, skenira memoriju host aplikacije i pronađe u njoj ROP lance koji se mogu zloupotrebiti, mogao bi preuzeti potpunu kontrolu nad host 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 emailove u njegovo ime ili provodite DoS napade. Bez straha čak i od najmodernijih zaštitnih mehanizama, kao što su kanarinci za slaganje i dezinfekcija adresa.

Pokazat ćemo vam nekoliko hakova koje napadači koriste za prevazilaženje gore opisanih ograničenja kako bi iskoristili prednost SGX-a u svoje zlonamjerne svrhe: ROP napadi. Ili za izvršavanje proizvoljnog koda prerušenog u proces aplikacije hosta (slično kao udubljenje procesa, koje često koristi zlonamjerni softver), ili za prikrivanje gotovog zlonamjernog softvera (kako bi se njegov zlonamjerni softver spasio od progona od strane antivirusa i drugih odbrambenih mehanizama).

Hakirajte za ispitivanje adresa da vidite da li se mogu pročitati

Pošto enklava ne zna koji opsezi virtuelnog adresnog prostora su dostupni aplikaciji domaćina, i pošto je enklava prinuđena da prekine kada pokuša da pročita nedostupnu adresu, napadač je suočen sa zadatkom da pronađe način za grešku. tolerantno skenirati adresni prostor. Pronađite način da mapirate dostupne virtuelne adrese. Zlikovac rješava ovaj problem zloupotrebom Intelove TSX tehnologije. Koristi jedan od TSX-ovih nuspojava: ako je funkcija pristupa memoriji stavljena u TSX transakciju, onda izuzeci koji proizlaze iz pristupa nevažećim adresama su potisnuti od strane TSX-a bez dostizanja operativnog sistema. Ako se pokuša pristupiti nevažećoj memorijskoj adresi, prekida se samo trenutna transakcija, a ne cijeli program enklave. To. TSX omogućava enklavi da bezbedno pristupi bilo kojoj adresi iz transakcije - bez rizika od kolapsa.

ako navedena adresa je dostupna host aplikacija, TSX transakcija je najčešće uspješna. U rijetkim slučajevima, može propasti zbog vanjskih utjecaja kao što su prekidi (kao što su prekidi planera), izbacivanja iz keša ili istovremena modifikacija memorijske lokacije od strane više procesa. U ovim rijetkim slučajevima, TSX vraća kod greške koji ukazuje da je kvar privremen. U ovim slučajevima, samo trebate ponovo pokrenuti transakciju.

ako navedena adresa je nedostupna host aplikacija, TSX potiskuje izuzetak koji se dogodio (OS nije obaviješten) i prekida transakciju. Šifra greške se vraća kodu enklave tako da može reagovati na činjenicu da je transakcija otkazana. Ovi kodovi grešaka ukazuju na to da dotična adresa nije dostupna glavnoj aplikaciji.

SGX zlonamjerni softver: kako zlikovci iskorištavaju novu Intel tehnologiju u druge svrhe od onih za koje je zamišljena

SGX zlonamjerni softver: kako zlikovci iskorištavaju novu Intel tehnologiju u druge svrhe od onih za koje je zamišljena

Ova manipulacija TSX-om unutar enklave ima zgodnu osobinu za negativca: pošto većina brojača hardverskih performansi 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 za operativni sistem.

Dodatno, budući da se gornji hak 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 opisani hak za pretraživanje koda aplikacije domaćina za gadgete pogodne za formiranje ROP lanca. Istovremeno, on ne mora da ispituje 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 prima listu izvršnih stranica koje su prikladne za izgradnju ROP lanca.

Hak za ispitivanje adresa za mogućnost upisivanja

Da bi izvršio enklavnu verziju ROP napada, napadač mora biti sposoban pretražiti neiskorištena memorijska područja host aplikacije koja se mogu pisati. Napadač koristi ove memorijske lokacije za ubacivanje lažnog okvira steka i za ubacivanje korisnog opterećenja (shellcode). Suština je da zlonamjerna enklava ne može zahtijevati od host aplikacije da dodijeli memoriju za sebe, već umjesto toga može zloupotrijebiti memoriju koju je već dodijelila host aplikacija. Ako, naravno, uspije pronaći takva područja bez urušavanja enklave.

Zlikovac vrši ovu pretragu koristeći još jedan sporedni efekat TSX-a. Prvo, kao iu prethodnom slučaju, provjerava postojanje adrese, a zatim provjerava da li je stranica koja odgovara ovoj adresi upisiva. Da bi to uradio, negativac koristi sledeći hak: on postavlja funkciju pisanja u TSX transakciju, i nakon što se završi, ali pre nego što se završi, nasilno prekida transakciju (eksplicitno prekidanje).

Gledajući povratni kod iz TSX transakcije, napadač razumije da li je u njega moguće pisati. Ako je riječ o "eksplicitnom abortusu", negativac razumije da bi snimak bio uspješan da je on to nastavio. Ako je stranica samo za čitanje, transakcija se završava s greškom koja nije „eksplicitno prekidanje“.

SGX zlonamjerni softver: kako zlikovci iskorištavaju novu Intel tehnologiju u druge svrhe od onih za koje je zamišljena

Ova manipulacija TSX-om ima još jednu osobinu koja je zgodna za negativca (osim nemogućnosti praćenja preko brojača hardverskih performansi): budući da se sve naredbe pisanja u memoriju predaju samo ako je transakcija uspješna, prisiljavanje transakcije da se završi osigurava da ispitana memorijska ćelija ostaje nepromijenjena.

Hak za preusmjeravanje toka kontrole

Prilikom izvođenja ROP napada iz enklave - za razliku od tradicionalnih ROP napada - napadač može dobiti kontrolu nad RIP registrom bez iskorištavanja bilo kakvih grešaka u napadnutom programu (prelivanje bafera ili nešto slično). Napadač može direktno prepisati vrijednost RIP registra pohranjenog na steku. Konkretno, može zamijeniti vrijednost ovog registra vlastitim ROP lancem.

Međutim, ako je ROP lanac dugačak, tada prepisivanje velikog dijela steka aplikacije domaćina može dovesti do oštećenja podataka i neočekivanog ponašanja programa. Zlikovac, koji nastoji da tajno izvede svoj napad, nije zadovoljan ovakvim stanjem stvari. Stoga, stvara lažni privremeni stek okvir za sebe i pohranjuje svoj ROP lanac u njega. Lažni stek okvir se postavlja na slučajno upisanu memorijsku lokaciju, ostavljajući pravi stek netaknutim.

SGX zlonamjerni softver: kako zlikovci iskorištavaju novu Intel tehnologiju u druge svrhe od onih za koje je zamišljena

Šta tri gore navedena haka daju negativcu?

(1) Prvo, prošla zlonamjerna enklava hak za ispitivanje adresa da se vidi da li se mogu pročitati, – pretražuje host aplikaciju u potrazi za ROP gadžetima koji se mogu zloupotrebiti.

SGX zlonamjerni softver: kako zlikovci iskorištavaju novu Intel tehnologiju u druge svrhe od onih za koje je zamišljena

(2) Zatim po hak za ispitivanje adresa za mogućnost upisivanja, – zlonamjerna enklava identificira područja u memoriji host aplikacije koja su prikladna za ubacivanje korisnog opterećenja.

SGX zlonamjerni softver: kako zlikovci iskorištavaju novu Intel tehnologiju u druge svrhe od onih za koje je zamišljena

(3) Zatim, enklava kreira ROP lanac od gadgeta otkrivenih u koraku (1) i ubrizgava ovaj lanac u stog host aplikacija.

SGX zlonamjerni softver: kako zlikovci iskorištavaju novu Intel tehnologiju u druge svrhe od onih za koje je zamišljena

(4) Konačno, kada host aplikacija naiđe na ROP lanac kreiran u prethodnom koraku, počinje izvršavanje zlonamjernog tereta - s privilegijama host aplikacije i mogućnošću upućivanja sistemskih poziva.

Kako zlikovac koristi ove hakove da stvori ranzowari

Nakon što host aplikacija prenese kontrolu na enklavu putem jednog od ECALL-ova (bez sumnje da je ova enklava zlonamjerna), zlonamjerna enklava traži slobodan prostor u memoriji host aplikacije za ubacivanje koda (uzimajući kao slobodni prostor te sekvence ćelija koje su ispunjene nulama). Onda kroz hak za ispitivanje adresa da se vidi da li se mogu pročitati, – enklava traži izvršne stranice u glavnoj aplikaciji i generira ROP lanac koji kreira 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, host aplikacija naivno vjeruje da enklava jednostavno sabira dva broja. Kako ovo izgleda u kodu?

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

SGX zlonamjerni softver: kako zlikovci iskorištavaju novu Intel tehnologiju u druge svrhe od onih za koje je zamišljena

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

SGX zlonamjerni softver: kako zlikovci iskorištavaju novu Intel tehnologiju u druge svrhe od onih za koje je zamišljena

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

Pronalaženje odgovarajućih ROP uređaja:

SGX zlonamjerni softver: kako zlikovci iskorištavaju novu Intel tehnologiju u druge svrhe od onih za koje je zamišljena

Pronalaženje mjesta za ubrizgavanje tereta:

SGX zlonamjerni softver: kako zlikovci iskorištavaju novu Intel tehnologiju u druge svrhe od onih za koje je zamišljena

Gradimo ROP lanac:

SGX zlonamjerni softver: kako zlikovci iskorištavaju novu Intel tehnologiju u druge svrhe od onih za koje je zamišljena

Ovako zlikovci koriste Intelovu SGX tehnologiju, dizajniranu za suzbijanje zlonamjernih programa, za postizanje suprotnih ciljeva.

izvor: www.habr.com

Dodajte komentar