Malware SGX: como os vilões estão explorando a nova tecnologia Intel para fins diferentes daqueles para os quais foi destinada

Como você sabe, o código executado no enclave é seriamente limitado em sua funcionalidade. Ele não pode fazer chamadas de sistema. Ele não pode realizar operações de E/S. Ele não conhece o endereço base do segmento de código do aplicativo host. Ele não pode jmp ou chamar o código do aplicativo host. Ele não tem ideia sobre a estrutura do espaço de endereço que governa o aplicativo host (por exemplo, quais páginas são mapeadas ou que tipo de dados estão localizados nessas páginas). Ele não pode solicitar ao sistema operacional que mapeie uma parte da memória do aplicativo host para ele (por exemplo, por meio de /proc/pid/maps). Tentativas ingênuas de ler cegamente uma região de memória arbitrária de um aplicativo host, sem mencionar tentativas de escrever, mais cedo ou mais tarde (provavelmente a primeira) levarão ao encerramento forçado do programa enclave. Isso acontece sempre que a região do espaço de endereço virtual solicitada pelo enclave está inacessível ao aplicativo host.

Dada a dura realidade, um criador de vírus será capaz de usar enclaves SGX para atingir seus objetivos maliciosos?

– Hack para sondar endereços para ver se eles podem ser lidos
– Hack para sondar endereços quanto à capacidade de escrita
– Hack para redirecionar o fluxo de controle
– O que os três hacks listados acima dão ao vilão?
– Como o vilão usa esses hacks para criar ranzowari

Malware SGX: como os vilões estão explorando a nova tecnologia Intel para fins diferentes daqueles para os quais foi destinada

Com base em tudo o que foi dito acima, é geralmente aceito que um enclave só é capaz de servir o aplicativo host e que o enclave não pode exercer sua própria iniciativa, inclusive as maliciosas. Isso significa que os enclaves não têm valor prático para os criadores de vírus. Essa suposição precipitada é uma das razões pelas quais a proteção SGX é assimétrica: o código do aplicativo host não pode acessar a memória do enclave, enquanto o código do enclave pode ler e gravar em qualquer endereço de memória do aplicativo host.

Portanto, se o código do enclave malicioso fosse capaz de fazer chamadas de sistema arbitrárias em nome do aplicativo host, executar código arbitrário em seu nome, verificar a memória do aplicativo host e encontrar cadeias ROP abusivas nele, ele poderia assumir o controle total do aplicativo host, em modo furtivo. Ele pode não apenas roubar e criptografar arquivos do usuário, mas também agir em nome do usuário. Por exemplo, envie e-mails de phishing em seu nome ou conduza ataques DoS. Sem medo até dos mais modernos mecanismos de proteção, como stack canaries e address sanitization.

Mostraremos alguns hacks que os invasores usam para superar as limitações descritas acima e tirar vantagem do SGX para seus próprios fins maliciosos: ataques ROP. Seja para executar código arbitrário disfarçado como um processo de aplicativo host (semelhante ao process Hollowing, que é frequentemente usado por malware), ou para disfarçar um malware pronto (para salvar seu malware da perseguição por antivírus e outros mecanismos de defesa).

Hack para sondar endereços para ver se eles podem ser lidos

Como o enclave não sabe quais faixas do espaço de endereço virtual são acessíveis ao aplicativo host e como o enclave é forçado a encerrar ao tentar ler um endereço inacessível, o invasor se depara com a tarefa de encontrar uma maneira de cometer uma falha. varre tolerantemente o espaço de endereço. Encontre uma maneira de mapear os endereços virtuais disponíveis. O vilão resolve esse problema fazendo uso indevido da tecnologia TSX da Intel. Usa um dos efeitos colaterais do TSX: se a função de acesso à memória for colocada em uma transação TSX, as exceções decorrentes do acesso a endereços inválidos serão suprimidas pelo TSX sem chegar ao sistema operacional. Se for feita uma tentativa de acessar um endereço de memória inválido, apenas a transação atual será abortada, e não todo o programa do enclave. Que. O TSX permite que um enclave acesse com segurança qualquer endereço de uma transação – sem o risco de colapso.

