DE69712635T2 - Zustandsbasiertes cache für antivirensoftware - Google Patents

Zustandsbasiertes cache für antivirensoftware

Info

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

Links

Classifications

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Debugging And Monitoring (AREA)

Description

  • Die vorliegende Erfindung betrifft das Gebiet der Antivirensoftware auf Emulatorbasis, wobei eine Programmdatei durch Ausführen in einem CPU-Emulator auf Softwarebasis auf das Vorhandensein von Computerviren untersucht wird.
  • Viele einfache Computerviren bewirken das Kopieren von exakten Duplikaten ihrer selbst in jede ausführbare Programmdatei, die sie infizieren. Wird ein infiziertes Programm ausgeführt, übernimmt der Virus die Kontrolle über den Computer und versucht, weitere Dateien zu infizieren. Wenn er eine ausfuhr- und infizierbare Zieldatei findet, kopiert er sich selbst Byte für Byte in die ausführbare Zieldatei. Da diese Art von Virus bei jeder Infektion einer neuen Datei identische Kopien seiner selbst repliziert, kann der Virus leicht dadurch erfaßt werden, daß in den Dateien nach einer bestimmten Folge von Bytes (d. h. einer "Signatur") gesucht wird, die aus dem Virus erhalten wird.
  • Einfache (nicht-polymorphe) kodierte Viren weisen eine Dekodierroutine (auch als Dekodierschleife bekannt) und einen verschlüsselten Viruskörper auf. Wenn eine mit einem einfachen Kodiervirus infizierte Programmdatei ausgeführt wird, übernimmt die Dekodierroutine die Kontrolle über den Computer und entschlüsselt den kodierten Viruskörper. Die Dekodierroutine überträgt dann die Kontrolle auf den entschlüsselten Viruskörper, der in der Lage ist, den Virus zu verbreiten. Der Virus wird dadurch verbreitet, daß die identische Dekodierroutine und der verschlüsselte Viruskörper in die ausführbare Zieldatei kopiert wird. Auch wenn der Viruskörper verschlüsselt und dadurch nicht sichtbar ist, können diese Viren durch Suchen nach einer Signatur für die sich nicht verändernde Dekodierroutine erfaßt werden.
  • Polymorphe verschlüsselte Viren ("polymorphe Viren") umfassen eine Dekodierroutine und einen verschlüsselten Viruskörper, der einen statischen Viruskörper und einen Maschinencodegenerator umfaßt, der oft als "Mutationsmaschine" bezeichnet wird. Anfänglich ist die Arbeitsweise eines polymorphen Virus ähnlich der Arbeitsweise eines einfachen (nicht-polymorphen) verschlüsselten Virus. Wird eine mit einem polymorphen Virus infizierte Programmdatei ausgeführt, übernimmt die Dekodierroutine die Kontrolle über den Computer und dekodiert den verschlüsselten Viruskörper. Die Dekodierroutine überträgt dann die Kontrolle über den Computer auf den dekodierten Viruskörper, der in der Lage ist, den Virus zu verbreiten. Der Virus wird dabei jedoch dadurch verbreitet, daß zusammen mit dem verschlüsselten Viruskörper eine neu erzeugte Dekodierroutine in die ausführbare Zieldatei einkopiert wird. Die neu erzeugte Dekodierroutine wird durch die Mutationsmaschine immer wieder variiert. Bei vielen polymorphen Viren erzeugt die Mutationsmaschine Dekodierroutinen, die zwar für alle infizierten Dateien funktionell gleich sind, jedoch unterschiedliche Sequenzen von Funktionsanweisungen verwenden. Die üblichen Mutationsstrategien der Mutationsmaschinen umfassen das Umordnen von Anweisungen, das Ersetzen von Befehlen durch gleichwertige Anweisungen oder gleichwertige Folgen von Anweisungen und das Einfügen von Anweisungen, die sich nicht auf die Funktion auswirken. Wegen dieser vielfältigen Mutationsmöglichkeiten können diese Viren nicht durch einfaches Suchen nach einer Signatur der Dekodierroutine erfaßt werden, da jede Dekodierroutine eine andere Signatur haben kann.
  • Um die wachsende Zahl von polymorphen Viren zu erfassen, beginnen die Antivirus-Softwarefirmen damit, die emulatorbasierte Antivirentechnologie anzuwenden, die auch als Generische Dekodiertechnologie (GD) bekannt ist. Ein GD-Scanner arbeitet auf die folgende Weise. Vor dem Ausführen eines Programms, das infiziert sein könnte, auf der tatsächlichen CPU (Zentraleinheit) des Computers liest der GD-Scanner das Programm in einen CPU-Emulator auf Softwarebasis, der als simulierter virtueller Computer dient. Das Programm kann sich in diesem virtuellen Computer frei ausführen. Wenn das Programm tatsächlich einen polymorphen verschlüsselten Virus enthält, kann die Dekodierroutine dabei den Viruskörper entschlüsseln. Der GD-Scanner kann dann durch Suchen nach einer Signatur für den dekodierten Viruskörper im virtuellen Speicher des virtuellen Computers den Virus erfassen.
  • Ein Problem, das bei der Ausführung der GD-Technologie auftritt, ist eine Verringerung der Anzahl von Anweisungen eines Programms, die simuliert werden müssen, bis die Feststellung des nicht infizierten Zustands zuverlässig erfolgen kann. Im allgemeinen wenden GD-Scanner einen Satz von Regeln an, um festzustellen, wie lange jedes Programm zu simulieren ist. Wenn zum Beispiel in der anfänglichen Phase der Emulation das Programm eine Dekodierroutine zu enthalten scheint, wird der GD-Scanner das Programm noch länger simulieren, damit der Virus eine ausreichende Anzahl von Anweisungen ausführen kann, um sich selbst zu dekodieren. Umgekehrt bricht der GD-Scanner die Emulation fast sofort ab, wenn während der anfänglichen Phase der Emulation starke Hinweise dafür vorhanden sind, daß das Programm ein nicht infiziertes (ein "sauberes") Programm ist.
  • Unglücklicherweise enthalten nicht infizierte Programme manchmal Anweisungen in der Maschinensprache, die wie Dekodierschleifen aussehen. Außerdem enthalten Datendateien manchmal auch binäre Daten, die wie Dekodierschleifen aussehen können, und in manchen Betriebssystemen, etwa MS-DOS, können Datendateien generell nicht von ausführbaren Dateien unterschieden werden. Wenn der GD-Scanner in einem Programm (oder in einer Datendatei, auf die von einem Programm zugegriffen wird) eine mögliche Dekodierschleife erfaßt, dann sollte die Simulation des Programms (oder der Datendatei) fortgeführt werden, bis zuverlässig feststeht, daß das Programm nicht infiziert ist. Diese Emulation kann viele Sekunden dauern und daher möglicherweise für den Computernutzer ziemlich störend sein.
  • Eine Motivation für die vorliegende Erfindung ist daher die Entwicklung einer GD-Technologie, die so wenig Anweisungen eines Programms (oder für eine Datendatei) wie möglich ausführt, bis sie in der Lage ist, zuverlässig festzustellen, das es bzw. sie nicht infiziert ist. Dieses Ziel ist deshalb so schwierig zu erreichen, da eine polymorphe Dekodierroutine sehr viele verschiedene Formen annehmen kann und es daher schwer ist, sie ohne Emulation einer großen Anzahl von Anweisungen zu identifizieren.
  • Ein anderes Problem bei der Ausführung der GD-Technologie ist das Vermeiden der redundanten Emulation von Anweisungen für ein Programm (oder eine Datendatei), von dem oder der bereits früher festgestellt wurde, daß es bzw. sie nicht infiziert ist. Häufig greift ein Nutzer oder ein Programm immer und immer wieder auf die gleiche Datei zu. Zum Beispiel kann ein Nutzer während einer Sitzung das gleiche E-Mail- oder Wortverarbeitungsprogramm mehrfach aufrufen. Außerdem neigen diese Programme dazu, wiederholt auf die gleichen Datendateien zuzugreifen. Zum Beispiel kann, wenn ein Nutzer das oft verwendete Lotus-CC:Mail-Programm für Windows zum ersten Mal aufruft, dieses die Konfigurationsdatei "CCMAIL.CFG" achtundzwanzigmal getrennt öffnen und schließen. Wenn gleichzeitig ein Echtzeit-Antivirusscanner auf GD-Basis läuft, durchsucht der GD-Scanner in der Regel die Datei CCMAIL.CFG jedesmal in den achtundzwanzig Fällen, in denen sie geöffnet wird. In einem typischen Fall dauert die Durchsuchung zwar nur einige Millisekunden, es kann aber auch mehrere Sekunden dauern, wenn die Datei Daten enthält, die wie eine Dekodierschleife aussehen. Diese mehrfache sekundenlange Verzögerung addiert sich auf eine völlig unakzeptable Verzögerung von mehreren Minuten, wenn die Datei achtundzwanzigmal durchsucht wird.
  • Eine andere Motivation für die vorliegende Erfindung ist daher die Entwicklung einer GD-Technologie, bei der die redundante Emulation von Anweisungen für solche Programme oder Datendateien vermieden wird, von denen bereits früher festgestellt wurde, daß sie nicht infiziert sind.
  • Novell's NetWare-Software ist ein oft verwendetes Netzwerk-Betriebssystem, bei dem jede Datei auf dem Server durch eine eindeutige Identifikationsnummer identifiziert wird. Die gegenwärtige Version der Norton Antivirus-Software (NAV), die in Verbindung mit NetWare verwendet wird, nutzt einen Cache-Speicher zum Speichern der Identifikationsnummern derjenigen Dateien auf einem Server, von denen bereits durch Untersuchen festgestellt wurde, daß sie virenfrei sind. Wenn die Identifikationsnummer einer Zieldatei im Cache ist, vermeidet die NAV-Software die redundante Neudurchsuchung dieser Datei.
  • Viele Betriebssysteme einschließlich Windows 3.1 und Windows 95 haben jedoch keine eindeutigen Nummern zur Identifikation jeder Datei. Bei solchen Betriebssystemen können zwar die Dateinamen anstelle von Dateiidentifikationsnummern in einem Cache gespeichert werden; bei modernen Betriebssystemen wie Windows 95 können Dateinamen jedoch hunderte von Byte lang sein, und das Indizieren mit solch langen Dateinamen ist hinsichtlich des Speicherplatzes nicht wirtschaftlich. Darüberhinaus muß, um einen solchen Cache-Speicher aufrechtzuerhalten, die Antivirus-Software alle Anforderungen auf eine Modifikation der Dateien überwachen, deren Dateinamen sich gegenwärtig in dem Cache befinden. Wenn eine Datei modifiziert wird, deren Dateiname im Cache ist, muß der Dateiname aus dem Cache entfernt werden. Eine solche Überwachung macht die Antivirus-Software kompliziert und langsam.
  • Aus Nachenberg C.S.: "A new Technique for Detecting Polymorphic Computer Viruses, a Thesis Submitted in Partial Satisfaction of the Requirements for the Degree Master of Science in Computer Science and Engineering", Thesis University of California, 1995, Seiten I-V, 1-127 ist ein Verfahren zum Erfassen eines Computervirus bekannt, bei dem ein CPU-Emulator verwendet wird, um ein Zielprogramm in einem virtuellen Computer zu emulieren. Nach der Emulation von ausreichend vielen Anweisungen, um eine Dekodierung eines polymorphen Virus zu ermöglichen, wird das Programm unter Verwendung von Standard-Suchfolgen nach Viren durchsucht.
  • Die vorliegende Erfindung ist durch die unabhängigen Ansprüche definiert.
  • Aspekte der vorliegenden Erfindung sind in den abhängigen Ansprüchen genannt.
  • Die bevorzugte Ausführungsform der vorliegenden Erfindung umfaßt ein Computer-implementiertes Verfahren zum Ausführen einer Computerdatei in einem CPU- Emulator (154) für die Erfassung eines Computervirus. Das Verfahren umfaßt das Simulieren (302) der Ausführung einer vorgegebenen Anzahl von Anweisungen der Computerdatei im CPU-Emulator (154), das Aussetzen (303) der Ausführung, das Erstellen (304) eines Zustandsberichts, das vorübergehende Speichern (305) des Zustandsberichts in einem Speicher, das Vergleichen (306) des erstellten Zustandsberichts mit Zustandsberichten, die in einem Zustands-Cache (158) gespeichert sind, und die Anzeige (308), daß die Datei virenfrei ist, wenn der erstellte Zustandsbericht mit einem der gespeicherten Zustandsberichte übereinstimmt.
  • Die bevorzugte Ausführungsform reduziert die Anzahl von Anweisungen eines Programms, die simuliert werden müssen, bis zuverlässig die Feststellung des nicht infizierten Zustands erfolgen kann, da das redundante Emulieren von Anweisungen vermieden wird. Die Arbeitsgeschwindigkeit eines Computers, auf dem eine Antivirus-Software auf Emulatorbasis in Echtzeit läuft, wird dadurch insgesamt höher.
  • Kurzbeschreibung der Zeichnungen
  • Diese und andere, genauere und bestimmtere Aufgaben und Merkmale der vorliegenden Erfindung sind vollständiger in der folgenden Beschreibung angegeben, die sich auf die beiliegende Zeichnung bezieht. Es zeigen:
  • Fig. 1 eine Blockdarstellung für den Aufbau einer Computerplattform, die eine bevorzugte Ausführungsform der vorliegenden Erfindung umfaßt.
  • Fig. 2 ein Flußdiagramm für ein Verfahren zur Feststellung, ob eine Datei infiziert ist, durch Emulation einer Vielzahl von Versionen einer CPU gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung.
  • Fig. 3 ein Flußdiagramm für ein Verfahren zur Simulation der Ausführung einer Datei zum Erfassen eines Computervirus gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung.
  • Fig. 4 eine Tabelle mit den ersten Bytes einer (nicht infizierten) Datei, die durchsucht wird.
  • Fig. 5 eine Liste für einen Zustandsbericht, der erstellt wird, nachdem die ersten acht Anweisungen der Datei in der Fig. 4 ausgeführt sind.
  • Fig. 6 eine Tabelle mit den ersten Bytes der Datei der Fig. 4, nachdem die Datei durch einen Computervirus infiziert wurde.
  • Genaue Beschreibung der bevorzugten Ausführungsformen
  • Die Fig. 1 ist eine Blockdarstellung für den Aufbau einer Computerplattform, die eine bevorzugte Ausführungsform der vorliegenden Erfindung umfaßt. Die Computerplattform 100 umfaßt Hardwaregeräte 102 und ein Speichermodul 104 zum Speichern von Programmen und Daten. Die Kommunikation zwischen dem Speichermodul 104 und den Hardwaregeräten 102 erfolgt über das Bussystem 106.
  • Vorzugsweise umfassen die Hardwaregeräte 102, ohne darauf beschränkt zu sein, eine Zentraleinheit (CPU) 108 (z. B. einen Intel "x86" oder einen Motorola Power PC Prozessor), die mit einer Speichereinrichtung 110 (z. B. einer Festplatte) und einem Eingabe/Ausgabe-Interface (I/O-Interface) 112 (z. B. einem Systeminterface für kleine Computer, SCSI, oder einem Personal Computer Memory Card International Association Interface (PCMCIA-Interface))in Verbindung steht. Mit dem I/O-Interface 112 sind ein Speicherlaufwerk 114 (z. B. ein Diskettenlaufwerk), das Programme und Daten von einem Speichermedium 116 (z. B. einer Diskette) lesen kann, und ein Netzwerkinterface 118 (z. B. eine Ethernet-Karte oder ein Modem) verbunden, das über ein Netzwerk 122 (z. B. ein lokales Netzwerk, ein weiträumiges Netz, ein Intranet oder das globale öffentliche Internet) mit einem räumlich getrennten System 120 in Verbindung steht. Ein Softwareprogramm (oder eine Datendatei), das oder die verdächtigt wird, einen Computervirus zu enthalten, kann entweder auf dem Speichermedium 116 (A), der Speichereinrichtung 110 (B) oder dem räumlich getrennten System 120 (C) gespeichert sein.
  • Vorzugsweise umfassen die im Speichermodul 104 gespeicherten Programme und Daten, ohne darauf beschränkt zu sein, ein Betriebssystem (OS) 150 (z. B. Windows 3.1, Windows 95 oder Windows NT von Microsoft, OS/2 von IBM oder Macintosh OS von Apple Computer oder eine UNIX-Variante), eine Emulationssteuerung 152, einen CPU-Emulator 154, einen virtuellen Speicher 155, einen Signaturscanner 156 und einen Zustands-Cache 158.
  • Die Emulationssteuerung 152 steuert den CPU-Emulator 154. Unter anderem bestimmt die Emulationssteuerung 152, wann die Emulation einer Datei zu beenden und mit dem Durchsuchen nach Virus-Signaturen zu beginnen ist.
  • Der CPU-Emulator 154 führt die Dateien in einer vollständig virtuellen Umgebung aus. Die virtuelle Umgebung umfaßt den virtuellen Speicher 155, der effektiv vom Speicher des Host-Computersystems unabhängig ist. Auf diese Weise ist der CPU-Emulator 154 wirkungsvoll von den tatsächlichen Hardwaregeräten 102 isoliert, so daß bei der Simulation einer Datei von einem Virus keine Gefahr ausgeht.
  • Wenn die Datei danach aussieht, als ob sie einen kodierten Virus enthält, führt die Emulationssteuerung 152 die Emulation fort, bis der Virus entschlüsselt ist und/oder die Kontrolle übernommen hat. Nach dem Ende des Simulation durchsucht der Signaturscanner 156 den virtuellen Speicher 155 nach bekannten Virussignaturen.
  • Der Zustands-Cache 158 wird von der Emulationssteuerung 152 dazu verwendet, um festzustellen, ob bereits früher festgestellt wurde, daß die Datei virenfrei ist, so daß die Emulation frühzeitig beendet werden kann. Der Zustands-Cache 158 kann nach der Methode "am längsten nicht benutzt" (LRU) oder einer anderen Methode aktualisiert werden. Die Arbeitsweise des Zustands-Caches 158 im Zusammenwirken mit den anderen Komponenten des Systems wird nun anhand der folgenden Darstellungen beschrieben.
  • Die Fig. 2 und 3 sind Flußdiagramme zur Erläuterung des Verfahrens gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung zur Feststellung, ob eine Datei mit einem Computervirus infiziert ist.
  • Bestimmte Software kann auf verschiedenen Versionen eines Mikroprozessors laufen, und Computerviren können so beschaffen sein, daß sie nur auf bestimmten Versionen solcher Mikroprozessoren aktiv werden. Zum Beispiel können polymorphe Viren Anweisungen in der Dekodierschleife enthalten, die Anweisungen an anderer Stelle im Viruscode modifiziert. Diese selbstmodifizierende Eigenschaft kann bewirken, daß sich ein polymorpher Virus anders verhält, wenn die infizierten Dateien auf Prozessoren mit unterschiedlichen Größe für die Prefetch-Warteschlange oder Emulatoren für diese Prozessoren laufen. Insbesondere kann ein polymorpher Virus auf Emulatoren mit gewissen Größen für die Prefetch-Warteschlange entschlüsselt werden, auf Emulatoren mit anderen Größen für die Prefetch-Warteschlange jedoch nicht. Wegen des möglichen Einflusses der Größe der Prefetch-Warteschlange auf die Entschlüsselung eines polymorphen Virus ist es möglich, daß eine Datei mit einem selbstmodifizierenden Code wiederholt zu emulieren ist, damit jeder mögliche Virus richtig entschlüsselt werden kann.
  • Die Fig. 2 ist ein Flußdiagramm für ein Verfahren zur Feststellung, ob eine Datei infiziert ist, durch Emulation der Datei auf einer Anzahl von Versionen einer CPU. Wenn eine Datei (A, B oder C) auf eine Virusinfektion zu untersuchen ist, stellt die Emulationssteuerung 152 in 202 den CPU-Emulator 154 so ein, daß die Version V (V = 1, 2, 3, ...) der CPU emuliert wird. Es sei V = 1 für die erste emulierte Version der CPU. Zum Beispiel kann der CPU-Emulator 154 in 202 so eingestellt werden, daß ein Intel 80386 Prozessor mit einer Prefetch-Warteschlange von 16 Byte oder ein Intel 80486 Prozessor mit einer Prefetch-Warteschlange von 32 Byte emuliert wird.
  • Nachdem der CPU-Emulator 154 in 202 auf die Version V eingestellt ist, bewirkt die Emulationssteuerung 152 in 204, daß auf dem CPU-Emulator 154 der Prozeß zur Simulierung der Ausführung der Datei auf der Version V der CPU abläuft. Dieser Prozeß ist genauer in der Fig. 3 dargestellt und wird weiter unten anhand der Fig. 3 näher beschrieben.
  • Nach dem Ablaufen des in der Fig. 3 gezeigten Prozesses stellt die Antivirus- Software in 206 fest, ob es eine weitere Version V der CPU gibt, auf der die Ausführung der Datei auch simuliert werden soll. Wenn es eine weitere Version V der CPU gibt, auf der die Ausführung der Datei ebenfalls simuliert werden soll, geht die Emulationssteuerung 152 zurück zu 202 und stellt den CPU-Emulator 154 auf diese andere Version ein und läßt in 204 wieder den in der Fig. 3 gezeigten Prozeß ablaufen. Wenn es keine weitere Version V der CPU gibt, auf der die Ausführung der Datei auch simuliert werden soll, stellt anderenfalls die Antivirus-Software in 208 fest, ob die Gesamtzahl N(V) an Anweisungen der Datei, die in der Version V simuliert wurden, größer ist als eine vorgegebene Schwellenzahl J.
  • Wenn N nicht größer ist als J, geht die Antivirus-Software zu 210, was heißt, daß die Datei virenfrei zu sein scheint. Wenn andererseits N größer ist als J, wird in 212 im Zustands-Cache 158 der Zustandsbericht R(1) gespeichert. (Wenn der Zustands-Cache 158 voll ist und eine LRU-Aktualisierungsmethode angewendet wird, ersetzt der Zustandsbericht für die erste CPU-Version, R(1), den am wenigsten verwendeten Zustandsbericht, der im Zustands-Cache 158 gespeichert ist.) Nachdem der Zustandsbericht R(1) in 212 im Zustands-Cache 158 gespeichert ist, kann die Antivirus-Software zu 210 gehen, um anzuzeigen, daß die Datei virenfrei zu sein scheint.
  • Die Fig. 3 ist eine Flußdiagrammerweiterung des Blocks 204 der Fig. 2, in dem die Antivirus-Software den Prozeß zur Simulation der Ausführung einer Datei auf der Version V der CPU ablaufen läßt.
  • Zuerst veranlaßt die Emulationssteuerung 152 in 302 den CPU-Emulator 154 (der so eingestellt ist, daß er wie die Version V der CPU arbeitet), die ersten I Anweisungen der Datei zu simulieren. I sei eine vorgegebene Zahl und I < J. Zum Beispiel kann, wenn J = 2048 ist, I gleich 1024 sein.
  • Wenn in 302 die ersten I Anweisungen simuliert worden sind, unterbricht die Emulationssteuerung 152 in 303 die Simulation und erstellt in 304 einen Zustandsbericht R(V), den sie in 305 vorübergehend speichert. R(V) benötigt zur Speicherung in der Regel weniger Speicher als ein Dateiname und enthält typisch die folgenden Informationen über den Zustand des CPU-Emulators 154:
  • 1) Den virtuellen Anweisungszeiger. Zum Beispiel sollte für einen virtuellen x86 Prozessor der Zustandsbericht CS:IP enthalten. Das CS-Register (Code-Segment- Register) zeigt auf die Startadresse des Codesegments im Speicher, während das IP- Register (Instruktions-Pointer-Register) auf die genaue Stelle im Codesegment zeigt, von der die nächste Anweisung auszulesen ist.
  • 2) Mehrere der Anweisungsbytes vor und/oder nach dem Byte, auf das der virtuelle Anweisungszeiger zeigt. Zum Beispiel kann bei einem x86 Prozessor der Zustandsbericht die Bytes bei CS:IP-8, CS:IP-7, ..., CS:IP-2, CS:IP-1, CS:IP, CS:IP+1, CS:IP+2, ..., CS:IP+6 und CS:IP+7 enthalten.
  • 3) Die Werte der virtuellen allgemeinen Register des CPU-Emulators 154. Zum Beispiel kann bei einem x86 Prozessor der Zustandsbericht die Werte von EAX, EBX, ECX, EDX, EBP, ESI, EDI und ESP enthalten.
  • 4) Mehrere der Bytes vor und/oder nach dem Byte, auf das der Stapelzeiger zeigt. Zum Beispiel kann bei einem x86 Prozessor der Zustandsbericht die Bytes bei SS:SP-8, SS:SP-7, ..., SS:SP-2, SS:SP-1, SS:SP, SS:SP+1, SS:SP+2, ..., SS:SP+6 und SS:SP+7 enthalten. Das SS-Register (Stapel-Segment-Register) zeigt auf die Startadresse des Bereichs im Speicher, der für den Stapel verwendet wird, während das SP-Register (Stapel-Pointer-Register) auf die genaue Stelle im Stapelsegment zeigt, an der die letzte Einheit gespeichert wurde.
  • Zusätzlich zu den obigen Eigenschaften des Zustands des CPU-Emulators 154 kann R(V) auch Identifikationseigenschaften enthalten, die nicht Teil des CPU-Zustands sind, die jedoch trotzdem nützlich sind, wenn sie als Teil von R(V) gespeichert werden. Solche Eigenschaften sind:
  • 5) Die Größe der Datei, die simuliert wird.
  • 6) Die Anzahl der Einschreibvorgänge in den virtuellen Speicher 155, die bei der Emulation der ersten I Anweisungen ausgeführt wurden.
  • 7) Die Werte für die zyklische Redundanzprüfung (CRC) der bei der Emulation der ersten I Anweisungen in den virtuellen Speicher 155 eingeschriebenen Daten. Die CRC-Werte werden dazu verwendet, um Datenfehler wirkungsvoll festzustellen; ihre Anwendung ist dem Fachmann bekannt.
  • Nachdem in 305 der Zustandsbericht R(V) vorübergehend abgespeichert wurde, vergleicht die Emulationssteuerung 152 in 306 den Zustandsbericht R(V) mit den im Zustands-Cache 158 gespeicherten Zustandsberichten. Wenn R(V) mit einem der Berichte im Zustands-Cache 158 identisch ist, geht die Antivirus-Software zu 308, um anzuzeigen, daß kein Virus festgestellt wurde, da eine Übereinstimmung im Zustands-Cache vorliegt. Wenn R(V) mit keinem der Berichte im Zustands-Cache 158 übereinstimmt, veranlaßt die Emulationssteuerung 152 den CPU-Emulator 154, in 310 die normale Simulation für das nächste Intervall von Anweisungen wieder aufzunehmen, das mit der nächsten, noch nicht simulierten Anweisung beginnt.
  • Nachdem in 310 das Intervall von Anweisungen simuliert wurde, verwendet die Emulationssteuerung 152 den Signaturscanner 156, um in 312 das Vorhandensein eines aus einem Satz von bekannten Viren festzustellen. Wenn der Signaturscanner 156 das Vorhandensein eines Virus feststellt, geht die Antivirus-Software zu 314, um anzuzeigen, daß ein Virus festgestellt wurde, und um die Identität des erfaßten Virus anzugeben. Wenn der Signaturscanner 156 keinen Virus findet, stellt die Emulationssteuerung 152 in 316 fest, ob bereits genug Intervalle simuliert worden sind, um die Feststellung, daß die Datei virenfrei ist, mit einem hohen Grad an Sicherheit treffen zu können.
  • Wenn dazu noch nicht genug Intervalle simuliert wurden, veranlaßt die Emulationssteuerung 152 den CPU-Emulator 154, in 310 die normale Simulation für das nächste Intervall von Anweisungen wieder aufzunehmen, das mit der nächsten, noch nicht simulierten Anweisung beginnt. Wenn andererseits genug Intervalle simuliert wurden, wird in 318 N(V) vorübergehend im Speicher abgespeichert, und der Prozeß geht, da bisher noch kein Virus erfaßt wurde, zu dem in der Fig. 2 gezeigten Block 206 über.
  • Die Fig. 4, 5 und 6 zeigen die Vorgehensweise bei der vorliegenden Erfindung anhand eines Beispiels. In diesem Beispiel ist die CPU eine einfache Version eines x86 Prozessors, und der Zustandsbericht umfaßt den Anweisungszeiger (CS:IP); die Anweisungsbytes bei CS:IP, CS:IP+1, CS:IP+2, ..., CS:IP+6, CS:IP+7; den Inhalt der allgemeinen Register EAX, EBX, ECX, EDX, ESP, EBP, ESI, EDI; die Dateigröße und die Anzahl der Speicher-Schreibvorgänge, die bei der Ausführung der ersten I Anweisungen aufgetreten sind. Des weiteren ist in diesem Beispiel I = 8 und J = 100.
  • In der Fig. 4 sind die ersten paar Bytes der in diesem Beispiel untersuchten (nicht infizierten) Datei gezeigt. Nachdem die Antivirus-Software in 302 die ersten I = 8 Anweisungen simuliert hat, wird in 304 ein Zustandsbericht erstellt, der in der Fig. 5 gezeigt ist.
  • Wenn die (nicht infizierte) Datei das erste Mal untersucht wird, simuliert die Antivirus-Software in 310 das nächste Intervall an Anweisungen, bis in 316 festgestellt wird, daß die Datei wahrscheinlich virenfrei ist. In diesem Beispiel werde nach der Simulation von N = 5000 Anweisungen in 316 festgestellt, daß die Datei wahrscheinlich virenfrei ist.
  • Da N = 5000 größer ist als J = 100, wird in 212 der in der Fig. 6 gezeigte Zustandsbericht im Zustands-Cache gespeichert, und die Antivirus-Software zeigt in 210 an, daß die Datei virenfrei zu sein scheint.
  • Die Fig. 6 zeigt die ersten paar Byte der Datei, nachdem sie mit einem Virus infiziert wurde. Die Fig. 6 zeigt auch den Anfang und das Ende des Viruskörpers. Wenn die infizierte Datei untersucht wird, wird der nach I = 8 in 302 simulierten Anweisungen in 304 erstellte Zustandsbericht sich radikal von dem in 304 nach der Simulation von I = 8 Anweisungen der nicht infizierten Datei erstellten Zustandsbericht unterscheiden.
  • Die obige Beschreibung soll die Vorgehensweise bei den bevorzugten Ausführungsformen darstellen und ist nicht dafür gedacht, den Umfang der Erfindung einzuschränken. Der Umfang der Erfindung wird nur von den folgenden Ansprüchen festgelegt. Aus der obigen Beschreibung ersieht der Fachmann zahlreiche Variationen, die innerhalb des Umfangs der Erfindung liegen.

