Técnicas para detecção de vírus
Nos últimos anos, as empresas de antivírus precisaram se esforçar ao máximo
para criar novas tecnologias de detecção de vírus.
Os antivírus dos anos 80/90 utilizavam técnicas muito diferentes dos atuais.
Um exemplo é o modo como são pesquisados os arquivos. Antes, o espaço em disco
era limitado a 32 MB e isso forçava o usuário a possuir poucos dados.
Com isto, os antivírus não tinham tanta preocupação em otimizar suas
pesquisas, pois rapidamente faziam uma pesquisa completa no HD. Outra
peculiaridade era que a contaminação de arquivos estava limitada a poucos
tipos, tais como .COM e .EXE e outros poucos métodos de infecção,como o boot e
o MBR.
A evolução foi inevitável. Os discos passaram a suportar dezenas de
gigabytes e diversos outros formatos de arquivos puderam ser vítimas de
infecções, como por exemplo .DOC, .XLS, .VBS, etc.
Isto fez com que os antivírus mudassem radicalmente os métodos de pesquisa,
já que precisariam melhorar a performance e dar suporte a identificação e
remoção de vírus em diversos formatos de arquivos.
Um exemplo simples de otimização, foi a necessidade de separar os tipos de
vírus e os tipos de infecções, pois não existe necessidade de um vírus que
infecta arquivos .EXE ser procurado em arquivos do Word ou Excel por exemplo e
vice-versa.
Atualmente a maioria dos vírus ainda é detectada através de assinaturas
binárias - 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.
Este arquivo poderá ser obtido em: http://www.eicar.org (http://www.eicar.org ) e é 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 34
28 50 5E 29 37 43 43 29 37 7D 24 45 49 43 41 52 2D
53 54 41 4E 44 41 52 44 2D 41 4E 54 59 56 49 52 55
53 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
corretamente 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 curingas (? e *)
em suas assinaturas:
X5O!P%@AP[4\PZX54(P^)7CC)7}$ [*] !$H+H*
|
+--- Isto significaria para 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 antivirus. 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 atualmente 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 age da seguinte forma:
Arquivo sadio: Arquivo contaminado:
+------------+ +------------+
| Cabeçalho | | Cabeçalho |
+-------+----+ +-------+----+
| Entry | | >-+ | Entry | | >-+
| Point | | | | Point | | |
+-------+ | | +-------+ | |
| Corpo do | <-+ +--> | Corpo do | |
| programa | | | programa | |
+------------+ | +------------+ |
+--< | Vírus | <-+
+------------+
Obs.: Desculpa mas perdeu a indentação !!!!!! huhsauhauahsusa
Um arquivo .EXE possui um pequeno cabeçalho e 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, protetores 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 exata.
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:
Zerar um registrador 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,
injeta 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.
Este tipo de vírus é localizado apenas com emuladores e muitas técnicas são
exigidas para identificá-lo. O emulador permite analisar o código
disassemblado, adicionar código, criptografar/decriptografar e analisar a
probabilidade de uma infecção.
Outra maneira de fazer a emulação, é interceptar funções da API do sistema
operacional ou capturar interrupções do DOS que estejam ligadas diretamente à
gravação, leitura ou execução. Se um determinado programa executar uma série de
ações suspeitas, o antivírus emitirá aviso de um arquivo suspeito.
Conclusão
Como se pode notar, não existe um método único de detecção para todos os
casos. Os antivírus necessitam estar sempre atualizando seus métodos de
pesquisa, de modo que possam identificar os novos vírus.
Atualmente, os vírus se alastram rapidamente, devido à Internet. Muitos
aproveitam falhas de softwares e vulnerabilidades do sistema, para conseguirem
se alastrar rapidamente. Este tipo de ação forçará as empresas de antivírus
a criarem novos mecanismos para barrar esta forma de ataque. A escolha de um
bom antivírus é essencial. Entretanto, não devemos confiar plenamente em um
produto antivírus, pois novos vírus são lançados diariamente, muito mais
complexos e usando novas técnicas antidetecção. A melhor maneira de evitar
vírus, é usar o computador com bom-senso:
- Evitar abrir e-mails com attachments;
- Não deixar que o boot seja feito por disquetes;
- Evitar softwares piratas;
- Desconfiar de arquivos com duplas-extensões, como: .txt.exe ou .jpg.vbs;
- Manter atualizações de softwares e segurança em dia;
- Quanto mais pessoas tiverem acesso a um mesmo computador, mais chance de
ser infectado. Evite troca de dados com computadores "públicos".
Fonte: http://www.velasco.com.br (http://www.velasco.com.br)
Acheu este artigo muito bem elaborado e super detelhado !!!!
vlw!
Muito bom mesmo!
Muito obrigado Kratos por colaborar esse material conosco.
HadeS
Humm bem interessante mesmo kratos, acho a Heurística o melhor meio de deteccão atualmente mesmo por acusar muitos falsos que não são virus, mas enfim entes suspeitar do que passar batido

! ótimo post abraços!
muito bom kra, bom post