Se o endereço especificado está disponível aplicativo host, a transação TSX geralmente é bem-sucedida. Em casos raros, pode falhar devido a influências externas, como interrupções (como interrupções do agendador), remoções de cache ou modificação simultânea de um local de memória por vários processos. Nestes casos raros, o TSX retorna um código de erro indicando que a falha é temporária. Nestes casos, basta reiniciar a transação.

Se o endereço especificado não está disponível aplicativo host, o TSX suprime a exceção que ocorreu (o sistema operacional não é notificado) e aborta a transação. Um código de erro é retornado ao código do enclave para que ele possa reagir ao fato de a transação ter sido cancelada. Esses códigos de erro indicam que o endereço em questão não está disponível para o aplicativo host.

Malware SGX: como os vilões estão explorando a nova tecnologia Intel para fins diferentes daqueles para os quais foi destinada

Malware SGX: como os vilões estão explorando a nova tecnologia Intel para fins diferentes daqueles para os quais foi destinada

Essa manipulação do TSX de dentro do enclave tem um recurso interessante para o vilão: como a maioria dos contadores de desempenho de hardware não são atualizados no momento em que o código do enclave é executado, é impossível rastrear as transações do TSX executadas dentro do enclave. Assim, a manipulação maliciosa do TSX permanece completamente invisível para o sistema operacional.

Além disso, como o hack acima não depende de nenhuma chamada do sistema, ele não pode ser detectado nem evitado simplesmente bloqueando as chamadas do sistema; o que geralmente dá um resultado positivo no combate à caça aos ovos.

O vilão usa o hack descrito acima para pesquisar no código do aplicativo host dispositivos adequados para formar uma cadeia ROP. Ao mesmo tempo, ele não precisa investigar todos os endereços. Basta testar um endereço de cada página do espaço de endereço virtual. A verificação de todos os 16 gigabytes de memória leva cerca de 45 minutos (em um Intel i7-6700K). Como resultado, o vilão recebe uma lista de páginas executáveis ​​adequadas para construir uma cadeia ROP.

Hack para sondar endereços quanto à capacidade de escrita

Para realizar uma versão enclave de um ataque ROP, um invasor precisa ser capaz de procurar áreas de memória não utilizadas graváveis ​​do aplicativo host. O invasor usa esses locais de memória para injetar um quadro de pilha falso e injetar uma carga útil (shellcode). O resultado final é que um enclave malicioso não é capaz de exigir que o aplicativo host aloque memória para si mesmo, mas pode usar indevidamente a memória já alocada pelo aplicativo host. Se, claro, ele conseguir encontrar essas áreas sem destruir o enclave.

O vilão realiza essa busca explorando outro efeito colateral do TSX. Primeiro, como no caso anterior, ele testa a existência do endereço e depois verifica se a página correspondente a esse endereço é gravável. Para fazer isso, o vilão usa o seguinte hack: ele coloca uma função de gravação em uma transação TSX e, depois de concluída, mas antes de concluída, ele aborta a transação à força (aborto explícito).

Ao observar o código de retorno de uma transação TSX, o invasor entende se ele é gravável. Se for um “aborto explícito”, o vilão entende que a gravação teria dado certo se ele tivesse feito isso. Se a página for somente leitura, a transação termina com um erro diferente de “anulação explícita”.

Malware SGX: como os vilões estão explorando a nova tecnologia Intel para fins diferentes daqueles para os quais foi destinada

Essa manipulação do TSX tem outro recurso que é legal para o vilão (além da impossibilidade de rastreamento através de contadores de desempenho de hardware): como todos os comandos de gravação de memória são confirmados apenas se a transação for bem-sucedida, forçar a conclusão da transação garante que a célula de memória testada continua sem alteração.

Hack para redirecionar o fluxo de controle