Claims (15)

1. Computer-implementiertes Verfahren zur Ausführung durch ein Computersystem zum Erfassen von Computerviren in Computerdateien, wobei
das Ausführen einer Computerdatei in einem CPU-Emulator (154) emuliert wird (302); und
die Datei zur Erfassung von Viren durchsucht wird (321);
dadurch gekennzeichnet, daß die Emulation so gesteuert wird, daß sie ohne Durchsuchen beendet wird (308), wenn festgestellt wird (306), daß die Datei zuvor durchsucht wurde, ohne daß ein Virus erfaßt wurde;
wobei in dem Verfahren ferner
die Ausführung einer Subjektdatei suspendiert wird (303), nachdem eine erste vorbestimmte Anzahl von Anweisungen emuliert wurde (302);
ein Zustandsbericht für die Subjektdatei erstellt wird (304), wobei der Zustandsbericht Werte umfaßt, die den gegenwärtigen Betriebszustand des CPU-Emulators wiedergeben;
der Zustandsbericht zeitweise in einem Speicher gespeichert wird (305);
der für die Subjektdatei erstellte Zustandsbericht mit in einem Zustands-Cache- Speicher (158) gespeicherten Zustandsberichten verglichen wird (306), wobei der Zustands-Cache-Speicher Zustandsberichte enthält, die von den zuvor für die erste Anzahl von Anweisungen emulierten Dateien erhalten wurden und für die beim darauffolgenden Durchsuchen kein Virus erfaßt wurde; und wobei
angezeigt wird, daß hinsichtlich der Subjektdatei kein Virus erfaßt wurde, wenn der erstellte Zustandsbericht mit einem der gespeicherten Zustandsberichte übereinstimmt.
2. Verfahren nach Anspruch 1, wobei ferner die Ausführung wieder aufgenommen wird (310), bis eines der folgenden Kriterien erfüllt ist:
Erfassung (314) eines Computervirus; oder
Feststellung (318) mit einem hohen Grad an Sicherheit, daß die Computerdatei frei von jeglichem Computervirus ist.
3. Verfahren nach Anspruch 2, wobei ferner
der erstellte Zustandsbericht in dem Zustands-Cache-Speicher gespeichert wird (212), wenn mit einem hohen Grad an Sicherheit festgestellt wird, daß die Computerdatei virenfrei ist, und wenn die Gesamtzahl der von dem CPU-Emulator ausgeführten Anweisungen der Computerdatei größer ist als eine zweite vorbestimmte Anzahl von Anweisungen.
4. Verfahren nach einem der vorstehenden Ansprüche, wobei der Zustandsbericht einen Wert eines Anweisungszeigers des CPU-Emulators einschließt.
5. Verfahren nach einem der vorstehenden Ansprüche, wobei der Zustandsbericht Werte allgemeiner Register des CPU-Emulators einschließt.
6. Verfahren nach einem der vorstehenden Ansprüche, wobei der Zustandsbericht die Gesamtzahl von Dateneinschreiboperationen in einen virtuellen Speicher (155) während der Ausführung der Computerdatei durch den CPU-Emulator einschließt.
7. Verfahren nach Anspruch 6, wobei der Zustandsbericht einen zyklischen Redundanzprüfwert für die Dateneinschreiboperationen in den virtuellen Speicher während der Ausführung der Computerdatei durch den CPU-Emulator einschließt.
8. System zum Erfassen von Computerviren in Computerdateien, mit
einem CPU-Emulator (154) zum Emulieren der Ausführung einer Computerdatei; und mit
einem Scanner (156) zum Durchsuchen (312) der Datei zum Erfassen von Viren;
gekennzeichnet durch
eine Emulationssteuerung (152) zum Steuern des Emulators so, daß die Emulation ohne Durchsuchen beendet wird (308), wenn festgestellt wird (306), daß die Datei zuvor durchsucht wurde, ohne daß ein Virus erfaßt wurde, wobei die Emulationssteuerung so ausgelegt ist, daß sie die Ausführung einer Subjektdatei nach der Emulation einer ersten vorbestimmten Anzahl von Anweisungen suspendiert;
eine Einrichtung zum Erstellen eines Zustandsberichts für die Subjektdatei, wobei der Zustandsbericht den gegenwärtigen Betriebszustand des CPU-Emulators wiedergebende Werte einschließt;
eine Einrichtung zum zeitweisen Speichern (305) des Zustandsberichts in einem Speicher;
eine Einrichtung zum Vergleichen (306) des für die Subjektdatei erstellten Zustandsberichts mit in einem Zustands-Cache-Speicher (158) gespeicherten Zustandsberichten, wobei der Zustands-Cache-Speicher Zustandsberichte enthält, die von den zuvor für die erste Anzahl von Anweisungen emulierten Dateien erhalten wurden und für die beim darauffolgenden Durchsuchen kein Virus erfaßt wurde; und durch eine Einrichtung zur Anzeige, daß hinsichtlich der Subjektdatei kein Virus erfaßt wurde, wenn der erstellte Zustandsbericht mit einem der gespeicherten Zustandsberichte übereinstimmt.
9. System nach Anspruch 8, ferner mit einer Einrichtung zur Wiederaufnahme (310) der Ausführung, bis eines der folgenden Kriterien erfüllt ist:
Erfassung eines Computervirus; oder
Feststellung mit einem hohen Grad an Sicherheit, daß die Computerdatei frei von einem Computervirus ist.
10. System nach Anspruch 9, ferner mit einer Einrichtung zum Speichern des erstellten Zustandsberichts in dem Zustands-Cache-Speicher, wenn mit einem hohen Grad an Sicherheit festgestellt wird, daß die Computerdatei virenfrei ist, und wenn die Gesamtzahl der von dem CPU-Emulator ausgeführten Anweisungen der Computerdatei größer ist als eine zweite vorbestimmte Anzahl von Anweisungen.
11. System nach einem der Ansprüche 8 bis 10, wobei der Zustandsbericht einen Wert eines Anweisungszeigers des CPU-Emulators einschließt.
12. System nach einem der Ansprüche 8 bis 11, wobei der Zustandsbericht Werte allgemeiner Register des CPU-Emulators einschließt.
13. System nach einem der Ansprüche 8 bis 12, wobei der Zustandsbericht die Gesamtzahl von Dateneinschreiboperationen in einen virtuellen Speicher (155) während der Ausführung der Computerdatei durch den CPU-Emulator einschließt.
14. System nach Anspruch 13, wobei der Zustandsbericht einen zyklischen Redundanzprüfwert für die Dateneinschreiboperationen in den virtuellen Speicher während der Ausführung der Computerdatei durch den CPU-Emulator einschließt.
15. Computerprogrammprodukt, in dem ein computerlesbarer Code zum Ausführen eines Verfahrens nach einem der Ansprüche 1 bis 7 gespeichert ist.
DE69712635T 1996-11-27 1997-11-17 Zustandsbasiertes cache für antivirensoftware Expired - Lifetime DE69712635T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/757,935 US5854916A (en) 1995-09-28 1996-11-27 State-based cache for antivirus software
PCT/US1997/020827 WO1998024023A1 (en) 1996-11-27 1997-11-17 State-based cache for antivirus software

