Domanda

Il virus di prova EICAR viene utilizzato per testare la funzionalità dei programmi antivirus. Per rilevarlo come virus,

Se il programma antivirus deve avere la definizione del virus test virus

o

L'euristica lo rileva come un modello sospetto e lo rileva come un virus.

(Ho visto un'occasione in cui un programma AV elimina il file durante il download ma senza identificare il virus come virus di prova EICAR. Proprio come un oggetto sospetto - > cioè Se ha la definizione dovrebbe identificare il nome del virus, dettagli ecc. Non è vero?)

È stato utile?

Soluzione

IMHO, il punto del virus di prova è avere qualcosa che sia noto per essere innocuo e accettato come virus in modo che gli utenti finali possano verificare che il software AV sia acceso e vedere l'effetto di un virus identificazione. Pensa all'esercitazione antincendio, per il software AV.

Immagino che la maggior parte ne abbia una firma e la riconosca direttamente come tale.

Non sarei sorpreso se il modello di bit dell'attuale test EICAR includesse modelli di bit che puzzavano di codici operativi per attività sospette, ma non so se sia così. In tal caso, potrebbe essere un test valido di un semplice riconoscitore di virus euristico. Tuttavia, dal momento che il test EICAR è in circolazione da lungo , immagino anche che qualsiasi euristica che lo memorizza nella cache non sia abbastanza buona per catturare qualcosa ora allo stato selvatico.

Non mi aspetto che il riconoscimento di EICAR sia la prova di qualsiasi pretesa più forte di "AV installato e scansione di ciò che era previsto per la scansione" e, se sviluppassi un sistema AV, non proverei a renderlo più forte pretendere al riguardo.

Aggiornamento:

L'attuale virus di prova EICAR è la seguente stringa:

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

che è stato accuratamente realizzato (secondo l'articolo Articolo di Wikipedia ) per avere un paio di proprietà interessanti .

Innanzitutto, è composto solo da caratteri ASCII stampabili. Includerà spesso spazi bianchi e / o una nuova riga alla fine, ma ciò non ha alcun effetto sul suo riconoscimento o sulla sua funzione.

Il che solleva la seconda proprietà: è in realtà un programma eseguibile per una CPU 8086. Può essere salvato (tramite Blocco note, ad esempio) in un file con estensione .COM e può essere eseguito su MSDOS, la maggior parte dei cloni di MSDOS e persino nella modalità di compatibilità MSDOS del prompt dei comandi di Windows (incluso su Vista, ma non su qualsiasi Windows a 64 bit poiché hanno deciso che la compatibilità con la modalità reale a 16 bit non era più una priorità.)

Quando eseguito, produce come output la stringa " EICAR-STANDARD-ANTIVIRUS-TEST-FILE! " e quindi esce.

Perché sono andati a questo sforzo? Apparentemente i ricercatori volevano un programma che era noto per essere sicuro da eseguire, in parte in modo che gli scanner live potessero essere testati senza la necessità di catturare un vero virus e rischiare una vera infezione. Volevano anche che fosse facile da distribuire con mezzi convenzionali e non convenzionali. Poiché si scopre che esiste un utile sottoinsieme dell'insieme di istruzioni in modalità reale x86 in cui ogni byte soddisfa la restrizione che sia anche un carattere ASCII stampabile, hanno raggiunto entrambi gli obiettivi.

L'articolo wiki contiene un collegamento a una spiegazione dettagliata di come funziona effettivamente il programma, che è anche una lettura interessante. Alla complessità si aggiunge il fatto che l'unico modo per stampare sulla console o uscire da un programma in modalità reale DOS è emettere un'istruzione di interruzione del software, il cui opcode (0xCD) non è un carattere ASCII a 7 bit stampabile. Inoltre, i due interrupt richiedono ciascuno un parametro immediato di un byte, uno dei quali dovrebbe essere un carattere spazio. Poiché la regola autoimposta era di non consentire gli spazi, tutti e quattro gli ultimi byte del programma ("H + H *" nella stringa) vengono modificati in posizione prima che il puntatore dell'istruzione arrivi lì per eseguirli.

Disassemblando e scaricando EICAR.COM con il comando DEBUG al prompt dei comandi sulla mia casella XP, vedo:

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]

Dopo aver eseguito le istruzioni fino a JGE 0140 , le ultime due istruzioni sono state modificate per essere:

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

La maggior parte delle chiamate di sistema DOS sono state inviate tramite INT 21 con il valore del registro AH o AX che specifica la funzione da eseguire. In questo caso, AH è 0x09, che è la funzione stringa di stampa, che p

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top