Introdução - Vírus Polimórficos
Um vírus de computador é um programa capaz de se replicar e opera sem o consentimento do usuário, se espalhando ao se anexar a outros programas. Outras variedades de vírus são os vírus de boot capazes de danificar áreas responsáveis por carregar o sistema operacional e os vírus de macro que podem causar alterações em documentos. Alguns vírus apenas se replicam, outros podem trazer danos maiores como corromper arquivos, sobrecarregar uma rede e levar uma máquina a ser formatada.
Um vírus simples, que só se replica é fácil de ser detectado, se um usuário executa um vírus, esse vírus pode tomar conta do computador da vítima e se anexa em outro arquivo, depois que ele se espalha o vírus devolve o controle para o programa hospedeiro que funciona normalmente. O vírus pode se replicar inúmeras vezes, mas nunca vai se modificar, logo, o antivírus pode facilmente localizá-lo por uma seqüência de bits característica daquele vírus, essa seqüência também é chamada de assinatura.
A idéia do vírus encriptado era esconder a assinatura fixa do vírus, embaralhando o vírus, para que o vírus não fosse detectado por um antivírus.
Fig. 1 - Decriptação no momento de execução [1]
Fig.2 - Vírus decriptado [1]
Um vírus encriptado consiste de uma rotina de decriptação e um corpo encriptado, ao ser executado, a fase de decriptação se inicia, após a decriptação o corpo do vírus toma conta da máquina, se espalhando da mesma forma que um vírus simples mas com o diferencial de encriptar o corpo do vírus com uma nova chave de encriptação, dificultando a detecção por assinaturas de vírus. No entanto, a rotina de decriptação continuava a ser a mesma, logo, os antivírus passaram a checar por seqüências de bytes que identificassem a rotina de decriptação.
Os vírus polimórficos são capazes de criar uma nova variante a cada execução e diferentemente dos vírus encriptados que encriptam apenas o código do vírus e permanecem com a mesma rotina de decriptação, os vírus polimórficos alteram tanto a rotina de encriptação quanto a rotina de decriptação, inserindo também instruções que não alterem o processo de decriptação como os NOPs, o que dificulta a detecção.
Em uma variante de um vírus polimórfico o módulo de decriptação aparece em claro e o corpo do vírus aparece encriptado. No corpo do vírus estão presentes a rotina do vírus em si e um módulo de mutação responsável por gerar o módulo de encriptação e um novo módulo de decriptação que terá uma nova chave, visto que o módulo de encriptação foi alterado. Sendo assim, ao infectar um arquivo, o vírus apresentará um novo módulo de encriptação e um novo corpo.
Em geral, para realizar a detecção dessas ameaças os softwares antivírus fazem a decriptação do vírus usando um emulador ou realizam uma análise de padrão do corpo do vírus, visto que o código muda, mas a semântica não. O processo de emulação é também chamado de sandbox e é capaz de detectar o vírus caso o código decriptado permaneça o mesmo.
Os vírus polimórficos podem apresentar problemas durante as suas mutações e podem até demorar a serem detectados, mas na maioria das vezes são detectados devido ao baixo número de vírus polimórficos eficientes.
Os desenvolvedores de vírus implementam novos códigos para dificultar o trabalho do pesquisador. O W32/Apparition foi o primeiro vírus de 32 bits a não utilizar decriptadores polimórficos para realizar mutações, ele possuía seu código decompilado e quando encontrava um compilador compilava o código. O vírus inseria e removia código desnecessário ao código fonte e se recompilava. Dessa forma uma nova geração do vírus parecia completamente diferente das anteriores. Esse tipo de técnica pode ser mais destrutiva em ambientes baseados em Unix, onde os compiladores C são instalados junto com o sistema.
Os vírus metamórficos são capazes de mudar o próprio corpo, eles não possuem um decriptador ou um corpo de vírus constante, mas são capazes de criar novas gerações diferentes. Eles possuem um corpo único que carregava dados como código. Os vírus metamórficos evitam gerar instâncias parecidas com a anterior. A figura abaixo ilustra as múltiplas formas de um vírus metamórfico.