SGX malvér: ako darebáci využívajú novú technológiu Intel na iné účely, než na ktoré bola určená

Ako viete, kód vykonávaný v enkláve je vážne obmedzený vo svojej funkčnosti. Nemôže uskutočniť systémové volania. Nemôže vykonávať I/O operácie. Nepozná základnú adresu segmentu kódu hostiteľskej aplikácie. Nemôže jmp ani volať kód hostiteľskej aplikácie. Nemá žiadnu predstavu o štruktúre adresného priestoru, ktorá riadi hostiteľskú aplikáciu (napríklad, ktoré stránky sú mapované alebo aký druh údajov sa na týchto stránkach nachádza). Nemôže požiadať operačný systém, aby naň namapoval časť pamäte hostiteľskej aplikácie (napríklad cez /proc/pid/maps). Naivné pokusy o slepé čítanie ľubovoľnej pamäťovej oblasti hostiteľskej aplikácie, nehovoriac o pokusoch o zápis, povedú skôr či neskôr (najpravdepodobnejšie prvé) k nútenému ukončeniu programu enklávy. Stáva sa to vždy, keď je oblasť virtuálneho adresného priestoru požadovaná enklávou nedostupná pre hostiteľskú aplikáciu.

Bude môcť autor vírusov vzhľadom na takúto krutú realitu použiť enklávy SGX na dosiahnutie svojich škodlivých cieľov?

– Hacknite na testovanie adries, aby ste zistili, či sa dajú prečítať
– Hackovanie na testovanie adries pre zapisovateľnosť
– Hack na presmerovanie riadiaceho toku
– Čo dávajú tri hacky uvedené vyššie darebákovi?
– Ako darebák používa tieto hacky na vytvorenie ranzowari

SGX malvér: ako darebáci využívajú novú technológiu Intel na iné účely, než na ktoré bola určená

Na základe všetkých vyššie uvedených skutočností sa všeobecne uznáva, že enkláva je schopná slúžiť iba hostiteľskej aplikácii a že enkláva nemôže vykonávať svoju vlastnú iniciatívu, vrátane tých škodlivých. To znamená, že enklávy nemajú pre autorov vírusov žiadnu praktickú hodnotu. Tento unáhlený predpoklad je jedným z dôvodov, prečo je ochrana SGX asymetrická: kód hostiteľskej aplikácie nemôže pristupovať k pamäti enklávy, zatiaľ čo kód enklávy môže čítať a zapisovať na ľubovoľnú adresu pamäte hostiteľskej aplikácie.

Ak by teda škodlivý kód enklávy dokázal uskutočniť ľubovoľné systémové volania v mene hostiteľskej aplikácie, spustiť ľubovoľný kód v jej mene, skenovať pamäť hostiteľskej aplikácie a nájsť v nej zneužiteľné reťazce ROP, mohol by prevziať úplnú kontrolu nad hostiteľskou aplikáciou. stealth režim. Dokáže nielen kradnúť a šifrovať používateľské súbory, ale aj konať v mene používateľa. Napríklad posielať phishingové e-maily v jeho mene alebo vykonávať DoS útoky. Bez strachu aj z najmodernejších ochranných mechanizmov, ako sú stohovacie kanáriky a adresná sanitácia.

Ukážeme vám niekoľko hackov, ktoré útočníci používajú na prekonanie obmedzení popísaných vyššie, aby využili SGX na svoje vlastné škodlivé účely: útoky ROP. Buď na spustenie ľubovoľného kódu maskovaného ako proces hostiteľskej aplikácie (podobne ako proces hollowing, ktorý malvér často využíva), alebo na zamaskovanie hotového malvéru (na záchranu jeho malvéru pred prenasledovaním antivírusmi a inými obrannými mechanizmami).

Hacknite na testovanie adries, aby ste zistili, či sa dajú prečítať

Keďže enkláva nevie, ktoré rozsahy virtuálneho adresného priestoru sú prístupné hostiteľskej aplikácii, a keďže enkláva je nútená ukončiť činnosť pri pokuse o načítanie neprístupnej adresy, útočník stojí pred úlohou nájsť spôsob, ako zaviniť chybu. tolerantne skenovať adresný priestor. Nájdite spôsob, ako zmapovať dostupné virtuálne adresy. Záporák tento problém rieši zneužitím technológie TSX od Intelu. Používa jeden z vedľajších účinkov TSX: ak je funkcia prístupu do pamäte umiestnená v transakcii TSX, potom výnimky vznikajúce z prístupu k neplatným adresám sú potlačené TSX bez toho, aby sa dostali do operačného systému. Ak sa pokúsite o prístup k neplatnej adrese pamäte, preruší sa iba aktuálna transakcia, nie celý program enklávy. To. TSX umožňuje enkláve bezpečný prístup k akejkoľvek adrese v rámci transakcie – bez rizika kolapsu.

