DE69802831T2 - Dynamisches heuristisches verfahren zur erkennung von computerviren - Google Patents

Dynamisches heuristisches verfahren zur erkennung von computerviren

Info

Publication number
DE69802831T2
DE69802831T2 DE69802831T DE69802831T DE69802831T2 DE 69802831 T2 DE69802831 T2 DE 69802831T2 DE 69802831 T DE69802831 T DE 69802831T DE 69802831 T DE69802831 T DE 69802831T DE 69802831 T2 DE69802831 T2 DE 69802831T2
Authority
DE
Germany
Prior art keywords
code
emulated
virus
target program
file
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69802831T
Other languages
English (en)
Other versions
DE69802831D1 (de
Inventor
S Nachenberg
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Gen Digital Inc
Original Assignee
Symantec Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Symantec Corp filed Critical Symantec Corp
Publication of DE69802831D1 publication Critical patent/DE69802831D1/de
Application granted granted Critical
Publication of DE69802831T2 publication Critical patent/DE69802831T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)

Description

    1. Hintergrund A. Technisches Gebiet
  • Diese Erfindung betrifft Computer-Antivirensoftware. Insbesondere betrifft diese Erfindung Software zur Erkennung unbekannter Computerviren, wobei Emulation und künstliche Intelligenz verwendet wird.
  • B. Verwandte Technik
  • Die Computer-Viruserkennungstechnologie kann in Kategorien wie Signaturabtastung, Integritätsprüfung und nicht auf Integrität beruhende Erkennung von unbekannten Viren (auch als Heuristik bezeichnet) unterteilt werden. Dieser Abschnitt erläutert diese Kategorien der Antivirentechnologie.
  • Signaturabtastungs-Antivirenprogramme arbeiten, indem sie Dateien nach Signaturen von bekannten Viren abtasten. Eine Signatur ist eine Sequenz von Bytes, die in einem Virusprogrammcode gefunden werden können, jedoch unwahrscheinlich woanders zu finden sind. Um eine Signatur zu "extrahieren", muß ein Antiviren-Forscher den Virus analysieren. Sobald diese Signatur festgestellt ist, wird sie in einer Datenbank von Virussignaturen aufgezeichnet, die durch ein Antivirenprogramm verwendet werden soll. Das Antivirenprograxnm tastet ein Zielprogramm (ausführbare Datei, Startroutine oder möglicherweise eine Dokument-Datei mit einem Makro) ab, um das Vorhandensein einer Virussignatur zu erkennen. Wenn eine Signatur gefunden wird, dann wird das Zielprogramm als infiziert betrachtet. Andernfalls wird das Zielprogramm als nicht infiziert betrachtet.
  • Ein Signaturabtastungs-Antivirenprogramm kann bestimmte Virusmerkmale zur Entfernung erkennen und kann eine niedrige "Scheinpositiv"-Rate, wenn sich richtig implementiert sind. Jedoch können nur Viren, deren Signaturen schon bestimmt und in der Signaturdatenbank gespeichert worden sind, unter Verwendung der Signaturabtastung erkannt werden. Überdies muß die Signaturdatenbank häufig aktualisiert werden, um die neuesten Viren zu erkennen.
  • Eine Integritätsprüfung (die "Impfung" genannt wird, durch das kommerzielle Norton Antivirus-Produkt von Symantec Corp.) ist eine Technik, in der "Schnappschüsse" oder "Fingerabdrücke" von Programmen (ausführbaren Dateien, Startroutinen) auf dem Computer unter der Annahme gemacht werden, daß sich all diese Dateien in einem nicht infizierten Zustand befinden. Diese Fingerabdrücke werden typischwerweise genommen, nachdem der Computer mit einem Virusabtaster abgetastet worden ist, der vernünftigerweise sicherstellt, daß der Computer virenfrei ist. Diese Fingerabdrücke werden dann in einer Datenbank für spätere integritätsbasierte Abtastungen gesichert.
  • Während nachfolgender integritätsbasierten Abtastungen des Computers verifiziert das Antivirenprogramm, daß jedes Programm auf dem Computer, von dem vorher Fingerabdrücke genommen wurden, zu seinem Fingerabdruck paßt. Wenn ein Programm nicht zu seinem Fingerabdruck paßt, dann verwendet das Antivirenprogramm typischwerweise künstliche Intelligenz, um festzustellen, ob die Modifikation "virusähnlich" oder lediglich eine gültige Programmaktualisierung ist. Wenn es scheint, daß die Modifikation auf eine Infektion durch einen Virus zurückzuführen ist, alarmiert das Antivirenprogramm typischwerweise den Benutzer von der Modifikation und gibt den Benutzer die Option, den Schaden zu reparieren, falls möglich.
  • Da eine Integritätsprüfung nicht nach Virussignaturen abtastet, kann sie verwendet werden, um neue und (bis jetzt) unbekannte Virusmerkmale zu erkennen. Die Integritätsprüfung funktioniert, da Viren im allgemeinen Änderungen an ihrem Wirtsprogramm vornehmen müssen, und diese Änderungen können erkannt werden, wenn die Datenbank der Fingerabdrücke sauberer Programme geeignet erzeugt und unterhalten wird. Jedoch funktioniert die Integritätsprüfung nicht, wenn der Computer nicht virusfrei ist, wenn von den Programme Fingerabdrücke genommen werden. Ein virusinfiziertes Programm, das zusammen mit anderen sauberen Programmen "geimpft" wird, würde ein sicherer Hafen sein, von dem der Virus andere Programme infizieren kann. Ferner ist es häufig für das Antivirenprogramm schwierig festzustellen, wenn eine Änderung durch die Integritätsprüfung erkannt wird, ob die Änderung virusverursacht oder benutzerverursacht ist (z. B. kann der Benutzer ein Programm aktualisieren, indem er eine neue Version installiert oder eine aktualisierte Datei kopiert). Wenn diese Bestimmung durch das Antivirenprogramm nicht durchgeführt werden kann, muß der Benutzer aufgerufen werden, diese Bestimmung durchzuführen, und viele Benutzer sind nicht kenntnisreich genug, um dies zu tun.
  • Eine nicht auf Integrität beruhende (auch als "heuristisch" bezeichnete) Erkennung unbekannter Viren wird verwendet, um neue und unbekannte Viren ohne jede Integritätsinformation zuerkennen. Ein heuristisches Antivirenprogramm untersucht ein Zielprogramm (ausführbare Datei, Startroutine oder möglicherweise Dokument-Datei mit einem Makro) und analysiert seinen Programmcode, um festzustellen, ob der Code virusähnlich erscheint. Wenn der Code des Zielprogramms virusähnlich erscheint, dann wird die mögliche Infektion dem Benutzer mitgeteilt.
  • Heuristische Viruserkennung kann neue und unbekannte Viren erkennen, die noch nicht von Antiviren-Forscher analysiert worden sind, da sie keine Virussignaturen verwendet. Da die heuristische Technik keine Integritätsinformation verwendet, erfordert sie nicht, daß Fingerabdrücke von Programmen genommen und gesichert werden, wenn sich der Computer in einem bekannten sauberen Zustand befindet.
  • Heuristische Viruserkennung kann entweder als statisch oder dynamisch klassifiziert werden. Der Hauptunterschied zwischen diesen beiden Erkennungsverfahren ist es, daß das dynamische Verfahren eine CPU-Emulation verwendet, während es das statische Verfahren nicht tut.
  • i. Statische heuristische Erkennung
  • Bei der statischen heuristischen Viruserkennung durchsucht das Antivirenprogramm die Befehle eines Zielprogramms nach Sequenzen von Befehlen, die Operationen ausführen, die typischwerweise von Viren verwendet werden. Im Gegensatz zu Virussignaturen sind diese Sequenzen nicht so gestaltet, daß sie für einen einzelnen Virus spezifisch sind. Stattdessen sind sie dazu bestimmt, so allgemein wie möglich zu sein, um die Operation von vielen unterschiedlichen Viren zu erkennen.
  • Zum Beispiel kann die folgende Sequenz von X86 (Intel Mikroprozessor) Maschinencode-Befehlen verwendet werden, um eine Datei zu öffnen:
  • Assemblersprache Maschinencode
  • MOV DX,???? BA?? ??
  • MOV AX, 3D02 B8 02 3D
  • INT 21 CD 21
  • wobei ?? anzeigt, daß das Byte bei unterschiedlichen Viren varieren kann. Entsprechend kann die folgende Sequenz von X86 Maschinencode-Befehlen verwendet werden, um in eine Datei zu schreiben:
  • Assemblersprache Maschinencode
  • MOV DX, ???? BA?? ??
  • MOV CX, ???? B9?? ??
  • MOV AX, 4000 B8 00 40
  • TNT 21 CD 21
  • wobei ?? wieder anzeigt, daß das Byte bei unterschiedlichen Viren variieren kann.
  • Statische heuristische Antivirenprogramme suchen nach Sequenzen von Bytes, wie den oben gezeigten, nehmen dann eine Bewertung der Virusinfektion beruhend auf den Sequenzen vor, die sie gefunden haben. Wenn zum Beispiel das statische heuristische Antivirenprogramm eine Dateiöffnungsoperation findet, der sich Dateilese- und Schreiboperationen anschließen, und auch eine Zeichen- (ASCII-) Kette "VIRUS" im Programm findet, kann es mitteilen, daß die Datei durch einen unbekannten Virus infiziert ist.
  • Einige (selbstverschlüsselnde) Computerviren weisen verschlüsselte Viruskörper auf. Sequenzen von Befehlen, die ein virusähnlichen Verhalten zeigen, sind nicht erkennbar, weil sie verschlüsselt sind. Daher schicken einige statische heuristische Erkennungsprogramme der Verhaltenssuchphase eine Entschlüsselungsphase voraus, die typischwerweise unter Verwendung eines CPU-Emulators durchgeführt wird.
  • Obwohl statische heuristische Erkennungsprogramme verhältnismäßig schnell sein können, können sie nur einige der zahlreichen Arten erkennen, verschiedene virusähnliche Operationen durchzuführen. Zum Beispiel kann ein Virus-Autor die Befehle der obigen Dateiöffnungssequenz wie folgt umordnen:
  • Assemblersurache Maschinencode
  • MOV AX, 3D02 B8 02 3D
  • MOV DX,???? BA ?? ??
  • INT 21 CD 21.
  • Als ein weiteres Beispiel kann ein Virus-Autor die Befehle für eine Dateiöffnung radikaler ändern, wie folgt:
  • Assemblersprache Maschinencode
  • MOV AX, 3E00 B8 00 3E
  • SUB AX, 0100 2D 00 01
  • MOV DX, 1234 BA 34 12
  • ADD AL, 02 0402
  • INT 21 CD 21
  • Folglich muß das statische heuristische Erkennungsprogramm nach einer großen Anzahl unterschiedlicher Arten suchen, in der jede virusähnliche Operation implementiert sein kann, um zuverlässig ein virusähnliches Verhalten zu erkennen. Eine Datenbank, die eine große Anzahl möglicher Permutationen dieser Operationen abdeckt, kann unhandlich werden. Dieses Problem würde insbesondere akut werden, wenn ein Virus-Autor ein "Virusgenerator"-Programm schreiben würde, das tausende von Viren auf einmal erzeugen, die Ordnung ihrer Code-Abschnitte permutieren, jedoch nicht ihr effektives Verhalten ändern würde. Es wäre sehr schwer für statische heuristische Erkennungsprogramme mit einer solch großen Menge von Viren umzugehen.
  • ii. Dynamische heuristische Erkennung
  • Bei einer dynamischen heuristischen Viruserkennung emuliert das Antivirenprogramm das Zielprogramm in einer virtuellen Umgebung und überwacht die emulierten Befehle auf virusähnliche Operationen. Wenn das Zielprogramm emuliert wird, werden seine virusähnlichen Operationen erkannt und katalogisiert. Aus dem Verzeichnis virusähnlicher Operationen kann das dynamische heuristische Antivirenprogramm feststellen, wenn das Zielprogramm wie ein Virus aussieht. Wenn der Virus natürlich einen verschlüsselten Viruskörper aufweist, kann es dieses emulationsbasierte dynamische Verfahren zulassen, daß sich der Virus entschlüsselt, bevor es seine virusähnlichen Operationen (Öffnen von Dateien, Finden von Dateien, usw.) beobachtet.
  • Eine dynamische heuristische Viruserkennung kann viele unterschiedliche Permutationen einer gegebenen Operation einfacher als das statische heuristische Verfahren erkennen. Man betrachte zum Beispiel die dynamische heuristische Erkennung einer Dateiöffnungsoperation. Jedesmal, wenn eine Unterbrechung während der Emulation aufgerufen wird, prüft das dynamische heuristische Antivirenprogramm die Werte in den Registern. Diese Werte geben die Aufgabe an, die das Zielprogramm durch das Betriebssystem zu seinen Gunsten ausführen lassen will. Wie oben hinsichtlich der statischen Heuristik erläutert, kann ein Virus, der das Zielprogramm infiziert, es auswählen, bestimmte Werte in die Register in einer großen Vielfalt von Arten zu setzen. Wenn jedoch die Unterbrechung schließlich aufgerufen wird, müssen die Register die bestimmten Werte enthalten, die der gewünschten Operation entsprechen. Ein dynamisches heuristisches Antivirenprogramm ist nur mit den Werten der Register zur Zeit des Unterbrechungsaufrufes beschäftigt.
  • Während die dynamische heuristische Technik bei der Erkennung virusähnlicher Operationen überlegen ist, gibt es mindestens drei Probleme, die bei seiner Implementierung überwunden werden müssen. Das Folgende ist eine Erläuterung dieser drei Probleme.
  • Erstens kann eine ausgedehnte Emulation erforderlich sein, bevor die virusähnlichen Operationen vorkommen. Zum Beispiel kann ein Virus vor einer Dateiöffnungsoperation 50000 mal eine Leerlaufschleife durchlaufen. In diesem Fall müßte eine große Anzahl von Befehlen emuliert werden, bevor die Dateiöffnungsoperation erreicht ist. Dies würde das Antivirenprogramm beträchtlich abbremsen.
  • Zweitens aktivieren sich einige Viren nur, wenn bestimmte willkürliche Bedingungen erfüllt werden. Man betrachte zum Beispiel den folgenden Pseudocode eines Virus:
  • 1. Finde die erste Datei im aktuellen Dateiverzeichnis, das eine ".com" Erweiterung (*.com) aufweist.
  • 2. Wenn die Datei gefunden wurde, gehe zu Schritt 4.
  • 3. Gebe Kontrolle an das Wirtsprogramm zurück.
  • 4. Wenn die Datei weniger als 1000 Byte lang ist, gehe zu Schritt 3.
  • 5. Wenn der Dateiname nicht mit "EL" endet, gehe zu Schritt 3.
  • 6. Öffne die Datei.
  • 7. Lese die ersten 3 Byte.
  • 8. Suche nach dem Ende der Datei.
  • 9. Schreibe Virusbytes in die Datei.
  • 10. usw.
  • Wenn ein dynamisches heuristisches Antivirenprogramm ein Wirtsprogramm emulieren würde, das mit einem solchen Virus infiziert ist, würde es zuerst im Virus den Schritt 1 antreffen, der befiehlt, die erste *.com-Datei im aktuellen Dateiverzeichnis zu finden. Hier kann das Antivirenprogramm den DOS-Aufruf simulieren und dem Virus anzeigen, daß ein Schein-* .com-Programm gefunden wurde.
  • Anschließend wird dem Emulator in Schritt 4 befohlen, die Kontrolle vom Virus an das Wirtsprogramm zurückzugeben, wenn das Schein-*.com-Programm keine Dateigröße von mindestens 1000 Byte aufweist. Wie trägt das Antivirenprogramm dazu bei, eine solche willkürliche Bedingung nachzuahmen?
  • Vielleicht wird das Antivirenprogramm Glück haben, und das Schein-*.com-Programm wies eine Dateigröße von mindestens 1000 Byte auf. Anschließend wird im Schritt 5 dem Emulator befohlen, die Kontrolle vom Virus zum Wirtsprogramm zurückzugeben, wenn der Dateiname nicht mit "EL" endet. Wiederum wird sich der Virus sofort beenden und die Kontrolle an das Wirtsprogramm zurückgeben, wenn dieses Kriterium nicht erfüllt wird (z. B. ist der Dateiname "FOO.COM," der mit "00" endet).
  • Folglich kann ein Virus so gestaltet sein, in seinem Infektionsprozeß willkürlich "wählerisch" zu sein, und wenn irgendein Kriterium (wie daß das Datum der 5. des Monats ist) nicht erfüllt ist, wird der Virus sein infektiöses Verhalten nicht ausführen. Folglich wird ein dynamisches heuristisches Antivirenprogramm das infektiöse Verhalten nicht beobachten und wird den Virus nicht erkennen.
  • Drittens, während ein "direkt wirkender" Virus (wie die oben erläuterten Beispiele) andere Programme infiziert, sobald ein infiziertes Wirtsprogramm gestartet wird, installiert ein "speicherresidenter" Virus sich selbst als einen residentes Unterbrechungsprogramm und bleibt untätig, bis die geeignete Unterbrechung aufgerufen wird. Nachdem er sich selbst als ein residentes Unterbrechungsprogramm installiert hat, gibt der speicherresidente Virus die Kontrolle an das Wirtsprogramm zurück.
  • Ein dynamisches heuristisches Antivirenprogramm beginnt die Emulation an der Haupteintrittsstelle eines Zielprogramms. Jedoch wird der infektiöse Viruscode (der Teil des Virus, der andere Programme infiziert) eines speicherresidenten Virus über die Haupteintrittsstelle seines Wirtsprogramms nicht erreicht. Stattdessen wird der infektiöse Viruscode nur ausgeführt, wenn die Unterbrechung, in die sich der Virus eingehakt hat, aufgerufen wird, und ein solcher Aufruf an das Betriebssystem kann durch ein anderes Programm als das infizierte Wirtsprogramm vorgenommen werden.
  • Daher kann der infektiöse Viruscode nicht erreicht werden, selbst wenn das dynamische heuristische Antivirenprogramm das infizierte Wirtsprogramm für eine sehr lange Zeit emuliert, und folglich können verdächtige Virusoperationen unentdeckt bleiben.
  • Es ist aus EP-A-0636977 bekannt, Computerviren zu erkennen, indem Befehle eines Zielprogramms emuliert und Operationen analysiert werden, die während der Emulation beobachtet werden, um ein Virusverhalten, wie eine Replikation zu erkennen.
  • Die vorliegende Erfindung trachtet danach, ein verbessertes Verfahren bereitzustellen.
  • Aspekte der vorliegenden Erfindung werden in den beigefügten unabhängigen Ansprüchen bekanntgegeben.
  • Eine bevorzugte Ausführungsform weist drei Phasen auf: eine Entschlüsselungsphase, eine Untersuchungsphase und eine Auswertungsphase. Ein Zweck der Entschlüsselungsphase ist es, eine ausreichende Anzahl von Befehlen zu emulieren, um es zuzulassen, daß ein verschlüsselter Virus seinen Viruskörper entschlüsselt. Ein Zweck der Untersuchungsphase ist es, mindestens einmal alle wesentlichen Codeabschnitte innerhalb eines Bereichs zu emulieren, von dem als wahrscheinlich angesehen wird, daß er irgendeinen Virus enthält, der im Zielprogramm vorhanden ist. Ein Zweck der Auswertungsphase ist es, jedes verdächtige Verhalten zu analysieren, das während der Entschlüsselungs- und Untersuchungsphasen beobachtet wird, um festzustellen, ob das Ziel infiziert zu sein scheint.
  • III. Kurze Beschreibung der Zeichnungen
  • Fig. 1 ist ein Blockdiagramm, das eine Struktur einer Computerplattform veranschaulicht, die eine bevorzugte Ausführungsform der vorliegenden Erfindung enthält.
  • Fig. 2A ist ein höherer Ablaufplan eines ersten und herkömmlichen dynamischen heuristischen Verfahrens zur Erkennung von Computerviren.
  • Fig. 2B ist ein höherer Ablaufplan eines zweiten und bevorzugten erfindungsgemäßen dynamischen heuristischen Verfahrens zur Erkennung von Computerviren.
  • Fig. 3 ist ein Ablaufplan der Entschlüsselungsphase des zweiten Verfahrens gemäß einer bevorzugten Ausführungsform der Erfindung.
  • Fig. 4A ist ein Ablaufplan der neunten (Analyse-/Aufzeichnungs-) Prozedur der Entschlüsselungsphase gemäß einer bevorzugten Ausführungsform dieser Erfindung.
  • Fig. 4B ist ein Ablaufplan der zehnten Prozedur (zum Setzen des Viruseigenen) der Entschlüsselungsphase gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung.
  • Fig. 5 ist ein Ablaufplan der Untersuchungsphase des zweiten Verfahrens gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung.
  • Fig. 6 ist ein Ablaufplan der ersten Prozedur (zum Setzen des virtuellen CS:IP) der Untersuchungsphase gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung.
  • Fig. 7A ist ein Ablaufplan der vierten (Abruf-/Emulations-) Prozedur der Untersuchungsphase gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung.
  • Fig. 7B ist ein Ablaufplan des vierten (Befehlverarbeitungs-) Schrittes der vierten Prozedur der Untersuchungsphase gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung.
  • Fig. 8 ist ein Ablaufplan der Auswertungsphase des zweiten Verfahrens gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung.
  • IV. Beschreibung der bevorzugten Ausführungsformen
  • Fig. 1 ist ein Blockdiagramm, das eine Struktur einer Computerplattform veranschaulicht, die eine bevorzugte Ausführungsform der vorliegenden Erfindung enthält. Die Computerplattform 100 weist Hardwarevorrichtungen 102 und ein Speichermodul 104 zur Speicherung von Programmen und Daten auf. Eine Kommunikation zwischen dem Speichermodul 104 und den Hardwarevorrichtungen 102 findet durch eine Kommunikationseinrichtung 106 (z. B. einen Bus) statt.
  • Vorzugsweise umfassen die Hardwarevorrichtungen 102: eine Zentraleinheit (CPU) 108 (z. B. einen Intel "x86" oder einen Motorola PowerPC-Prozessor), die in Verbindung steht mit: einer Speichervorrichtung 110 (z. B. einem Festplattenlaufwerk) und einer Eingabe-/Ausgabe (I/O)- Schnittstelle 112 (z. B. einer Kleincomputersystem-Schnittstelle (SCSI) oder einer (PCMCIA) Schnittstelle der internationalen Vereinigung für Personalcomputer-Speicherkarten.), sind aber nicht darauf beschränkt. In Verbindung mit der I/O-Schnittstelle 112 stehen: ein Speicherlaufwerk 114 (z. B. ein Diskettenlaufwerk), das Programme und Daten von einem Speichermedium 116 (z. B. einer Diskette) lesen kann, und eine Netzwerk-Schnittstelle 118 (z. B. einer Ethernet- Karte oder ein Modem), die mit einem entfernten System 120 über ein Netzwerk 122 (z. B. ein lokales Netzwerk, ein weiträumiges Netz, ein Intranet oder dem globalen öffentlichen Internet) in Verbindung steht. Ein Zielsoftwareprogramm (oder eine Zieldatendatei), die in Verdacht steht, einen Computervirus aufzuweisen, kann entweder auf dem Speichermedium 116 (A), der Speichervorrichtung 110 (B) oder dem entfernten System 120 (C) gespeichert sein.
  • Vorzugsweise umfassen die Programme und Daten, die im Speichermodul 104 gespeichert sind: ein Betriebssystem (OS) 150, wie DOS, Windows 3.1, oder Windows 95 von Microsoft (oder sogar Windows NT von Microsoft, oder OS/2 von IBM, oder Macintosh OS von Apple Computer oder eine Art UNIX), ein Antiviren-Hauptmodul 151, ein Entschlüsselungsmodul 152, ein Untersuchungsmodul 154, ein Auswertungsmodul 156, einen CPU-Emulator 158 und einen virtuellen Speicher 160, sind jedoch nicht darauf beschränkt.
  • Eine Beschreibung der Operation des Entschlüsselungsmoduls 152, des Untersuchungsmoduls 154 und des Auswertungsmoduls 156 beginnt unten in der Erläuterung, die Fig. 2B betrifft.
  • Der CPU-Emulator 158 führt Dateien in einer vollständig abgeschlossenen virtuellen Umgebung aus. Die virtuelle Umgebung umfaßt den virtuellen Speicher 160, der effektiv unabhängig vom Speicher des Wirtscomputersystems ist. Auf diese Weise ist der CPU-Emulator 158 effektiv von den tatsächlichen Hardwarevorrichtungen 102 isoliert, so daß kein Schaden durch einen Virus angerichtet werden kann, während eine Datei simuliert wird.
  • Fig. 2A ist ein höherer Ablaufplan eines ersten und herkömmlichen dynamischen heuristischen Verfahrens 200 zur Erkennung von Computerviren. Im ersten Verfahren 200 emuliert eine einzige Phase 202 das Zielprogramm und überwacht die Emulation auf virusähnliche Operationen hin. Ein solches Verfahren nach dem Stand der Technik wird im US-Patent Nr. 5, 3 98,19 6 beschrieben, das am 14. März 1995 an David A. Chambers erteilt wurde.
  • Fig. 2B ist ein höherer Ablaufplan eines erfindungsgemäßen zweiten und bevorzugten dynamischen heuristischen Verfahren 250 zur Erkennung von Computerviren. Das zweite Verfahren 250 beginnt mit einer Entschlüsselungsphase 252, die eine Emulation einbezieht. Ein Zweck der Entschlüsselungsphase 252 ist es, eine ausreichende Anzahl von Befehlen zu emulieren, um es zuzulassen, daß ein verschlüsselter Virus seinen Viruskörper entschlüsselt. Die Entschlüsselungsphase 252 wird unten in Bezug auf Fig. 3 beschrieben. Wenn die Entschlüsselungsphase 252 vollendet ist, fährt das zweite Verfahren 250 mit einer Untersuchungsphase 254 fort, die ebenfalls eine Emulation beinhaltet. Ein Zweck der Untersuchungsphase 254 ist es, mindestens einmal alle Codeabschnitte innerhalb eines Bereichs zu emulieren, von dem es wahrscheinlich ist, daß er irgendeinen vorhandenen Virus enthält, wobei dieser Bereich als der viruseigene Bereich bezeichnet wird. Im Gegensatz dazu ist die Emulationsphase 202 in Fig. 1 nicht so umfassend, daß sie alle Codeabschnitte in einem solchen Bereich emuliert. Die Untersuchungsphase 254 wird unten in Bezug auf Fig. 5 beschrieben. Anschließend an die Untersuchungsphase 254 fährt das zweite Verfahren 250 mit einer Auswertungsphase 256 fort. Ein Zweck der Auswertungsphase 256 ist es, alle verdächtige Operationen zu analysieren, die während der Entschlüsselungs- und Untersuchungsphasen 252 und 254 beobachtet werden, um festzustellen, ob das Zielprogramm durch einen Computervirus infiziert zu sein scheint oder nicht. Die Auswertungsphase 256 wird unten in Bezug auf Fig. 8 beschrieben.
  • Fig. 3 ist ein Ablaufplan der Entschlüsselungsphase 252 gemäß einer bevorzugten Ausführungsform der Erfindung. Wenn das Antiviren-Hauptmodul 151 eingestellt wird, um ein Zielprogramm (A, B oder C in Fig. 1) abzutasten, um heuristisch festzustellen, ob das Zielprogramm virusähnlichen Code enthält oder nicht, beginnt das Hauptmodul 151 die Entschlüsselungsphase 252, die die folgenden zehn Prozeduren 302, 304, 306, 308, 310, 312, 314, 316, 318 und 320 aufweist.
  • In einer ersten Prozedur 302, setzt das Entschlüsselungsmodul 152 den virtuellen Codesegment:Befehlszeiger (CS:IP) des CPU-Emulators 158 auf die Eintrittsstellenadresse des Zielprogramms. Wenn zum Beispiel das Zielprogramm ein *.com-Progralran ist, dann würde der virtuelle IP rückgesetzt, um auf das Wort bei iQOh im Codesegment des *.com-Programms zu zeigen, das die Speicherstelle der ersten ausführbaren Adresse des Programms ist. Wenn als ein weiteres Beispiel das Zielprogramm ein *.exe!!.... Programm ist, dann würde das virtuelle CS auf den Wert des Wortes bei 16 h gesetzt werden und der virtuelle IP würde auf den Wert des Wortes bei 18 h im EXE-Anfangsblock gesetzt werden, da dieser virtuelle CS:IP auf die erste ausführbare Adresse des Programms zeigen sollte.
  • In einer zweiten Prozedur 304 stellt das Entschlüsselungsmodul 152 fest, ob der Befehl am virtuellen CS:IP vorher durch einen anderen emulierten Befehl modifiziert wurde oder nicht (d. h.. ob die Adresse des Befehls vorher durch einen früheren emulierten Befehl überschrieben wurde oder nicht). Wenn der Befehl am virtuellen CS:IP vorher modifiziert wurde, zeigt dies an, daß es scheint, daß eine Entschlüsselungsroutine eines selbstverschlüsselnden Virus die Entschlüsselung des Viruskörpers beendet hat und nun versucht, einen entschlüsselten Befehl aus dem Viruskörper auszuführen. Wenn daher der Befehl am virtuellen CS:IP vorher modifiziert wurde, dann endet die Entschlüsselungsphase 252 und die Untersuchungsphase 254 beginnt.
  • Wenn der Befehl am virtuellen CS:IP vorher nicht modifiziert wurde, dann führt das Entschlüsselungsmodul 152 eine dritte Prozedur 306 aus, um zu prüfen, ob eine erste Schwellenzahl von Befehlen emuliert worden ist oder nicht. Die erste Schwellenzahl emulierter Befehle wird so vorbestimmt, daß ein typischer verschlüsselter Virus zu der Zeit, zu der die erste Schwellenzahl von Befehlen emuliert worden ist, begonnen hätte, sich zu entschlüsseln. In einer bevorzugten Ausführungsform beträgt die erste Schwellenzahl emulierter Befehle dreihundertvierundachtzig (384) Befehle. Wenn die erste Schwelle noch nicht erreicht worden ist, dann setzt das Entschlüsselungsmodul 152 die Emulation fort, indem es zu einer sechsten Prozedur 312 geht, die unten detaillierter beschrieben wird, die den Befehl am CS:IP abruft.
  • Wenn andererseits die erste Schwellenzahl erreicht worden ist, dann stellt das Entschlüsselungsmodul 152 in einer vierten Prozedur 308 fest, ob es so scheint, daß ein Bereich einer bestimmten minimalen Größe oder größer entschlüsselt worden ist. Es scheint, daß Befehle entschlüsselt worden sind, wenn sie überschrieben worden sind. In einer bevorzugten Ausführungsform beträgt diese bestimmte minimale Größe 24 Byte. Diese bestimmte minimale Größe des Bereichs ist nur ein Bruchteil (ein sechzehntel in diesem Fall) der ersten Schwellenzahl emulierter Befehle. Wenn es so scheint, daß kein solcher Bereich entschlüsselt worden ist, dann endet unter der Annahme, daß es unwahrscheinlich ist, daß irgendein vorhandener Virus ein verschlüsselter Virus ist, die Entschlüsselungsphase 252 und die Untersuchungsphase 254 beginnt.
  • Wenn es andererseits so scheint, daß ein Bereich entschlüsselt worden ist, dann geht die Emulation in der Entschlüsselungsphase 252 weiter, um eine weitere Entschlüsselung zuzulassen, indem der Befehl am virtuellen CS:IP in der sechsten Prozedur 312 abgerufen wird, wenn nicht eine zweite Schwellenzahl emulierter Befehle erreicht worden ist.
  • Eine Prüfung darauf, ob die zweite Schwelle erreicht worden ist, wird in einer fünften Prozedur 310 durchgeführt. In einer bevorzugten Ausführungsform wird die zweite Schwelle auf etwa dreißigtausend (30000) Befehle gesetzt. Sobald die zweite Schwellenzahl emulierter Befehle erreicht worden ist, endet die Entschlüsselungsphase 252 und die Untersuchungsphase 254 beginnt. Der Zweck der zweiten Schwelle ist es, die Zeit zu begrenzen, die gebraucht wird, um es einem Virus zu gestatten, sich zu entschlüsseln. Wenn die zweite Schwelle erreicht wird, beginnt die Untersuchungsphase 254 unter der Annahme, daß ein bedeutender Bereich des Viruskörpers entschlüsselt worden ist und eine Untersuchung dieses Bereichs garantiert ist.
  • In der sechsten Prozedur 312 veranlaßt das Entschlüsselungsmodul 152 den CPU-Emulator 158, den Befehl abzurufen, der an der Speicheradresse gespeichert ist, die durch den virtuellen CS:IP angezeigt wird.
  • In einer siebten Prozedur 314 veranlaßt das Entschlüsselungsmodul 152 den CPU-Emulator 158, den virtuellen CS:IP zu erhöhen, so daß er auf den nächsten Befehl im Zielprogramm zeigt (d. h.. auf den Befehl, der dem gerade abgerufenen unmittelbar folgt).
  • In einer achten Prozedur 316 veranlaßt das Entschlüsselungsmodul 152 den CPU-Emulator 158, den gerade abgerufenen Befehl zu emulieren. Da der gerade abgerufene Befehl durch den CPU-Emulator 158 vielmehr in einer virtuellen Umgebung emuliert wird, als daß er durch die tatsächliche CPU 108 des Computersystems 100 ausgeführt wird, sind das Computersystem 100 und seine Dateien vor jedem Schaden durch den Befehl geschützt, der emuliert wird.
  • In einer neunten Prozedur 318 analysiert das Entschlüsselungsmodul 152 den gerade emulierten Befehl und zeichnet alle "verdächtigen" Operationen auf, die durch die Analyse angezeigt werden. Diese Analyse/Aufzeichnungsprozedur 318 wird unten in Bezug auf Fig. 4A in weiteren Details beschrieben.
  • In einer zehnten Prozedur 320 setzt das Entschlüsselungsmodul 152 den viruseigenen Bereich. Diese Setzprozedur 320 wird unten in Bezug auf Fig. 4B weiteren Details beschrieben. Anschließend an die zehnte Prozedur 320 springt das Entschlüsselungsmodul 152 zur zweiten Prozedur 304 zurück.
  • Ein Vorteil der oben beschriebenen Entschlüsselungsphase 252 ist es, daß es zugelassen wird, daß die wesentliche Mehrheit der selbstverschlüsselnden Viren vieles oder alles ihrer Viruskörper entschlüsselt, und dies geschieht, ohne zu viel Verarbeitungszeit pro Datei aufzuwenden. Die entschlüsselten Abschnitte jedes verschlüsselten Viruskörpers können dann in der anschließenden Untersuchungsphase 254 untersucht werden.
  • Fig. 4A ist ein Ablaufplan, der einen Prozeß für die neunte Prozedur (die Analyse/Aufzeichnungsprozedur) 318 der Entschlüsselungsphase 252 gemäß einer bevorzugten Ausführungsform dieser Erfindung beschreibt. Diese Analyse/Aufzeichnungsprozedur 318 beginnt, nachdem der CPU-Emulator 158 den gerade abgerufenen Befehl in der achten Prozedur 316 der Entschlüsselungsphase 252 emuliert.
  • Die neunte Prozedur 318 beginnt mit einem ersten Schritt 402, in dem das Entschlüsselungsmodul 152 feststellt, ob der gerade emulierte Befehl den Inhalt modifiziert oder nicht, der an einer (virtuellen) Speicheradresse innerhalb des (virtuellen) Adreßraums des Zielprogramms gespeichert ist. Eine solche Modifikation ist kennzeichnend für eine stattfindende Entschlüsselung.
  • Wenn eine solche Modifikation durch den gerade emulierten Befehl ausgeführt wird, dann führt das Entschlüsselungsmodul 152 einen zweiten Schritt 404 der Aufzeichnung jener Modifikation zur zukünftigen Bezugnahme auf, (wobei eine solche Bezugnahme in der zweiten Prozedur 304 der Entschlüsselungsphase 252 stattfindet) bevor es einen dritten Schritt 406 ausführt. Wenn andernfalls eine solche Modifikation nicht ausgeführt wird, dann geht das Entschlüsselungsmodul 152 vom ersten Schritt 402 direkt zum dritten Schritt 406.
  • Im dritten Schritt 406 stellt das Entschlüsselungsmodul 152 fest, ob irgendeine verdächtige Operation aus einer vorbestimmten Liste verdächtiger Operationen durch den gerade emulierten Befehl ausgeführt wird oder nicht. Die vorbestimmte Liste verdächtiger Operationen umfaßt Operationen, die durch Viren charakteristischerweise durchgeführt werden, jedoch typischwerweise nicht durch "legitime" nicht infizierte Programme durchgeführt werden.
  • In dieser Ausführungsform umfaßt die Liste verdächtiger Operationen die folgenden verdächtigen Operationen, ist jedoch nicht auf sie beschränkt:
  • 1. Dateiöffnen (nur Lesen, Schreiben/Lesen, usw.);
  • 2. Dateilesen (Unterkategorien: 3-4 Bytes, zwischen 5 und 8 Bytes, 12-14 Bytes, 128 oder mehr bytes, usw.. Diese Werte werden aufgrund ihrer besonderen Bedeutung bei bestimmten Computerviren gewählt.);
  • 3. Dateischreiben (Unterkategorien: 3-4 Bytes, zwischen 5 und 8 Bytes, 12-14 Bytes, 1Ch bis 1Eh Bytes, 128 oder mehr Bytes, usw.); .
  • 4. Dateisuche (nach dem Anfang der Datei, nach dem Ende der Datei, usw.);
  • 5. Holen/Setzen eines Dateiattributs;
  • 6. Holen/Setzen des/der Datei-Datums/Zeit;
  • 7. Finden von erster Datei/Finden von nächster Datei;
  • 8. Dateilöschen;
  • 9. Dateierzeugen;
  • 10. Dateiumbenennen;
  • 11. Änderung des Dateiverzeichnisses, hole aktuelles Dateiverzeichnis, setzt aktuelles Dateiverzeichnis;
  • 12. Holen/Setzen von Datei-DTA;
  • 13. Unterbrechungsumleitung (Unterbrechung 13 für Plattendienste, Unterbrechung 21 für DOS-Dienste, Unterbrechung 24 zur Fehlerbehandlung, usw.)
  • 14. Modifikation der Speicherzuordnung (insbesondere Lesen/Schreiben im Programmsegmentpräfix);
  • 15. Programmausführung;
  • 16. Programmresidenz-Selbstprüfungsaufrufe (die typischerweise durch Viren verwendet werden);
  • 17. Lesen/Schreiben in Masterstartroutine (MBR) unter Verwendung von BIOS-Plattendiensten (das typischwerweise in Multipartite- und Dropper-Viren verwendet wird);
  • 18. Speicherinterne Modifikation von CS:100 in * .com-Programmen (was typischwerweise bei Viren geschieht, die *. com-Prograipine infizieren).
  • Wenn festgestellt wird, das eine verdächtige Operation durch den gerade emulierten Befehl ausgeführt wird, wird die verdächtige Operation durch das Entschlüsselungsmodul 152 in einem vierten Schritt aufgezeichnet.
  • Im fünften Schritt 410 stellt das Entschlüsselungsmodul 152 fest, ob der gerade emulierte Befehl einen Verzweigungspunkt aufweist oder nicht. In dieser Beschreibung ist ein Verzweigungspunkt ein Befehl, der bedingt oder unbedingt die Kontrolle an einen Befehl überträgt, der dem Verzweigungspunktbefehl nicht sequentiell folgt. Ein solcher Verzweigungspunkt zeigt an, daß während ein Befehlszweig genommen wird, ein alternativer Befehlszweig nicht genommen wird.
  • Wie oben im Hintergrundabschnitt bezüglich dem zweiten Problem früherer dynamischer heuristischer Antivirenverfahren beschrieben, können solche nicht genommenen Verzweigungen infektiösen Viruscode enthalten, der sich nur bei Erfüllung bestimmter willkürlicher Bedingungen aktiviert. Man betrachte zum Beispiel den folgenden Abschnitt von Assemblersprachenbefehlen aus einem hypothetischen Virus:
  • 180 MOV AX, [ZielWirtProgrammGröße]
  • 185 CMP AX, 1000
  • 188 TLE 210
  • ...
  • 210 HLT
  • Der obige Abschnitt von Befehle prüft, um festzustellen, ob das potentielle Wirtsprogramm, das lokalisiert ist (das Zielwirtsprogramm), größer als eine minimale Größe ist (1000 h Byte). Wenn das potentielle Wirtsprogramm größer ist, dann wird es für eine Infektion in Betracht gezogen (d. h. der Sprung wird nicht unternommen). Andernfalls wird das potentielle Wirtsprogramm nicht für eine Infektion in Betracht gezogen und der Virus hält lediglich an (d. h. der Sprung wird unternommen). Verzweigungspunkte wie dieser sind kritisch, da wenn die Kriterien des Virus für ein Wirtsprogramm nicht erfüllt werden, kann der infektiöse Code in einer nicht genommenen Verzweigung bleiben, die durch ein dynamisches heuristisches Antivirenprogramm des Stands der Technik nicht untersucht wird.
  • Im Lichte eines Bedarfs, solche nicht genommenen Verzweigungen schließlich zu analysieren, wenn der gerade emulierte Befehl einen Verzweigungspunkt aufweist, speichert dann das Entschlüsselungsmodul 152 in einem sechsten Schritt 412 die Zieladresse der nichtgenommenen Verzweigung (d. h. die Adresse des ersten Befehls der nicht genommenen Verzweigung) und den gegenwärtigen Status des CPU-Emulators 158 an einer Warteschlange, bevor es die neunte Prozedur 318 beendet und die zehnte Prozedur 320 beginnt. Der Status des CPU-Emulator 158 bezieht sich nicht auf den gesamten virtuellen CPU/Speicher-Zustand, der untragbar groß ist, sondern vielmehr auf einen kleinen. Teilsatz jenes Status. Dieser Teilsatz ist ausreichend, um die Mehrheit der gegenwärtig interessierenden Viren zu erkennen. In dieser Ausführungsform umfaßt der Status des CPU-Emulators 158 den virtuellen CS:IP, bestimmte gewöhnlich verwendete Register, wie die AX-, BX-, CX-, DX-Register, und verschiedene Worte am oberen Teil des SS:SP-Stapels, ist jedoch nicht darauf beschränkt.
  • Wenn nur die Zieladresse der nicht genommenen Verzweigung, jedoch nicht der CPU-Emulatorstatus gespeichert würde, dann würden bestimmte Operationen unentdeckt bleiben, wenn die Verzweigung von Befehlen später während der Untersuchungsphase 254 untersucht würde. Man betrachte zum Beispiel den folgenden hypothetischen Codeabschnitt aus einem Virus:
  • Wenn der obige Code im Emulator auszuführen wäre und der Suchbefehl am Versatz 109 zu einem CARRY-Ergebnis führen würde (das einen Suchfehler anzeigt), dann würde der Sprung am Versatz 10B zum Befehl am Versatz 120 unternommen. In diesem Fall würde die nicht genommene Zieladresse, die an der Warteschlange gesichert 3 ist, 10D sein und der Status des CPU-Emulators 158, der an der Warteschlange gesichert ist, würde CS:10D, AX = 4200, BX = ????, CX = DX = 0, die oberen 8 Worte des Stapels, usw. sein. Wenn später die nicht genommenen Verzweigung untersucht wird, würde sich der Befehl am Versatz 10D AX zu 4202 ändern, und der Befehl am Versatz 10E würde ein Suchbefehl sein, was eine verdächtige Operation ist. Wenn jedoch der Status des CPU-Emulators 158 nicht in der Warteschlange gesichert würde, dann könnte das AX- Register infolge eines Befehls, wie dem am Versatz 120, einen Wert wie FFFF enthalten. Wenn in diesem Fall die nicht genommenen Verzweigung untersucht wird, würde der Befehl am Versatz 10D AX auf FF02 ändern, und der Befehl am Versatz 10E würde nicht genau die Operation des Viruscode zeigen.
  • Wenn andernfalls der gerade emulierte Befehl kein Verzweigungspunkt ist, dann beendet das Entschlüsselungsmodul 152 die neunte Prozedur 318 und beginnt die zehnte Prozedur 320. Die zehnte Prozedur 320 wird unten in Bezug auf Fig. 4B in weiteren Details beschrieben.
  • Fig. 4B ist ein Ablaufplan der zehnten Prozedur 320 der Entschlüsselungsphase 252 gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung. Diese zehnte Prozedur 320 stellt eine verhältnismäßig wahrscheinliche Speicherstelle des Virus im Zielprogramm fest.
  • In einem ersten Schritt 420 stellt das Entschlüsselungsmodul 152 fest, ob der viruseigene Bereich schon gesetzt worden ist oder nicht (d. h. während einer früheren Ausführung entweder eines dritten Schrittes 424 oder eines sechsten Schrittes 430, wie unten weiter erläutert wird). Wenn der Bereich schon gesetzt worden ist, dann endet die zehnte Prozedur 320 und das Entschlüsselungsmodul 152 springt zur zweiten Prozedur 304 der Entschlüsselungsphase 252 zurück.
  • Andernfalls stellt in einem zweiten Schritt 422 das Entschlüsselungsmodul 152 fest, ob das Zielprogramm eine EXE-Datei ist. Wenn es eine EXE-Datei ist, dann setzt das Entschlüsselungsmodul 152 in einem dritten Schritt 424 den viruseigen Bereich so, daß es der Bereich vom Start des Anfangscodesegments (CS) bis zum Dateiende für das Zielprogramm ist. Anschließend an den dritten Schritt 424 endet die zehnte Prozedur 320 und das Entschlüsselungsmodul 152 springt zur zweiten Prozedur 304 der Entschlüsselungsphase 252 zurück.
  • Wenn andernfalls das Zielprogramm keine EXE-Datei ist, ist es im allgemeinen eine COM-Datei. Für COM-Dateien stellt das Entschlüsselungsmodul 152 in einem vierten Schritt 426 fest, ob die Anzahl der Befehle des Zielprogramms, die emuliert worden sind, größer als n ist, wobei n eine vorbestimmt Zahl ist. In einer bevorzugten Ausführungsform beträgt n = 10.
  • Wenn die Anzahl der emulierten Befehle größer als n ist, dann stellt das Entschlüsselungsmodul 152 in einem fünften Schritt 428 fest, ob der gegenwärtige virtuelle CS:IP sich innerhalb des Anfangsspeichersegments des Zielprogramms befindet. Wenn sich der gegenwärtige virtuelle CS:IP außerhalb des Anfangssegments befindet, dann endet die zehnte Prozedur 320 und das Entschlüsselungsmodul 152 springt zur zweiten Prozedur 304 der Entschlüsselungsphase 252 zurück.
  • Wenn andernfalls der gegenwärtige virtuelle CS:IP innerhalb des Anfangssegments liegt, dann wird in einem sechsten Schritt 430 der viruseigene Bereich beruhend auf dem gegenwärtigen virtuellen CS:IP gesetzt. In einer bevorzugten Ausführungsform wird der Bereich so gesetzt, daß der die 4k (4096) Byte umfaßt, die sich um den gegenwärtigen virtuellen CS:IP konzentrieren. Anschließend endet die zehnte Prozedur 320 und das Entschlüsselungsmodul 152 springt zur zweiten Prozedur 304 der Entschlüsselungsphase 252 zurück.
  • Fig. 5 ist ein Ablaufplan der Untersuchungsphase 254 des zweiten Verfahrens gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung. Die Untersuchungsphase 254 wird durch das Hauptmodul 151 nach der Entschlüsselungsphase 252 eingeleitet, es sei denn, das Entschlüsselungsmodul 152 hätte zurückgegeben, daß das Zielprogramm virusfrei erscheint. Die Emulation während der Untersuchungsphase 254 ist auf jene Befehle im viruseigenen Bereich beschränkt. Die Untersuchungsphase 254 umfaßt die folgenden acht Prozeduren 502, 504, 506, 508, 510, 512, 514 und 516.
  • In einer ersten Prozedur 502, setzt das Untersuchungsmodul 154 den virtuellen CS:IP des CPU-Emulators 158. Die erste Prozedur 502 wird unten in weiteren Details in Bezug auf Fig. 6 beschrieben.
  • In einer zweiten Prozedur 504 stellt das Untersuchungsmodul 154 fest, ob der Befehl am virtuellen CS:IP während dieser Untersuchungsphase 504 schon abgerufen wurde. Wenn der Befehl am virtuellen CS:IP in dieser Untersuchungsphase 504 nicht schon abgerufen wurde, dann stellt das Untersuchungsmodul 154 in einer dritten Prozedur 506 fest, ob der virtuelle CS:IP außerhalb des viruseigenen Bereichs liegt.
  • Wenn in der dritten Prozedur festgestellt wird, daß der virtuelle CS:IP sich nicht außerhalb des viruseigenen Bereichs befindet, dann veranlaßt das Untersuchungsmodul 154 in einer vierten Prozedur 508 den CPU-Emulator 158, den Befehl am virtuellen CS:IP abzurufen und den abgerufenen Befehl zu emulieren. Die vierte Prozedur 508 wird unten in weiteren Details in Bezug auf die Fig. 7A und 7B beschrieben. Nach der vierten Prozedur 508 springt entweder das Untersuchungsmodul 154 zur zweiten Prozedur 504 zurück (wenn eine Schwellenzahl von Befehlen nicht emuliert worden ist), oder die Untersuchungsphase 254 endet, und die Auswertungsphase 256 beginnt (wenn die Schwellenzahl an Befehlen emuliert worden ist).
  • Wenn andererseits in der dritten Prozedur 506 festgestellt wird, daß der virtuelle CS:IP außerhalb des viruseigen Bereichs liegt, dann stellt das Untersuchungsmodul 154 in einer fünften Prozedur 510 fest, ob eine Warteschlange nicht genommener Verzweigungen leer ist. Diese fünfte Prozedur 510 wird auch erreicht, wenn das Untersuchungsmodul in der zweiten Prozedur 504 feststellt, daß der Befehl am virtuellen CS:IP während dieser Untersuchungsphase 254 schon abgerufen wurde.
  • Wenn in der fünften Prozedur 510 festgestellt wird, daß die Warteschlange nicht genommener Verzweigungen nicht leer ist, dann "reiht" das Untersuchungsmodul 154 in einer sechsten Prozedur 512 die nächste nicht genommene Verzweigung aus der Warteschlange nicht genommener Verzweigungen "aus". Das Ausreihen der nächsten nicht genommenen Verzweigung umfaßt das Setzen des virtuellen CS:IP auf die gespeicherte Zieladresse der Verzweigung und das Setzen des Status des CPU-Emulators 158 auf den entsprechenden gespeicherten Status (wobei beide vorher während des achten Teilschrittes 754 des vierten Schrittes 708 der vierten Prozedur 508 gespeichert wurden, siehe Fig. 7B und die entsprechende Beschreibung unten). Nach der sechsten Prozedur 512 springt das Untersuchungsmodul 154 zur zweiten Prozedur 504 zurück.
  • Wenn andererseits in der fünften Prozedur 510 festgestellt wird, daß die Warteschlange nicht genommener Verzweigungen leer ist, dann stellt das Untersuchungsmodul 154 in einer siebten Prozedur 514 fest, ob irgendein nicht emulierter Codeabschnitt im viruseigenen Bereich übrigbleibt. Wenn ein solcher nicht emulierter Codeabschnitt im viruseigen Bereich verbleibt, dann setzt das Untersuchungsmodul 154 in einer achten Prozedur 516 die virtuellen Haupt-CPU-Register (auf null) zurück und setzt den virtuellen CS:IP so, daß er auf den Start des nicht emulierten Codeabschnitts zeigt. Nach der achten Prozedur 516 springt das Untersuchungsmodul 154 zurück und führt die zweite Prozedur 504 aus. Wenn andererseits kein nicht emulierter Codeabschnitt im viruseigenen Bereich verbleibt, dann endet die Untersuchungsphase 254, und die Auswertungsphase 256 beginnt. In einer bevorzugten Ausführungsform der vorliegenden Erfindung wird ein nicht emulierter Codeabschnitt in der Untersuchungsphase 254 emuliert werden, selbst wenn der Abschnitt nur ein Byte (d. h. ein Befehl) groß ist. Jedoch kann diese minimale Größe größer gemacht werden.
  • Fig. 6 ist ein Ablaufplan der ersten Prozedur 502 der Untersuchungsphase 254 gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung. Wenn keine Entschlüsselung während der Entschlüsselungsphase 252 beobachtet wurde, dann setzt die erste Prozedur 502 den virtuellen CS:IP des CPU-Emulators 158 zurück, um die Untersuchungsphase 254 zu beginnen.
  • Die erste Prozedur 502 beginnt mit einem ersten Schritt 602, in dem das Untersuchungsmodul 154 feststellt, ob die Entschlüsselung während der Entschlüsselungsphase 252 beobachtet wurde. Wenn insbesondere das Entschlüsselungsmodul 152 in der sechsten Prozedur 312 der Entschlüsselungsphase 252 feststellt, daß der gerade emulierte Befehl vorher modifiziert wurde, dann wird die Entschlüsselung als beobachtet betrachtet.
  • Wenn die Entschlüsselung im ersten Schritt 602 beobachtet wurde, dann bleibt der virtuelle CS:IP unverändert, so daß die Emulation des Zielprogramms von dem Befehl aus fortfahren wird, der dem letzten Befehl folgt, der während der Entschlüsselungsphase 252 emuliert wurde. In diesem Fall endet nach dem ersten Schritt 602 die erste Prozedur 502 der Untersuchungsphase 254, und die zweite Prozedur 254 beginnt.
  • Wenn andererseits die Entschlüsselung im ersten Schritt 602 nicht beobachtet wurde, dann setzt das Untersuchungsmodul 154 in einem zweiten Schritt 604 den virtuellen CS:IP auf die Eintrittsstellenadresse des Zielprogramms zurück.
  • Nachdem der virtuelle CS:IP im zweiten Schritt 604 rückgesetzt: wird, setzt das Untersuchungsmodul 154 in einem dritten Schritt 606 den viruseigen Bereich erneut fest. Diese Neufestsetzung des viruseigen Bereichs kann implementiert werden, indem eine Prozedur, die ähnlich zu der Prozedur 320 ist, die in Fig. 4B gezeigt wird, in eine Schleife eingebaut wird, die die Prozeduren umfaßt, die ähnlich zu den Prozeduren 312, 314 und 316 sind. Nachdem der viruseigene Bereich im dritten Schritt 606 erneut festgesetzt wird, endet die erste Prozedur 502 der Untersuchungsphase 254, und die zweite Prozedur 504 beginnt.
  • Fig. 7A ist ein Ablaufplan, der einen Prozeß für die vierte Prozedur 508 der Untersuchungsphase 254 gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung beschreibt. Die vierte Prozedur 508 ruft den Befehl am virtuellen CS:IP ab und emuliert ihn, wenn festgestellt wurde 506, daß der virtuelle CS:IP innerhalb des viruseigenen Bereichs liegt.
  • Die vierte Prozedur 508 beginnt mit einem ersten Schritt 702, in dem das Untersuchungsmodul 154 eine Bitdarstellungsaufzeichnung von Befehlen aktualisiert, die aus dem viruseigenen Bereich abgerufen wurden. Eine Bitdarstellungsaufzeichnung weist ein Bit pro Byte des viruseigenen Bereichs auf. Wenn das Bit null ist, dann ist das entsprechende Befehlsbyte noch nicht abgerufen worden. Wenn andererseits das Bit eins ist, dann ist das entsprechende Befehlsbyte schon abgerufen (und emuliert) worden. Folglich wird das Bit, das dem Befehlsbyte entspricht, auf das durch den virtuellen CS:IP gezeigt wird, in diesem ersten Schritt 702 auf eins gesetzt. Man beachte, daß dieser erste Schritt 702 nicht ganz am Anfang der vierten Prozedur 508 stattfinden muß und in einer anderen Ausführungsform in der vierten Prozedur 508 an einer anderen Stelle stattfinden kann.
  • Anschließend an den ersten Schritt 702 veranlaßt das Untersuchungsmodul 154 in einem zweiten Schritt 704 den CPU-Emulator 158, den Befehl abzurufen, der an der virtuellen Speicheradresse gespeichert ist, auf die durch den virtuellen CS:IP gezeigt wird.
  • Anschließend an den zweiten Schritt 704 veranlaßt das Untersuchungsmodul 154 in einem dritten Schritt 706 den CPU-Emulator 158, den virtuellen CS:IP zu erhöhen, so daß er auf den nächsten Befehl im Zielprogramm zeigt (d. h. auf den Befehl, der dem gerade abgerufenen unmittelbar folgt).
  • Anschließend an den dritten Schritt 706 verarbeitet das Untersuchungsmodul 154 in einem vierten Schritt 708 den Befehl, bevor die Emulation stattfindet. Diese Verarbeitung 708 übt die Kontrolle über bestimmte Befehle aus, wie Unterbrechungen und Speicherschreibvorgänge innerhalb des viruseigenen Bereichs, und zeichnet das Vorhandensein dieser bestimmten Befehle zur späteren Verwendung auf, falls notwendig. Dieser vierte Schritt 708 wird unten in Bezug auf Fig. 7B detaillierter beschrieben.
  • Anschließend an den vierten Schritt 708 stellt das Untersuchungsmodul 154 in einem fünften Schritt 710 fest, ob der gerade abgerufene Befehl eine verdächtige Operation aufweist, die nicht schon im vierten Schritt 708 aufgezeichnet wurde. Wenn eine solche verdächtige Operation beobachtet wurde, dann zeichnet das Untersuchungsmodul 154 in einem sechsten Schritt 712 die verdächtige Operation auf. Eine Liste solcher verdächtiger Operationen ist vorbestimmt und wurde aus einer Analyse erzeugt, um Virusverhaltensweise oder deren Kombinationen zu finden, von denen es sehr unwahrscheinlich ist, daß sie in nicht infizierten Programmen verwendet werden. Eine Liste verdächtiger Operationen wurde oben in Bezug auf Fig. 4A gegeben. Nach dem sechsten Schritt 712 oder direkt nach dem fünften Schritt 710, wenn keine verdächtige Operation beobachtet wurde, veranlaßt das Untersuchungsmodul 154 in einem siebten Schritt 714 den CPU-Emulator 158, den gerade abgerufenen Befehl zu emulieren.
  • Nach dem siebten Schritt 714 stellt das Untersuchungsmodul 154 in einem achten Schritt 716 fest, ob nach der Eintrittsstelle des Zielprogramms eine Schwellenzahl von Befehlen emuliert worden ist. In einer bevorzugten Ausführungsform wird die Schwellenzahl auf die Anzahl der Bytes im viruseigenen Bereich gesetzt. Da für einen Intel-X86-Mikroprozessor ein Befehl eine Länge von minimal einem Byte aufweist, ist diese Schwellenzahl gleich der maximalen Anzahl von Befehlen im viruseigenen Bereich. Diese Schwellenzahl stellt sicher, daß die Emulation nicht sehr weit über die Anzahl der Befehle im viruseigenen Bereich weitergeht. Wenn das Untersuchungsmodul 154 feststellt, daß die Anzahl der nach der Eintrittsstelle emulierten Befehle die Schwellenzahl erreicht hat, dann beendet es die Untersuchungsphase 254, und das Hauptmodul 151 veranlaßt das Auswertungsmodul 156, die Auswertungsphase 256 zu beginnen. Wenn andererseits die Anzahl der nach der Eintrittsstelle emulierten Befehle die Schwellenzahl noch nicht erreicht hat, dann springt das Untersuchungsmodul 154 zur zweiten Prozedur 504 zurück, wo es feststellt, ob der nächste Befehl schon während der Untersuchungsphase 254 abgerufen wurde.
  • Fig. 7B ist ein Ablaufplan, der einen Prozeß für den vierten Schritt 708 der vierten Prozedur 508 der Untersuchungsphase 254 gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung beschreibt. Dieser vierte Schritt 708 verarbeitet den Befehl vor einer Emulation.
  • Der vierte Schritt 708 beginnt mit einem ersten Teilschritt 740, in dem das Untersuchungsmodul 154 feststellt, ob der gerade abgerufene Befehl ein Aufruf an einen Unterbrechungsvektor isst. Wenn es ein Aufrauf an eine Unterbrechung ist, dann behandelt das Untersuchungsmodul 154 in einem zweiten Teilschritt 742 die Unterbrechung als einen NOP- (keine Operation) Befehl, "täuscht" jedoch die Vollendung der Unterbrechung "vor", indem es geeignete Register des CPU-Emulators 158 ändert, geeignete Werte vom Stapel abhebt und so weiter. Im zweiten Teilschritt 742 prüft das Untersuchungsmodul 154 auch das geeignete Register, um die Beschaffenheit des gegenwärtigen Befehls festzustellen, der über die Unterbrechung aufgerufen wird, und der gegenwärtige Befehl wird aufgezeichnet, wenn er als verdächtig betrachtet wird.
  • In einem dritten Teilschritt 744 stellt das Untersuchungsmodul 154 fest, ob der gerade abgerufene Befehl virtuellen Speicher innerhalb des viruseigenen Bereichs modifiziert (d. h. in ihn schreibt). Ein solche Speicherschreibvorgang kann zum Beispiel anzeigen, daß der Virus seinen Code zu verschieben scheint oder daß der Virus Daten innerhalb des viruseigenen Bereichs speichert. In dieser Ausführungsform werden solche Schreibvorgänge verhindert. Wenn der gerade abgerufene Befehl in einen Speicher im viruseigenen Bereich schreibt, dann leitet das Untersuchungsmodul 154 in einem vierten Teilschritt 745 den Speicherschreibvorgang auf eine virtuelle Speicheradresse in einem anderen virtuellen Segment um, wobei es dieses virtuelle Segment als Segment S definiert, und zeichnet einen solchen 0 Schreibvorgang am Segment S auf. Wie unten erläutert, werden anschließende Datenschreibvorgänge aus dieser Speicheradresse zum Segment S umgeleitet.
  • Das Untersuchungsmodul 154 implementiert eine solche Umleiturig anschließender Speicherlesevorgänge über die fünften und sechsten Teilschritte 748 und 750. Im fünften Teilschritt 748 stellt das Untersuchungsmodul 154 fest, ob der gerade abgerufene Befehl einen Lesevorgang von Daten von einer Speicherstelle im viruseigenen Bereich des Speichers einleitet, den das Zielprogramm vorher versucht hat, zu modifizieren. Wenn im fünften Teilschritt 748 festgestellt wird, daß der gerade abgerufene Befehl einen solchen Speicherlesevorgang von Daten einleitet, dann leitet das Untersuchungsmodul 154 im sechsten Teilschritt 750 diesen Speicherlesevorgang zum Segment S um. Man beachte, daß in dieser Ausführungsform jene Abrufe vom Befehlsstrom nicht umgeleitet werden sollen.
  • In einem siebten Teilschritt 752 stellt das Untersuchungsmodul 154 fest, ob der gerade abgerufene Befehl einen Verzweigungspunkt aufweist. Ein Verzweigungspunkt wird hier als ein Befehl in einen Computerprogramm definiert, an dem ein Sprung auftritt oder auftreten kann.
  • Wenn im siebten Teilschritt 752 festgestellt wird, daß der gerade abgerufene Befehl keinen Verzweigungspunkt aufweist, dann endet der vierte Schritt 708 in Fig. 7A, und das Untersuchungsmodul 154 fährt damit fort, den fünften Schritt 710 auszuführen. Wenn andererseits im siebten Teilschritt 752 festgestellt wird, daß der gerade abgerufene Befehl ein Verzweigungspunkt ist, dann speichert das Untersuchungsmodul 154 in einem achten Teilschritt 754 den gegenwärtigen Status des CPU-Emulators 158 und die (auch als Ziel bezeichnete) Zieladresse der (nicht genommenen) Verzweigung an einer Warteschlange nicht genommener Verzweigungen. Anschließend endet der vierte Schritt 708 in Fig. 7A und das Untersuchungsmodul 154 fährt damit fort, den fünften Schritt 710 auszuführen.
  • Fig. 8 ist ein Ablaufplan der Auswertungsphase 256, die stattfindet, nachdem die Untersuchungsphase 254 endet, gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung. Die Auswertungsphase 256 analysiert die während der Entschlüsselungs- und Untersuchungsphasen 252 und 254 beobachteten und aufgezeichneten verdächtigen Operationen, um festzustellen, ob das Zielprogramm durch einen Computervirus infiziert zu sein scheint oder nicht. Während diese Ausführungsform eine besondere Herangehensweise verwendet, um zu bewerten, ob es wahrscheinlich ist, daß das Zielprogramm infiziert ist, oder nicht, kömnen viele andere "Expertensystem"-Herangehensweisen in der Auswertungsphase 256 verwendet werden.
  • In dieser Ausführungsform beginnt die Auswertungsphase 256 mit einer ersten Prozedur 802, in der das Auswertungsmodul 156 feststellt, ob eine sogenannte harmlose Operation während den Entschlüsselungs- oder Untersuchungsphasen 252 oder 254 beobachtet wurde. In einer bevorzugten Ausführungsform umfassen harmlose Operationen:
  • 1. Drucken eines Zeichens auf einem Drucker oder Anzeigen eines Zeichens auf einem Monitor oder einer anderen sichbaren Ausgabevorrichtung;
  • 2. ein Programmbeendigungsbefehl im viruseigenen Bereich, der direkt von der Eintrittsstelle erreichbar ist;
  • 3. Umleitung des Nulldivisionsfehlervektors (Viren brauchen im allgemeinen keine Division auszuführen); und
  • 4. Aufrufen von innerhalb des viruseigenen Bereichs einer Funktion, die weit weg (in einer bevorzugten Ausführungsform mehr als vier Kilobyte) von der gegenwärtigen Position in der Datei angeordnet ist (dann dies würde eine Routine anzeigen, die größer als die meisten Viren ist),
  • sind jedoch nicht darauf beschränkt.
  • Wenn irgendeine der letztgenannten drei harmlosen Operationen beobachtet wurde. dann stellt das Auswertungsmodul 156 in einer zweiten Prozedur 804 fest, ob spezifische hochverdächtige Operationen oder Merkmale beobachtet wurden oder nicht. In einer bevorzugten Ausführungsform umfassen hochverdächtige Operationen oder Merkmale das Folgende:
  • 1. Vergleich eines Wortes in irgendeiner Register- oder Speicherstelle mit "MZ" (ein solcher kann verwendet werden, um das Vorhandensein eines EXE-Anfangsblocks festzustellen, da "MZ" eine identifizierende Markierung oder Hinweissymbol oder Etikett eines solchen Anfangsblocks ist);
  • 2. ein Dateischreibvorgang derselben oder einer verdächtig ähnlichen Größe in Bytes wie der Abstand in Bytes von der Eintrittsstelle des Zielprogramms zum Dateiende des Zielprogramms (ein Dateischreibvorgang einer solchen Größe kann im Prozeß des Anhängens des Virus an das nächste Wirtsprogramm verwendet werden);
  • 3. ein Suchen nach dem Dateiende, um die Dateigröße zu bestimmen, dem sich ein Dateischreibvorgang eines Sprungbefehls anschließt, dessen Sprungabstand verdächtig ähnlich zur Dateigröße ist (ein solcher Sprungbefehl kann durch einen angehängten Virus verwendet werden, um den sauberen ursprünglichen Körper des nächsten Wirtsprogramms zu umgehen);
  • 4. ein Dateischreibvorgang einer Anzahl von Bytes, die ähnlich zu Anzahl von Bytes in einem EXB-Anfangsblock ist, wobei die geschriebenen Bytes "MZ" umfassen (ein solcher Dateischreibvorgang kann verwendet werden, um einen neuen Anfangsblock an das nächste Wirtsprogramm zu schreiben);
  • 5. das Vorhandensein eines EXE-Anfangsblocks im Körper einer EXE-Datei, der verdächtig ähnlich zum EXE-Anfangsblock der Datei ist (ein solcher Anfangsblock kann verwendet werden, um den ursprünglichen Anfangsblock des nächsten Wirtsprogramms zu ersetzen);
  • 6. ein Kommando, ausführbare (z. B. *com- oder *.exe-) Dateien in einen Dateiverzeichnis zu finden (ein solches Kommando kann verwendet werden, um das nächste Wirtsprogramm zu finden);
  • 7. Untersuchung und Modifikation des (DOS-) Speicherzuordnungsschemas (bei Viren nicht ungewöhnlich, jedoch selten bei sauberen Programmen);
  • 8. Wiederholung von Kettenbewegungsoperationen, die annähernd dieselbe Anzahl von Bytes wie der Abstand von der Eintrittsstelle zum Dateiende des Zielprogramms bewegen (Kettenbewegungen einer solchen Gesamtgröße können im Prozeß des Anhängens des Virus an das nächste Wirtsprogramm verwendet werden); und
  • 9. Lesen/Schreiben im Programmsegmentpräfix (was eine Modifikation des Speicherzuordnungsschemas auf eine Rückhandart anzeigt);
  • sind jedoch nicht darauf beschränkt.
  • Wenn keine solche hochverdächtige Operation oder Kombination von Operationen beobachtet wurde oder die harmlose Operation das Drucken oder Anzeigen eines Zeichens war, dann gibt das Auswertungsmodul 156 in einer dritten Prozedur 806 ein Ergebnis an das Antivieren-Hauptmodul 151 zurück, das anzeigt, daß das Zielprogramm virusfrei zu sein scheint.
  • Wenn andernfalls eine hochverdächtige Operation beobachtet wurde 804 oder wenn keine harmlose Operation beobachtet wurde 802, dann berechnet das Auswertungsmodul 156 in einer vierten Prozedur 808 das Ausmaß, in dem verschiedene verdächtige Operationen während den Entschlüsselungs- 252 und/oder Untersuchungsphasen 254 beobachtet wurden. In einer bevorzugten Ausführungsform beinhaltet die vierte Prozedur 808, für jeden der verschiedenen verdächtigen "Verhaltensweisen" einen Wert beruhend auf der Anzahl des Auftretens verdächtiger Operationen zu berechnen, die für das verdächtige Verhalten kennzeichnend sind, wobei die Anzahl des Auftretens abhängig von der kennzeichnenden Eigenschaft der Operation hinsichtlich des Verhaltens gewichtet wird und wobei der berechnete Wert normiert wird, um 100% nicht zu überschreiten.
  • In einer bevorzugten Ausführungsform umfassen verdächtige Verhaltensweisen das Folgende:
  • 1. Verschlüsselung;
  • 2. Anhängen von Bytes an eine COM-Datei;
  • 3. Anhängen von Bytes an eine EXE-Datei;
  • 4. Öffnen/Schließen einer Datei auf Standard- und Nichtstandardarten;
  • 5. Einhängen eines speicherresidenten Codes oder einer Routine;
  • 6. kritische Fehlerbehandlung (Umleiten eines kritischen Fehlervektors);
  • 7. Kettenbewegungen oder Dateischreibvorgänge, die in ihrer Größe verdächtig ähnlich zur Zieldateigröße sind;
  • 8. Finden einer Datei oder Finden einer ersten Datei in einem Dateiverzeichnis; und
  • 9. Ändern der Dateidatum-/Zeitstempel oder anderer Dateiattribute;
  • sind jedoch nicht darauf beschränkt.
  • Anschließend an die vierte Prozedur 808 stellt das Auswertungsmodul 156 in einer fünften Prozedur 810 für jeden der verschiedenen Arten von Viren fest, ob ein Maß der verdächtigen Verhaltensweisen eine Schwelle erreicht oder überschreitet, die für eine Infektion kennzeichnend ist. Insbesondere wird jedem verdächtigen Verhalten ein Gewicht zugeordnet, das seinen normierten Wert multipliziert, um zu einem Beitrag des Maßes zu gelangen. Wenn das Maß eine vorbestimmte Schwelle überschreitet und jedes verdächtige Verhalten vorhanden ist, das als verbindlich für jenen Typ Virus bezeichnet wird, dann wird eine Infektion durch diesen Typ Virus angezeigt.
  • In einer bevorzugten Ausführungsform umfassen Typen von Viren die folgenden:
  • 1. speicherresidente Viren, die an COM-Dateien hängen;
  • 2. direktwirkende Viren, die an COM-Dateien hängen;
  • 3. speicherresidente Viren, die COM-Dateien vorgeschaltet sind;
  • 4. direktwirkende Viren, die COM-Dateien vorgeschaltet sind;
  • 5. speicherresidente Viren, die an EXE-Dateien hängen;
  • 6. direktwirkende Viren, die an EXE-Dateien hängen;
  • 7. speicherresidente Viren im allgemeinen; und
  • 8. direktwirkende Viren im allgemeinen;
  • sind jedoch nicht darauf beschränkt.
  • Wenn eine (oder möglicherweise mehrere) der Schwellen erreicht sind, dann wird in einer sechsten Prozedur 812 des Auswertungsmoduls 156 feststellt, ob irgendeine hochverdächtige Kombination von drei oder mehr verdächtigen Operationen erkannt wurde. In einer bevorzugten Ausführungsform werden diese hochverdächtigen Kombinationen festgestellt, indem verschiedene Kombinationen bezüglich des Universums bekannter Computerviren analysiert werden und als hochverdächtig jene Kombinationen ausgewählt werden, die in mehreren (z. B. fünf) Prozent oder mehr der bekannten Viren auftauchen. Andere Arten, die hochverdächtigen Kombinationen auszuwählen, sind möglich. Wenn eine hochverdächtige Kombination ein Scheinpositiv erzeugt, indem sie unkorrekt ein sauberes Programm als infiziert erkennt, dann kann diese hochverdächtige Kombination aus der Liste hochverdächtiger Kombinationen entfernt werden. Eine solche Liste sollte ziemlich robust sein, da angenommen werden kann, daß mehr als eine hochverdächtige Kombination einen typischen Virus erkennt.
  • Wenn eine hochverdächtige Kombination erkannt wird 814, darin führt das Auswertungsmodul 156 die sechste Prozedur 812 aus, an das Antiviren-Hauptmodul 151 den Typ von Infektion zurückzugeben, der anscheinend in der Datei vorhanden ist. Insbesondere wird ein Etikett zurückgegeben, das der/den erkannten Kombination(en) entspricht.
  • Wenn andernfalls keine hochverdächtige Kombination erkannt wird, dann führt das Auswertungsmodul 156 die dritte Prozedur 806 aus, an das Antiviren-Hauptmodul 151 das Ergebnis zurückzugeben, daß die Datei virusfrei zu sein scheint.
  • Die obige Beschreibung ist enthalten, um die Operation der bevorzugten Ausführungsformen zu veranschaulichen und ist nicht dazu bestimmt, den Rahmen der Erfindung zu beschränken. Aus der obigen Beschreibung werden Fachleuten viele Variationen deutlich werden, die dennoch durch den Geist und Rahmen der Erfindung eingeschlossen sein würden. Erstens können Gruppen von Blöcken in den Fig. 4A und 7B umgeordnet werden, ohne die Funktionalität der Ausführungsform zu ändern. (Zum Beispiel können die Schritte 402 und 404 so bewegt werden, daß sie nach den Schritten 406 und 408 liegen. Oder die Schritte 740 und 742 in Fig. 7B können so bewegt werden, daß sie nach den Schritten 748 und 750 liegen. Und so weiter.) Zweitens kann die Feststellung, wann die Entschlüsselungsphase 252 zu beenden ist, auf alternative Arten vorgenommen werden, sie sich von der Art unterscheiden, zwei Schwellen zu verwenden, die in Fig. 3 gezeigt wird. Drittens kann die Bestimmung des viruseigenen Bereichs auf alternativen Arten vorgenommen werden, die sich von der spezifischen Art unterscheiden, die in Fig. 4B gezeigt wird. Viertens kann die Auswertung, ob die Datei infiziert zu sein scheint oder nicht, auf alternative Arten vorgenommen werden, die sich von der Vektor-Herangehensweise der Auswertungsphase 256 unterscheidet, die in Fig. 8 dargestellt wird. Fünftens können andere Kriterien oder Kombinationen von Kriterien für verdächtig Operationen und Verhaltensweisen in der Auswertungsphase 256 verwendet werden, die sich von den Kriterien unterscheiden, die in der Beschreibung angegeben werden. Dies sind nur einige der Variationen, die durch die mit Recht durch die vorliegende Erfindung eingeschlossen werden. Der Rahmen der Erfindung soll nur durch die folgenden Ansprüche begrenzt werden.

