Malware SGX: como os viláns explotan a nova tecnoloxía de Intel para fins distintos aos para os que foi concibida

Como sabedes, o código executado no enclave está seriamente limitado na súa funcionalidade. Non pode facer chamadas ao sistema. Non pode realizar operacións de E/S. Non coñece o enderezo base do segmento de código da aplicación host. Non pode jmp nin chamar ao código da aplicación host. Non ten idea da estrutura do espazo de enderezos que rexe a aplicación host (por exemplo, que páxinas están mapeadas ou que tipo de datos se atopan nesas páxinas). Non pode pedirlle ao sistema operativo que asigne unha parte da memoria da aplicación host a ela (por exemplo, a través de /proc/pid/maps). Os intentos inxenuos de ler cegamente unha rexión de memoria arbitraria dunha aplicación host, sen esquecer os intentos de escribir, tarde ou cedo (probablemente o primeiro) levarán á terminación forzada do programa enclave. Isto ocorre sempre que a rexión do espazo de enderezos virtuais solicitada polo enclave é inaccesible para a aplicación host.

Dadas tan duras realidades, un escritor de virus poderá usar enclaves SGX para acadar os seus obxectivos maliciosos?

– Hack para probar enderezos para ver se se poden ler
– Hackear para probar enderezos de escritura
– Hack para redirixir o fluxo de control
– Que lle dan ao vilán os tres trucos enumerados arriba?
– Como usa o vilán estes trucos para crear ranzowari

Malware SGX: como os viláns explotan a nova tecnoloxía de Intel para fins distintos aos para os que foi concibida

En base a todo o anterior, é xeralmente aceptado que un enclave só é capaz de servir á aplicación host, e que o enclave non pode exercer a súa propia iniciativa, incluídas as maliciosas. Isto significa que os enclaves non teñen ningún valor práctico para os escritores de virus. Esta suposición precipitada é unha das razóns polas que a protección SGX é asimétrica: o código da aplicación host non pode acceder á memoria do enclave, mentres que o código do enclave pode ler e escribir en calquera enderezo da memoria da aplicación host.

Polo tanto, se o código de enclave malicioso fose capaz de facer chamadas arbitrarias ao sistema en nome da aplicación host, executar código arbitrario no seu nome, escanear a memoria da aplicación host e atopar nela cadeas ROP abusables, podería facerse co control completo da aplicación host. modo furtivo. Non só pode roubar e cifrar ficheiros de usuario, senón que tamén pode actuar en nome do usuario. Por exemplo, enviar correos electrónicos de phishing no seu nome ou realizar ataques DoS. Sen medo nin sequera aos mecanismos de protección máis modernos, como apilar canarios e abordar a desinfección.

Mostrarémosche algúns trucos que usan os atacantes para superar as limitacións descritas anteriormente para aproveitar SGX para os seus propios propósitos maliciosos: ataques ROP. Ou ben para executar código arbitrario disfrazado de proceso de aplicación host (semellante ao proceso de oco, que adoita usar o malware), ou para disfrazar un malware preparado (para salvar o seu malware da persecución de antivirus e outros mecanismos de defensa).

Hack para probar enderezos para ver se se poden ler

Dado que o enclave descoñece cales son os intervalos do espazo de enderezos virtuais accesibles para a aplicación anfitrión, e dado que o enclave está obrigado a finalizar cando intenta ler un enderezo inaccesible, o atacante enfróntase á tarefa de atopar unha forma de errar. escanear tolerantemente o espazo de enderezos. Busca unha forma de mapear os enderezos virtuais dispoñibles. O vilán resolve este problema facendo un mal uso da tecnoloxía TSX de Intel. Usa un dos efectos secundarios de TSX: se a función de acceso á memoria se coloca nunha transacción de TSX, entón TSX suprime as excepcións derivadas do acceso a enderezos non válidos sen chegar ao sistema operativo. Se se intenta acceder a un enderezo de memoria non válido, só se aborta a transacción actual, non todo o programa enclave. Iso. TSX permite que un enclave acceda de forma segura a calquera enderezo desde dentro dunha transacción, sen risco de colapso.

