Malware SGX: cómo los villanos explotan la nueva tecnología de Intel para fines distintos a los que fue concebida

Como usted sabe, el código ejecutado en el enclave tiene una funcionalidad seriamente limitada. No puede realizar llamadas al sistema. No puede realizar operaciones de E/S. No conoce la dirección base del segmento de código de la aplicación host. No puede jmp ni llamar al código de la aplicación host. No tiene idea de la estructura del espacio de direcciones que gobierna la aplicación host (por ejemplo, qué páginas están asignadas o qué tipo de datos se encuentran en esas páginas). No puede pedirle al sistema operativo que le asigne una parte de la memoria de la aplicación host (por ejemplo, a través de /proc/pid/maps). Los intentos ingenuos de leer ciegamente una región de memoria arbitraria de una aplicación host, sin mencionar los intentos de escribir, tarde o temprano (muy probablemente lo primero) conducirán a la terminación forzada del programa enclave. Esto sucede siempre que la región del espacio de direcciones virtuales solicitada por el enclave es inaccesible para la aplicación host.

Dadas estas duras realidades, ¿podrá un creador de virus utilizar enclaves SGX para lograr sus objetivos maliciosos?

– Hack para sondear direcciones para ver si se pueden leer.
– Hackear para sondear direcciones en busca de capacidad de escritura
– Hack para redirigir el flujo de control
– ¿Qué le dan al villano los tres trucos enumerados anteriormente?
– Cómo el villano usa estos trucos para crear ranzomwari

Malware SGX: cómo los villanos explotan la nueva tecnología de Intel para fines distintos a los que fue concebida

Con base en todo lo anterior, generalmente se acepta que un enclave solo es capaz de servir a la aplicación host y que el enclave no puede ejercer su propia iniciativa, incluidas las maliciosas. Esto significa que los enclaves no tienen ningún valor práctico para los creadores de virus. Esta suposición apresurada es una de las razones por las que la protección SGX es asimétrica: el código de la aplicación host no puede acceder a la memoria del enclave, mientras que el código del enclave puede leer y escribir en cualquier dirección de memoria de la aplicación host.

Por lo tanto, si el código de enclave malicioso pudiera realizar llamadas arbitrarias al sistema en nombre de la aplicación host, ejecutar código arbitrario en su nombre, escanear la memoria de la aplicación host y encontrar cadenas ROP abusables en ella, podría tomar el control completo de la aplicación host, en Modo sigilo. No sólo puede robar y cifrar archivos de usuario, sino que también puede actuar en nombre del usuario. Por ejemplo, envíe correos electrónicos de phishing en su nombre o realice ataques DoS. Sin miedo ni siquiera a los mecanismos de protección más modernos, como los canarios de apilamiento y la higienización de direcciones.

Le mostraremos algunos trucos que los atacantes utilizan para superar las limitaciones descritas anteriormente y aprovechar SGX para sus propios fines maliciosos: ataques ROP. Ya sea para ejecutar código arbitrario disfrazado de un proceso de aplicación host (similar al proceso hueco, que suele utilizar el malware) o para disfrazar un malware ya preparado (para salvar su malware de la persecución de antivirus y otros mecanismos de defensa).

Hack para sondear direcciones para ver si se pueden leer

Dado que el enclave no sabe qué rangos del espacio de direcciones virtuales son accesibles para la aplicación host, y dado que el enclave se ve obligado a terminar cuando intenta leer una dirección inaccesible, el atacante se enfrenta a la tarea de encontrar una forma de solucionar el problema. escanear tolerantemente el espacio de direcciones. Encuentre una manera de asignar direcciones virtuales disponibles. El villano resuelve este problema haciendo un mal uso de la tecnología TSX de Intel. Utiliza uno de los efectos secundarios de TSX: si la función de acceso a la memoria se coloca en una transacción TSX, TSX suprime las excepciones que surgen del acceso a direcciones no válidas sin llegar al sistema operativo. Si se intenta acceder a una dirección de memoria no válida, solo se cancela la transacción actual, no todo el programa del enclave. Eso. TSX permite que un enclave acceda de forma segura a cualquier dirección desde una transacción, sin riesgo de colapso.