Claims (32)

1. Verfahren zur Erkennung eines Computervirus in einem Zielprogramm, wobei das Verfahren die Schritte aufweist:
Emulation von Befehlen des Zielprogramms; und
Analyse der während des Emulationsschrittes beobachteten Operationen, um dadurch den Computervirus zu erkennen;
wobei das Verfahren durch die folgenden Schritte gekennzeichnet ist:
Emulation von Befehlen des Zielprogramms während einer Entschlüsselungsphase (252), um dadurch einen Viruskörper zu entschlüsseln;
Feststellen mindestens eines Bereichs des Zielprogramms, in dem der entschlüsselte Viruskörper vorhanden sein kann, und Emulation von Code innerhalb des mindestens einen Bereichs des Zielprogramms während einer Untersuchungsphase (254); und
Analyse von Operationen, die während der Entschlüsselungs- (252) und Untersuchungsphasen (254) beobachtet werden, um dadurch den Computervirus während einer Auswertungsphase (256) zu erkennen.
2. Verfahren nach Anspruch 1, wobei die Entschlüsselungsphase mit einem Eintrittsstellencode des Zielprogramms beginnt (302).
3. Verfahren nach Anspruch 1, wobei die Untersuchungsphase (252) mit einem Code beginnt, der einem Code unmittelbar folgt, der während der Entschlüsselungsphase (252) emuliert wird.
4. Verfahren nach Anspruch 1, wobei während dar Entschlüsselungsphase (252) der Computervirus den Viruskörper nicht entschlüsselt, da der Viruskörper nicht verschlüsselt ist, und wobei die Untersuchungsphase (254) mit einem Eintrittsstellencode des Zielprogramms beginnt.
5. Verfahren nach Anspruch 1, wobei festgestellt wird, ob der Viruskörper entschlüsselt worden ist, indem ein zusammenhängender Abschnitt von Bytes im Speicher erkannt wird, der während einer ersten Emulationsperiode überschrieben wurde.
6. Verfahren nach Anspruch 1, wobei die Auswertungsphase (256) beendet wird (806), wenn eine harmlose Operation beobachtet wird (802) und wenn keine verdächtige Operationen beobachtet (804) werden.
7. Verfahren nach Anspruch 6, wobei die harmlose Operation eine des Druckens und Anzeigens eines Zeichens umfaßt.
8. Verfahren nach Anspruch 6, wobei die harmlose Operation einen Programmbeendigungsbefehl innerhalb eines besonderen Bereichs des Programms umfaßt.
9. Verfahren nach Anspruch 6, wobei die harmlose Operation das Umleiten eines Fehlervektors umfaßt.
10. Verfahren nach Anspruch 6, wobei die harmlose Operation das Aufrufen einer Funktion von innerhalb eines besonderen Bereichs des Programms aus umfaßt, die sich von der gegenwärtigen Speicherstelle deutlich unterscheidet.
11. Verfahren nach Anspruch 6, wobei eine verdächtige Operation die Paarung von Inhalten von einem eines Registers und einer Speicherstelle mit einer Identifizierung eines Dateianfangsblocks umfaßt.
12. Verfahren nach Anspruch 6, wobei eine verdächtige Operation einen Dateischreibvorgang einer ähnlichen Größe in Bytes wie eine Anzahl von Bytes von einer Eintrittsstelle des Zielprogramms bis zum Dateiende des Zielprogramms umfaßt.
13. Verfahren nach Anspruch 6, wobei eine verdächtige Operation eine Suche nach einem Dateiende umfaßt, der sich ein Dateischreibvorgang eines Sprungbefehls anschließt.
14. Verfahren nach Anspruch 13, wobei die Suche eine Größe in Bytes bestimmt und der Sprungbefehl eine ähnliche Anzahl von Bytes abdeckt.
15. Verfahren nach Anspruch 6, wobei eine verdächtige Operation einen Dateischreibvorgang einer ähnlichen Größe wie eine Größe eines Anfangsblocks umfaßt, und wobei der Dateischreibvorgang ein Hinweissymbol enthält, das für den Anfangsblock charakteristisch ist.
16. Verfahren nach Anspruch 6, wobei eine verdächtige Operation das Vorhandensein eines Anfangsblocks einer ausführbaren Datei innerhalb eines Körpers des Zielprogramms umfaßt.
17. Verfahren nach Anspruch 6, wobei eine verdächtige Operation das Finden einer ausführbaren Datei in einem Dateiverzeichnis umfaßt.
18. Verfahren nach Anspruch 6, wobei eine verdächtige Operation eines aus einer Untersuchung und einer Modifikation eines Speicherzuordnungsschemas umfaßt.
19. Verfahren nach Anspruch 6, wobei eine verdächtige Operation mindestens eine Kettenbewegungsoperation umfaßt, die annährend dieselbe Anzahl von Bytes wie eine Anzahl von Bytes von einer Eintrittsstelle des Zielprogramms bis zu einem Dateiende des Zielprogramms bewegt.
20. Verfahren nach Anspruch 1, wobei der mindestens eine Bereich einen Endabschnitt des Zielprogramms umfaßt.
21. Verfahren nach Anspruch 1, wobei der mindestens eine Bereich einen Anfangsabschnitt des Zielprogramms umfaßt.
22. Verfahren nach Anspruch 1, das ferner eine Feststellung, ob der während der Untersuchungsphase (254) zu emulierende Code schon emuliert worden ist, und wenn dem so ist, keine Emulation des zu emulierenden Codes umfaßt.
23. Verfahren nach Anspruch 22, wobei die Emulation von Code innerhalb des mindestens eines Bereichs während der Untersuchungsphase (254) ferner aufweist:
Feststellen (506), ob der zu emulierende Code außerhalb des mindestens einen Bereichs liegt; und
wenn der zu emulierende Code außerhalb des mindestens einen Bereichs liegt, keine Emulation des Befehls, der emuliert werden soll.
24. Verfahren nach Anspruch 23, das ferner umfaßt:
Feststellen (510), ob irgendein nicht genommenes Verzweigungsziel bleibt; und
wenn irgendein nicht genommenes Verzweigungsziel bleibt, Zeigen auf ein nächstes nicht genommenes Verzweigungsziel als den zu emulierenden Code und Setzen eines Status eines CPU-Emulators auf einen gespeicherten Status, der dem nächsten nicht genommenen Verzweigungsziel entspricht.
25. Verfahren nach Anspruch 24, das ferner umfaßt:
wenn keine nicht genommenen Verzweigungsziele bleiben, Feststellen (514), ob ein nicht emulierter Codeabschnitt innerhalb des mindestens einen Bereichs bleibt; und
wenn irgendein nicht emulierter Codeabschnitt innerhalb des mindestens einen Bereichs bleibt, Zeigen (516) auf einen Anfangscode eines nicht emulierten Codeabschnitts als den zu emulierenden Code und Rücksetzen des Status des CPU- Emulators.
26. Verfahren nach Anspruch 23, wobei die Emulation des Codes umfaßt:
Feststellen (406), ob der zu emulierende Befehl eine verdächtige Operation ausführt; und
Aufzeichnen (408) der verdächtigen Operation, wenn der zu emulierende Code die verdächtige Operation ausführt.
27. Verfahren nach Anspruch 23, wobei die Emulation des zu emulierenden Codes ferner umfaßt:
Feststellen (740), ob der zu emulierende Code eine Unterbrechung umfaßt; und
wenn der zu emulierende Code eine Unterbrechung umfaßt, Vortäuschen (742) einen Vollendung der Unterbrechung, jedoch keine tatsächliche Ausführung der Unterbrechung.
28. Verfahren nach Anspruch 23, wobei die Emulation des zu emulierenden Codes ferner umfaßt:
Feststellen (744), ob der zu emulierende Code einen Speicherschreibvorgang an einer Speicherstelle innerhalb des mindestens einen Bereichs umfaßt; und
Umleiten (746) des Speichers zu einem anderen Segment S, wenn der zu emulierende Code einen Speicherschreibvorgang an einer Speicherstelle innerhalb des mindestens einen Bereichs umfaßt.
29. Verfahren nach Anspruch 28, wobei die Emulation des zu emulierenden Codes ferner umfaßt:
Feststellen (748), ob der zu emulierende Code die Einleitung eines Speicherlesevorgangs von Daten umfaßt, die vorher durch Umleitung zum Segment S geschrieben wurden; und
Umleiten (750) des Speicherlesevorgangs von Daten auf das Segment S, wenn der zu emulierende Code den Speicherlesevorgang von Daten umfaßt, die vorher durch Umleitung zum Segment S geschrieben wurden.
30. Verfahren nach Anspruch 23, wobei die Emulation des zu emulierenden Befehls ferner umfaßt:
Feststellen (752), ob der zu emulierende Code einen Verzweigungspunkt umfaßt; und
Speichern (754) einer nicht genommenen Zieladresse des Verzweigungspunkts und eines CPU-Emulator-Status, wenn der zu emulierende Code einen Verzweigungspunkt umfaßt.
31. Vorrichtung zur Erkennung eines Computervirus in einem Zielprogramm, die aufweist:
eine Emulationseinrichtung (158) zur Emulation von Befehlen des Zielprogramms; und
eine Analyseeinrichtung (152, 154, 156) zur Analyse von Operationen, die während des Emulationsschrittes beobachtet werden, um dadurch den Computervirus zu erkennen;
wobei die Vorrichtung dadurch gekennzeichnet ist, daß:
die Emulationseinrichtung betriebsfähig ist, Befehle des Zielprogramms während einer Entschlüsselungsphase (252) zu emulieren, um dadurch einen Viruskörper zu entschlüsseln;
und daß sie ferner Bestimmungseinrichtung (154) zur Bestimmung mindestens eines Bereichs des Zielprogramms umfaßt, in dem der entschlüsselte Viruskörper vorhanden sein kann, wobei die Emulationseinrichtung betriebsfähig ist, während einer Untersuchungsphase (254) Code innerhalb des mindestens einen Bereichs des Zielprogramms zu emulieren; und
ferner eine Einrichtung (156) zur Analyse von Operationen umfaßt. die während der Entschlüsselungs- (252) und Untersuchungsphasen (254) beobachtet werden, um dadurch den Computervirus während einer Auswertungsphase (256) zu erkennen.
32. Computerprogramm, das prozessorimplementierbare Befehle zur Ausführung eines Verfahren nach einem der Ansprüche 1 bis 30 umfaßt, wenn das Computerprogramm auf einem Computer augeführt wird.
DE69802831T 1997-09-23 1998-08-25 Dynamisches heuristisches verfahren zur erkennung von computerviren Expired - Lifetime DE69802831T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/935,577 US6357008B1 (en) 1997-09-23 1997-09-23 Dynamic heuristic method for detecting computer viruses using decryption exploration and evaluation phases
PCT/US1998/017609 WO1999015966A1 (en) 1997-09-23 1998-08-25 Dynamic heuristic method for detecting computer viruses

