SGX malware: jak darebáci využívají novou technologii Intel pro jiné účely, než pro které byla vytvořena

Jak víte, kód spouštěný v enklávě má ​​vážně omezenou funkčnost. Nemůže provádět systémová volání. Nemůže provádět I/O operace. Nezná základní adresu segmentu kódu hostitelské aplikace. Nemůže jmp nebo volat kód hostitelské aplikace. Nemá ponětí o struktuře adresního prostoru, která řídí hostitelskou aplikaci (například, které stránky jsou mapovány nebo jaký druh dat se na těchto stránkách nachází). Nemůže požádat operační systém, aby na něj namapoval část paměti hostitelské aplikace (například prostřednictvím /proc/pid/maps). Naivní pokusy slepě číst libovolnou paměťovou oblast hostitelské aplikace, nemluvě o pokusech o zápis, dříve nebo později (s největší pravděpodobností první) povedou k nucenému ukončení programu enklávy. K tomu dochází vždy, když je oblast virtuálního adresního prostoru požadovaná enklávou nepřístupná hostitelské aplikaci.

Bude s ohledem na tak drsnou realitu schopen autor virů použít enklávy SGX k dosažení svých škodlivých cílů?

– Hackujte adresy, abyste zjistili, zda je lze přečíst
– Hackovat se a otestovat adresy pro zápis
– Hack pro přesměrování řídicího toku
– Co dávají padouchovi tři výše uvedené hacky?
– Jak padouch používá tyto hacky k vytvoření ranzomwari

SGX malware: jak darebáci využívají novou technologii Intel pro jiné účely, než pro které byla vytvořena

Na základě všech výše uvedených skutečností se obecně uznává, že enkláva je schopna sloužit pouze hostitelské aplikaci a že enkláva nemůže vykonávat vlastní iniciativu, včetně těch škodlivých. To znamená, že enklávy nemají pro autory virů žádnou praktickou hodnotu. Tento ukvapený předpoklad je jedním z důvodů, proč je ochrana SGX asymetrická: kód hostitelské aplikace nemůže přistupovat do paměti enklávy, zatímco kód enklávy může číst a zapisovat na libovolnou adresu paměti hostitelské aplikace.

Pokud by tedy škodlivý kód enklávy byl schopen provádět libovolná systémová volání jménem hostitelské aplikace, spouštět libovolný kód jejím jménem, ​​skenovat paměť hostitelské aplikace a najít v ní zneužitelné řetězce ROP, mohl by převzít úplnou kontrolu nad hostitelskou aplikací. stealth režimu. Dokáže nejen krást a šifrovat uživatelské soubory, ale také jednat jménem uživatele. Například posílat jeho jménem phishingové e-maily nebo provádět DoS útoky. Bez obav i z nejmodernějších ochranných mechanismů, jako jsou stohovací kanárci a adresní sanitace.

Ukážeme vám několik hacků, které útočníci používají k překonání výše popsaných omezení, aby využili SGX pro své vlastní škodlivé účely: útoky ROP. Buď spustit libovolný kód maskovaný jako proces hostitelské aplikace (podobně jako proces hollowing, který malware často používá), nebo zamaskovat hotový malware (zachránit jeho malware před pronásledováním antiviry a dalšími obrannými mechanismy).

Hackujte adresy, abyste zjistili, zda je lze přečíst

Vzhledem k tomu, že enkláva neví, které rozsahy virtuálního adresového prostoru jsou přístupné hostitelské aplikaci, a protože je enkláva nucena ukončit činnost při pokusu o načtení nepřístupné adresy, stojí útočník před úkolem najít způsob, jak zavinit chybu. tolerantně skenovat adresní prostor. Najděte způsob, jak zmapovat dostupné virtuální adresy. Padouch řeší tento problém zneužitím technologie Intel TSX. Používá jeden z vedlejších efektů TSX: pokud je funkce přístupu do paměti umístěna v transakci TSX, pak výjimky vznikající z přístupu k neplatným adresám jsou potlačeny TSX, aniž by se dostal do operačního systému. Pokud dojde k pokusu o přístup na neplatnou adresu paměti, bude přerušena pouze aktuální transakce, nikoli celý program enklávy. Že. TSX umožňuje enklávě bezpečný přístup k jakékoli adrese z transakce – bez rizika kolapsu.

