In che modo i programmi antivirus rilevano EICAR Test Virus?
-
19-08-2019 - |
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?)
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