Ao realizar um ataque ROP a partir de um enclave - diferentemente dos ataques ROP tradicionais - o invasor pode obter o controle do registro RIP sem explorar quaisquer bugs no programa atacado (estouro de buffer ou algo parecido). Um invasor pode substituir diretamente o valor do registro RIP armazenado na pilha. Em particular, pode substituir o valor deste registo pela sua própria cadeia ROP.

No entanto, se a cadeia ROP for longa, a substituição de uma grande parte da pilha do aplicativo host poderá causar corrupção de dados e comportamento inesperado do programa. O vilão, que busca realizar seu ataque secretamente, não está satisfeito com esse estado de coisas. Portanto, ele cria um quadro de pilha temporário falso para si mesmo e armazena sua cadeia ROP nele. O quadro de pilha falso é colocado em um local de memória gravável aleatório, deixando a pilha real intacta.

Malware SGX: como os vilões estão explorando a nova tecnologia Intel para fins diferentes daqueles para os quais foi destinada

O que os três hacks listados acima dão ao vilão?

(1) Primeiro, o enclave malicioso através hackear para sondar endereços para ver se eles podem ser lidos, – pesquisa o aplicativo host em busca de gadgets ROP abusivos.

Malware SGX: como os vilões estão explorando a nova tecnologia Intel para fins diferentes daqueles para os quais foi destinada

(2) Então por hack para sondar endereços quanto à capacidade de escrita, – um enclave malicioso identifica áreas na memória do aplicativo host que são adequadas para injetar uma carga útil.

Malware SGX: como os vilões estão explorando a nova tecnologia Intel para fins diferentes daqueles para os quais foi destinada

(3) Em seguida, o enclave cria uma cadeia ROP a partir dos gadgets descobertos na etapa (1) e injeta essa cadeia na pilha do aplicativo host.

Malware SGX: como os vilões estão explorando a nova tecnologia Intel para fins diferentes daqueles para os quais foi destinada

(4) Finalmente, quando o aplicativo host encontra a cadeia ROP criada na etapa anterior, a carga maliciosa começa a ser executada - com os privilégios do aplicativo host e a capacidade de fazer chamadas de sistema.

Como um vilão usa esses hacks para criar ranzowari

Depois que o aplicativo host transfere o controle para o enclave por meio de um dos ECALLs (sem suspeitar que esse enclave é malicioso), o enclave malicioso procura espaço livre na memória do aplicativo host para injetar código (tomando como espaços livres aquelas sequências de células preenchido com zeros). Então através hackear para sondar endereços para ver se eles podem ser lidos, – o enclave procura páginas executáveis ​​no aplicativo host e gera uma cadeia ROP que cria um novo arquivo chamado “RANSOM” no diretório atual (em um ataque real, o enclave criptografa os arquivos existentes do usuário) e exibe uma mensagem de resgate. Ao mesmo tempo, o aplicativo host acredita ingenuamente que o enclave está simplesmente somando dois números. Como isso se parece no código?

Para facilitar a percepção, vamos introduzir alguns mnemônicos através das definições:

Malware SGX: como os vilões estão explorando a nova tecnologia Intel para fins diferentes daqueles para os quais foi destinada

Salvamos os valores originais dos registros RSP e RBP para restaurar a operação normal do aplicativo host após a execução da carga útil:

Malware SGX: como os vilões estão explorando a nova tecnologia Intel para fins diferentes daqueles para os quais foi destinada

Estamos procurando um stack frame adequado (veja o código da seção “hack para redirecionar o fluxo de controle”).

Encontrar dispositivos ROP adequados:

Malware SGX: como os vilões estão explorando a nova tecnologia Intel para fins diferentes daqueles para os quais foi destinada

Encontrando um local para injetar a carga útil:

Malware SGX: como os vilões estão explorando a nova tecnologia Intel para fins diferentes daqueles para os quais foi destinada

Construímos uma cadeia ROP:

Malware SGX: como os vilões estão explorando a nova tecnologia Intel para fins diferentes daqueles para os quais foi destinada

É assim que a tecnologia SGX da Intel, desenvolvida para combater programas maliciosos, é explorada por vilões para atingir objetivos opostos.

Fonte: habr.com

Adicionar um comentário