si la dirección especificada está disponible aplicación host, la transacción TSX suele ser exitosa. En casos raros, puede fallar debido a influencias externas como interrupciones (como interrupciones del programador), desalojos de caché o modificación simultánea de una ubicación de memoria por parte de múltiples procesos. En estos raros casos, TSX devuelve un código de error que indica que la falla es temporal. En estos casos, sólo necesitas reiniciar la transacción.

si la dirección especificada no está disponible aplicación host, TSX suprime la excepción que ocurrió (no se notifica al sistema operativo) y cancela la transacción. Se devuelve un código de error al código de enclave para que pueda reaccionar ante el hecho de que la transacción ha sido cancelada. Estos códigos de error indican que la dirección en cuestión no está disponible para la aplicación host.

Malware SGX: cómo los villanos explotan la nueva tecnología de Intel para fines distintos a los que fue concebida

Malware SGX: cómo los villanos explotan la nueva tecnología de Intel para fines distintos a los que fue concebida

Esta manipulación de TSX desde el interior del enclave tiene una característica interesante para el villano: dado que la mayoría de los contadores de rendimiento del hardware no se actualizan en el momento en que se ejecuta el código del enclave, es imposible rastrear las transacciones TSX ejecutadas dentro del enclave. De este modo, la manipulación maliciosa del TSX permanece completamente invisible para el sistema operativo.

Además, dado que el truco anterior no depende de ninguna llamada al sistema, no se puede detectar ni prevenir simplemente bloqueando las llamadas al sistema; lo que suele dar un resultado positivo en la lucha contra la caza de huevos.

El villano utiliza el truco descrito anteriormente para buscar en el código de la aplicación host dispositivos adecuados para formar una cadena ROP. Al mismo tiempo, no necesita sondear cada dirección. Basta con sondear una dirección de cada página del espacio de direcciones virtuales. Probar los 16 gigabytes de memoria lleva unos 45 minutos (en un Intel i7-6700K). Como resultado, el villano recibe una lista de páginas ejecutables que son adecuadas para construir una cadena ROP.

Hack para sondear direcciones en busca de escritura

Para llevar a cabo una versión enclave de un ataque ROP, un atacante debe poder buscar áreas de memoria no utilizadas en las que se pueda escribir en la aplicación host. El atacante utiliza estas ubicaciones de memoria para inyectar un marco de pila falso e inyectar una carga útil (shellcode). La conclusión es que un enclave malicioso no puede exigir que la aplicación host se asigne memoria, sino que puede hacer un mal uso de la memoria ya asignada por la aplicación host. Si, por supuesto, logra encontrar esas áreas sin colapsar el enclave.

El villano lleva a cabo esta búsqueda aprovechando otro efecto secundario del TSX. Primero, como en el caso anterior, comprueba la existencia de la dirección y luego comprueba si se puede escribir en la página correspondiente a esta dirección. Para hacer esto, el villano usa el siguiente truco: coloca una función de escritura en una transacción TSX, y después de que se haya completado, pero antes de que se haya completado, aborta la transacción por la fuerza (aborto explícito).

Al observar el código de retorno de una transacción TSX, el atacante comprende si se puede escribir en él. Si se trata de un "aborto explícito", el villano entiende que la grabación habría sido exitosa si hubiera seguido adelante. Si la página es de sólo lectura, la transacción finaliza con un error distinto de "anulación explícita".

Malware SGX: cómo los villanos explotan la nueva tecnología de Intel para fines distintos a los que fue concebida

Esta manipulación de TSX tiene otra característica que es agradable para el villano (además de la imposibilidad de rastrear a través de contadores de rendimiento del hardware): dado que todos los comandos de escritura en memoria se confirman solo si la transacción es exitosa, forzar la finalización de la transacción garantiza que la celda de memoria investigada permanece sin cambios.

Hack para redirigir el flujo de control

