Detecção

Técnicas de Detecção

A abordagem inicial das empresas de antivírus para realizar a detecção de vírus polimórficos foi desenvolver programas capazes de detectar seqüências de código sabidamente utilizadas pelas rotinas de mutação para decriptar o corpo de um vírus. Esse tipo de abordagem era custosa em termos de processamento e tempo, para cada vírus polimórfico era necessário ter um detector.

Análise de Assinaturas

Uma assinatura é uma seqüência única de bytes específica para uma parte de um código malicioso.  A análise de assinaturas é o método mais utilizado para a detecção de vírus devido a sua velocidade e a capacidade de detectar múltiplos vírus com apenas uma assinatura. Uma assinatura precisa ser maior que 22 bytes, podendo chegar a 64 bytes, o que aumenta o tamanho do banco de dados de vírus das empresas de antivírus.  Além disso, existe a possibilidade de gerar falso positivo caso uma assinatura seja usada de forma incorreta, pois as linguagens de alto nível em geral possuem partes de código que não se modificam, necessitando, portanto de assinaturas muito maiores para resolver esse problema. No caso de vírus polimórficos a aplicação dessa técnica isolada não trará bons resultados visto que a rotina de encriptação muda de geração para geração e o corpo do vírus é encriptado com uma nova chave.

Decriptação Genérica

Suposições:

Na decriptação genérica, a cada vez que um arquivo é verificado, o arquivo é carregado em memória numa máquina virtual, aonde o vírus pode ser executado como se estivesse no computador real mas com isolamento, sem prejudicar a máquina física. Caso o arquivo seja um vírus polimórfico, ao ser executado a rotina de decriptação será ativada e o vírus será carregado na memória da máquina virtual, possibilitando ao antivírus procurar por assinaturas que identifiquem o vírus.

 

Fig. 6 - Máquina Virtual antes da verificação do arquivo. Adaptado de [1]

 

Fig. 7 - O programa é carregado na máquina virtual, cada seção de memória virtual tem uma célula de memória modificada correspondente.
A decriptação genérica usa essas células para representar as áreas de memória que são modificadas no processo de decriptação. Adaptado de [1]

 

 

Fig. 8 - Nesse momento o vírus toma o controle da máquina virtual e inicializa a decriptação.
A memória modificada é atualizada a medida que o vírus realiza a decriptação para representar as mudanças na memória virtual. Adaptado de [1]

Fig. 9 - Quando uma parte do vírus já foi decriptada, a decriptação genérica avança para a próxima etapa. Adaptado de [1]

Fig. 10 - O antivírus começa a procurar por assinaturas nas áreas de memória virtual que foram decriptadas ou modificadas pelo vírus. Adaptado de [1]

O problema da decriptação genérica é a velocidade pois os vírus polimórficos podem demorar para serem decriptados e conseqüentemente revelar parte de seu código malicioso para se detectar a assinatura.

Decriptação Genérica Utilizando Heurística

Para resolver o problema acima a decriptação genérica faz uso de heurísticas, utilizando um conjunto de regras capaz de diferenciar o comportamento de um vírus do comportamento de um arquivo não infectado. Por exemplo, um arquivo limpo faz cálculos durante a sua execução e tira proveito desses cálculos, já um vírus polimórfico realiza esse tipo de operação para se fazer passar por um arquivo não infectado, mas joga os resultados dos cálculos fora. Ao se detectar uma inconsistência, o antivírus é informado e o tempo que o vírus é executado dentro da máquina virtual é estendido, o que aumenta a possibilidade do vírus se decriptar e expor o corpo malicioso.

Regras para a heurística:

No entanto as técnicas de heurística dependem de atualização e pesquisa contínua, por exemplo, se um conjunto de regras de heurística para detectar 500 vírus for alterada para detectar 5 novos vírus ela poderá não conseguir detectar outros 10 previamente detectáveis. Além disso, como os desenvolvedores de vírus continuam a fazer suas criações parecidas com programas não infectados, é possível que as técnicas de heurística não consigam diferenciar um vírus de um arquivo limpo em tempo hábil.

Detecção Geométrica

A detecção geométrica é baseada nas alterações que o vírus faz a estrutura do arquivo. Por exemplo, o vírus W95/ZMist aumenta o tamanho virtual da seção de dados em 32 KB mas não altera o tamanho da seção física, então um arquivo pode ser detectado como infectado se sua seção virtual for 32 KB maior que a seção física. No entanto, essa alteração de tamanho pode ser devido a uma compressão em tempo de execução, logo, esse tipo de detecção é sujeita a falsos positivos, ou seja, pode detectar um arquivo sem vírus como um arquivo contendo vírus.


 

Anterior Topo Próximo