Ak zadaná adresa je k dispozícii hostiteľskej aplikácie je transakcia TSX najčastejšie úspešná. V zriedkavých prípadoch môže zlyhať v dôsledku vonkajších vplyvov, ako sú prerušenia (napríklad prerušenia plánovača), vymazanie vyrovnávacej pamäte alebo súčasná úprava miesta v pamäti viacerými procesmi. V týchto zriedkavých prípadoch TSX vráti chybový kód, ktorý indikuje, že porucha je dočasná. V týchto prípadoch stačí reštartovať transakciu.

Ak zadaná adresa je nedostupná hostiteľskej aplikácie, TSX potlačí výnimku, ktorá nastala (OS nie je upozornený) a preruší transakciu. Kódu enklávy sa vráti chybový kód, aby mohol reagovať na skutočnosť, že transakcia bola zrušená. Tieto chybové kódy označujú, že príslušná adresa nie je dostupná pre hostiteľskú aplikáciu.

SGX malvér: ako darebáci využívajú novú technológiu Intel na iné účely, než na ktoré bola určená

SGX malvér: ako darebáci využívajú novú technológiu Intel na iné účely, než na ktoré bola určená

Táto manipulácia s TSX zvnútra enklávy má pre darebáka príjemnú vlastnosť: keďže väčšina počítadiel výkonu hardvéru nie je aktualizovaná v čase, keď sa kód enklávy spúšťa, nie je možné sledovať transakcie TSX vykonávané vo vnútri enklávy. Zákerná manipulácia s TSX tak zostáva pre operačný systém úplne neviditeľná.

Navyše, keďže vyššie uvedený hack sa nespolieha na žiadne systémové volania, nemožno ho odhaliť ani mu zabrániť jednoduchým blokovaním systémových volaní; čo zvyčajne dáva pozitívny výsledok v boji proti lovu vajec.

Zloduch používa vyššie popísaný hack na vyhľadávanie v kóde hostiteľskej aplikácie pre miniaplikácie vhodné na vytvorenie reťazca ROP. Zároveň nepotrebuje sondovať každú adresu. Stačí sondovať jednu adresu z každej stránky virtuálneho adresného priestoru. Testovanie všetkých 16 gigabajtov pamäte trvá približne 45 minút (na Intel i7-6700K). Výsledkom je, že darebák dostane zoznam spustiteľných stránok, ktoré sú vhodné na zostavenie reťazca ROP.

Hack na testovanie adries na zapisovateľnosť

Aby mohol útočník vykonať enklávovú verziu útoku ROP, musí byť schopný vyhľadávať zapisovateľné nevyužité pamäťové oblasti hostiteľskej aplikácie. Útočník používa tieto pamäťové miesta na vloženie falošného rámca zásobníka a na vloženie užitočného zaťaženia (kódu shellu). Pointa je, že škodlivá enkláva nie je schopná vyžadovať od hostiteľskej aplikácie, aby si pridelila pamäť, ale namiesto toho môže zneužiť pamäť už pridelenú hostiteľskou aplikáciou. Ak sa mu, samozrejme, podarí nájsť takéto oblasti bez toho, aby sa enkláva zrútila.

Darebák vykonáva toto hľadanie využitím ďalšieho vedľajšieho účinku TSX. Najprv, ako v predchádzajúcom prípade, zisťuje existenciu adresy a potom skontroluje, či je stránka zodpovedajúca tejto adrese zapisovateľná. Zloduch na to používa nasledujúci hack: umiestni funkciu zápisu do transakcie TSX a po jej dokončení, ale ešte pred jej dokončením, transakciu násilne preruší (explicitné prerušenie).

Pri pohľade na návratový kód z transakcie TSX útočník pochopí, či je zapisovateľný. Ak ide o „explicitný potrat“, darebák chápe, že nahrávka by bola úspešná, ak by ju dodržal. Ak je stránka určená len na čítanie, transakcia skončí s inou chybou ako „explicitné prerušenie“.

SGX malvér: ako darebáci využívajú novú technológiu Intel na iné účely, než na ktoré bola určená

Táto manipulácia s TSX má ďalšiu vlastnosť, ktorá je pre darebáka príjemná (okrem nemožnosti sledovania prostredníctvom počítadiel výkonu hardvéru): keďže všetky príkazy na zápis do pamäte sú potvrdené iba vtedy, ak je transakcia úspešná, vynútenie dokončenia transakcie zaisťuje, že testovaná pamäťová bunka zostáva nezmenený.

Hack na presmerovanie riadiaceho toku