Al realizar un ataque ROP desde un enclave, a diferencia de los ataques ROP tradicionales, el atacante puede obtener el control del registro RIP sin explotar ningún error en el programa atacado (desbordamiento del búfer o algo así). Un atacante puede sobrescribir directamente el valor del registro RIP almacenado en la pila. En particular, puede sustituir el valor de este registro por su propia cadena ROP.

Sin embargo, si la cadena ROP es larga, sobrescribir una gran parte de la pila de la aplicación host puede provocar daños en los datos y un comportamiento inesperado del programa. El villano, que busca llevar a cabo su ataque de forma encubierta, no está satisfecho con esta situación. Por lo tanto, crea un marco de pila temporal falso para sí mismo y almacena su cadena ROP en él. El marco de la pila falsa se coloca en una ubicación de memoria grabable aleatoria, dejando intacta la pila real.

Malware SGX: cómo los villanos explotan la nueva tecnología de Intel para fines distintos a los que fue concebida

¿Qué le dan al villano los tres trucos enumerados anteriormente?

(1) Primero, el enclave malicioso a través de hack para sondear direcciones para ver si se pueden leer, – busca en la aplicación host dispositivos ROP de los que se pueda abusar.

Malware SGX: cómo los villanos explotan la nueva tecnología de Intel para fines distintos a los que fue concebida

(2) Luego por hack para sondear direcciones en busca de capacidad de escritura, – un enclave malicioso identifica áreas en la memoria de la aplicación host que son adecuadas para inyectar una carga útil.

Malware SGX: cómo los villanos explotan la nueva tecnología de Intel para fines distintos a los que fue concebida

(3) A continuación, el enclave crea una cadena ROP a partir de los dispositivos descubiertos en el paso (1) e inyecta esta cadena en la pila de aplicaciones del host.

Malware SGX: cómo los villanos explotan la nueva tecnología de Intel para fines distintos a los que fue concebida

(4) Finalmente, cuando la aplicación host encuentra la cadena ROP creada en el paso anterior, la carga maliciosa comienza a ejecutarse, con los privilegios de la aplicación host y la capacidad de realizar llamadas al sistema.

Cómo un villano usa estos trucos para crear ranzowari

Después de que la aplicación host transfiere el control al enclave a través de uno de los ECALL (sin sospechar que este enclave es malicioso), el enclave malicioso busca espacio libre en la memoria de la aplicación host para inyectar código (tomando como espacios libres aquellas secuencias de celdas que está lleno de ceros). Luego a través de hack para sondear direcciones para ver si se pueden leer, – el enclave busca páginas ejecutables en la aplicación host y genera una cadena ROP que crea un nuevo archivo llamado “RANSOM” en el directorio actual (en un ataque real, el enclave cifra los archivos de usuario existentes) y muestra un mensaje de rescate. Al mismo tiempo, la aplicación anfitriona cree ingenuamente que el enclave simplemente está sumando dos números. ¿Cómo se ve esto en el código?

Para facilitar la percepción, introduzcamos algunos mnemotécnicos a través de las definiciones:

Malware SGX: cómo los villanos explotan la nueva tecnología de Intel para fines distintos a los que fue concebida

Guardamos los valores originales de los registros RSP y RBP para restaurar el funcionamiento normal de la aplicación host después de ejecutar la carga útil:

Malware SGX: cómo los villanos explotan la nueva tecnología de Intel para fines distintos a los que fue concebida

Buscamos un marco de pila adecuado (consulte el código de la sección "truco para redirigir el flujo de control").

Encontrar dispositivos ROP adecuados:

Malware SGX: cómo los villanos explotan la nueva tecnología de Intel para fines distintos a los que fue concebida

Encontrar un lugar para inyectar la carga útil:

Malware SGX: cómo los villanos explotan la nueva tecnología de Intel para fines distintos a los que fue concebida

Construimos una cadena ROP:

Malware SGX: cómo los villanos explotan la nueva tecnología de Intel para fines distintos a los que fue concebida

Así es como los villanos aprovechan la tecnología SGX de Intel, diseñada para contrarrestar programas maliciosos, para lograr objetivos opuestos.

Fuente: habr.com

Añadir un comentario