DE69712635T2 - Zustandsbasiertes cache für antivirensoftware - Google Patents
Zustandsbasiertes cache für antivirensoftwareInfo
- 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
Links
- 230000000840 anti-viral effect Effects 0.000 title 1
- 241000700605 Viruses Species 0.000 claims abstract description 82
- 238000000034 method Methods 0.000 claims abstract description 29
- 125000004122 cyclic group Chemical group 0.000 claims description 3
- 238000001514 detection method Methods 0.000 claims 2
- 238000004590 computer program Methods 0.000 claims 1
- 230000002155 anti-virotic effect Effects 0.000 description 18
- 238000005516 engineering process Methods 0.000 description 6
- 230000035772 mutation Effects 0.000 description 6
- 238000004088 simulation Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 2
- 230000008450 motivation Effects 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 235000006508 Nelumbo nucifera Nutrition 0.000 description 1
- 240000002853 Nelumbo nucifera Species 0.000 description 1
- 235000006510 Nelumbo pentapetala Nutrition 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000009385 viral infection Effects 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/568—Computer malware detection or handling, e.g. anti-virus arrangements eliminating virus, restoring damaged files
-
- 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/562—Static detection
- G06F21/564—Static detection by virus signature recognition
-
- 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/562—Static detection
- G06F21/565—Static detection by checking file integrity
-
- 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)
- 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.
- 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.
- 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.
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)
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)
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 |
-
1996
- 1996-11-27 US US08/757,935 patent/US5854916A/en not_active Expired - Lifetime
-
1997
- 1997-11-17 CA CA002273982A patent/CA2273982C/en not_active Expired - Lifetime
- 1997-11-17 DE DE69712635T patent/DE69712635T2/de not_active Expired - Lifetime
- 1997-11-17 WO PCT/US1997/020827 patent/WO1998024023A1/en active IP Right Grant
- 1997-11-17 EP EP97946672A patent/EP0941512B1/de not_active Expired - Lifetime
-
1998
- 1998-12-01 US US09/203,828 patent/US5999723A/en not_active Expired - Lifetime
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 |