Pri ROP útoku z enklávy - na rozdiel od tradičných ROP útokov - môže útočník získať kontrolu nad RIP registrom bez toho, aby zneužil akékoľvek chyby v napadnutom programe (pretečenie vyrovnávacej pamäte alebo niečo podobné). Útočník môže priamo prepísať hodnotu registra RIP uloženého v zásobníku. Predovšetkým môže nahradiť hodnotu tohto registra vlastným reťazcom ROP.

Ak je však reťazec ROP dlhý, prepísanie veľkej časti zásobníka hostiteľskej aplikácie môže viesť k poškodeniu údajov a neočakávanému správaniu programu. Zloduch, ktorý sa snaží svoj útok vykonať skryto, nie je s týmto stavom spokojný. Preto si pre seba vytvorí falošný dočasný zásobníkový rámec a uloží do neho svoj reťazec ROP. Rám falošného zásobníka je umiestnený na náhodne zapisovateľnom mieste pamäte, pričom skutočný zásobník zostáva nedotknutý.

SGX malvér: ako darebáci využívajú novú technológiu Intel na iné účely, než na ktoré bola určená

Čo dávajú tri hacky uvedené vyššie darebákovi?

(1) Po prvé, zlomyseľná enkláva cez hack na testovanie adries, aby ste zistili, či sa dajú prečítať, – vyhľadáva v hostiteľskej aplikácii zneužiteľné moduly gadget ROP.

SGX malvér: ako darebáci využívajú novú technológiu Intel na iné účely, než na ktoré bola určená

(2) Potom hack na testovanie adries na zapisovateľnosť, – škodlivá enkláva identifikuje oblasti v pamäti hostiteľskej aplikácie, ktoré sú vhodné na vloženie užitočného zaťaženia.

SGX malvér: ako darebáci využívajú novú technológiu Intel na iné účely, než na ktoré bola určená

(3) Ďalej enkláva vytvorí reťazec ROP z gadgetov objavených v kroku (1) a vloží tento reťazec do zásobníka hostiteľskej aplikácie.

SGX malvér: ako darebáci využívajú novú technológiu Intel na iné účely, než na ktoré bola určená

(4) Nakoniec, keď hostiteľská aplikácia narazí na reťazec ROP vytvorený v predchádzajúcom kroku, začne sa spúšťať škodlivý obsah – s privilégiami hostiteľskej aplikácie a možnosťou uskutočniť systémové volania.

Ako darebák používa tieto hacky na vytvorenie ranzowari

Potom, čo hostiteľská aplikácia prenesie kontrolu na enklávu prostredníctvom jedného z ECALL (bez podozrenia, že táto enkláva je škodlivá), zákerná enkláva hľadá voľné miesto v pamäti hostiteľskej aplikácie na vloženie kódu (ako voľné miesta berie tieto sekvencie buniek ktorá je vyplnená nulami). Potom cez hack na testovanie adries, aby ste zistili, či sa dajú prečítať, – enkláva vyhľadá spustiteľné stránky v hostiteľskej aplikácii a vygeneruje reťazec ROP, ktorý vytvorí nový súbor s názvom „RANSOM“ v aktuálnom adresári (pri skutočnom útoku enkláva zašifruje existujúce používateľské súbory) a zobrazí správu o výkupnom. Hostiteľská aplikácia sa zároveň naivne domnieva, že enkláva jednoducho pridáva dve čísla. Ako to vyzerá v kóde?

Pre uľahčenie vnímania predstavme niektoré mnemotechnické pomôcky prostredníctvom definícií:

SGX malvér: ako darebáci využívajú novú technológiu Intel na iné účely, než na ktoré bola určená

Uložíme pôvodné hodnoty registrov RSP a RBP, aby sme po vykonaní užitočného zaťaženia obnovili normálnu prevádzku hostiteľskej aplikácie:

SGX malvér: ako darebáci využívajú novú technológiu Intel na iné účely, než na ktoré bola určená

Hľadáme vhodný zásobníkový rámec (pozri kód zo sekcie „hack na presmerovanie toku riadenia“).

Nájdenie vhodných modulov gadget ROP:

SGX malvér: ako darebáci využívajú novú technológiu Intel na iné účely, než na ktoré bola určená

Nájdenie miesta na vstreknutie užitočného zaťaženia:

SGX malvér: ako darebáci využívajú novú technológiu Intel na iné účely, než na ktoré bola určená

Vytvárame reťazec ROP:

SGX malvér: ako darebáci využívajú novú technológiu Intel na iné účely, než na ktoré bola určená

Takto je technológia SGX od Intelu, navrhnutá na boj so škodlivými programami, zneužitá zloduchmi na dosiahnutie opačných cieľov.

Zdroj: hab.com

Pridať komentár