Publications (2)

Publication Number Publication Date
DE69712635D1 DE69712635D1 (de) 2002-06-20
DE69712635T2 true DE69712635T2 (de) 2003-01-30

Family

ID=25049803

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69712635T Expired - Lifetime DE69712635T2 (de) 1996-11-27 1997-11-17 Zustandsbasiertes cache für antivirensoftware

Country Status (5)

Country Link
US (2) US5854916A (de)
EP (1) EP0941512B1 (de)
CA (1) CA2273982C (de)
DE (1) DE69712635T2 (de)
WO (1) WO1998024023A1 (de)

Families Citing this family (108)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6139046A (en) * 1996-10-25 2000-10-31 Evenflo Company, Inc. Stroller with improved features
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
US5964889A (en) * 1997-04-16 1999-10-12 Symantec Corporation Method to analyze a program for presence of computer viruses by examining the opcode for faults before emulating instruction in emulator
US6016546A (en) * 1997-07-10 2000-01-18 International Business Machines Corporation Efficient detection of computer viruses and other data traits
US5978917A (en) * 1997-08-14 1999-11-02 Symantec Corporation Detection and elimination of macro viruses
US6357008B1 (en) * 1997-09-23 2002-03-12 Symantec Corporation Dynamic heuristic method for detecting computer viruses using decryption exploration and evaluation phases
WO2000034867A1 (en) 1998-12-09 2000-06-15 Network Ice Corporation A method and apparatus for providing network and computer system security
US6681329B1 (en) 1999-06-25 2004-01-20 International Business Machines Corporation Integrity checking of a relocated executable module loaded within memory
US7346929B1 (en) 1999-07-29 2008-03-18 International Business Machines Corporation Method and apparatus for auditing network security
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
US6954858B1 (en) 1999-12-22 2005-10-11 Kimberly Joyce Welborn Computer virus avoidance system and mechanism
US6892303B2 (en) * 2000-01-06 2005-05-10 International Business Machines Corporation Method and system for caching virus-free file certificates
US6763466B1 (en) * 2000-01-11 2004-07-13 Networks Associates Technology, Inc. Fast virus scanning
GB2359908B (en) * 2000-03-04 2004-09-15 Motorola Inc Communication system architecture and method of controlling data download to subscriber equipment
US7574740B1 (en) 2000-04-28 2009-08-11 International Business Machines Corporation Method and system for intrusion detection in a computer network
WO2001084775A2 (en) 2000-04-28 2001-11-08 Internet Security Systems, Inc. System and method for managing security events on a network
US6907396B1 (en) * 2000-06-01 2005-06-14 Networks Associates Technology, Inc. Detecting computer viruses or malicious software by patching instructions into an emulator
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
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
US7178166B1 (en) 2000-09-19 2007-02-13 Internet Security Systems, Inc. Vulnerability assessment and authentication of a computer by a local scanner
US6985845B1 (en) * 2000-09-26 2006-01-10 Koninklijke Philips Electronics N.V. Security monitor of system runs software simulator in parallel
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
US7086090B1 (en) 2000-10-20 2006-08-01 International Business Machines Corporation Method and system for protecting pervasive devices and servers from exchanging viruses
US7146305B2 (en) * 2000-10-24 2006-12-05 Vcis, Inc. Analytical virtual machine
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
US7340776B2 (en) 2001-01-31 2008-03-04 International Business Machines Corporation Method and system for configuring and scheduling security audits of a computer network
US7010698B2 (en) 2001-02-14 2006-03-07 Invicta Networks, Inc. Systems and methods for creating a code inspection system
US7302584B2 (en) * 2001-03-16 2007-11-27 Mcafee, Inc. Mechanisms for banning computer programs from use
US7010696B1 (en) 2001-03-30 2006-03-07 Mcafee, Inc. Method and apparatus for predicting the incidence of a virus
US7080000B1 (en) 2001-03-30 2006-07-18 Mcafee, Inc. Method and system for bi-directional updating of antivirus database
WO2002093334A2 (en) 2001-04-06 2002-11-21 Symantec Corporation Temporal access control for computer virus outbreaks
US7237264B1 (en) 2001-06-04 2007-06-26 Internet Security Systems, Inc. System and method for preventing network misuse
US7657419B2 (en) 2001-06-19 2010-02-02 International Business Machines Corporation Analytical virtual machine
US6873988B2 (en) * 2001-07-06 2005-03-29 Check Point Software Technologies, Inc. System and methods providing anti-virus cooperative enforcement
US7665137B1 (en) * 2001-07-26 2010-02-16 Mcafee, Inc. System, method and computer program product for anti-virus scanning in a storage subsystem
US7673343B1 (en) * 2001-07-26 2010-03-02 Mcafee, Inc. Anti-virus scanning co-processor
US7234167B2 (en) * 2001-09-06 2007-06-19 Mcafee, Inc. Automatic builder of detection and cleaning routines for computer viruses
KR20040039357A (ko) * 2001-09-14 2004-05-10 컴퓨터 어소시에이츠 싱크, 인코포레이티드 컴퓨터 바이러스 검출 및 치료 방법과 시스템, 프로그램저장 매체, 암호형 데이터 해독 방법, 암호형 컴퓨터바이러스 치료 방법
US20030101381A1 (en) * 2001-11-29 2003-05-29 Nikolay Mateev System and method for virus checking software
AU2003202876A1 (en) 2002-01-04 2003-07-24 Internet Security Systems, Inc. System and method for the managed security control of processes on a computer system
US7240239B2 (en) * 2002-03-20 2007-07-03 National Institute Of Advanced Industrial Science And Technology Input and output control means for computer system storage and a software execution method using same
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
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
US7478431B1 (en) * 2002-08-02 2009-01-13 Symantec Corporation Heuristic detection of computer viruses
US7188369B2 (en) * 2002-10-03 2007-03-06 Trend Micro, Inc. System and method having an antivirus virtual scanning processor with plug-in functionalities
US7469419B2 (en) 2002-10-07 2008-12-23 Symantec Corporation Detection of malicious computer code
US7337471B2 (en) * 2002-10-07 2008-02-26 Symantec Corporation Selective detection of malicious computer code
US7260847B2 (en) * 2002-10-24 2007-08-21 Symantec Corporation Antivirus scanning in a hard-linked environment
US7249187B2 (en) 2002-11-27 2007-07-24 Symantec Corporation Enforcement of compliance with network security policies
US7913303B1 (en) 2003-01-21 2011-03-22 International Business Machines Corporation Method and system for dynamically protecting a computer system from attack
US20040153666A1 (en) * 2003-02-05 2004-08-05 Sobel William E. Structured rollout of updates to malicious computer code detection definitions
US7293290B2 (en) * 2003-02-06 2007-11-06 Symantec Corporation Dynamic detection of computer worms
US20040158546A1 (en) * 2003-02-06 2004-08-12 Sobel William E. Integrity checking for software downloaded from untrusted sources
US7246227B2 (en) * 2003-02-10 2007-07-17 Symantec Corporation Efficient scanning of stream based data
US20040158730A1 (en) * 2003-02-11 2004-08-12 International Business Machines Corporation Running anti-virus software on a network attached storage device
US7203959B2 (en) 2003-03-14 2007-04-10 Symantec Corporation Stream scanning through network proxy servers
US7546638B2 (en) * 2003-03-18 2009-06-09 Symantec Corporation Automated identification and clean-up of malicious computer code
US7739278B1 (en) 2003-08-22 2010-06-15 Symantec Corporation Source independent file attribute tracking
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
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
US7373667B1 (en) 2004-05-14 2008-05-13 Symantec Corporation Protecting a computer coupled to a network from malicious code infections
US7484094B1 (en) 2004-05-14 2009-01-27 Symantec Corporation Opening computer files quickly and safely over a network
US20060010495A1 (en) * 2004-07-06 2006-01-12 Oded Cohen Method for protecting a computer from suspicious objects
US20060015940A1 (en) * 2004-07-14 2006-01-19 Shay Zamir Method for detecting unwanted executables
US7509680B1 (en) 2004-09-01 2009-03-24 Symantec Corporation Detecting computer worms as they arrive at local computers through open network shares
EP1828902A4 (de) * 2004-10-26 2009-07-01 Rudra Technologies Pte Ltd System und verfahren zum identifizieren und entfernen von malware auf einem computersystem
JP4688472B2 (ja) * 2004-11-01 2011-05-25 株式会社エヌ・ティ・ティ・ドコモ 端末制御装置及び端末制御方法
US7565686B1 (en) 2004-11-08 2009-07-21 Symantec Corporation Preventing unauthorized loading of late binding code into a process
KR101201118B1 (ko) 2004-11-08 2012-11-13 마이크로소프트 코포레이션 바이러스 방지 소프트웨어 어플리케이션들의 지식 베이스를모으는 시스템 및 방법
US7765410B2 (en) 2004-11-08 2010-07-27 Microsoft Corporation System and method of aggregating the knowledge base of antivirus software applications
US20060179484A1 (en) * 2005-02-09 2006-08-10 Scrimsher John P Remediating effects of an undesired application
US20060253908A1 (en) * 2005-05-03 2006-11-09 Tzu-Jian Yang Stateful stack inspection anti-virus and anti-intrusion firewall system
US7540027B2 (en) * 2005-06-23 2009-05-26 International Business Machines Corporation Method/system to speed up antivirus scans using a journal file system
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
US8272058B2 (en) 2005-07-29 2012-09-18 Bit 9, Inc. Centralized timed analysis in a network security system
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
US7739740B1 (en) * 2005-09-22 2010-06-15 Symantec Corporation Detecting polymorphic threats
US20070079375A1 (en) * 2005-10-04 2007-04-05 Drew Copley Computer Behavioral Management Using Heuristic Analysis
US8935281B1 (en) 2005-10-31 2015-01-13 Symantec Operating Corporation Optimized content search of files
US7917481B1 (en) * 2005-10-31 2011-03-29 Symantec Operating Corporation File-system-independent malicious content detection
US8239915B1 (en) 2006-06-30 2012-08-07 Symantec Corporation Endpoint management using trust rating data
US8151352B1 (en) * 2006-07-14 2012-04-03 Bitdefender IPR Managament Ltd. Anti-malware emulation systems and methods
US7689547B2 (en) * 2006-09-06 2010-03-30 Microsoft Corporation Encrypted data search
US7818801B2 (en) * 2006-09-26 2010-10-19 ScriptLogic Corportation File system event tracking
US8856782B2 (en) 2007-03-01 2014-10-07 George Mason Research Foundation, Inc. On-demand disposable virtual work system
US8621610B2 (en) * 2007-08-06 2013-12-31 The Regents Of The University Of Michigan Network service for the detection, analysis and quarantine of malicious and unwanted files
US8468977B2 (en) * 2007-08-07 2013-06-25 The Kong Company, Llc Pet toy with noise making instrument
US7620992B2 (en) * 2007-10-02 2009-11-17 Kaspersky Lab Zao System and method for detecting multi-component malware
US8099718B2 (en) * 2007-11-13 2012-01-17 Intel Corporation Method and system for whitelisting software components
US9098698B2 (en) 2008-09-12 2015-08-04 George Mason Research Foundation, Inc. Methods and apparatus for application isolation
GB2466455A (en) * 2008-12-19 2010-06-23 Qinetiq Ltd Protection of computer systems
US8839422B2 (en) 2009-06-30 2014-09-16 George Mason Research Foundation, Inc. Virtual browsing environment
AU2011293160B2 (en) 2010-08-26 2015-04-09 Verisign, Inc. Method and system for automatic detection and analysis of malware
US7962959B1 (en) * 2010-12-01 2011-06-14 Kaspersky Lab Zao Computer resource optimization during malware detection using antivirus cache
US8424093B2 (en) * 2010-11-01 2013-04-16 Kaspersky Lab Zao System and method for updating antivirus cache
US9081959B2 (en) 2011-12-02 2015-07-14 Invincea, Inc. Methods and apparatus for control and detection of malicious content using a sandbox environment
US9384349B2 (en) * 2012-05-21 2016-07-05 Mcafee, Inc. Negative light-weight rules
US9715325B1 (en) 2012-06-21 2017-07-25 Open Text Corporation Activity stream based interaction
US9742796B1 (en) 2015-09-18 2017-08-22 Palo Alto Networks, Inc. Automatic repair of corrupt files for a detonation engine

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5321840A (en) * 1988-05-05 1994-06-14 Transaction Technology, Inc. Distributed-intelligence computer system including remotely reconfigurable, telephone-type user terminal
GB2222899B (en) * 1988-08-31 1993-04-14 Anthony Morris Rose Securing a computer against undesired write operations or from a mass storage device
US5121345A (en) * 1988-11-03 1992-06-09 Lentz Stephen A System and method for protecting integrity of computer data and software
US4975950A (en) * 1988-11-03 1990-12-04 Lentz Stephen A System and method of protecting integrity of computer data and software
US5319776A (en) * 1990-04-19 1994-06-07 Hilgraeve Corporation In transit detection of computer virus with safeguard
US5408642A (en) * 1991-05-24 1995-04-18 Symantec Corporation Method for recovery of a computer program infected by a computer virus
US5421006A (en) * 1992-05-07 1995-05-30 Compaq Computer Corp. Method and apparatus for assessing integrity of computer system software
US5359659A (en) * 1992-06-19 1994-10-25 Doren Rosenthal Method for securing software against corruption by computer viruses
US5440723A (en) * 1993-01-19 1995-08-08 International Business Machines Corporation Automatic immune system for computers and computer networks
JP2501771B2 (ja) * 1993-01-19 1996-05-29 インターナショナル・ビジネス・マシーンズ・コーポレイション 不所望のソフトウェア・エンティティの複数の有効なシグネチャを得る方法及び装置
US5398196A (en) * 1993-07-29 1995-03-14 Chambers; David A. Method and apparatus for detection of computer viruses
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
US5442699A (en) * 1994-11-21 1995-08-15 International Business Machines Corporation Searching for patterns in encrypted data
US5715464A (en) * 1995-06-07 1998-02-03 International Business Machines Corporation Computer system having suspend once resume many sessions