Publications (2)

Publication Number Publication Date
DE69802831D1 DE69802831D1 (de) 2002-01-17
DE69802831T2 true DE69802831T2 (de) 2002-04-25

Family

ID=25467378

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69802831T Expired - Lifetime DE69802831T2 (de) 1997-09-23 1998-08-25 Dynamisches heuristisches verfahren zur erkennung von computerviren

Country Status (5)

Country Link
US (1) US6357008B1 (de)
EP (1) EP1018077B1 (de)
CA (1) CA2304163C (de)
DE (1) DE69802831T2 (de)
WO (1) WO1999015966A1 (de)

Families Citing this family (366)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8079086B1 (en) 1997-11-06 2011-12-13 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US7058822B2 (en) 2000-03-30 2006-06-06 Finjan Software, Ltd. Malicious mobile code runtime monitoring system and methods
US9219755B2 (en) 1996-11-08 2015-12-22 Finjan, Inc. Malicious mobile code runtime monitoring system and methods
US6711583B2 (en) * 1998-09-30 2004-03-23 International Business Machines Corporation System and method for detecting and repairing document-infecting viruses using dynamic heuristics
IL143573A0 (en) 1998-12-09 2002-04-21 Network Ice Corp A method and apparatus for providing network and computer system security
US7389540B2 (en) * 1999-02-03 2008-06-17 Cybersoft, Inc. Apparatus and methods for intercepting, examining and controlling code, data and files and their transfer
US7346929B1 (en) * 1999-07-29 2008-03-18 International Business Machines Corporation Method and apparatus for auditing network security
US7089591B1 (en) * 1999-07-30 2006-08-08 Symantec Corporation Generic detection and elimination of marco viruses
US7406603B1 (en) * 1999-08-31 2008-07-29 Intertrust Technologies Corp. Data protection systems and methods
US6851057B1 (en) 1999-11-30 2005-02-01 Symantec Corporation Data driven detection of viruses
US8006243B2 (en) * 1999-12-07 2011-08-23 International Business Machines Corporation Method and apparatus for remote installation of network drivers and software
US6785818B1 (en) 2000-01-14 2004-08-31 Symantec Corporation Thwarting malicious registry mapping modifications and map-loaded module masquerade attacks
US6971019B1 (en) 2000-03-14 2005-11-29 Symantec Corporation Histogram-based virus detection
US6519703B1 (en) * 2000-04-14 2003-02-11 James B. Joyce Methods and apparatus for heuristic firewall
AU2001262958A1 (en) * 2000-04-28 2001-11-12 Internet Security Systems, Inc. Method and system for managing computer security information
WO2001084775A2 (en) * 2000-04-28 2001-11-08 Internet Security Systems, Inc. System and method for managing security events on a network
US6973577B1 (en) * 2000-05-26 2005-12-06 Mcafee, Inc. System and method for dynamically detecting computer viruses through associative behavioral analysis of runtime state
US9213836B2 (en) * 2000-05-28 2015-12-15 Barhon Mayer, Batya System and method for comprehensive general electric protection for computers against malicious programs that may steal information and/or cause damages
US20040034794A1 (en) * 2000-05-28 2004-02-19 Yaron Mayer System and method for comprehensive general generic protection for computers against malicious programs that may steal information and/or cause damages
US6611925B1 (en) * 2000-06-13 2003-08-26 Networks Associates Technology, Inc. Single point of entry/origination item scanning within an enterprise or workgroup
US20040073617A1 (en) 2000-06-19 2004-04-15 Milliken Walter Clark Hash-based systems and methods for detecting and preventing transmission of unwanted e-mail
US20040064737A1 (en) * 2000-06-19 2004-04-01 Milliken Walter Clark Hash-based systems and methods for detecting and preventing transmission of polymorphic network worms and viruses
US7162649B1 (en) * 2000-06-30 2007-01-09 Internet Security Systems, Inc. Method and apparatus for network assessment and authentication
US7093239B1 (en) * 2000-07-14 2006-08-15 Internet Security Systems, Inc. Computer immune system and method for detecting unwanted code in a computer system
US8341743B2 (en) * 2000-07-14 2012-12-25 Ca, Inc. Detection of viral code using emulation of operating system functions
US7636945B2 (en) * 2000-07-14 2009-12-22 Computer Associates Think, Inc. Detection of polymorphic script language viruses by data driven lexical analysis
US7069583B2 (en) * 2000-07-14 2006-06-27 Computer Associates Think, Inc. Detection of polymorphic virus code using dataflow analysis
US7350235B2 (en) * 2000-07-14 2008-03-25 Computer Associates Think, Inc. Detection of decryption to identify encrypted virus
GB2366693B (en) * 2000-08-31 2002-08-14 F Secure Oyj Software virus protection
US6968461B1 (en) * 2000-10-03 2005-11-22 Networks Associates Technology, Inc. Providing break points in a malware scanning operation
US9027121B2 (en) 2000-10-10 2015-05-05 International Business Machines Corporation Method and system for creating a record for one or more computer security incidents
US7146305B2 (en) * 2000-10-24 2006-12-05 Vcis, Inc. Analytical virtual machine
US7231440B1 (en) * 2000-12-18 2007-06-12 Mcafee, Inc. System and method for distributing portable computer virus definition records with binary file conversion
US6622150B1 (en) * 2000-12-18 2003-09-16 Networks Associates Technology, Inc. System and method for efficiently managing computer virus definitions using a structured virus database
US7130466B2 (en) * 2000-12-21 2006-10-31 Cobion Ag System and method for compiling images from a database and comparing the compiled images with known images
US20020178375A1 (en) * 2001-01-31 2002-11-28 Harris Corporation Method and system for protecting against malicious mobile code
US20020147803A1 (en) * 2001-01-31 2002-10-10 Dodd Timothy David Method and system for calculating risk in association with a security audit of a computer network
US7404212B2 (en) * 2001-03-06 2008-07-22 Cybersoft, Inc. Apparatus and methods for intercepting, examining and controlling code, data and files and their transfer
WO2002093334A2 (en) * 2001-04-06 2002-11-21 Symantec Corporation Temporal access control for computer virus outbreaks
US20020188649A1 (en) * 2001-06-12 2002-12-12 Ron Karim Mechanism for safely executing an untrusted program
US7657419B2 (en) * 2001-06-19 2010-02-02 International Business Machines Corporation Analytical virtual machine
US6792543B2 (en) 2001-08-01 2004-09-14 Networks Associates Technology, Inc. Virus scanning on thin client devices using programmable assembly language
US7096368B2 (en) * 2001-08-01 2006-08-22 Mcafee, Inc. Platform abstraction layer for a wireless malware scanning engine
US7657935B2 (en) 2001-08-16 2010-02-02 The Trustees Of Columbia University In The City Of New York System and methods for detecting malicious email transmission
US7234167B2 (en) * 2001-09-06 2007-06-19 Mcafee, Inc. Automatic builder of detection and cleaning routines for computer viruses
JP2005527873A (ja) * 2001-09-14 2005-09-15 コンピュータ アソシエイツ シンク,インコーポレイテッド ウイルス検知システム
US7266844B2 (en) * 2001-09-27 2007-09-04 Mcafee, Inc. Heuristic detection of polymorphic computer viruses based on redundancy in viral code
US9306966B2 (en) 2001-12-14 2016-04-05 The Trustees Of Columbia University In The City Of New York Methods of unsupervised anomaly detection using a geometric framework
US7401359B2 (en) * 2001-12-21 2008-07-15 Mcafee, Inc. Generating malware definition data for mobile computing devices
US7114185B2 (en) * 2001-12-26 2006-09-26 Mcafee, Inc. Identifying malware containing computer files using embedded text
WO2003058451A1 (en) * 2002-01-04 2003-07-17 Internet Security Systems, Inc. System and method for the managed security control of processes on a computer system
US7225343B1 (en) 2002-01-25 2007-05-29 The Trustees Of Columbia University In The City Of New York System and methods for adaptive model generation for detecting intrusions in computer systems
US7340777B1 (en) 2003-03-31 2008-03-04 Symantec Corporation In memory heuristic system and method for detecting viruses
US7162715B1 (en) 2002-03-16 2007-01-09 I-Squared, Inc. Method and apparatus for preemptive monitoring of software binaries by instruction interception and dynamic recompilation
US7290282B1 (en) * 2002-04-08 2007-10-30 Symantec Corporation Reducing false positive computer virus detections
US20040111632A1 (en) * 2002-05-06 2004-06-10 Avner Halperin System and method of virus containment in computer networks
US7370360B2 (en) * 2002-05-13 2008-05-06 International Business Machines Corporation Computer immune system and method for detecting unwanted code in a P-code or partially compiled native-code program executing within a virtual machine
US7155742B1 (en) 2002-05-16 2006-12-26 Symantec Corporation Countering infections to communications modules
US7409717B1 (en) * 2002-05-23 2008-08-05 Symantec Corporation Metamorphic computer virus detection
US7367056B1 (en) 2002-06-04 2008-04-29 Symantec Corporation Countering malicious code infections to computer files that have been infected more than once
US10298700B2 (en) 2002-06-25 2019-05-21 Artimys Technologies Llc System and method for online monitoring of and interaction with chat and instant messaging participants
US7418729B2 (en) * 2002-07-19 2008-08-26 Symantec Corporation Heuristic detection of malicious computer code by page tracking
US7380277B2 (en) * 2002-07-22 2008-05-27 Symantec Corporation Preventing e-mail propagation of malicious computer code
US7478431B1 (en) 2002-08-02 2009-01-13 Symantec Corporation Heuristic detection of computer viruses
GB2391965B (en) * 2002-08-14 2005-11-30 Messagelabs Ltd Method of, and system for, heuristically detecting viruses in executable code
US7832011B2 (en) * 2002-08-30 2010-11-09 Symantec Corporation Method and apparatus for detecting malicious code in an information handling system
US7748039B2 (en) * 2002-08-30 2010-06-29 Symantec Corporation Method and apparatus for detecting malicious code in an information handling system
US7331062B2 (en) * 2002-08-30 2008-02-12 Symantec Corporation Method, computer software, and system for providing end to end security protection of an online transaction
US7509679B2 (en) * 2002-08-30 2009-03-24 Symantec Corporation Method, system and computer program product for security in a global computer network transaction
US7337471B2 (en) 2002-10-07 2008-02-26 Symantec Corporation Selective detection of malicious computer code
US7469419B2 (en) * 2002-10-07 2008-12-23 Symantec Corporation Detection of malicious computer code
US7260847B2 (en) 2002-10-24 2007-08-21 Symantec Corporation Antivirus scanning in a hard-linked environment
US7159149B2 (en) * 2002-10-24 2007-01-02 Symantec Corporation Heuristic detection and termination of fast spreading network worm attacks
US7249187B2 (en) 2002-11-27 2007-07-24 Symantec Corporation Enforcement of compliance with network security policies
US8122498B1 (en) 2002-12-12 2012-02-21 Mcafee, Inc. Combined multiple-application alert system and method
GB2396227B (en) * 2002-12-12 2006-02-08 Messagelabs Ltd Method of and system for heuristically detecting viruses in executable code
US8312535B1 (en) 2002-12-12 2012-11-13 Mcafee, Inc. System, method, and computer program product for interfacing a plurality of related applications
US8239941B1 (en) * 2002-12-13 2012-08-07 Mcafee, Inc. Push alert system, method, and computer program product
US8990723B1 (en) 2002-12-13 2015-03-24 Mcafee, Inc. System, method, and computer program product for managing a plurality of applications via a single interface
US7631353B2 (en) 2002-12-17 2009-12-08 Symantec Corporation Blocking replication of e-mail worms
US20040128379A1 (en) * 2002-12-30 2004-07-01 Jerry Mizell Collecting standard interval metrics using a randomized collection period
US7296293B2 (en) 2002-12-31 2007-11-13 Symantec Corporation Using a benevolent worm to assess and correct computer security vulnerabilities
US7013483B2 (en) * 2003-01-03 2006-03-14 Aladdin Knowledge Systems Ltd. Method for emulating an executable code in order to detect maliciousness
US7913303B1 (en) 2003-01-21 2011-03-22 International Business Machines Corporation Method and system for dynamically protecting a computer system from attack
US7228563B2 (en) 2003-02-06 2007-06-05 Symantec Corporation Shell code blocking system and method
US7293290B2 (en) 2003-02-06 2007-11-06 Symantec Corporation Dynamic detection of computer worms
US7246227B2 (en) 2003-02-10 2007-07-17 Symantec Corporation Efficient scanning of stream based data
US7203959B2 (en) 2003-03-14 2007-04-10 Symantec Corporation Stream scanning through network proxy servers
US20060130016A1 (en) * 2003-03-17 2006-06-15 Wagner John R Method of kernal-mode instruction interception and apparatus therefor
US7546638B2 (en) 2003-03-18 2009-06-09 Symantec Corporation Automated identification and clean-up of malicious computer code
GB2400932B (en) * 2003-04-25 2005-12-14 Messagelabs Ltd A method of,and system for,heuristically determining that an unknown file is harmless by using traffic heuristics
US7287281B1 (en) 2003-06-17 2007-10-23 Symantec Corporation Send blocking system and method
US7392543B2 (en) * 2003-06-30 2008-06-24 Symantec Corporation Signature extraction system and method
US7739737B2 (en) * 2003-07-29 2010-06-15 Wisconsin Alumni Research Foundation Method and apparatus to detect malicious software
US8271774B1 (en) 2003-08-11 2012-09-18 Symantec Corporation Circumstantial blocking of incoming network traffic containing code
US7739278B1 (en) 2003-08-22 2010-06-15 Symantec Corporation Source independent file attribute tracking
US7203964B1 (en) * 2003-10-07 2007-04-10 Elmer V. Pass Method of stopping internet viruses
US7657938B2 (en) * 2003-10-28 2010-02-02 International Business Machines Corporation Method and system for protecting computer networks by altering unwanted network data traffic
US20050137980A1 (en) * 2003-12-17 2005-06-23 Bank Of America Corporation Active disablement of malicious code in association with the provision of on-line financial services
US7913305B2 (en) * 2004-01-30 2011-03-22 Microsoft Corporation System and method for detecting malware in an executable code module according to the code module's exhibited behavior
US7730530B2 (en) * 2004-01-30 2010-06-01 Microsoft Corporation System and method for gathering exhibited behaviors on a .NET executable module in a secure manner
US7437759B1 (en) 2004-02-17 2008-10-14 Symantec Corporation Kernel mode overflow attack prevention system and method
US7895448B1 (en) * 2004-02-18 2011-02-22 Symantec Corporation Risk profiling
US7984304B1 (en) * 2004-03-02 2011-07-19 Vmware, Inc. Dynamic verification of validity of executable code
US7337327B1 (en) 2004-03-30 2008-02-26 Symantec Corporation Using mobility tokens to observe malicious mobile code
US9027135B1 (en) 2004-04-01 2015-05-05 Fireeye, Inc. Prospective client identification using malware attack detection
US8375444B2 (en) 2006-04-20 2013-02-12 Fireeye, Inc. Dynamic signature creation and enforcement
US8561177B1 (en) 2004-04-01 2013-10-15 Fireeye, Inc. Systems and methods for detecting communication channels of bots
US9106694B2 (en) 2004-04-01 2015-08-11 Fireeye, Inc. Electronic message analysis for malware detection
US8539582B1 (en) 2004-04-01 2013-09-17 Fireeye, Inc. Malware containment and security analysis on connection
US8898788B1 (en) 2004-04-01 2014-11-25 Fireeye, Inc. Systems and methods for malware attack prevention
US8528086B1 (en) 2004-04-01 2013-09-03 Fireeye, Inc. System and method of detecting computer worms
US8793787B2 (en) * 2004-04-01 2014-07-29 Fireeye, Inc. Detecting malicious network content using virtual environment components
US8171553B2 (en) 2004-04-01 2012-05-01 Fireeye, Inc. Heuristic based capture with replay to virtual machine
US8549638B2 (en) 2004-06-14 2013-10-01 Fireeye, Inc. System and method of containing computer worms
US8204984B1 (en) 2004-04-01 2012-06-19 Fireeye, Inc. Systems and methods for detecting encrypted bot command and control communication channels
US8881282B1 (en) 2004-04-01 2014-11-04 Fireeye, Inc. Systems and methods for malware attack detection and identification
US8006305B2 (en) 2004-06-14 2011-08-23 Fireeye, Inc. Computer worm defense system and method
US8584239B2 (en) 2004-04-01 2013-11-12 Fireeye, Inc. Virtual machine with dynamic data flow analysis
US7587537B1 (en) 2007-11-30 2009-09-08 Altera Corporation Serializer-deserializer circuits formed from input-output circuit registers
US8566946B1 (en) 2006-04-20 2013-10-22 Fireeye, Inc. Malware containment on connection
US7130981B1 (en) 2004-04-06 2006-10-31 Symantec Corporation Signature driven cache extension for stream based scanning
US7861304B1 (en) 2004-05-07 2010-12-28 Symantec Corporation Pattern matching using embedded functions
US7484094B1 (en) 2004-05-14 2009-01-27 Symantec Corporation Opening computer files quickly and safely over a network
US7373667B1 (en) 2004-05-14 2008-05-13 Symantec Corporation Protecting a computer coupled to a network from malicious code infections
US7370233B1 (en) 2004-05-21 2008-05-06 Symantec Corporation Verification of desired end-state using a virtual machine environment
US7694150B1 (en) 2004-06-22 2010-04-06 Cisco Technology, Inc System and methods for integration of behavioral and signature based security
US20060015939A1 (en) * 2004-07-14 2006-01-19 International Business Machines Corporation Method and system to protect a file system from viral infections
US7441042B1 (en) 2004-08-25 2008-10-21 Symanetc Corporation System and method for correlating network traffic and corresponding file input/output traffic
US7690034B1 (en) 2004-09-10 2010-03-30 Symantec Corporation Using behavior blocking mobility tokens to facilitate distributed worm detection
US7480683B2 (en) * 2004-10-01 2009-01-20 Webroot Software, Inc. System and method for heuristic analysis to identify pestware
US7565686B1 (en) 2004-11-08 2009-07-21 Symantec Corporation Preventing unauthorized loading of late binding code into a process
US8131804B2 (en) * 2004-11-19 2012-03-06 J Michael Greata Method and apparatus for immunizing data in computer systems from corruption
US20060112430A1 (en) * 2004-11-19 2006-05-25 Deisenroth Jerrold M Method and apparatus for immunizing data in computer systems from corruption
US7636856B2 (en) * 2004-12-06 2009-12-22 Microsoft Corporation Proactive computer malware protection through dynamic translation
US7756933B2 (en) * 2004-12-13 2010-07-13 Collactive Ltd. System and method for deterring rogue users from attacking protected legitimate users
US20060161989A1 (en) * 2004-12-13 2006-07-20 Eran Reshef System and method for deterring rogue users from attacking protected legitimate users
US7810158B2 (en) * 2004-12-16 2010-10-05 At&T Intellectual Property I, L.P. Methods and systems for deceptively trapping electronic worms
US8059551B2 (en) * 2005-02-15 2011-11-15 Raytheon Bbn Technologies Corp. Method for source-spoofed IP packet traceback
US8104086B1 (en) 2005-03-03 2012-01-24 Symantec Corporation Heuristically detecting spyware/adware registry activity
US8719924B1 (en) * 2005-03-04 2014-05-06 AVG Technologies N.V. Method and apparatus for detecting harmful software
US7591016B2 (en) * 2005-04-14 2009-09-15 Webroot Software, Inc. System and method for scanning memory for pestware offset signatures
US7571476B2 (en) * 2005-04-14 2009-08-04 Webroot Software, Inc. System and method for scanning memory for pestware
US7349931B2 (en) 2005-04-14 2008-03-25 Webroot Software, Inc. System and method for scanning obfuscated files for pestware
US7975303B1 (en) 2005-06-27 2011-07-05 Symantec Corporation Efficient file scanning using input-output hints
US7895654B1 (en) 2005-06-27 2011-02-22 Symantec Corporation Efficient file scanning using secure listing of file modification times
GB0513375D0 (en) 2005-06-30 2005-08-03 Retento Ltd Computer security
US7895651B2 (en) 2005-07-29 2011-02-22 Bit 9, Inc. Content tracking in a network security system
US8984636B2 (en) 2005-07-29 2015-03-17 Bit9, Inc. Content extractor and analysis system
US8272058B2 (en) 2005-07-29 2012-09-18 Bit 9, Inc. Centralized timed analysis in a network security system
WO2007022454A2 (en) 2005-08-18 2007-02-22 The Trustees Of Columbia University In The City Of New York Systems, methods, and media protecting a digital data processing device from attack
US20080134326A2 (en) * 2005-09-13 2008-06-05 Cloudmark, Inc. Signature for Executable Code
US20070079375A1 (en) * 2005-10-04 2007-04-05 Drew Copley Computer Behavioral Management Using Heuristic Analysis
US7996898B2 (en) * 2005-10-25 2011-08-09 Webroot Software, Inc. System and method for monitoring events on a computer to reduce false positive indication of pestware
WO2007050667A2 (en) 2005-10-25 2007-05-03 The Trustees Of Columbia University In The City Of New York Methods, media and systems for detecting anomalous program executions
US10503418B2 (en) * 2005-12-01 2019-12-10 Drive Sentry Limited System and method to secure a computer system by selective control of write access to a data storage medium
US8077708B2 (en) * 2006-02-16 2011-12-13 Techguard Security, Llc Systems and methods for determining a flow of data
US20070239993A1 (en) * 2006-03-17 2007-10-11 The Trustees Of The University Of Pennsylvania System and method for comparing similarity of computer programs
JP5144075B2 (ja) * 2006-03-30 2013-02-13 日本碍子株式会社 ハニカム構造体及びその製造方法
US8479174B2 (en) 2006-04-05 2013-07-02 Prevx Limited Method, computer program and computer for analyzing an executable computer file
WO2007117636A2 (en) * 2006-04-06 2007-10-18 Smobile Systems, Inc. Malware detection system and method for comprssed data on mobile platforms
US20080010538A1 (en) * 2006-06-27 2008-01-10 Symantec Corporation Detecting suspicious embedded malicious content in benign file formats
US8239915B1 (en) 2006-06-30 2012-08-07 Symantec Corporation Endpoint management using trust rating data
US8261344B2 (en) * 2006-06-30 2012-09-04 Sophos Plc Method and system for classification of software using characteristics and combinations of such characteristics
US8365286B2 (en) * 2006-06-30 2013-01-29 Sophos Plc Method and system for classification of software using characteristics and combinations of such characteristics
US8151352B1 (en) * 2006-07-14 2012-04-03 Bitdefender IPR Managament Ltd. Anti-malware emulation systems and methods
US8190868B2 (en) 2006-08-07 2012-05-29 Webroot Inc. Malware management through kernel detection
US7961960B2 (en) * 2006-08-24 2011-06-14 Dell Products L.P. Methods and apparatus for reducing storage size
WO2008055156A2 (en) 2006-10-30 2008-05-08 The Trustees Of Columbia University In The City Of New York Methods, media, and systems for detecting an anomalous sequence of function calls
US20100011441A1 (en) * 2007-05-01 2010-01-14 Mihai Christodorescu System for malware normalization and detection
US8375449B1 (en) 2007-08-10 2013-02-12 Fortinet, Inc. Circuits and methods for operating a virus co-processor
US8079084B1 (en) 2007-08-10 2011-12-13 Fortinet, Inc. Virus co-processor instructions and methods for using such
US8286246B2 (en) * 2007-08-10 2012-10-09 Fortinet, Inc. Circuits and methods for efficient data transfer in a virus co-processing system
US7392544B1 (en) * 2007-12-18 2008-06-24 Kaspersky Lab, Zao Method and system for anti-malware scanning with variable scan settings
US8806619B2 (en) * 2007-12-20 2014-08-12 Cybernet Systems Corporation System and methods for detecting software vulnerabilities and malicious code
US8434151B1 (en) * 2008-01-04 2013-04-30 International Business Machines Corporation Detecting malicious software
US8191147B1 (en) * 2008-04-24 2012-05-29 Symantec Corporation Method for malware removal based on network signatures and file system artifacts
US8904536B2 (en) * 2008-08-28 2014-12-02 AVG Netherlands B.V. Heuristic method of code analysis
US8850571B2 (en) 2008-11-03 2014-09-30 Fireeye, Inc. Systems and methods for detecting malicious network content
US8997219B2 (en) 2008-11-03 2015-03-31 Fireeye, Inc. Systems and methods for detecting malicious PDF network content
US8621625B1 (en) * 2008-12-23 2013-12-31 Symantec Corporation Methods and systems for detecting infected files
US8291497B1 (en) * 2009-03-20 2012-10-16 Symantec Corporation Systems and methods for byte-level context diversity-based automatic malware signature generation
US7603713B1 (en) * 2009-03-30 2009-10-13 Kaspersky Lab, Zao Method for accelerating hardware emulator used for malware detection and analysis
US11489857B2 (en) 2009-04-21 2022-11-01 Webroot Inc. System and method for developing a risk profile for an internet resource
US20110041179A1 (en) * 2009-08-11 2011-02-17 F-Secure Oyj Malware detection
US8832829B2 (en) 2009-09-30 2014-09-09 Fireeye, Inc. Network-based binary file extraction and analysis for malware detection
US8214903B2 (en) 2009-10-02 2012-07-03 International Business Machines Corporation Analysis of scripts
US8356354B2 (en) 2009-11-23 2013-01-15 Kaspersky Lab, Zao Silent-mode signature testing in anti-malware processing
US9202048B2 (en) 2010-01-27 2015-12-01 Mcafee, Inc. Method and system for discrete stateful behavioral analysis
US20110219449A1 (en) * 2010-03-04 2011-09-08 St Neitzel Michael Malware detection method, system and computer program product
US9588829B2 (en) * 2010-03-04 2017-03-07 F-Secure Oyj Security method and apparatus directed at removable storage devices
US9098333B1 (en) 2010-05-07 2015-08-04 Ziften Technologies, Inc. Monitoring computer process resource usage
US9202049B1 (en) 2010-06-21 2015-12-01 Pulse Secure, Llc Detecting malware on mobile devices
US8533831B2 (en) 2010-07-02 2013-09-10 Symantec Corporation Systems and methods for alternating malware classifiers in an attempt to frustrate brute-force malware testing
CN103078864B (zh) 2010-08-18 2015-11-25 北京奇虎科技有限公司 一种基于云安全的主动防御文件修复方法
AU2011293160B2 (en) * 2010-08-26 2015-04-09 Verisign, Inc. Method and system for automatic detection and analysis of malware
US20120150887A1 (en) * 2010-12-08 2012-06-14 Clark Christopher F Pattern matching
RU2454714C1 (ru) * 2010-12-30 2012-06-27 Закрытое акционерное общество "Лаборатория Касперского" Система и способ повышения эффективности обнаружения неизвестных вредоносных объектов
US10574630B2 (en) 2011-02-15 2020-02-25 Webroot Inc. Methods and apparatus for malware threat research
EP2492833A1 (de) * 2011-02-28 2012-08-29 British Telecommunications Public Limited Company Verfahren und Vorrichtung zur Erkennung schädlicher Software
US9032526B2 (en) 2011-05-12 2015-05-12 Microsoft Technology Licensing, Llc Emulating mixed-code programs using a virtual machine instance
CN103617069B (zh) * 2011-09-14 2017-07-04 北京奇虎科技有限公司 恶意程序检测方法和虚拟机
US9495541B2 (en) 2011-09-15 2016-11-15 The Trustees Of Columbia University In The City Of New York Detecting return-oriented programming payloads by evaluating data for a gadget address space address and determining whether operations associated with instructions beginning at the address indicate a return-oriented programming payload
US20130117006A1 (en) * 2011-11-07 2013-05-09 Microsoft Corporation Simulated boot process to detect introduction of unauthorized information
WO2013095568A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Systems and methods for providing anti-malware protection and malware forensics on storage devices
WO2013095565A1 (en) * 2011-12-22 2013-06-27 Intel Corporation Systems and methods for providing anti-malware protection on storage devices
WO2013095573A1 (en) 2011-12-22 2013-06-27 Intel Corporation Activation and monetization of features built into storage subsystems using a trusted connect service back end infrastructure
US8726338B2 (en) 2012-02-02 2014-05-13 Juniper Networks, Inc. Dynamic threat protection in mobile networks
RU2491615C1 (ru) * 2012-02-24 2013-08-27 Закрытое акционерное общество "Лаборатория Касперского" Система и способ формирования записей для обнаружения программного обеспечения
US9519782B2 (en) 2012-02-24 2016-12-13 Fireeye, Inc. Detecting malicious network content
US9754105B1 (en) 2012-09-25 2017-09-05 Malwarebytes Corporation Preventing the successful exploitation of software application vulnerability for malicious purposes
RU2514142C1 (ru) 2012-12-25 2014-04-27 Закрытое акционерное общество "Лаборатория Касперского" Способ повышения эффективности работы аппаратного ускорения эмуляции приложений
US10572665B2 (en) 2012-12-28 2020-02-25 Fireeye, Inc. System and method to create a number of breakpoints in a virtual machine via virtual machine trapping events
US9525700B1 (en) 2013-01-25 2016-12-20 REMTCS Inc. System and method for detecting malicious activity and harmful hardware/software modifications to a vehicle
WO2014116888A1 (en) * 2013-01-25 2014-07-31 REMTCS Inc. Network security system, method, and apparatus
CN105144187B (zh) * 2013-02-10 2019-01-22 配拨股份有限公司 提供预测的安全产品以及评分现有安全产品的方法与产品
US9824209B1 (en) 2013-02-23 2017-11-21 Fireeye, Inc. Framework for efficient security coverage of mobile software applications that is usable to harden in the field code
US8990944B1 (en) 2013-02-23 2015-03-24 Fireeye, Inc. Systems and methods for automatically detecting backdoors
US9367681B1 (en) 2013-02-23 2016-06-14 Fireeye, Inc. Framework for efficient security coverage of mobile software applications using symbolic execution to reach regions of interest within an application
US9159035B1 (en) 2013-02-23 2015-10-13 Fireeye, Inc. Framework for computer application analysis of sensitive information tracking
US9009823B1 (en) 2013-02-23 2015-04-14 Fireeye, Inc. Framework for efficient security coverage of mobile software applications installed on mobile devices
US9195829B1 (en) 2013-02-23 2015-11-24 Fireeye, Inc. User interface with real-time visual playback along with synchronous textual analysis log display and event/time index for anomalous behavior detection in applications
US9009822B1 (en) 2013-02-23 2015-04-14 Fireeye, Inc. Framework for multi-phase analysis of mobile applications
US9176843B1 (en) 2013-02-23 2015-11-03 Fireeye, Inc. Framework for efficient security coverage of mobile software applications
US9565202B1 (en) 2013-03-13 2017-02-07 Fireeye, Inc. System and method for detecting exfiltration content
US9104867B1 (en) 2013-03-13 2015-08-11 Fireeye, Inc. Malicious content analysis using simulated user interaction without user involvement
US9355247B1 (en) 2013-03-13 2016-05-31 Fireeye, Inc. File extraction from memory dump for malicious content analysis
US9626509B1 (en) 2013-03-13 2017-04-18 Fireeye, Inc. Malicious content analysis with multi-version application support within single operating environment
US9430646B1 (en) 2013-03-14 2016-08-30 Fireeye, Inc. Distributed systems and methods for automatically detecting unknown bots and botnets
US9311479B1 (en) 2013-03-14 2016-04-12 Fireeye, Inc. Correlation and consolidation of analytic data for holistic view of a malware attack
US10713358B2 (en) 2013-03-15 2020-07-14 Fireeye, Inc. System and method to extract and utilize disassembly features to classify software intent
WO2014145805A1 (en) 2013-03-15 2014-09-18 Mandiant, Llc System and method employing structured intelligence to verify and contain threats at endpoints
US9251343B1 (en) 2013-03-15 2016-02-02 Fireeye, Inc. Detecting bootkits resident on compromised computers
US9495180B2 (en) 2013-05-10 2016-11-15 Fireeye, Inc. Optimized resource allocation for virtual machines within a malware content detection system
US9635039B1 (en) 2013-05-13 2017-04-25 Fireeye, Inc. Classifying sets of malicious indicators for detecting command and control communications associated with malware
US9536091B2 (en) 2013-06-24 2017-01-03 Fireeye, Inc. System and method for detecting time-bomb malware
US10133863B2 (en) 2013-06-24 2018-11-20 Fireeye, Inc. Zero-day discovery system
US9300686B2 (en) 2013-06-28 2016-03-29 Fireeye, Inc. System and method for detecting malicious links in electronic messages
US9888016B1 (en) 2013-06-28 2018-02-06 Fireeye, Inc. System and method for detecting phishing using password prediction
US10192054B2 (en) * 2013-09-13 2019-01-29 Intel Corporation Automatic pairing of IO devices with hardware secure elements
US9628507B2 (en) 2013-09-30 2017-04-18 Fireeye, Inc. Advanced persistent threat (APT) detection center
US9736179B2 (en) 2013-09-30 2017-08-15 Fireeye, Inc. System, apparatus and method for using malware analysis results to drive adaptive instrumentation of virtual machines to improve exploit detection
US10089461B1 (en) 2013-09-30 2018-10-02 Fireeye, Inc. Page replacement code injection
US9294501B2 (en) 2013-09-30 2016-03-22 Fireeye, Inc. Fuzzy hash of behavioral results
US10192052B1 (en) 2013-09-30 2019-01-29 Fireeye, Inc. System, apparatus and method for classifying a file as malicious using static scanning
US9690936B1 (en) * 2013-09-30 2017-06-27 Fireeye, Inc. Multistage system and method for analyzing obfuscated content for malware
US9171160B2 (en) 2013-09-30 2015-10-27 Fireeye, Inc. Dynamically adaptive framework and method for classifying malware using intelligent static, emulation, and dynamic analyses
US10515214B1 (en) 2013-09-30 2019-12-24 Fireeye, Inc. System and method for classifying malware within content created during analysis of a specimen
US10075460B2 (en) 2013-10-16 2018-09-11 REMTCS Inc. Power grid universal detection and countermeasure overlay intelligence ultra-low latency hypervisor
US9921978B1 (en) 2013-11-08 2018-03-20 Fireeye, Inc. System and method for enhanced security of storage devices
US9189627B1 (en) 2013-11-21 2015-11-17 Fireeye, Inc. System, apparatus and method for conducting on-the-fly decryption of encrypted objects for malware detection
US9756074B2 (en) 2013-12-26 2017-09-05 Fireeye, Inc. System and method for IPS and VM-based detection of suspicious objects
US9747446B1 (en) 2013-12-26 2017-08-29 Fireeye, Inc. System and method for run-time object classification
US9292686B2 (en) 2014-01-16 2016-03-22 Fireeye, Inc. Micro-virtualization architecture for threat-aware microvisor deployment in a node of a network environment
US9262635B2 (en) 2014-02-05 2016-02-16 Fireeye, Inc. Detection efficacy of virtual machine-based analysis with application specific events
US9241010B1 (en) 2014-03-20 2016-01-19 Fireeye, Inc. System and method for network behavior detection
US10242185B1 (en) 2014-03-21 2019-03-26 Fireeye, Inc. Dynamic guest image creation and rollback
US9591015B1 (en) 2014-03-28 2017-03-07 Fireeye, Inc. System and method for offloading packet processing and static analysis operations
US9223972B1 (en) 2014-03-31 2015-12-29 Fireeye, Inc. Dynamically remote tuning of a malware content detection system
US9432389B1 (en) 2014-03-31 2016-08-30 Fireeye, Inc. System, apparatus and method for detecting a malicious attack based on static analysis of a multi-flow object
US9973531B1 (en) 2014-06-06 2018-05-15 Fireeye, Inc. Shellcode detection
US9594912B1 (en) 2014-06-06 2017-03-14 Fireeye, Inc. Return-oriented programming detection
US9438623B1 (en) 2014-06-06 2016-09-06 Fireeye, Inc. Computer exploit detection using heap spray pattern matching
US10084813B2 (en) 2014-06-24 2018-09-25 Fireeye, Inc. Intrusion prevention and remedy system
US10805340B1 (en) 2014-06-26 2020-10-13 Fireeye, Inc. Infection vector and malware tracking with an interactive user display
US9398028B1 (en) 2014-06-26 2016-07-19 Fireeye, Inc. System, device and method for detecting a malicious attack based on communcations between remotely hosted virtual machines and malicious web servers
US10002252B2 (en) 2014-07-01 2018-06-19 Fireeye, Inc. Verification of trusted threat-aware microvisor
US9363280B1 (en) 2014-08-22 2016-06-07 Fireeye, Inc. System and method of detecting delivery of malware using cross-customer data
US10671726B1 (en) 2014-09-22 2020-06-02 Fireeye Inc. System and method for malware analysis using thread-level event monitoring
US9773112B1 (en) 2014-09-29 2017-09-26 Fireeye, Inc. Exploit detection of malware and malware families
US10027689B1 (en) 2014-09-29 2018-07-17 Fireeye, Inc. Interactive infection visualization for improved exploit detection and signature generation for malware and malware families
US9860208B1 (en) 2014-09-30 2018-01-02 Palo Alto Networks, Inc. Bridging a virtual clone of a target device in a honey network to a suspicious device in an enterprise network
US9495188B1 (en) 2014-09-30 2016-11-15 Palo Alto Networks, Inc. Synchronizing a honey network configuration to reflect a target network environment
US10044675B1 (en) 2014-09-30 2018-08-07 Palo Alto Networks, Inc. Integrating a honey network with a target network to counter IP and peer-checking evasion techniques
US9716727B1 (en) 2014-09-30 2017-07-25 Palo Alto Networks, Inc. Generating a honey network configuration to emulate a target network environment
US9882929B1 (en) 2014-09-30 2018-01-30 Palo Alto Networks, Inc. Dynamic selection and generation of a virtual clone for detonation of suspicious content within a honey network
US9690933B1 (en) 2014-12-22 2017-06-27 Fireeye, Inc. Framework for classifying an object as malicious with machine learning for deploying updated predictive models
US10075455B2 (en) 2014-12-26 2018-09-11 Fireeye, Inc. Zero-day rotating guest image profile
US9934376B1 (en) 2014-12-29 2018-04-03 Fireeye, Inc. Malware detection appliance architecture
US9838417B1 (en) 2014-12-30 2017-12-05 Fireeye, Inc. Intelligent context aware user interaction for malware detection
US9690606B1 (en) 2015-03-25 2017-06-27 Fireeye, Inc. Selective system call monitoring
US10148693B2 (en) 2015-03-25 2018-12-04 Fireeye, Inc. Exploit detection system
US9438613B1 (en) 2015-03-30 2016-09-06 Fireeye, Inc. Dynamic content activation for automated analysis of embedded objects
US10474813B1 (en) 2015-03-31 2019-11-12 Fireeye, Inc. Code injection technique for remediation at an endpoint of a network
US10417031B2 (en) 2015-03-31 2019-09-17 Fireeye, Inc. Selective virtualization for security threat detection
US9483644B1 (en) 2015-03-31 2016-11-01 Fireeye, Inc. Methods for detecting file altering malware in VM based analysis
US9654485B1 (en) 2015-04-13 2017-05-16 Fireeye, Inc. Analytics-based security monitoring system and method
US9594904B1 (en) 2015-04-23 2017-03-14 Fireeye, Inc. Detecting malware based on reflection
US10454950B1 (en) 2015-06-30 2019-10-22 Fireeye, Inc. Centralized aggregation technique for detecting lateral movement of stealthy cyber-attacks
US11113086B1 (en) 2015-06-30 2021-09-07 Fireeye, Inc. Virtual system and method for securing external network connectivity
US10726127B1 (en) 2015-06-30 2020-07-28 Fireeye, Inc. System and method for protecting a software component running in a virtual machine through virtual interrupts by the virtualization layer
US10642753B1 (en) 2015-06-30 2020-05-05 Fireeye, Inc. System and method for protecting a software component running in virtual machine using a virtualization layer
US10715542B1 (en) 2015-08-14 2020-07-14 Fireeye, Inc. Mobile application risk analysis
US10176321B2 (en) 2015-09-22 2019-01-08 Fireeye, Inc. Leveraging behavior-based rules for malware family classification
US10033747B1 (en) 2015-09-29 2018-07-24 Fireeye, Inc. System and method for detecting interpreter-based exploit attacks
US9825976B1 (en) 2015-09-30 2017-11-21 Fireeye, Inc. Detection and classification of exploit kits
US10601865B1 (en) 2015-09-30 2020-03-24 Fireeye, Inc. Detection of credential spearphishing attacks using email analysis
US10706149B1 (en) 2015-09-30 2020-07-07 Fireeye, Inc. Detecting delayed activation malware using a primary controller and plural time controllers
US10817606B1 (en) 2015-09-30 2020-10-27 Fireeye, Inc. Detecting delayed activation malware using a run-time monitoring agent and time-dilation logic
US9825989B1 (en) 2015-09-30 2017-11-21 Fireeye, Inc. Cyber attack early warning system
US10210329B1 (en) 2015-09-30 2019-02-19 Fireeye, Inc. Method to detect application execution hijacking using memory protection
US10284575B2 (en) 2015-11-10 2019-05-07 Fireeye, Inc. Launcher for setting analysis environment variations for malware detection
US10447728B1 (en) 2015-12-10 2019-10-15 Fireeye, Inc. Technique for protecting guest processes using a layered virtualization architecture
US10846117B1 (en) 2015-12-10 2020-11-24 Fireeye, Inc. Technique for establishing secure communication between host and guest processes of a virtualization architecture
US10108446B1 (en) 2015-12-11 2018-10-23 Fireeye, Inc. Late load technique for deploying a virtualization layer underneath a running operating system
US10050998B1 (en) 2015-12-30 2018-08-14 Fireeye, Inc. Malicious message analysis system
US10133866B1 (en) 2015-12-30 2018-11-20 Fireeye, Inc. System and method for triggering analysis of an object for malware in response to modification of that object
US10565378B1 (en) 2015-12-30 2020-02-18 Fireeye, Inc. Exploit of privilege detection framework
US10621338B1 (en) 2015-12-30 2020-04-14 Fireeye, Inc. Method to detect forgery and exploits using last branch recording registers
US10581874B1 (en) 2015-12-31 2020-03-03 Fireeye, Inc. Malware detection system with contextual analysis
US9824216B1 (en) 2015-12-31 2017-11-21 Fireeye, Inc. Susceptible environment detection system
US11552986B1 (en) 2015-12-31 2023-01-10 Fireeye Security Holdings Us Llc Cyber-security framework for application of virtual features
US10671721B1 (en) 2016-03-25 2020-06-02 Fireeye, Inc. Timeout management services
US10785255B1 (en) 2016-03-25 2020-09-22 Fireeye, Inc. Cluster configuration within a scalable malware detection system
US10601863B1 (en) 2016-03-25 2020-03-24 Fireeye, Inc. System and method for managing sensor enrollment
US10476906B1 (en) 2016-03-25 2019-11-12 Fireeye, Inc. System and method for managing formation and modification of a cluster within a malware detection system
US10826933B1 (en) 2016-03-31 2020-11-03 Fireeye, Inc. Technique for verifying exploit/malware at malware detection appliance through correlation with endpoints
US10893059B1 (en) 2016-03-31 2021-01-12 Fireeye, Inc. Verification and enhancement using detection systems located at the network periphery and endpoint devices
US10169585B1 (en) 2016-06-22 2019-01-01 Fireeye, Inc. System and methods for advanced malware detection through placement of transition events
US10462173B1 (en) 2016-06-30 2019-10-29 Fireeye, Inc. Malware detection verification and enhancement by coordinating endpoint and malware detection systems
US10592678B1 (en) 2016-09-09 2020-03-17 Fireeye, Inc. Secure communications between peers using a verified virtual trusted platform module
US10491627B1 (en) 2016-09-29 2019-11-26 Fireeye, Inc. Advanced malware detection using similarity analysis
US10795991B1 (en) 2016-11-08 2020-10-06 Fireeye, Inc. Enterprise search
US10587647B1 (en) 2016-11-22 2020-03-10 Fireeye, Inc. Technique for malware detection capability comparison of network security devices
US10552610B1 (en) 2016-12-22 2020-02-04 Fireeye, Inc. Adaptive virtual machine snapshot update framework for malware behavioral analysis
US10581879B1 (en) 2016-12-22 2020-03-03 Fireeye, Inc. Enhanced malware detection for generated objects
US10523609B1 (en) 2016-12-27 2019-12-31 Fireeye, Inc. Multi-vector malware detection and analysis
US10904286B1 (en) 2017-03-24 2021-01-26 Fireeye, Inc. Detection of phishing attacks using similarity analysis
US10848397B1 (en) 2017-03-30 2020-11-24 Fireeye, Inc. System and method for enforcing compliance with subscription requirements for cyber-attack detection service
US10902119B1 (en) 2017-03-30 2021-01-26 Fireeye, Inc. Data extraction system for malware analysis
US10791138B1 (en) 2017-03-30 2020-09-29 Fireeye, Inc. Subscription-based malware detection
US10798112B2 (en) 2017-03-30 2020-10-06 Fireeye, Inc. Attribute-controlled malware detection
US10855700B1 (en) 2017-06-29 2020-12-01 Fireeye, Inc. Post-intrusion detection of cyber-attacks during lateral movement within networks
US10601848B1 (en) 2017-06-29 2020-03-24 Fireeye, Inc. Cyber-security system and method for weak indicator detection and correlation to generate strong indicators
US10503904B1 (en) 2017-06-29 2019-12-10 Fireeye, Inc. Ransomware detection and mitigation
US10893068B1 (en) 2017-06-30 2021-01-12 Fireeye, Inc. Ransomware file modification prevention technique
US10747872B1 (en) 2017-09-27 2020-08-18 Fireeye, Inc. System and method for preventing malware evasion
US10805346B2 (en) 2017-10-01 2020-10-13 Fireeye, Inc. Phishing attack detection
US11108809B2 (en) 2017-10-27 2021-08-31 Fireeye, Inc. System and method for analyzing binary code for malware classification using artificial neural network techniques
US11240275B1 (en) 2017-12-28 2022-02-01 Fireeye Security Holdings Us Llc Platform and method for performing cybersecurity analyses employing an intelligence hub with a modular architecture
US11271955B2 (en) 2017-12-28 2022-03-08 Fireeye Security Holdings Us Llc Platform and method for retroactive reclassification employing a cybersecurity-based global data store
US11005860B1 (en) 2017-12-28 2021-05-11 Fireeye, Inc. Method and system for efficient cybersecurity analysis of endpoint events
US10826931B1 (en) 2018-03-29 2020-11-03 Fireeye, Inc. System and method for predicting and mitigating cybersecurity system misconfigurations
US11558401B1 (en) 2018-03-30 2023-01-17 Fireeye Security Holdings Us Llc Multi-vector malware detection data sharing system for improved detection
US10956477B1 (en) 2018-03-30 2021-03-23 Fireeye, Inc. System and method for detecting malicious scripts through natural language processing modeling
US11003773B1 (en) 2018-03-30 2021-05-11 Fireeye, Inc. System and method for automatically generating malware detection rule recommendations
US11314859B1 (en) 2018-06-27 2022-04-26 FireEye Security Holdings, Inc. Cyber-security system and method for detecting escalation of privileges within an access token
US11075930B1 (en) 2018-06-27 2021-07-27 Fireeye, Inc. System and method for detecting repetitive cybersecurity attacks constituting an email campaign
US11228491B1 (en) 2018-06-28 2022-01-18 Fireeye Security Holdings Us Llc System and method for distributed cluster configuration monitoring and management
US11316900B1 (en) 2018-06-29 2022-04-26 FireEye Security Holdings Inc. System and method for automatically prioritizing rules for cyber-threat detection and mitigation
US11182473B1 (en) 2018-09-13 2021-11-23 Fireeye Security Holdings Us Llc System and method for mitigating cyberattacks against processor operability by a guest process
US11763004B1 (en) 2018-09-27 2023-09-19 Fireeye Security Holdings Us Llc System and method for bootkit detection
US12074887B1 (en) 2018-12-21 2024-08-27 Musarubra Us Llc System and method for selectively processing content after identification and removal of malicious content
US11368475B1 (en) 2018-12-21 2022-06-21 Fireeye Security Holdings Us Llc System and method for scanning remote services to locate stored objects with malware
US11258806B1 (en) 2019-06-24 2022-02-22 Mandiant, Inc. System and method for automatically associating cybersecurity intelligence to cyberthreat actors
US11556640B1 (en) 2019-06-27 2023-01-17 Mandiant, Inc. Systems and methods for automated cybersecurity analysis of extracted binary string sets
US11392700B1 (en) 2019-06-28 2022-07-19 Fireeye Security Holdings Us Llc System and method for supporting cross-platform data verification
US11886585B1 (en) 2019-09-27 2024-01-30 Musarubra Us Llc System and method for identifying and mitigating cyberattacks through malicious position-independent code execution
US11637862B1 (en) 2019-09-30 2023-04-25 Mandiant, Inc. System and method for surfacing cyber-security threats with a self-learning recommendation engine
US11265346B2 (en) 2019-12-19 2022-03-01 Palo Alto Networks, Inc. Large scale high-interactive honeypot farm
US11271907B2 (en) 2019-12-19 2022-03-08 Palo Alto Networks, Inc. Smart proxy for a large scale high-interaction honeypot farm
US11086768B1 (en) 2020-02-20 2021-08-10 International Business Machines Corporation Identifying false positives in test case failures using combinatorics
US11176026B2 (en) 2020-02-20 2021-11-16 International Business Machines Corporation Assignment of test case priorities based on combinatorial test design model analysis
US11307975B2 (en) 2020-02-20 2022-04-19 International Business Machines Corporation Machine code analysis for identifying software defects
US11663113B2 (en) 2020-02-20 2023-05-30 International Business Machines Corporation Real time fault localization using combinatorial test design techniques and test case priority selection
US11886584B2 (en) * 2021-05-28 2024-01-30 AO Kaspersky Lab System and method for detecting potentially malicious changes in applications

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5398196A (en) * 1993-07-29 1995-03-14 Chambers; David A. Method and apparatus for detection of computer viruses
ATE183592T1 (de) * 1994-06-01 1999-09-15 Quantum Leap Innovations Inc Computervirenfalle
US5485575A (en) * 1994-11-21 1996-01-16 International Business Machines Corporation Automatic analysis of a computer virus structure and means of attachment to its hosts
US5826013A (en) * 1995-09-28 1998-10-20 Symantec Corporation Polymorphic virus detection module
US5765030A (en) * 1996-07-19 1998-06-09 Symantec Corp Processor emulator module having a variable pre-fetch queue size for program execution
US5854916A (en) * 1995-09-28 1998-12-29 Symantec Corporation State-based cache for antivirus software
US5696822A (en) * 1995-09-28 1997-12-09 Symantec Corporation Polymorphic virus detection module

