Programari maliciós SGX: com els dolents exploten la nova tecnologia Intel per a finalitats diferents d'aquelles per a les quals va ser concebuda

Com sabeu, el codi executat a l'enclavament està molt limitat en la seva funcionalitat. No pot fer trucades al sistema. No pot realitzar operacions d'E/S. No coneix l'adreça base del segment de codi de l'aplicació amfitriona. No pot fer jmp ni trucar al codi de l'aplicació amfitrió. No té ni idea de l'estructura de l'espai d'adreces que governa l'aplicació amfitriona (per exemple, quines pàgines estan mapejades o quin tipus de dades es troben en aquestes pàgines). No pot demanar al sistema operatiu que mapeï una part de la memòria de l'aplicació amfitriona (per exemple, mitjançant /proc/pid/maps). Els intents ingenus de llegir a cegues una regió de memòria arbitrària d'una aplicació amfitrió, per no parlar dels intents d'escriure, tard o d'hora (molt probablement el primer) conduirà a la finalització forçada del programa d'enclavament. Això passa sempre que la regió d'espai d'adreces virtuals sol·licitada per l'enclavament és inaccessible per a l'aplicació amfitrió.

Tenint en compte aquestes dures realitats, un escriptor de virus serà capaç d'utilitzar enclavaments SGX per assolir els seus objectius maliciosos?

– Hack per sondejar adreces per veure si es poden llegir
– Hack per investigar adreces per a la escriptura
– Hack per redirigir el flux de control
– Què li donen al dolent els tres hacks enumerats anteriorment?
– Com el dolent utilitza aquests hacks per crear ranzowari

Programari maliciós SGX: com els dolents exploten la nova tecnologia Intel per a finalitats diferents d'aquelles per a les quals va ser concebuda

En base a tot l'anterior, s'accepta generalment que un enclavament només és capaç de servir l'aplicació amfitrió i que l'enclavament no pot exercir la seva pròpia iniciativa, incloses les malicioses. Això vol dir que els enclavaments no tenen cap valor pràctic per als autors de virus. Aquesta suposició precipitada és una de les raons per les quals la protecció SGX és asimètrica: el codi de l'aplicació amfitrió no pot accedir a la memòria d'enclavament, mentre que el codi d'enclavament pot llegir i escriure a qualsevol adreça de memòria de l'aplicació host.

Per tant, si el codi d'enclavament maliciós era capaç de fer trucades al sistema arbitràries en nom de l'aplicació amfitriona, executar codi arbitrari en nom seu, escanejar la memòria de l'aplicació amfitriona i trobar-hi cadenes ROP abusables, podria prendre el control complet de l'aplicació amfitriona, en mode sigil. No només pot robar i xifrar fitxers d'usuari, sinó que també pot actuar en nom de l'usuari. Per exemple, enviar correus electrònics de pesca en nom seu o realitzar atacs DoS. Sense por fins i tot als mecanismes de protecció més moderns, com ara apilar canaris i abordar la desinfecció.

Us mostrarem alguns trucs que els atacants fan servir per superar les limitacions descrites anteriorment per aprofitar SGX per als seus propis propòsits maliciosos: atacs ROP. O bé per executar codi arbitrari disfressat com un procés d'aplicació amfitrió (similar al process hollowing, que sovint utilitza programari maliciós), o per dissimular un programari maliciós ja fet (per salvar el seu programari maliciós de la persecució dels antivirus i altres mecanismes de defensa).

Hack per sondejar adreces per veure si es poden llegir

Com que l'enclavament no sap quins intervals de l'espai d'adreces virtuals són accessibles per a l'aplicació amfitrió, i com que l'enclavament es veu obligat a finalitzar quan intenta llegir una adreça inaccessible, l'atacant s'enfronta a la tasca de trobar una manera de fallar-ho. escanejar amb tolerància l'espai d'adreces. Trobeu una manera de mapar adreces virtuals disponibles. El dolent resol aquest problema fent un mal ús de la tecnologia TSX d'Intel. Utilitza un dels efectes secundaris de TSX: si la funció d'accés a la memòria es col·loca en una transacció TSX, TSX suprimeix les excepcions derivades de l'accés a adreces no vàlides sense arribar al sistema operatiu. Si s'intenta accedir a una adreça de memòria no vàlida, només s'avorta la transacció actual, no tot el programa d'enclavament. Això. TSX permet que un enclavament accedeixi de manera segura a qualsevol adreça des d'una transacció, sense risc de col·lapse.