Se o enderezo especificado está dispoñible aplicación anfitrión, a transacción TSX é máis frecuentemente exitosa. En casos raros, pode fallar debido a influencias externas, como interrupcións (como interrupcións do programador), expulsións da caché ou modificación simultánea dunha localización da memoria mediante varios procesos. Nestes casos raros, o TSX devolve un código de erro que indica que o fallo é temporal. Nestes casos, só precisa reiniciar a transacción.

Se o enderezo especificado non está dispoñible aplicación anfitrión, TSX suprime a excepción que ocorreu (o SO non é notificado) e aborta a transacción. Devólvese un código de erro ao código do enclave para que poida reaccionar ao feito de que a transacción foi cancelada. Estes códigos de erro indican que o enderezo en cuestión non está dispoñible para a aplicación host.

Malware SGX: como os viláns explotan a nova tecnoloxía de Intel para fins distintos aos para os que foi concibida

Malware SGX: como os viláns explotan a nova tecnoloxía de Intel para fins distintos aos para os que foi concibida

Esta manipulación de TSX desde dentro do enclave ten unha característica agradable para o vilán: dado que a maioría dos contadores de rendemento do hardware non se actualizan no momento en que se executa o código do enclave, é imposible rastrexar as transaccións de TSX executadas dentro do enclave. Así, a manipulación maliciosa do TSX permanece completamente invisible para o sistema operativo.

Ademais, dado que o hack anterior non depende de ningunha chamada do sistema, non se pode detectar nin evitar simplemente bloqueando as chamadas do sistema; que adoita dar un resultado positivo na loita contra a caza dos ovos.

O vilán usa o truco descrito anteriormente para buscar no código da aplicación anfitrión aparellos axeitados para formar unha cadea ROP. Ao mesmo tempo, non precisa probar todos os enderezos. É suficiente probar un enderezo de cada páxina do espazo de enderezos virtuais. A exploración dos 16 gigabytes de memoria leva uns 45 minutos (nun Intel i7-6700K). Como resultado, o vilán recibe unha lista de páxinas executables que son adecuadas para construír unha cadea ROP.

Hackear para probar enderezos de escritura

Para levar a cabo unha versión enclave dun ataque ROP, un atacante debe ser capaz de buscar áreas de memoria escribibles non utilizadas da aplicación host. O atacante usa estas localizacións de memoria para inxectar un cadro de pila falso e para inxectar unha carga útil (shellcode). A conclusión é que un enclave malicioso non pode esixir que a aplicación anfitrión asigne memoria por si mesma, senón que pode facer un mal uso da memoria xa asignada pola aplicación anfitrión. Se, por suposto, consegue atopar esas zonas sen derrubar o enclave.

O vilán leva a cabo esta busca explotando outro efecto secundario de TSX. Primeiro, como no caso anterior, sondea o enderezo para a súa existencia, e despois verifica se a páxina correspondente a este enderezo é escribible. Para iso, o vilán usa o seguinte truco: coloca unha función de escritura nunha transacción de TSX e, despois de que se complete, pero antes de que se complete, aborta a transacción á forza (aborto explícito).

Ao mirar o código de retorno dunha transacción de TSX, o atacante comprende se se pode escribir. Se se trata dun "aborto explícito", o vilán entende que a gravación tería sido un éxito se o tivese seguido. Se a páxina é de só lectura, a transacción remata cun erro distinto de "abortar explícito".

Malware SGX: como os viláns explotan a nova tecnoloxía de Intel para fins distintos aos para os que foi concibida

Esta manipulación de TSX ten outra característica que é agradable para o vilán (ademais da imposibilidade de rastrexar a través dos contadores de rendemento do hardware): xa que todos os comandos de escritura de memoria só se comprometen se a transacción é exitosa, forzar a transacción a completarse garante que a célula de memoria sondeada. permanece sen cambios.

Hack para redirixir o fluxo de control

Ao realizar un ataque ROP desde un enclave -a diferenza dos ataques ROP tradicionais- o atacante pode gañar o control do rexistro RIP sen explotar ningún erro no programa atacado (desbordamento do búfer ou algo así). Un atacante pode sobrescribir directamente o valor do rexistro RIP almacenado na pila. En particular, pode substituír o valor deste rexistro pola súa propia cadea ROP.

Non obstante, se a cadea ROP é longa, sobrescribir unha gran parte da pila da aplicación host pode provocar a corrupción dos datos e un comportamento inesperado do programa. O vilán, que pretende levar a cabo o seu ataque encuberto, non está satisfeito con este estado de cousas. Polo tanto, crea un marco de pila temporal falso para si mesmo e almacena a súa cadea ROP nel. O marco da pila falsa colócase nunha localización de memoria escribible aleatoria, deixando intacta a pila real.

Malware SGX: como os viláns explotan a nova tecnoloxía de Intel para fins distintos aos para os que foi concibida

Que lle dan ao vilán os tres trucos enumerados anteriormente?

(1) En primeiro lugar, o enclave malicioso a través piratear para probar enderezos para ver se se poden ler, – busca na aplicación anfitrión aparellos ROP abusables.

Malware SGX: como os viláns explotan a nova tecnoloxía de Intel para fins distintos aos para os que foi concibida

(2) Despois por pirateo para probar enderezos de escritura, – un enclave malicioso identifica áreas da memoria da aplicación host que son adecuadas para inxectar unha carga útil.

Malware SGX: como os viláns explotan a nova tecnoloxía de Intel para fins distintos aos para os que foi concibida

(3) A continuación, o enclave crea unha cadea ROP a partir dos gadgets descubertos no paso (1) e inxecta esta cadea na pila de aplicacións host.

Malware SGX: como os viláns explotan a nova tecnoloxía de Intel para fins distintos aos para os que foi concibida

(4) Finalmente, cando a aplicación host atopa a cadea ROP creada no paso anterior, a carga útil maliciosa comeza a executarse, cos privilexios da aplicación host e a capacidade de facer chamadas ao sistema.

Como usa un vilán estes trucos para crear ranzowari

Despois de que a aplicación host transfire o control ao enclave a través dunha das ECALL (sen sospeitar que este enclave é malicioso), o enclave malicioso busca espazo libre na memoria da aplicación host para inxectar código (tomando como espazos libres aquelas secuencias de celas). que se encheu de ceros). Despois a través piratear para probar enderezos para ver se se poden ler, – o enclave busca páxinas executables na aplicación host e xera unha cadea ROP que crea un novo ficheiro chamado "RANSOM" no directorio actual (nun ataque real, o enclave cifra os ficheiros de usuario existentes) e mostra unha mensaxe de rescate. Ao mesmo tempo, a aplicación host cre inxenuamente que o enclave simplemente está engadindo dous números. Como se ve isto no código?

Para facilitar a percepción, introduzamos algúns mnemotécnicos a través das definicións:

Malware SGX: como os viláns explotan a nova tecnoloxía de Intel para fins distintos aos para os que foi concibida

Gardamos os valores orixinais dos rexistros RSP e RBP para restaurar o funcionamento normal da aplicación host despois de executar a carga útil:

Malware SGX: como os viláns explotan a nova tecnoloxía de Intel para fins distintos aos para os que foi concibida

Estamos a buscar un marco de pila axeitado (consulta o código da sección "hackear para redirixir o fluxo de control").

Buscar aparellos ROP axeitados:

Malware SGX: como os viláns explotan a nova tecnoloxía de Intel para fins distintos aos para os que foi concibida

Atopar un lugar para inxectar a carga útil:

Malware SGX: como os viláns explotan a nova tecnoloxía de Intel para fins distintos aos para os que foi concibida

Construímos unha cadea ROP:

Malware SGX: como os viláns explotan a nova tecnoloxía de Intel para fins distintos aos para os que foi concibida

Así é como a tecnoloxía SGX de Intel, deseñada para contrarrestar programas maliciosos, é explotada polos viláns para acadar obxectivos opostos.

Fonte: www.habr.com

Engadir un comentario