Jestliže zadaná adresa je k dispozici hostitelské aplikace je transakce TSX nejčastěji úspěšná. Ve vzácných případech může selhat kvůli vnějším vlivům, jako jsou přerušení (například přerušení plánovače), vyřazení z mezipaměti nebo současná úprava umístění paměti více procesy. V těchto vzácných případech vrací TSX chybový kód označující, že selhání je dočasné. V těchto případech stačí transakci restartovat.

Jestliže zadaná adresa není k dispozici hostitelské aplikace, TSX potlačí výjimku, ke které došlo (OS není upozorněn) a přeruší transakci. Kódu enklávy se vrátí chybový kód, aby mohl reagovat na skutečnost, že transakce byla zrušena. Tyto chybové kódy označují, že daná adresa není hostitelské aplikaci dostupná.

SGX malware: jak darebáci využívají novou technologii Intel pro jiné účely, než pro které byla vytvořena

SGX malware: jak darebáci využívají novou technologii Intel pro jiné účely, než pro které byla vytvořena

Tato manipulace s TSX zevnitř enklávy má pro padoucha příjemnou vlastnost: protože většina počítadel výkonu hardwaru není aktualizována v době provádění kódu enklávy, není možné sledovat transakce TSX prováděné uvnitř enklávy. Zlomyslná manipulace s TSX tak zůstává pro operační systém zcela neviditelná.

Navíc, protože výše uvedený hack nespoléhá na žádná systémová volání, nelze jej detekovat ani mu zabránit pouhým blokováním systémových volání; což obvykle dává pozitivní výsledek v boji proti lovu vajec.

Padouch použije výše popsaný hack k vyhledání v kódu hostitelské aplikace gadgetů vhodných pro vytvoření řetězce ROP. Zároveň nemusí sondovat každou adresu. Stačí sondovat jednu adresu z každé stránky virtuálního adresního prostoru. Prozkoumání všech 16 gigabajtů paměti trvá asi 45 minut (na Intel i7-6700K). Výsledkem je, že padouch obdrží seznam spustitelných stránek, které jsou vhodné pro sestavení řetězce ROP.

Hack pro testování adres pro zápis

Aby mohl útočník provést enklávovou verzi útoku ROP, musí být schopen vyhledávat zapisovatelné nevyužité oblasti paměti hostitelské aplikace. Útočník používá tato paměťová místa k vložení falešného rámce zásobníku a ke vložení užitečného zatížení (kódu shellu). Pointa je, že škodlivá enkláva nemůže vyžadovat, aby si hostitelská aplikace přidělila paměť, ale místo toho může zneužít paměť již přidělenou hostitelskou aplikací. Pokud se mu ovšem podaří takové oblasti najít, aniž by se enkláva zhroutila.

Darebák provádí toto hledání využitím dalšího vedlejšího účinku TSX. Nejprve, stejně jako v předchozím případě, zkontroluje existenci adresy a poté zkontroluje, zda je stránka odpovídající této adrese zapisovatelná. K tomu darebák používá následující hack: umístí do transakce TSX funkci zápisu a po jejím dokončení, ale ještě před jejím dokončením, transakci násilně přeruší (explicitní přerušení).

Pohledem na návratový kód z transakce TSX útočník pochopí, zda je zapisovatelný. Pokud se jedná o „explicitní potrat“, darebák chápe, že nahrávka by byla úspěšná, kdyby ji dodržel. Pokud je stránka pouze pro čtení, transakce skončí s jinou chybou než „explicitní přerušení“.

SGX malware: jak darebáci využívají novou technologii Intel pro jiné účely, než pro které byla vytvořena

Tato manipulace s TSX má další vlastnost, která je pro padoucha příjemná (kromě nemožnosti sledování pomocí čítačů výkonu hardwaru): protože všechny příkazy zápisu do paměti jsou potvrzeny pouze v případě, že je transakce úspěšná, vynucení dokončení transakce zajistí, že testovaná paměťová buňka zůstává nezměněno.

Hack pro přesměrování řídicího toku

