Uma armadilha irresistível para malwares

12 set 2019

Não vi o 6º filme da franquia Missão Impossível, nem verei. Assisti ao 5º filme (em estado zumbi durante um longo voo para casa, depois de uma semana difícil de negócios) apenas porque uma cena foi filmada em nosso moderno escritório em Londres. Para ser sincero, prefiro algo mais desafiador, intelectualmente estimulante e interessante. Afinal, meu tempo é curto e precioso.

Porém tenho que dar crédito ao menos para uma cena muito bem executada (do meu ponto de vista, intelectualmente estimulante). É a parte em que os “heróis” precisam de um dos vilões para delatar a operação. Eles criam um ambiente falso em um “hospital” onde a “CNN” exibia uma reportagem sobre o apocalipse nuclear. Satisfeito com a transmissão mundial de seu manifesto apocalíptico, o vilão entrega seus comparsas (ou era um código de login?) como sua parte do acordo. Aqui está a sequência.

Por que gosto da cena? Bem, por ilustrar muito bem um dos métodos para detectar ciberameaças anteriormente despercebidas! Existem muitos métodos, que variam de acordo com a área de aplicação, eficácia, uso de recursos e outros parâmetros (escrevo sobre eles regularmente). Mas há uma que sempre se destaca: emulação (sobre a qual já escrevi bastante).
Como no filme, um emulador inicia o objeto sob investigação em um ambiente artificial isolado, o estimulando a revelar seu caráter malicioso.

Mas há uma grande desvantagem nessa estratégia: o próprio fato de o ambiente ser artificial. O emulador se esforça para fazer com que pareça um verdadeiro sistema operacional. No entanto o malware, cada vez mais inteligente, ainda consegue distingui-lo de um ambiente real. Quando o emulador distingue que foi descoberto, a emulação é reorganizada e aprimorada. E assim por diante, em um ciclo interminável que normalmente abre uma janela de vulnerabilidade em um computador protegido. O problema é que nenhum emulador conseguiu ser a réplica fiel de um sistema operacional real.

Por outro lado, há outra opção para abordar a investigação de comportamento de objetos suspeitos: análise – em um sistema operacional real – dentro de uma máquina virtual. Bem, por que não? Se o emulador não o deter, deixe uma máquina real (embora virtual) testá-lo! Seria o “experimento” ideal: realizado em um ambiente real, mas sem as consequências negativas.

Ao ouvir essa hipótese, alguns se perguntam por que ninguém pensou nisso antes. Afinal, virtualização é considerada tecnologia comum desde 1992. Porém, as coisas não são tão simples.

Primeiro, a análise de objetos suspeitos em máquina virtual é um processo que consome muitos recursos, ideal apenas para soluções de segurança de grandes empresas, em que a análise precisa ser profunda para que nenhum objeto malicioso burle as barreiras. Logo, não é adequada para computadores domésticos, muito menos smartphones … por enquanto.

Segundo, essas coisas realmente existem. Na verdade, já usamos esta tecnologia (modo interno da KOMPANHIA) para nossas investigações. Porém, em termos de produtos adequados ao mercado, poucos estão disponíveis. A concorrência lançou produtos similares, mas sua eficácia ainda deixa muito a desejar. Em geral, são limitados à compilação de logs e análises básicas.

Terceiro, iniciar um arquivo em uma máquina virtual é apenas o começo de um processo muito longo e difícil. Afinal, o objetivo do exercício é fazer que o objeto com caráter malicioso se revele. Para isso, é necessário um hypervisor inteligente, análise e registro do comportamento, ajuste cuidadoso dos modelos de ações perigosas, proteção contra golpes antiemulação, otimização da execução etc.

Posso afirmar, sem falsa modéstia, que estamos bem a frente em relação ao resto do mundo!

Recentemente, registramos uma patente nos EUA ( US10339301 ) sobre a criação de um ambiente adequado para uma máquina virtual executar análises rápidas e profundas em objetos suspeitos. É assim que funciona:

  • As máquinas virtuais foram projetadas (para vários tipos de objetos) com configurações que garantem sua execução ideal e taxa máxima de detecção.
  • O hypervisor da máquina virtual trabalha em conjunto com o registro do sistema de comportamento do objeto e a análise do sistema, suportado pelos bancos de dados em constante atualização ​​dos modelos de comportamento malicioso, pelas heurísticas e lógica das reações às ações, entre outros.
  • Se forem detectadas ações suspeitas, o sistema de análise incorpora alterações no processo de execução do objeto em uma máquina virtual para incitar o objeto a revelar suas intenções maliciosas. Por exemplo, o sistema pode criar arquivos, alterar o registro, acelerar a velocidade e, assim por diante.

O terceiro ponto é a característica mais requintada e exclusiva de nossa tecnologia. Vou dar um exemplo de como funciona.

O sistema detecta que um arquivo iniciado “hibernou” e não mostra mais atividade. Isso ocorre porque o objeto pode ter sido programado para permanecer inativo por vários minutos (até mesmo horas) antes de iniciar sua atividade maliciosa. Quando essa falsa inatividade começa, aceleramos o tempo dentro da máquina virtual, para que passem um, cinco e até mil minutos por segundo. A funcionalidade do arquivo sujeito à análise não muda, enquanto o tempo de espera é reduzido centenas (até milhares) de vezes. Se, após sua “soneca”, o malware decidir verificar o relógio do sistema, será levado a acreditar que a hora chegou, continuará com sua missão e, então, será exposto no processo.

Outro exemplo:

O objeto explora uma vulnerabilidade em uma biblioteca específica ou tenta alterar o conteúdo de um arquivo ou registro. Inicialmente, com a ajuda da função fopen(), tenta abrir a biblioteca (arquivo ou registro) e, se falhar (não existe tal biblioteca ou direitos de acesso), desiste. Nesse cenário, alteramos (em tempo real) o valor de retorno da função fopen() de “arquivo inexistente” para “arquivo existente” (ou, se necessário, criamos o próprio arquivo e inserimos o conteúdo). Aí observamos como o objeto se comporta.

Essa estratégia também funciona muito bem com árvores lógicas de comportamento do objeto. Por exemplo: se o arquivo A e o arquivo B existem, o arquivo C é modificado, e ponto. No entanto, não se sabe o que o programa sob verificação fará se houver apenas o arquivo A ou o B. Então, iniciamos uma iteração em paralelo e informamos ao programa suspeito que o arquivo A existe, mas não B. Em seguida, analisamos a atividade da árvore lógica.

É importante observar que bancos de dados externos, fáceis de atualizar, configuram as regras de reação à execução do arquivo. Você não precisa fazer um novo projeto para o mecanismo inteiro com intuito de adicionar uma nova lógica. Apenas descreva os possíveis cenários de comportamento malicioso e atualize com um clique.

De forma resumida, é assim que a tecnologia opera. Em breve será adicionada ao KATA e será comercializada como uma solução independente para empresas: o Kaspersky Sandbox .