Also Published As

Publication number Publication date
CA2304163C (en) 2007-11-06
WO1999015966A1 (en) 1999-04-01
US6357008B1 (en) 2002-03-12
EP1018077A1 (de) 2000-07-12
DE69802831D1 (de) 2002-01-17
CA2304163A1 (en) 1999-04-01
EP1018077B1 (de) 2001-12-05

Similar Documents

Publication Publication Date Title
DE69802831T2 (de) Dynamisches heuristisches verfahren zur erkennung von computerviren
DE69804760T2 (de) Verfahren und vorrichtung zur erkennung polymorpher viren
DE69427252T2 (de) Verfahren und Gerät zur Erkennung von Computerviren
DE69805406T2 (de) Fehlerverwaltung in emulationbasierter antivirenabtastung
DE69712635T2 (de) Zustandsbasiertes cache für antivirensoftware
DE69609980T2 (de) Verfahren und system zur erkennung von polymorphen viren
DE60105611T2 (de) Erkennung von viren durch histogramme
DE69523029T2 (de) Bytecodeprograminterpreter, Verfahren und Anordnung mit Vorprüfung von Datentyprestriktionen
EP1522163B1 (de) Erkennung eines metamorphen computervirus
DE69803199T2 (de) Erkennung und entfernung von makroviren
US7657419B2 (en) Analytical virtual machine
US7146305B2 (en) Analytical virtual machine
US6952776B1 (en) Method and apparatus for increasing virus detection speed using a database
DE60303753T2 (de) Selektives Erkennen von böswilligem Rechnercode
US7370360B2 (en) Computer immune system and method for detecting unwanted code in a P-code or partially compiled native-code program executing within a virtual machine
US7103913B2 (en) Method and apparatus for determination of the non-replicative behavior of a malicious program
DE69812545T2 (de) Automatische Mustererzeugung von Makroviren
DE69610905T2 (de) Verfahren zum schutz von ausführbaren softwareprogrammen gegen infektion durch softwareviren
EP1253501A2 (de) Verfahren und System zum Diagnostizieren und Entfernen von bekannten und unbekannten Computerviren, Speichermedium und Übertragungsmedium dafür
EP1316873A2 (de) Vorrichtung und Verfahren zum Identifizieren von infizierten Programmbefehlen
US20020078368A1 (en) Detection of polymorphic virus code using dataflow analysis
EP1967954A1 (de) Verfahren zum löschen eines virusprogramms und verfahren zum zurückerhalten der durch den virus zerstörten daten
DE10225664A1 (de) System und Verfahren zum Prüfen von Systemabrufereignissen mit Systemabrufumhüllungen
JP2005032182A (ja) プログラム、攻撃コード抽出装置およびその方法
DE4225345A1 (de) Verfahren zum Schutz von MS-DOS-Rechnern gegen Sabotageprogramme oder "Viren"

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: ANWALTSKANZLEI GULDE HENGELHAUPT ZIEBIG & SCHNEIDE