Při provádění ROP útoku z enklávy – na rozdíl od tradičních ROP útoků – může útočník získat kontrolu nad RIP registrem, aniž by zneužil jakékoli chyby v napadeném programu (přetečení vyrovnávací paměti nebo něco podobného). Útočník může přímo přepsat hodnotu registru RIP uloženého v zásobníku. Zejména může nahradit hodnotu tohoto registru vlastním řetězcem ROP.

Pokud je však řetězec ROP dlouhý, může přepsání velké části zásobníku hostitelské aplikace vést k poškození dat a neočekávanému chování programu. Padouch, který se snaží provést svůj útok skrytě, není s tímto stavem spokojen. Proto si pro sebe vytvoří falešný dočasný zásobníkový rámec a uloží do něj svůj řetězec ROP. Rámeček falešného zásobníku je umístěn na náhodné místo v paměti, do které lze zapisovat, přičemž skutečný zásobník zůstává nedotčen.

SGX malware: jak darebáci využívají novou technologii Intel pro jiné účely, než pro které byla vytvořena

Co dávají padouchovi tři výše uvedené hacky?

(1) Za prvé, skrz zlomyslnou enklávu hack pro zjišťování adres, aby se zjistilo, zda je lze přečíst, – hledá v hostitelské aplikaci zneužitelné miniaplikace ROP.

SGX malware: jak darebáci využívají novou technologii Intel pro jiné účely, než pro které byla vytvořena

(2) Poté hack pro zkoumání adres pro zápis, – škodlivá enkláva identifikuje oblasti v paměti hostitelské aplikace, které jsou vhodné pro vložení užitečného zatížení.

SGX malware: jak darebáci využívají novou technologii Intel pro jiné účely, než pro které byla vytvořena

(3) Dále enkláva vytvoří řetězec ROP z gadgetů objevených v kroku (1) a vloží tento řetězec do zásobníku hostitelské aplikace.

SGX malware: jak darebáci využívají novou technologii Intel pro jiné účely, než pro které byla vytvořena

(4) Nakonec, když hostitelská aplikace narazí na řetězec ROP vytvořený v předchozím kroku, začne se spouštět škodlivý obsah – s oprávněními hostitelské aplikace a schopností provádět systémová volání.

Jak padouch používá tyto hacky k vytvoření ranzowari

Poté, co hostitelská aplikace předá kontrolu enklávě prostřednictvím jednoho z ECALL (aniž by se domnívala, že je tato enkláva škodlivá), zákeřná enkláva hledá volné místo v paměti hostitelské aplikace pro vložení kódu (bere jako volná místa tyto sekvence buněk která je plná nul). Pak skrz hack pro zjišťování adres, aby se zjistilo, zda je lze přečíst, – enkláva vyhledá spustitelné stránky v hostitelské aplikaci a vygeneruje řetězec ROP, který vytvoří nový soubor s názvem „RANSOM“ v aktuálním adresáři (při skutečném útoku enkláva zašifruje existující uživatelské soubory) a zobrazí zprávu o výkupném. Hostitelská aplikace se přitom naivně domnívá, že enkláva jednoduše sčítá dvě čísla. Jak to vypadá v kódu?

Pro usnadnění vnímání uvedeme některé mnemotechnické pomůcky prostřednictvím definic:

SGX malware: jak darebáci využívají novou technologii Intel pro jiné účely, než pro které byla vytvořena

Ukládáme původní hodnoty registrů RSP a RBP, abychom po provedení užitečného zatížení obnovili normální provoz hostitelské aplikace:

SGX malware: jak darebáci využívají novou technologii Intel pro jiné účely, než pro které byla vytvořena

Hledáme vhodný zásobníkový rámec (viz kód ze sekce „hack pro přesměrování řídicího toku“).

Nalezení vhodných gadgetů ROP:

SGX malware: jak darebáci využívají novou technologii Intel pro jiné účely, než pro které byla vytvořena

Nalezení místa pro injekci užitečného zatížení:

SGX malware: jak darebáci využívají novou technologii Intel pro jiné účely, než pro které byla vytvořena

Stavíme řetězec ROP:

SGX malware: jak darebáci využívají novou technologii Intel pro jiné účely, než pro které byla vytvořena

Takto je technologie SGX společnosti Intel, navržená pro boj se škodlivými programy, využívána padouchy k dosažení opačných cílů.

Zdroj: www.habr.com

Přidat komentář