Pregunta

El virus de prueba EICAR se utiliza para probar la funcionalidad de los programas antivirus. Para detectarlo como un virus,

¿Debe el programa antivirus tener la definición de virus para el virus de prueba?

O

Las heurísticas lo detectan como un patrón sospechoso y lo detectan como un virus.

(He visto una ocasión en que un programa AV elimina el archivo durante la descarga pero sin identificar el virus como virus de prueba EICAR. Solo como un objeto sospechoso, es decir, si tiene la definición, debería identificar el nombre del virus, detalles, etc. ¿No es así?)

¿Fue útil?

Solución

En mi humilde opinión, el objetivo del virus de prueba es tener algo que se sabe que es inofensivo y aceptado como virus para que los usuarios finales puedan verificar que el software AV está encendido y pueden ver el efecto de un virus identificación. Piense en simulacro de incendio, para software AV.

Me imagino que la mayoría tiene una firma y lo reconoce directamente como tal.

No me sorprendería si el patrón de bits de la prueba EICAR real incluyera patrones de bits que olieran a códigos de operación sospechosos, pero no sé si ese es el caso. Si es así, entonces podría ser una prueba válida de un simple reconocedor de virus heurístico. Sin embargo, dado que la prueba EICAR ha existido durante mucho tiempo , también me imagino que cualquier heurística que la almacene en caché no es lo suficientemente buena como para atrapar algo ahora en la naturaleza.

No esperaría que reconocer EICAR sea una prueba de una afirmación más fuerte que "el AV está instalado y escanear lo que se esperaba que escaneara", y si desarrollara un sistema AV, no trataría de fortalecerlo reclamar al respecto.

Update:

El virus de prueba EICAR real es la siguiente cadena:

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

que fue cuidadosamente elaborado (de acuerdo con el artículo de Wikipedia ) para tener un par de propiedades interesantes .

Primero, consta de solo caracteres ASCII imprimibles. A menudo incluirá espacios en blanco y / o una nueva línea al final, pero eso no tiene ningún efecto en su reconocimiento ni en su función.

Lo que plantea la segunda propiedad: de hecho, es un programa ejecutable para una CPU 8086. Se puede guardar (a través del Bloc de notas, por ejemplo) en un archivo con la extensión .COM, y se puede ejecutar en MSDOS, la mayoría de los clones de MSDOS e incluso en el modo de compatibilidad MSDOS del símbolo del sistema de Windows (incluido en Vista, pero no en ningún Windows de 64 bits ya que decidieron que la compatibilidad con el modo real de 16 bits ya no era una prioridad).

Cuando se ejecuta, produce como salida la cadena "EICAR-STANDARD-ANTIVIRUS-TEST-FILE!" y luego sale.

¿Por qué hicieron este esfuerzo? Aparentemente, los investigadores querían un programa que se sabía que era seguro de ejecutar, en parte para poder probar los escáneres en vivo sin necesidad de capturar un virus real y arriesgarse a una infección real. También querían que fuera fácil de distribuir por medios convencionales y no convencionales. Como resulta que hay un subconjunto útil del conjunto de instrucciones en modo real x86 donde cada byte cumple con la restricción de que también sea un carácter ASCII imprimible, lograron ambos objetivos.

El artículo wiki tiene un enlace a una explicación detallada de cómo funciona realmente el programa, que también es una lectura interesante. A la complejidad se suma el hecho de que la única forma de imprimir en la consola o salir de un programa en modo real de DOS es emitir una instrucción de interrupción de software, cuyo código de operación (0xCD) no es un carácter ASCII de 7 bits imprimible. Además, las dos interrupciones requieren un parámetro inmediato de un byte, uno de los cuales debería ser un carácter de espacio. Dado que la regla autoimpuesta era no permitir espacios, los cuatro últimos bytes del programa ('' H + H * '' en la cadena) se modifican en su lugar antes de que el puntero de instrucción llegue allí para ejecutarlos.

Desmontando y volcando EICAR.COM con el comando DEBUG en un símbolo del sistema en mi cuadro XP, veo:

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]

Después de ejecutar instrucciones hasta JGE 0140 , las dos últimas instrucciones se han modificado para que sean:

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

La mayoría de las llamadas al sistema DOS se enviaron a través de INT 21 con el valor del registro AH o AX que especifica la función a ejecutar. En este caso, AH es 0x09, que es la función de cadena de impresión, que p

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top