Actualmente, a maioria dos vírus ainda é detectada através de assinaturas binárias ou seja, pequenos blocos de dados utilizados para identificar um determinado vírus.
Entretanto, com a maior abrangência dos vírus, foi necessário o desenvolvimento de novas técnicas para identificação, nos casos em que uma pesquisa por assinaturas não era possível. A pesquisa por assinatura é variável conforme o antivírus mas, em geral, são usados de 2 a 255 bytes para identificar um determinado vírus. Como exemplo de detecção de vírus por assinatura, vamos usar um arquivo de teste, chamado EICAR, que é um arquivo padrão da indústria para verificação do funcionamento das pesquisas de um antivírus, e seu conteúdo não possui nada que possa danificar dados.
O EICAR possui apenas 68 bytes e seu conteúdo total é:
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*E
O mesmo conteúdo em formato hexadecimal:
58 35 4F 21 50 25 40 41 50 5B 34 5C 50 5A 58 35 3428 50 5E 29 37 43 43 29 37 7D 24 45 49 43 41 52 2D53 54 41 4E 44 41 52 44 2D 41 4E 54 59 56 49 52 5553 2D 54 45 53 54 2D 46 49 4C 45 21 24 48 2B 48 2A
Existem antivírus que pesquisam por todos os 68 bytes para identificar correctamente o EICAR, e isto significa que se algum caracter for modificado, o EICAR não será identificado. Esta situação ocorre também com vírus, de modo que muitas variantes são criadas, modificando-se apenas alguns bytes. Para saber se seu antivírus usa a assinatura completa ou não, altere o conteúdo do EICAR, e faça uma pesquisa com o antivírus.
Um exemplo de EICAR modificado:
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-ALTERADO !$H+H*
Alguns antivírus usam métodos de pesquisa que podem evitar este tipo de problema, e conseguem identificar um arquivo usando caracteres (? e *) na sua assinatura:
Isto significa poder modificar um bloco por qualquer conjunto de caracteres. Com uma assinatura assim, diversos tipos de identificação seriam possíveis:
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H* X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-ALTERADO!$H+H* X5O!P%@AP[4\PZX54(P^)7CC)7}$ALTERADO!$H+H* X5O!P%@AP[4\PZX54(P^)7CC)7}$QUALQUER QUANTIDADE DE BYTES!$H+H*
Uma assinatura deve ser bem escolhida, para que sejam evitados falsos-positivos. Os falsos-positivos nada mais são que arquivos "sadios" e que são erroneamente identificados como vírus por um programa antivírus.
Usuários comuns não possuem conhecimento necessário para verificar se um arquivo realmente contém vírus ou não. Se um antivírus emite um alerta de infecção em algum arquivo que esteja "sadio", isto poderá causar sérios problemas, pois um arquivo importante poderá ser removido, e o sistema poderá ficar inoperável.
Uma outra maneira de melhorar a performance em pesquisas seria identificar pequenas partes de um arquivo antes de verificar toda a assinatura. Por exemplo, se um arquivo não começa com "X5O!", significa que não é um EICAR e portanto não existe a necessidade de verificar o restante do arquivo por esta assinatura.
Deve-se lembrar que, para gerar uma assinatura, é necessário possuir um exemplar do vírus, de modo que ele possa ter seu comportamento estudado através de experimentos de infecção controlada. Detecção de vírus desconhecidos. Pode-se dizer que actualmente, o que mais preocupa as empresas de antivírus, é a identificação de vírus "desconhecidos", ou seja, vírus novos que ainda não são detectados e/ou que não possuem uma assinatura estudada para o mesmo.
Diversos métodos surgiram para tentar conter a constante evolução dos vírus, e conceitos como emulação e heurística passaram a ser obrigatórios nos antivírus. Heurística "Heurística" vem da palavra grega "heuriskein", e significa "descobrir". A heurística é uma técnica utilizada para estudar o comportamento, a estrutura e as características de um arquivo, para defini-lo como suspeito ou não. Ela pode fazer com que o antivírus emita muitos falsos-positivos, mas é uma técnica que se mostrou bastante útil para evitar vírus desconhecidos.
Em geral, um vírus que infecta arquivos.EXE. Um arquivo. EXE possui um pequeno cabeçalho, um Entry Point - o ponto onde começa a execução de um programa, e o programa propriamente dito. Após uma infecção, o Entry Point é alterado, de forma que passe a apontar para o código do vírus. Após a execução do vírus, este pula para o Entry Point original do programa, fazendo-o funcionar normalmente.
Como a grande maioria dos vírus que infectam. EXE trabalha desta forma, a pesquisa heurística poderia ajudar, bastaria verificar se o Entry Point está fora da seção do código do programa ou se o Entry Point é um JMP. Mas em alguns casos, falsos-positivos são emitidos, pois existem programas comerciais, protectores e compactadores de executáveis que trabalham da mesma forma.
Então a heurística, pode ser definida como um complemento da pesquisa, que ajuda na detecção de vírus desconhecidos, mas que não sabe, com certeza, se um arquivo está contaminado ou não, ou seja, heurística não é uma ciência exacta. A heurística consegue identificar de 70% a 90% dos vírus conhecidos e desconhecidos. Podemos dizer que é uma técnica excelente, considerando a complexidade do problema. Emulação A emulação foi desenvolvida para tentar identificar os complicados vírus polimórficos.
Os vírus polimórficos são conhecidos como vírus mutantes, que conseguem modificar a si próprios a cada infecção, dificultando sua identificação. Pesquisas por assinaturas em vírus polimórficos são praticamente inviáveis.Basicamente, um emulador tenta identificar a rotina de decriptografia do vírus.
Quando um vírus polimórfico é executado, primeiramente ele decriptografa seu próprio código executável, usando uma rotina anexada ao próprio vírus. Em alguns casos, uma pesquisa por assinatura poderá ser válida no código da rotina de decriptografia, mas isto não é uma regra. Em muitos casos, os vírus polimórficos ofuscam seu código, usando diversos artifícios para conseguir funcionar, mesmo com um conteúdo diferente em suas novas cópias.Um exemplo simples: Colocar um registrador a zero de diferentes formas, com resultados idênticos.
Instrução Hexadecimal
XOR AX, AX 31 C0 SUB AX, AX 29 C0 MOV AX, 0 B8 00 00
Se o código não for muito modificado, poderemos utilizar a heurística para identificar o vírus. Um bom exemplo do uso de emuladores, serve para o vírus chamado "Simili", que foi descrito na revista "Virus Bulletin" em maio de 2002. Este vírus contém um decriptografador polimórfico que modifica o tamanho e a localização das infecções. Ele "disassembla" seu próprio código para uma forma intermediária, injecta novas instruções e sujeira ao código e "re-assembla", gerando uma nova cópia polimórfica. As novas cópias podem variar de 30 a 120 Kbytes.
Actualmente, a maioria dos vírus ainda é detectada através de assinaturas binárias ou seja, pequenos blocos de dados utilizados para identificar um determinado vírus.
0 comentários:
Postar um comentário