Pergunta

O vírus de teste EICAR é usado para testar a funcionalidade dos programas antivírus. A fim de detectá-lo como um vírus,

Se o programa antivírus têm a definição de vírus para o vírus de teste

ou

A heurística detectá-lo como um padrão suspeito e detectá-lo como um vírus.

(Eu vi uma ocasião que um programa AV exclui o arquivo durante o download, mas sem identificar o vírus como vírus de teste EICAR Assim como um objeto suspeito -.> Ou seja, se tem a definição que deve identificar o nome do vírus, detalhes etc não é?)

Foi útil?

Solução

IMHO, a ponto do vírus de teste é ter algo que é conhecido por ser inofensivo, e aceito como um vírus para que os usuários finais podem verificar se o software AV é ligado, e pode ver o efeito de um vírus identificação. Pense broca de fogo, para o software AV.

Eu imagino que a maioria tem uma assinatura para ele, e directamente reconhecê-lo como tal.

Eu não ficaria surpreso se o padrão do teste EICAR real pouco aconteceu para incluir padrões de bits que cheirava a opcodes para atividade suspeita, mas eu não sei se esse é o caso. Se for, então ele pode ser teste válido de um simples reconhecedor de vírus heurístico. No entanto, desde que o teste EICAR tem sido em torno de um longo tempo, gostaria também imaginar que qualquer heurística que caches que não é bom o suficiente para agora pegar nada na natureza.

Eu não esperaria que o reconhecimento EICAR é a prova de qualquer reivindicação mais forte do que "o AV é instalado e digitalizando o que era esperado para varredura", e se o desenvolvimento de um sistema AV, eu não tentar fazer qualquer reivindicação mais forte sobre isso.

Update:

O vírus de teste EICAR real é a seguinte string:

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

que foi cuidadosamente elaborado (de acordo com a Wikipedia artigo ) para ter um par de propriedades interessantes .

Em primeiro lugar, ela consiste de apenas caracteres ASCII imprimíveis. É, muitas vezes, incluem espaços em branco e / ou uma nova linha no final, mas isso não tem efeito sobre o seu reconhecimento, ou por sua função.

O que levanta a segunda propriedade: é na verdade um programa executável para um 8086 CPU. Ele pode ser salvo (via Notepad, por exemplo) em um arquivo com a extensão .com, e ele pode ser executado em MS-DOS, a maioria dos clones de MS-DOS, e até mesmo no modo de compatibilidade MSDOS do Windows prompt de comando (incluindo no Vista, mas não em qualquer Windows de 64 bits, uma vez que decidiu que a compatibilidade com 16 bits de modo real não era uma prioridade.)

Quando executado, ele produz como saída o string "EICAR-STANDARD-ANTIVIRUS-TEST-FILE!" e depois sai.

Por que eles vão para este esforço? Aparentemente, os pesquisadores queriam um programa que foi conhecido por ser seguro para ser executado, em parte para que scanners ao vivo poderia ser testada sem a necessidade de capturar um vírus real e arriscar uma infecção real. Eles também queria que fosse fácil de distribuir por meios convencionais e não convencionais. Desde verifica-se que existe um subconjunto útil do conjunto de instruções de modo real x86 onde cada byte atende a restrição de que ele também ser um personagem em ASCII, eles alcançaram os dois gols.

O artigo wiki tem um link para um blow-by-blow explicação de como o programa realmente funciona, que é também uma leitura interessante. Além da complexidade é o fato de que a única maneira de ambos impressão para o console ou sair um programa em modo real DOS é a emissão de um software de interrupção instrução, cujo código de operação (0xCD) não é um personagem de impressão ASCII 7-bit. Além disso, as duas interrupções cada requerem um parâmetro de imediato um byte, um dos quais teria de ser um caractere de espaço. Desde a regra auto-imposta foi a de não permitir espaços, os quatro últimos bytes do programa ( "H + H *" na cadeia) são modificados no lugar antes de o ponteiro de instrução chega lá para executá-los.

A desmontagem e despejar EICAR.COM com o comando DEBUG em um prompt de comando na minha caixa XP, vejo:

0C32:0100 58            POP     AX
0C32:0101 354F21        XOR     AX,214F
0C32:0104 50            PUSH    AX
0C32:0105 254041        AND     AX,4140
0C32:0108 50            PUSH    AX
0C32:0109 5B            POP     BX
0C32:010A 345C          XOR     AL,5C
0C32:010C 50            PUSH    AX
0C32:010D 5A            POP     DX
0C32:010E 58            POP     AX
0C32:010F 353428        XOR     AX,2834
0C32:0112 50            PUSH    AX
0C32:0113 5E            POP     SI
0C32:0114 2937          SUB     [BX],SI
0C32:0116 43            INC     BX
0C32:0117 43            INC     BX
0C32:0118 2937          SUB     [BX],SI
0C32:011A 7D24          JGE     0140

0C32:0110                                      45 49 43 41               EICA
0C32:0120  52 2D 53 54 41 4E 44 41-52 44 2D 41 4E 54 49 56   R-STANDARD-ANTIV
0C32:0130  49 52 55 53 2D 54 45 53-54 2D 46 49 4C 45 21 24   IRUS-TEST-FILE!$

0C32:0140 48            DEC     AX
0C32:0141 2B482A        SUB     CX,[BX+SI+2A]

Depois de executar instruções até JGE 0140, as duas últimas instruções foram modificados para ser:

0C32:0140 CD21          INT     21
0C32:0142 CD20          INT     20

chamadas de sistema mais DOS foram enviados através INT 21 com o valor da AH ou AX registo especificando a função de executar. Neste caso, AH é 0x09, que é o de impressãofunção de string, que imprime a partida corda no 0x011C offset, terminado pelo sinal de dólar. (Você tinha que imprimir um sinal de dólar com um truque diferente em puro DOS.) A chamada INT 20 termina o processo antes de qualquer bytes extras passadas que ponto pode ser executada.

código de auto-modificando era um truque vírus cedo, mas aqui ele é usado para preservar a restrição de valores de bytes que podem ser usados ??na seqüência. Em um sistema moderno, é possível que o recurso de proteção de execução de dados iria pegar a modificação, se que é imposta na modo de compatibilidade MSDOS executando um arquivo COM.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top