Si l'adreça especificada està disponible l'aplicació amfitriona, la transacció TSX sol tenir èxit. En casos rars, pot fallar a causa d'influències externes com ara interrupcions (com ara interrupcions del programador), desallotjaments de memòria cau o modificació simultània d'una ubicació de memòria per diversos processos. En aquests casos excepcionals, el TSX retorna un codi d'error que indica que l'error és temporal. En aquests casos, només cal que reinicieu la transacció.

Si l'adreça especificada no està disponible l'aplicació host, TSX suprimeix l'excepció que s'ha produït (el sistema operatiu no és notificat) i avorta la transacció. Es retorna un codi d'error al codi d'enclavament perquè pugui reaccionar al fet que la transacció s'ha cancel·lat. Aquests codis d'error indiquen que l'adreça en qüestió no està disponible per a l'aplicació amfitriona.

Programari maliciós SGX: com els dolents exploten la nova tecnologia Intel per a finalitats diferents d'aquelles per a les quals va ser concebuda

Programari maliciós SGX: com els dolents exploten la nova tecnologia Intel per a finalitats diferents d'aquelles per a les quals va ser concebuda

Aquesta manipulació de TSX des de l'enclavament té una característica agradable per al dolent: com que la majoria dels comptadors de rendiment del maquinari no s'actualitzen en el moment en què s'executa el codi de l'enclavament, és impossible fer un seguiment de les transaccions de TSX executades dins de l'enclavament. Així, la manipulació maliciosa del TSX segueix sent completament invisible per al sistema operatiu.

A més, com que el pirateig anterior no es basa en cap trucada al sistema, no es pot detectar ni prevenir simplement bloquejant les trucades al sistema; que acostuma a donar un resultat positiu en la lluita contra la caça dels ous.

El dolent utilitza el pirateig descrit anteriorment per cercar el codi de l'aplicació amfitrió per a gadgets adequats per formar una cadena ROP. Al mateix temps, no necessita investigar totes les adreces. N'hi ha prou amb sondar una adreça de cada pàgina de l'espai d'adreces virtuals. La prova dels 16 gigabytes de memòria triga uns 45 minuts (en un Intel i7-6700K). Com a resultat, el dolent rep una llista de pàgines executables adequades per construir una cadena ROP.

Hack per investigar adreces per a l'escriptura

Per dur a terme una versió enclavament d'un atac ROP, un atacant ha de ser capaç de cercar àrees de memòria no utilitzades que es puguin escriure de l'aplicació host. L'atacant utilitza aquestes ubicacions de memòria per injectar un marc de pila fals i per injectar una càrrega útil (shellcode). La conclusió és que un enclavament maliciós no pot requerir que l'aplicació amfitrió assigni memòria per si mateixa, sinó que pot fer un mal ús de la memòria ja assignada per l'aplicació amfitriona. Si, és clar, aconsegueix trobar aquestes zones sense col·lapsar l'enclavament.

El vilà realitza aquesta recerca aprofitant un altre efecte secundari de TSX. Primer, com en el cas anterior, sondeja l'adreça de la seva existència, i després comprova si la pàgina corresponent a aquesta adreça es pot escriure. Per fer-ho, el dolent utilitza el següent hack: col·loca una funció d'escriptura en una transacció TSX, i després que s'hagi completat, però abans que s'hagi completat, avorta la transacció a la força (avortament explícit).

En mirar el codi de retorn d'una transacció TSX, l'atacant entén si es pot escriure. Si es tracta d'un "avortament explícit", el dolent entén que la gravació hauria tingut èxit si l'hagués seguit. Si la pàgina és de només lectura, la transacció acaba amb un error diferent de "avortament explícit".

Programari maliciós SGX: com els dolents exploten la nova tecnologia Intel per a finalitats diferents d'aquelles per a les quals va ser concebuda

Aquesta manipulació de TSX té una altra característica que és agradable per al dolent (a més de la impossibilitat de fer un seguiment a través dels comptadors de rendiment del maquinari): ja que totes les ordres d'escriptura de memòria només es comprometen si la transacció té èxit, forçar la transacció a completar-se garanteix que la cel·la de memòria sondada. roman sense canvis.

Hack per redirigir el flux de control

Quan realitza un atac ROP des d'un enclavament, a diferència dels atacs ROP tradicionals, l'atacant pot obtenir el control del registre RIP sense explotar cap error del programa atacat (desbordament de memòria intermèdia o alguna cosa semblant). Un atacant pot sobreescriure directament el valor del registre RIP emmagatzemat a la pila. En particular, pot substituir el valor d'aquest registre per la seva pròpia cadena ROP.

Tanmateix, si la cadena ROP és llarga, sobreescriure una gran part de la pila de l'aplicació amfitrió pot provocar la corrupció de dades i un comportament inesperat del programa. El dolent, que pretén dur a terme el seu atac encobert, no està satisfet amb aquest estat de coses. Per tant, crea un marc de pila temporal fals per si mateix i emmagatzema la seva cadena ROP en ell. El marc de la pila falsa es col·loca en una ubicació de memòria d'escriptura aleatòria, deixant intacta la pila real.

Programari maliciós SGX: com els dolents exploten la nova tecnologia Intel per a finalitats diferents d'aquelles per a les quals va ser concebuda

Què li donen al dolent els tres hacks enumerats anteriorment?

(1) Primer, l'enclavament maliciós a través piratejar per sondejar adreces per veure si es poden llegir, – cerca a l'aplicació amfitrió gadgets ROP abusables.

Programari maliciós SGX: com els dolents exploten la nova tecnologia Intel per a finalitats diferents d'aquelles per a les quals va ser concebuda

(2) Després per pirateig per investigar adreces per a l'escriptura, – un enclavament maliciós identifica àrees de la memòria de l'aplicació amfitrió que són adequades per injectar una càrrega útil.

Programari maliciós SGX: com els dolents exploten la nova tecnologia Intel per a finalitats diferents d'aquelles per a les quals va ser concebuda

(3) A continuació, l'enclavament crea una cadena ROP a partir dels gadgets descoberts al pas (1) i injecta aquesta cadena a la pila d'aplicacions host.

Programari maliciós SGX: com els dolents exploten la nova tecnologia Intel per a finalitats diferents d'aquelles per a les quals va ser concebuda

(4) Finalment, quan l'aplicació amfitrió es troba amb la cadena ROP creada al pas anterior, la càrrega útil maliciosa comença a executar-se, amb els privilegis de l'aplicació amfitriona i la capacitat de fer trucades al sistema.

Com un dolent utilitza aquests hacks per crear ranzowari

Després que l'aplicació amfitrió transfereixi el control a l'enclavament a través d'un dels ECALL (sense sospitar que aquest enclavament és maliciós), l'enclavament maliciós cerca espai lliure a la memòria de l'aplicació amfitriona per injectar codi (prenent com a espais lliures aquelles seqüències de cel·les). que s'omple de zeros). Després a través piratejar per sondejar adreces per veure si es poden llegir, – l'enclavament cerca pàgines executables a l'aplicació amfitrió i genera una cadena ROP que crea un fitxer nou anomenat "RANSOM" al directori actual (en un atac real, l'enclavament xifra els fitxers d'usuari existents) i mostra un missatge de rescat. Al mateix temps, l'aplicació amfitriona creu ingènuament que l'enclavament simplement està afegint dos números. Com es veu això al codi?

Per facilitar la percepció, introduïm algunes mnemotècniques a través de les definicions:

Programari maliciós SGX: com els dolents exploten la nova tecnologia Intel per a finalitats diferents d'aquelles per a les quals va ser concebuda

Desem els valors originals dels registres RSP i RBP per tal de restablir el funcionament normal de l'aplicació amfitrió després d'executar la càrrega útil:

Programari maliciós SGX: com els dolents exploten la nova tecnologia Intel per a finalitats diferents d'aquelles per a les quals va ser concebuda

Estem buscant un marc de pila adequat (vegeu el codi de la secció "pirateig per redirigir el flux de control").

Trobar dispositius ROP adequats:

Programari maliciós SGX: com els dolents exploten la nova tecnologia Intel per a finalitats diferents d'aquelles per a les quals va ser concebuda

Trobar un lloc per injectar la càrrega útil:

Programari maliciós SGX: com els dolents exploten la nova tecnologia Intel per a finalitats diferents d'aquelles per a les quals va ser concebuda

Construïm una cadena ROP:

Programari maliciós SGX: com els dolents exploten la nova tecnologia Intel per a finalitats diferents d'aquelles per a les quals va ser concebuda

Així és com la tecnologia SGX d'Intel, dissenyada per contrarestar programes maliciosos, és explotada pels vilans per aconseguir objectius oposats.

Font: www.habr.com

Afegeix comentari