Also Published As

Publication number Publication date
CA2273982A1 (en) 1998-06-04
US5999723A (en) 1999-12-07
DE69712635D1 (de) 2002-06-20
US5854916A (en) 1998-12-29
EP0941512A1 (de) 1999-09-15
CA2273982C (en) 2003-01-28
EP0941512B1 (de) 2002-05-15
WO1998024023A1 (en) 1998-06-04

Similar Documents

Publication Publication Date Title
DE69712635T2 (de) Zustandsbasiertes cache für antivirensoftware
DE69805406T2 (de) Fehlerverwaltung in emulationbasierter antivirenabtastung
DE69427252T2 (de) Verfahren und Gerät zur Erkennung von Computerviren
DE69804760T2 (de) Verfahren und vorrichtung zur erkennung polymorpher viren
DE69609980T2 (de) Verfahren und system zur erkennung von polymorphen viren
DE69737423T2 (de) Verfahren und gerät zum replizieren von datenspeicherung in einem fortgeschrittenen mikroprozessor
DE69812545T2 (de) Automatische Mustererzeugung von Makroviren
DE69702335T2 (de) Emulierendes reparatursystem
DE69523029T2 (de) Bytecodeprograminterpreter, Verfahren und Anordnung mit Vorprüfung von Datentyprestriktionen
DE60105611T2 (de) Erkennung von viren durch histogramme
DE69110665T2 (de) Verfahren und anordnung für die zugangs- und informationsverfälschungskontrolle in rechnersystemen.
DE69803199T2 (de) Erkennung und entfernung von makroviren
DE19983768B4 (de) Verfahren zum Ausführen von für verschiedene Befehlssatzarchitekturen geschriebener Firmware
DE112004003080B4 (de) Verwendung mehrerer Monitore virtueller Maschinen zur Abwicklung privilegierter Ereignisse
DE69804658T2 (de) Anitivirenbeschleuniger
DE60303753T2 (de) Selektives Erkennen von böswilligem Rechnercode
DE69610905T2 (de) Verfahren zum schutz von ausführbaren softwareprogrammen gegen infektion durch softwareviren
DE69505717T2 (de) Verfahren und Vorrichtung zur Feststellung und Durchführung von kreuzweisen Unterprogrammanrufen
DE112019001121B4 (de) Auf einem computer implementiertes verfahren zum identifizieren von malware und system hierfür
DE602004011018T2 (de) Ungültigkeitserklärung eines speichers und löschen von puffereinträgen
DE102007046475A1 (de) Überwachen eines Ausführungsmusters eines Target-Agents auf einem VT-fähigen System
US20020162015A1 (en) Method and system for scanning and cleaning known and unknown computer viruses, recording medium and transmission medium therefor
US20030101381A1 (en) System and method for virus checking software
DE10225664A1 (de) System und Verfahren zum Prüfen von Systemabrufereignissen mit Systemabrufumhüllungen
DE202014011092U1 (de) Sicherheitsarchitektur für virtuelle Maschinen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition