DE69802831T2 - Dynamisches heuristisches verfahren zur erkennung von computerviren - Google Patents
Dynamisches heuristisches verfahren zur erkennung von computervirenInfo
- 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
Links
- 241000700605 Viruses Species 0.000 title claims description 177
- 238000000034 method Methods 0.000 title claims description 158
- 238000011156 evaluation Methods 0.000 claims description 30
- 238000011835 investigation Methods 0.000 claims description 27
- 238000004590 computer program Methods 0.000 claims description 3
- 238000007639 printing Methods 0.000 claims description 3
- 230000006870 function Effects 0.000 claims description 2
- 230000000977 initiatory effect Effects 0.000 claims 1
- 230000002155 anti-virotic effect Effects 0.000 description 37
- 230000006399 behavior Effects 0.000 description 16
- 238000001514 detection method Methods 0.000 description 15
- 208000015181 infectious disease Diseases 0.000 description 14
- 238000012986 modification Methods 0.000 description 11
- 230000004048 modification Effects 0.000 description 11
- 230000003068 static effect Effects 0.000 description 11
- 230000008569 process Effects 0.000 description 9
- 230000002458 infectious effect Effects 0.000 description 7
- 230000008859 change Effects 0.000 description 6
- 238000010586 diagram Methods 0.000 description 6
- 238000013459 approach Methods 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 238000004891 communication Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000009385 viral infection Effects 0.000 description 2
- 230000001154 acute effect Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000003278 mimic effect Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 238000011144 upstream manufacturing Methods 0.000 description 1
- 238000002255 vaccination Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic 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
- Diese Erfindung betrifft Computer-Antivirensoftware. Insbesondere betrifft diese Erfindung Software zur Erkennung unbekannter Computerviren, wobei Emulation und künstliche Intelligenz verwendet wird.
- 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.
- 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:
- 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:
- 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:
- 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:
- 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.
- 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.
- 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.
- 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.
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)
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)
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 |
-
1997
- 1997-09-23 US US08/935,577 patent/US6357008B1/en not_active Expired - Lifetime
-
1998
- 1998-08-25 WO PCT/US1998/017609 patent/WO1999015966A1/en active IP Right Grant
- 1998-08-25 EP EP98944528A patent/EP1018077B1/de not_active Expired - Lifetime
- 1998-08-25 CA CA002304163A patent/CA2304163C/en not_active Expired - Fee Related
- 1998-08-25 DE DE69802831T patent/DE69802831T2/de not_active Expired - Lifetime
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 |