Técnicas para detecção de vírus [Vejam]

Started by Kratos, 10 de July , 2006, 03:30:44 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Kratos

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   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


Acheu este artigo muito bem elaborado e super detelhado !!!!

vlw!
::: "A vida é bela pra quem sabe curtir" :::





HadeS

Muito bom mesmo!

Muito obrigado Kratos por colaborar esse material conosco.

HadeS

darknesshack

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!
Para seguir o trajeto,olhe ao mestre,siga o mestre,caminhe com o mestre,veja através do mestre,torne-se o mestre.

rodweb