Wie unterscheiden sich die Antivirus-Programme der EICAR-Testvirus erkennen?
-
19-08-2019 - |
Frage
Der EICAR-Testvirus wird verwendet, um die Funktionalität der Anti-Viren-Programme zu testen. Um es als Virus zu erkennen,
Sollte das Antivirus-Programm, um die Virendefinitionen für den Test Virus
oder
Die Heuristik erkennt sie als verdächtige Muster und es als Virus erkennen.
(Ich habe eine Gelegenheit gesehen, dass ein AV-Programm die Datei löscht, während das Herunterladen, aber ohne das Virus als EICAR-Testvirus identifiziert Wie ein verdächtiges Objekt. -> dh wenn es die Definition hat, soll sie den Namen des Virus identifizieren, Details etc Ist es nicht?)
Lösung
IMHO ist der Punkt des Testvirus, etwas zu haben, das sowohl bekannt ist harmlos, und als Virus angenommen, so dass Endanwender, dass die AV-Software auf verifizieren kann eingeschaltet wird, und kann die Wirkung eines Virus sehen Identifizierung. Denken Sie Feuerbohrer, für AV-Software.
Ich könnte mir vorstellen, dass die meisten eine Signatur für sie haben, und es direkt als solche erkennen.
Ich wäre nicht überrascht, wenn das Bitmuster des eigentlichen EICAR-Test passiert Bitmuster enthalten, die wie OP-Codes für verdächtige Aktivitäten roch, aber ich weiß nicht, ob das der Fall ist. Wenn ja, dann könnte es gültige Test eines einfachen Heuristik Virus-Erkennungs sein. Da jedoch die EICAR-Test hat sich für eine lang Zeit, würde ich auch vorstellen, dass jede Heuristik, die es Caches ist nicht gut genug, alles jetzt in der freien Natur zu fangen.
Ich würde nicht erwarten, dass die Anerkennung EICAR Nachweis eines ist dadurch stärker als „die AV installiert ist und das Scannen, was es zu scannen erwartet“, und wenn einem AV-System zu entwickeln, würde ich versuchen, nicht stärker Anspruch geltend zu machen über sie.
Update:
Der tatsächliche EICAR-Testvirus ist die folgende Zeichenfolge:
X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*
, die sorgfältig ausgearbeitet wurde (nach dem Wikipedia-Artikel ) ein paar interessante Eigenschaften haben .
Zuerst, es besteht aus nur druckbare ASCII-Zeichen. Es wird oft auch Leerzeichen und / oder eine neue Zeile am Ende, aber das hat keinen Einfluss auf die Anerkennung, oder auf seine Funktion.
Welche wirft die zweite Eigenschaft: es ist in der Tat ein ausführbares Programm für einen 8086-CPU ist. Es kann (via Notepad zum Beispiel) in einer Datei mit der Erweiterung .COM gespeichert werden, und es kann auf MS-DOS, die meisten Klone von MS-DOS, und auch in dem MS-DOS-Kompatibilitätsmodus der Windows-Eingabeaufforderung (einschließlich Vista ausgeführt werden, aber nicht auf einem 64-Bit-Windows, da sie entschieden, dass die Kompatibilität mit 16-Bit-Real-Modus nicht mehr eine Priorität.)
Wenn er gestartet wird, erzeugt es als Ausgabe die Zeichenfolge "EICAR-STANDARD-ANTI-VIRUS-TEST-FILE!" und dann beendet.
Warum sind sie zu diesem Aufwand? Offenbar wollten die Forscher ein Programm, das sicher zu sein war bekannt zu laufen, teilweise, so dass Live-Scanner, ohne dass geprüft werden könnten einen echten Virus zu erfassen und eine echte Infektion zu riskieren. Sie wollten es auch einfach sein, sowohl von konventionellen und unkonventionellen Mitteln zu verteilen. Da es stellt sich heraus, dass es eine nützliche Teilmenge des Befehlssatzes x86 Real-Modus ist, wo jedes Byte die Einschränkung erfüllt, dass es auch ein druckbares ASCII-Zeichen sein, erreichten sie beide Ziele.
Der Wiki-Artikel hat einen Link zu einem Blow-by-Blow-Erklärung , wie das Programm tatsächlich funktioniert, die auch eine interessante Lektüre ist. Zusätzlich zu der Komplexität ist die Tatsache, dass der einzige Weg, um entweder auf die Konsole zu drucken oder ein Programm in DOS Realmodus verlassen ist einen Software-Interrupt-Befehl zu erteilen, dessen Opcode (0xCD) keine druckbaren 7-Bit-ASCII-Zeichen. Darüber hinaus erfordern jeweils die beiden Interrupts einen ein Byte sofort Parameter, von denen brauchen würde ein Leerzeichen sein. Da die selbst auferlegte Regel keine Leerzeichen erlauben sollte, alle vier des letzten Bytes des Programms ( „H + H *“ in der Zeichenkette) an Ort und Stelle geändert werden, bevor der Befehlszeiger da, um sie auszuführen bekommt.
Auseinanderbauen und EICAR.COM an einer Eingabeaufforderung auf meiner XP-Box mit dem DEBUG Befehl Dumping, sehe ich:
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]
Nach Anweisungen bis zu JGE 0140
Ausführung, die letzten beiden Anweisungen modifiziert wurden, zu sein:
0C32:0140 CD21 INT 21 0C32:0142 CD20 INT 20
Die meisten DOS-Systemaufrufe wurden durch INT 21
mit dem Wert des AH
oder AX
Register unter Angabe der Funktion geschickt auszuführen. In diesem Fall ist AH
0x09, was der Druck istString-Funktion, die die Zeichenfolge druckt bei Offset 0x011C starten, das Dollarzeichen beendet. (Sie hatte ein Dollarzeichen mit einem anderen Trick im reinen DOS zu drucken.) Der INT 20
Anruf beendet den Vorgang, bevor irgendwelche zusätzlichen Bytes über diesen Punkt ausgeführt werden.
Self-modifizierenden Code war ein früher Virus Trick, aber hier ist es verwendet wird, um die Beschränkung auf Byte-Werten zu erhalten, die in der Zeichenfolge verwendet werden kann. In einem modernen System ist es möglich, dass die Datenausführungsschutz-Funktion die Änderung fangen würde, wenn das auf MS-DOS-Kompatibilitätsmodus erzwungen wird eine COM-Datei ausgeführt wird.