DE202014011116U1 - System zum Bewahren und nachfolgenden Wiederherstellen eines Emulatorzustands - Google Patents

System zum Bewahren und nachfolgenden Wiederherstellen eines Emulatorzustands Download PDF

Info

Publication number
DE202014011116U1
DE202014011116U1 DE202014011116.2U DE202014011116U DE202014011116U1 DE 202014011116 U1 DE202014011116 U1 DE 202014011116U1 DE 202014011116 U DE202014011116 U DE 202014011116U DE 202014011116 U1 DE202014011116 U1 DE 202014011116U1
Authority
DE
Germany
Prior art keywords
emulation
file
emulator
state
emulating
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
DE202014011116.2U
Other languages
English (en)
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.)
Kaspersky Lab AO
Original Assignee
Kaspersky Lab AO
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 Kaspersky Lab AO filed Critical Kaspersky Lab AO
Publication of DE202014011116U1 publication Critical patent/DE202014011116U1/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1415Saving, restoring, recovering or retrying at system level
    • G06F11/1438Restarting or rejuvenating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1479Generic software techniques for error detection or fault masking
    • 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/567Computer malware detection or handling, e.g. anti-virus arrangements using dedicated hardware
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/14Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
    • H04L63/1441Countermeasures against malicious traffic
    • H04L63/145Countermeasures against malicious traffic the attack involving the propagation of malware through the network, e.g. viruses, trojans or worms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1471Saving, restoring, recovering or retrying involving logging of persistent data for recovery
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Quality & Reliability (AREA)
  • Computing Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

System zum Emulieren einer Datei (501) in einem Computersystem (5) zur Erfassung von Schadprogrammen, wobei das System (5) umfasst: einen Hardware-Prozessor (15), der für Folgendes konfiguriert ist: Laden der Datei (501) in einen Emulator (503) des Computersystems (5); Bestimmen, ob eine Emulation zum ersten Mal durchgeführt wird oder nicht; wenn die Emulation zum ersten Mal durchgeführt wird, Emulieren der Datei (501) unter Verwendung einer Initialabbildung des Emulatorzustands; während der Emulation der Datei (501): Erstellen und Speichern einer oder mehrerer neuer Abbildungen des Emulatorzustands in einer Baum-Datenstruktur bei Auftreten einer oder mehrerer vorher definierter Bedingungen, die aus der Ausführung der Emulation resultieren, und Laden eines Zustands eines virtuellen Dateisystems und eines virtuellen Registers in den Emulator (503), bevor bösartige Codes in dem Computersystem (5) erfasst werden; wenn die Emulation nicht zum ersten Mal durchgeführt wird, Identifizieren einer oder mehrerer neuer Abbildungen des Emulatorzustands, der während einer Initialemulation der Datei (501) erstellt wurde; und Laden der einen oder mehreren identifizierten Abbildungen des Emulatorzustands, der zum Emulieren der Datei (501) verwendet werden soll, in den Emulator (503); Bestimmen, ob die Initialemulation der Datei (501) beim Auftreten eines Anti-Emulations-Tricks richtig oder unrichtig beendet wurde; wenn die Emulation beim Auftreten eines Anti-Emulations-Tricks unrichtig beendet wurde, Navigieren entlang der Baum-Datenstruktur, um eine oder mehrere neue Abbildungen des Emulatorzustands zu identifizieren, die mit dem Emulatorzustand vor der unrichtigen Beendigung in Verbindung stehen; und Wiederaufnehmen des Emulierens der Datei (501) unter Verwendung der identifizierten einen oder mehreren neuen Abbildungen des Emulatorzustands; und wenn die Emulation richtig beendet wurde, kein Wiederaufnehmen des Emulierens der Datei (501).

Description

  • Technisches Gebiet
  • Die Offenbarung betrifft allgemein das Gebiet der Informationssicherheit und insbesondere ein System und ein Computerprogrammprodukt zum Bewahren und nachfolgenden Wiederherstellen eines Zustands eines Programmemulators einer Antivirus-Anwendung.
  • Hintergrund
  • Der Code moderner Software, einschließlich Schadprogramme, bildet einen komplexen Satz von Instruktionen für Sprünge, Aufrufe, Loops und andere Operationen. Es ist zu beachten, dass die auszuführenden Dateien immer komplexer werden, da Programmiersprachen auf hoher Ebene an Beliebtheit zunehmen und auch die Computer-Hardware und Betriebssysteme komplexer sind. Das betrifft sowohl vertrauenswürdige Programme als auch bösartige. Bösartige Programme können mehrere charakteristische Aktionen durchführen, wie das Stehlen von Passwörtern und anderen vertraulichen Nutzerdaten, das Hinzufügen eines Computers zu einem Botnetz, um DDoS-Angriffe durchzuführen oder Spam-Mail zu verschicken, das Blockieren der richtigen Operationen des Systems zu Erpressungszwecken und andere bösartige Aktionen, die von dem Benutzer nicht gewollt sind und das Computersystem des Benutzers schädigen.
  • Einer der Wege, potentiell schädliche Programme zu untersuchen, sind Antivirus-Anwendungen, die einen Programm-Emulator verwenden können, um das Verhalten der Programme zu analysieren. Es gibt verschiedene Emulationsverfahren. Eines davon ist eine Programmimitation des Prozessors, des Speichers und anderer Einrichtungen durch Erstellen virtueller Kopien der Verzeichnisse des Prozessors, des Speichers und des Instruktionssatzes des Prozessors. Somit werden die Programminstruktionen nicht auf dem echten Prozessor, sondern auf seiner virtuellen Kopie ausgeführt, und die Aufrufe der API-Funktionen des Systems werden emuliert, und das emulierte Ergebnis der Arbeit der Funktion wird als Reaktion gesendet.
  • Es ist zu beachten, dass der Prozess der Initialisierung eines Emulators sehr ressourcenintensiv sein kann. Die Initialisierung des Emulators sollte nicht nur das Erstellen einer virtuellen Kopie der notwendigen Hardware (Prozessor, Arbeitsspeicher) umfassen, sondern auch virtuelle Kopien mehrerer Schlüsselkomponenten des Betriebssystems (OS), bei denen die Emulation der Ausführung der Anwendung auftritt. Als Schlüsselkomponenten des OS können zum Beispiel der Kern des Betriebssystems genannt werden, der für dessen notwendige Betriebsmechanismen verantwortlich ist, wie das Verarbeiten von Unterbrechungen und Ausnahmen, Kerntreiber, Speichermanager und so weiter. Für ein richtiges „Nachahmen” (Emulieren) des arbeitenden Betriebssystems muss der Vorgang seines Ladens wiederholt werden, wenngleich in relativ vereinfachter Form.
  • 1 zeigt den Vorgang des Ladens des Windows-Betriebssystems. In Schritt 101 kann der Windows Boot-Manager geladen werden, der dafür verantwortlich ist, das installierte OS Windows zu finden und das Auswählen des Ladens eines gefundenen OS zu ermöglichen. Als Nächstes kann in Schritt 102 das Laden der grundlegenden Treiber erfolgen, die beispielsweise dafür verantwortlich sind, ein Arbeiten mit der Festplattenpartition zu ermöglichen, auf der das ausgewählte OS installiert ist (d. h. der Dateisystemtreiber wird geladen). Als Nächstes kann der notwendige Teil des OS-Kerns von der Platte ausgelesen werden und in Schritt 103 in den Speicher geladen werden, beispielsweise Ntoskrnl.exe und hal.dll, und das Register, der Speichermanager, der Objektmanager usw. werden initialisiert. In Schritt 104 wird der Session-Manager (smss.exe) geladen, der für das Laden der Systemvariablen, des Win32-Subsystems und das weitere Laden von winlogon.exe in Schritt 105 verantwortlich ist. Nachdem der Benutzer erfolgreich die Authentifizierung in Schritt 106 durchgeführt hat, werden die Anwendungen und Dienste mit Autostart-Registerschlüssel geladen, und dann ist das OS vollständig bereit, mit dem Benutzer zu interagieren, und erwartet das Starten von Anwendungen und die Eingabe von Daten.
  • Für den Emulationsprozess ist es nicht notwendig, das Laden des Betriebssystems vollständig zu emulieren. Beispielsweise können die Schritte 101 und 102 weggelassen werden, womit nur die Schritte 103 und 104 in vereinfachter Form bleiben. Das heißt, es reicht aus, die wichtigste Funktionalität für das korrekte Funktionieren des OS zu emulieren, die für die Anwendungs-Emulation erforderlich ist. Für Win32-Anwendungen ist es notwendig, das Starten von smss.exe mit anschließendem Starten von csrss.exe zu emulieren, was das Windows-Subsystem initialisiert und das Erstellen von Prozessen und Threads ermöglicht. Da die Emulation einer potenziell schädlichen Anwendung das Erstellen einer detaillierteren Betriebsumgebung erfordert (wie die Emulation anderer Prozesse oder Dienste), ist es auch erforderlich, das Starten von winlogon.exe mit anschließendem „Starten” von Prozessen wie explorer.exe und services.exe zu emulieren, wobei es möglich ist, das Starten von svchost-Prozessen aus Letzterem zu emulieren. Der Begriff „Starten” bedeutet in diesem Fall das Nachbilden derselben Prozesse in dem Emulator, die auftreten, wenn die Prozesse mit dem echten OS erstellt werden, allerdings in stark vereinfachter Form. Ein solcher Ansatz ermöglicht die Nachbildung des echten OS in ausreichendem Grad, um praktisch jede Anwendung zu starten, die für die Arbeit in dem gegebenen OS vorgesehen ist. Für potenziell schädliche Anwendungen ist eine solche Detailgenauigkeit bei der Nachbildung der Umgebung ebenfalls erforderlich, sowohl um mögliche Anti-Emulations-Tricks zu umgehen, die das tatsächliche Prüfen auf das Vorhandensein der gestarteten Dienste, der Werte von Systemvariablen und anderer in dem echten OS vorhandenen Elemente umfassen kann, als auch um die bösartige Funktion zu implementieren, die auf bestimmte Anwendungen gerichtet sein kann. Als Beispiele genannt seien der Prozess explorer.exe, der oft Ziel von Angriffen ist, die Webbrowser-Prozesse, die entsprechend ausgenutzt werden können, usw.
  • Somit erfordert das Problem der Erstellung einer entsprechenden Umgebung für die Emulation einer potenziell schädlichen Anwendung eine möglichst detaillierte Nachbildung des echten OS und der darin gestarteten Anwendungen. Der Prozess der Initialisierung einer solchen Umgebung kann viel Zeit und Ressourcen fordern (das Starten des Emulationsprozesses, das Laden aller für die Initialisierung solcher virtuellen Strukturen notwendigen Daten wie Dateisystem, Register usw. von der Festplatte in den Speicher), was die Zeit für die eigentliche Emulation des Anwendungs-Codes verkürzt.
  • Gegenwärtig gibt es Ansätze zum Bewahren des Zustands einer emulierten Umgebung. Beispielsweise unterstützt der Emulator QEMU die Erstellung von Abbildungen, einschließlich derjenigen, die die Notwendigkeit der Durchführung des Prozesses des Ladens des OS ausschließen. Jedoch wird die Abbildung nur auf Anfrage des Benutzers auf der Platte festgehalten und unterstützt keine Struktur zum Bewahren einer Reihe aufgezeichneter Abbildungen. Dieser Ansatz entspricht vollständig dem Betriebsmodus eines Managers einer virtuellen Maschine.
  • Jedoch umfassen die bekannten Ansätze nicht die automatische Erstellung von Abbildungen eines emulierten Systems oder des Ausführungszustands einer emulierten Anwendung, was es ermöglichen würde, jede mögliche Abzweigung der Ausführung des Programmcodes nachzuverfolgen. Vom Standpunkt der Analyse bösartiger Programme wäre ein solcher Ansatz in der Lage, Anti-Emulations-Tricks zu umgehen.
  • Die Schöpfer von Schadprogrammen verwenden verschiedene Tricks, um eine Emulation des Programmcodes zu vereiteln, die auf Beschränkungen bezüglich des Emulationsprozesses und dem Implementieren eines Emulators in Antivirus-Lösungen beruhen können. Der Emulator erstellt eine virtuelle Kopie des Prozessors, der Computerkomponenten und des Betriebssystems (OS) nur in begrenztem Ausmaß mit eingeschränkten Fähigkeiten, da die volle Nachbildung aller Fähigkeiten der API-Funktionen eines solchen Prozessors oder Systems aus mehreren Gründen nicht möglich ist: die immense Arbeit für eine solche Entwicklung, das Vorhandensein undokumentierter Funktionen, der starke Leistungsabfall, wenn ein solcher Emulator arbeitet. Daher können die Schöpfer von Schadprogrammen auf die folgenden Ansätze zurückgreifen, um den Fall einer Ausführung in einer emulierten Umgebung zu erfassen:
    • • Das Aufrufen einer undokumentierten oder selten genutzten API-Funktion.
    • • Die Ausführung mehrerer Instruktionen des Zentralprozessors mit nachfolgender Überprüfung beispielsweise mehrerer gesetzter Flaggen. Wenn die Emulation der Prozessorbefehle nicht präzise genug ist, können mehrere Flaggen Werte haben, die sich von denen unterscheiden, die bei einer Ausführung durch den echten Prozessor gesetzt würden.
    • • Das Überprüfen der korrekten Ausführung einer API-Funktion. Das Überprüfen kann sehr kompliziert sein und eine Analyse der Fehlercodes beinhalten, die während eines inkorrekten Aufrufs oder einer Überprüfung der Werte des Prozessor-Registers erhalten werden.
    • • Die Suche nach bestimmten Bytes im Speicher. Beispielsweise eine Byte-für-Byte-Suche nach dem Dateikopf MZ im Speicher nach dem Laden von kernel32.dll beim Starten des Prozesses. In dem OS Vista 64 wird eine 64-kb-Ausrichtung für kernel32.dll verwendet, und der Bereich zwischen dem Dateikopf und dem ersten Abschnitt wird in dem Adressfeld des Prozesses nicht abgebildet. Wenn ein Zugriff darauf versucht wird, tritt eine Ausnahme auf. Wenn die Ausnahme nicht registriert wurde, wird das Standard-Ausnahme-Steuerungsprogramm des OS aufgerufen, und dies beendet den Prozess.
  • Die US 2013/0110490 A1 lehrt eine Simulationsumgebung, die Prozessorsparfunktionen in einem simulierten Prozessorkern verifiziert. Die Simulationsumgebung führt eine erste Simulation für einen simulierten Prozessorkern aus. Während der Simulation erzeugt die Simulationsumgebung eine Simulationsmodell-Dump-Datei. Zu einem späteren Zeitpunkt führt die Simulationsumgebung eine zweite Simulation für den simulierten Prozessorkern durch. Die Simulationsumgebung speichert den Status des simulierten Prozessorkerns. Anschließend ersetzt die Simulationsumgebung den Zustand des simulierten Prozessorkerns durch Laden der zuvor erzeugten Dump-Datei und stellt den Status des simulierten Prozessorkerns so ein, dass ein prozessorschonender Code ausgeführt wird, und nimmt die zweite Simulation wieder auf.
  • Kurze Beschreibung
  • Offenbart werden ein System und ein Computerprogrammprodukt zum Bewahren und anschließenden Wiederherstellen des Zustands eines Programmemulators gemäß den unabhängigen Ansprüchen 1 und 5.
  • Ein beispielartiges System zum Emulieren einer Datei in einem Computersystem kann einen Hardwareprozessor umfassen, der für Folgendes konfiguriert ist: Laden einer Datei in einen Emulator des Computersystems; Bestimmen, ob eine Emulation zum ersten Mal durchgeführt wird oder nicht; wenn die Emulation zum ersten Mal durchgeführt wird, Laden einer Initialabbildung des Emulatorzustands in den Emulator; Emulieren der Datei unter Verwendung der geladenen Initialabbildung des Emulatorzustands; Erstellen und Speichern einer oder mehrerer neuer Abbildungen des Emulatorzustands beim Auftreten einer oder mehrerer vorher bestimmter Bedingungen während der Emulation der Datei; wenn die Emulation nicht zum ersten Mal durchgeführt wird, Identifizieren einer oder mehrerer neuer Abbildungen des Emulatorzustands, die während der Initialemulation der Datei erstellt werden; Laden der einen oder der mehreren identifizierten Abbildungen des Emulatorzustands in den Emulator; und Wiederaufnehmen des Emulierens der Datei unter Verwendung der einen oder der mehreren neuen Abbildungen des Emulatorzustands.
  • Ein beispielartiges Computerprogrammprodukt, das auf einem nichtflüchtigen computerlesbaren Speichermedium gespeichert ist, kann computerausführbare Instruktionen zum Emulieren einer Datei in einem Computersystem umfassen, wobei die Instruktionen für Folgendes vorgesehen sind: Laden einer Datei in einen Emulator des Computersystems; Bestimmen, ob eine Emulation zum ersten Mal durchgeführt wird oder nicht; wenn die Emulation zum ersten Mal durchgeführt wird, Laden eines Initialbilds des Emulatorzustands in den Emulator; Emulieren der Datei unter Verwendung der geladenen Initialabbildung des Emulatorzustands; Erstellen und Speichern einer oder mehrerer neuer Abbildungen des Emulatorzustands beim Auftreten einer oder mehrerer vorher bestimmter Bedingungen während der Emulation der Datei; wenn die Emulation nicht zum ersten Mal durchgeführt wird, Identifizieren einer oder mehrerer neuer Abbildungen des Emulatorzustands, die während der Initialemulation der Datei erstellt werden; Laden der einen oder der mehreren identifizierten Abbildungen des Emulatorzustands in den Emulator; und Wiederaufnehmen des Emulierens der Datei unter Verwendung der einen oder der mehreren neuen Abbildungen des Emulatorzustands.
  • Ein entsprechendes Verfahren zum Emulieren einer Datei in einem Computersystem kann Folgendes umfassen: Laden einer Datei in einen Emulator des Computersystems; Bestimmen, ob eine Emulation zum ersten Mal durchgeführt wird oder nicht; wenn die Emulation zum ersten Mal durchgeführt wird, Laden einer Initialabbildung des Emulatorzustands in den Emulator; Emulieren der Datei unter Verwendung der geladenen Initialabbildung des Emulatorzustands; Erstellen und Speichern einer oder mehrerer neuer Abbildungen des Emulatorzustands beim Auftreten einer oder mehrerer vorher bestimmter Bedingungen während der Emulation der Datei; wenn die Emulation nicht zum ersten Mal durchgeführt wird, Identifizieren einer oder mehrerer neuer Abbildungen des Emulatorzustands, die während der Initialemulation der Datei erstellt werden; Laden der einen oder der mehreren identifizierten Abbildungen des Emulatorzustands in den Emulator; und Wiederaufnehmen des Emulierens der Datei unter Verwendung der einen oder der mehreren neuen Abbildungen des Emulatorzustands.
  • Ein technisches Ergebnis des offenbarten Systems und Computerprogramms zum Bewahren eines Emulatorzustands ist eine Verkürzung der Zeit für die Emulation einer Datei durch Laden der notwendigen Abbildungen des Emulatorzustands. Ein weiteres technisches Ergebnis ist eine Umgehung von Anti-Emulations-Tricks während der Emulation einer Datei durch das Laden der notwendigen Abbildungen des Zustands des Emulators, um die Emulation im Fall einer unrichtigen Beendigung der Emulation einer Datei fortzusetzen. Noch ein weiteres technisches Ergebnis ist die Entdeckung ungesteuerter Ausnahmen, die zu der Beendigung der Emulation führen, durch das Laden der notwendigen Abbildungen des Zustands des Emulators, um die Emulation im Fall einer unrichtigen Beendigung der Emulation einer Datei aufgrund einer ungesteuerten Ausnahme fortzusetzen.
  • Die oben stehende vereinfachte kurze Beschreibung beispielartiger Aspekte dient der Herstellung eines grundsätzlichen Verständnisses der Erfindung. Diese kurze Beschreibung ist keine umfassende Übersicht aller in Betracht gezogener Aspekte und soll weder entscheidende oder kritische Elemente aller Aspekte identifizieren noch den Schutzbereich einiger oder aller Aspekte der Erfindung umreißen. Ihr einziger Zweck liegt darin, einen oder mehrere Aspekte in vereinfachter Form als Einführung zu der nachfolgenden ausführlicheren Beschreibung der Erfindung darzustellen. Um dies zu erreichen, umfassen der eine oder die mehreren Aspekte der Erfindung die Merkmale, die in den Schutzansprüchen beschrieben und besonders hervorgehoben sind.
  • Kurze Beschreibung der Zeichnungen
  • Die beigefügten Zeichnungen, die Teil dieser Beschreibung sind, stellen einen oder mehrere beispielartige Aspekte der Erfindung dar und dienen zusammen mit der ausführlichen Beschreibung zur Erläuterung ihrer Prinzipien und Ausführungsformen.
  • 1 zeigt den Prozess des Ladens des Windows-Betriebssystems.
  • 2 ist ein Flussdiagramm, das ein entsprechendes Verfahren zum Emulieren einer Datei zeigt.
  • 3 ist ein beispielartiges Baumdigramm des Speicherns der Abbildungen des Emulatorzustands.
  • 4 stellt beispielartige Abbildungen des Zustands des Emulators in Abhängigkeit von den geladenen Prozessen dar.
  • 5 ist ein Diagramm eines beispielartigen Systems zum Emulieren einer Datei.
  • 6 ist ein Diagramm, das ein beispielartiges Mehrzweckcomputersystem darstellt, in dem die hier offenbarten Systeme und Verfahren zum Emulieren einer Datei implementiert sind.
  • Ausführliche Beschreibung
  • Beispielartige Aspekte sind hier im Kontext eines Systems und eines Computerprogrammprodukts zum Emulieren einer Datei in einem Computersystem beschrieben. Dem Durchschnittsfachmann wird klar sein, dass die folgende Beschreibung rein illustrativ und in keiner Weise einschränkend gemeint ist. Weitere Aspekte werden dem Fachmann ohne weiteres klar werden, der von dieser Offenbarung profitiert. Im Folgenden wird detailliert auf Ausführungsformen der beispielartigen Aspekte eingegangen, wie in den beigefügten Zeichnungen dargestellt. Dieselben Bezugszeichen werden, soweit möglich, in den Zeichnungen und in der folgenden Beschreibung verwendet, um dieselben oder gleichartige Gegenstände zu bezeichnen.
  • 2 ist ein Flussdiagramm, das ein entsprechendes Verfahren zum Emulieren einer Datei in einem Computersystem darstellt. In Schritt 201 kann der Start der Dateiemulation erfolgen. Es kann mehrere Varianten dafür geben, wann es notwendig ist, eine Datei zu emulieren:
    • • Die Datei ist unbekannt und muss emuliert werden, um ihre mögliche Bösartigkeit zu bestimmen;
    • • die Emulation ist notwendig, um alle möglichen Fehlercodes zu bestimmen, wenn die Emulation beispielsweise eines Anwendungs-Installers läuft;
    • • die Emulation ist notwendig, um die Funktionalität der Anwendung daraufhin zu untersuchen, wann es notwendig ist, zu bestimmen, wie die System-Aufrufe verwendet werden, die Liste der erforderlichen Drittbibliotheken usw..
  • In Schritt 202 kann bestimmt werden, ob die Emulation zum ersten Mal läuft oder nicht. Wenn die Emulation zum ersten Mal auftritt, dann kann in Schritt 203 eine Originalabbildung des Emulatorzustands erstellt werden, die die minimale erforderliche OS-Funktion umfasst, wie im Kontext von 1 oben beschrieben. Zusätzlich zu der Initialisierung der OS-Funktion kann ein Modul zum Erfassen des bösartigen Codes, des Zustands des virtuellen Dateisystems, des virtuellen Registers und des Baums virtueller Objekte in den Emulator geladen werden. Unterschiedliche Abbildungen des Zustands des Emulators können auch die in dem Speicher geladenen Prozesse (wie Prozesse wichtiger Dienste), offene Steuerungsprogramme von Ressourcen (wie Dateien) und Prozesse mit Threads, die Code ausführen (wie eine auszuführende Datei, die emuliert wird) umfassen. Dementsprechend bildet die Abbildung eine Kopie aller aufgezählten Objekte im Speicher, die für eine Speicherung im Betriebsspeicher zu bevorzugen ist, um die Vorgänge für die Speicherung und Wiederherstellung zu beschleunigen.
  • Wenn die Emulation nicht zum ersten Mal durchgeführt wird (wenn beispielsweise die Emulation einer anderen Datei vorher durchgeführt wurde), dann kann in Schritt 204 die erforderliche Abbildung des Emulatorzustands bestimmt werden, die für eine nachfolgende Emulation der Datei in Schritt 205 in den Emulator geladen wird. Das Bestimmen der erforderlichen Abbildung des Emulatorzustands wird unten beschrieben.
  • Wenn die Emulation in Schritt 206 ausgeführt wird, kann bestimmt werden, ob die notwendigen Bedingungen zur Erstellung neuer Abbildungen des Emulatorzustands erfüllt sind. Als Beispiel für solche Bedingungen können die folgenden Ereignisse genannt werden:
    • • Abzweigungen in dem Code (bedingte Sprünge).
    • • Bestimmen der Verwendung eines potenziellen Anti-Emulations-Tricks durch Signatur (wie das Aufrufen von selten verwendeten API-Funktionen mit nachfolgender Überprüfung des Ergebnisses ihrer Ausführung).
    • • Emulation einer bestimmten Zahl von Instruktionen.
    • • Periodische Erstellung von Abbildungen in vorher bestimmten Zeitintervallen.
  • Als Nächstes kann in Schritt 207 bestimmt werden, ob die Emulation erfolgreich beendet wurde oder nicht. Ein erfolgreiches Ergebnis kann in Schritt 208 entweder die Entdeckung schädlichen Verhaltens während der Emulation der ausgeführten Datei oder eine Beendigung nach Ablauf der Zeit (oder nachdem eine bestimmte Zahl von Instruktionen ausgeführt wurde) beinhalten. Eine unrichtige Beendigung des Emulationsprozesses kann eine zu schnelle Beendigung des emulierten Prozesses (mögliches Auslösen eines der Anti-Emulations-Tricks), das Fehlen der erforderlichen Bibliotheken oder eine ungesteuerte Ausnahme, die zu einer Beendigung des Prozesses führt (dies kann mit Fehlern in dem Programmcode in Verbindung stehen) beinhalten. Bei unrichtiger Beendigung des Emulationsprozesses kann in Schritt 209 die notwendige Abbildung gewählt werden, um die Emulation fortzusetzen (dies ist detaillierter im Kontext von 3 beschrieben). In Schritt 210 kann die notwendige Abbildung in den Emulator geladen werden, und die Emulation kann in Schritt 211 wiederaufgenommen werden, was zu Schritt 206 zurückführt. Somit kann ein solcher Ansatz eine richtige Beendigung der Emulation sogar für diejenigen auszuführenden Dateien ermöglichen, deren Emulation unrichtig beendet worden wäre, wenn Standard-Emulations-Verfahren verwendet worden wären.
  • 3 zeigt ein beispielartiges Baumdiagramm der Speicherung der Abbildungen des Emulatorzustands. Eine solche Baumstruktur kann Abbildungen des Emulatorzustands in Abhängigkeit von einer der folgenden Bedingungen speichern:
    • • Laden einer Abbildung der auszuführenden Datei, die emuliert werden muss, in den Speicher. Die Rückkehr zu einer solchen Abbildung lässt die Emulation der auszuführenden Datei sozusagen „bei null” wieder anfangen.
    • • Laden des erforderlichen Prozesses wie Internet Explorer in den Speicher. Die Verwendung dieser Abbildung ermöglicht eine Emulation möglicher bösartiger Dateien, die das Vorhandensein eines gestarteten Internet Explorer-Prozesses (in dessen Adressfeld ein bösartiger Code geschrieben und später ausgeführt werden kann) für ihre Ausführung erfordert.
    • • Das Auftreten bestimmter Aktionen während der Emulation des Codes der auszuführenden Datei. Während der Emulation können bedingte Sprünge auftreten, die Teil der Prüfungen auf Anti-Emulations-Tricks sein können (wenn beispielweise bestimmte Prüfungen erfolglos durchgeführt werden, beendet das emulierte Programm einfach seine Ausführung).
  • Beispielsweise können Abbildungen des Emulatorzustands auf folgende Art gespeichert werden. Abbildung Nr. 1 kann die originale Windows-Abbildung sein, die den Zustand des Systems unmittelbar nach dem Laden umfasst. Bedingung Nr. 1 kann das Laden der auszuführenden Datei in den Emulator sein, die auf Vorhandensein von bösartigem Code emuliert werden muss. Somit unterscheidet sich Abbildung Nr. 2 von Abbildung Nr. 1 dadurch, dass der emulierte Prozess bereits in den Speicher geladen wurde. Dementsprechend bestimmt die Bedingung für die Erstellung einer Abbildung auch den Unterschied zwischen den Abbildungen (wobei Informationen über die Zahl der emulierten Instruktionen, die aufgerufenen Funktionen, die Änderung der Ressourcenbeschreibungen und so weiter berücksichtigt werden). Anschließend führt die Erfüllung neuer Bedingungen zur Erstellung neuer Abbildungen. Beispielsweise ist eine Abzweigung in dem Code Bedingung Nr. 3 und kann zu der Erstellung von Abbildung Nr. 4 führen, die dem Zustand des Emulators vor der Ausführung des bedingten Sprungs in dem Code entspricht. Bedingung Nr. 4 kann ein Auslösen der Antivirus-Signatur sein, die die mögliche Verwendung von Anti-Emulations-Tricks anzeigt, was zu der Erstellung von Abbildung Nr. 5 führt. Wenn die Emulation der auszuführenden Datei in Schritt 207 unrichtig beendet wird, ermöglicht anschließend eine Bewegung entlang der Baumstruktur bewahrter Emulatorabbildungen das Laden der Abbildung des Emulatorzustands vor der unrichtigen Beendigung des Emulationsprozesses. Bei der Bewegung entlang einem solchen Baum, um eine Abbildung zu finden, geht man erst zu der Abbildung, die den Zustand des Emulators vor der unrichtigen Beendigung des Emulationsprozesses beschreibt. Wenn der Emulationsprozess wieder unrichtig beendet wird, ist es möglich, die Änderung in der Abbildung des Emulatorzustands eine Ebene höher zu laden (d. h. eine noch frühere Version des Emulatorzustands), bis man zu dem Zustand gelangt, als die emulierte Datei in den Emulator geladen wurde. Wenn die Bedingungen für die Erstellung der Abbildungen zum Beispiel einen bedingten Sprung umfassten, dann wird der Sprung beim Laden der Abbildung bei der entsprechenden Bedingung auf die andere Code-Abzweigung erfolgen. Ein Beispiel für eine Änderung des Zustands des Emulators kann sein:
    • • Springen zu dem anderen Code-Zweig bei einem bedingten Sprung;
    • • Ändern des Status von Resourcensteuerungsprogrammen (wie Dateien). In diesem Fall kann erzwungen werden, dass offene Dateien oder Verbindungen ungeschlossen bleiben.
    • • Rückgängigmachen zuvor vorgenommener Änderungen. Ein Beispiel kann das Löschen des Datenübertragungspuffers oder das Ändern des Registerpfads sein.
    • • Ändern des Rückgabewerts einer ausgeführten Funktion. Wenn beispielsweise die Ausführung einer Funktion als Ergebnis der Emulation einen Wert FALSCH rückmeldet, kann erzwungen werden, dass der Wert zu WAHR wird.
  • Es ist zu beachten, dass das Speichern von Abbildungen des Emulatorzustands am stärksten bevorzugt im Betriebsspeicher ist, um die Prozesse des Speicherns und Wiederherstellens der geladenen Abbildungen zu beschleunigen. Die Größe einer Abbildung kann von mehreren zehn Megabyte (geladenes OS) bis mehreren hundert Megabytes oder sogar Gigabytes variieren, abhängig von den geladenen Prozessen. Zur Einsparung von Betriebsspeicher können einige der Abbildungen auf einer Platte gehalten werden, oder es kann nur die Differenz (diff) zwischen Abbildungen verwendet werden, die minimal sein kann, wenn die Bedingungen zur Erzeugung der Abbildungen während der Emulation relativ oft auftreten.
  • 4 stellt beispielartige Abbildungen des Emulatorzustands in Abhängigkeit von den geladenen Prozessen dar. Beispielsweise kann das geladene Betriebssystem OS als Abbildung Nr. 1 verwendet werden, und die folgenden Abbildungen enthalten unterschiedliche geladene Prozesse wie Java, .NET, Explorer, Outlook und andere solcher Prozesse. Die Abbildungen können auch bestimmte Sätze gestarteter Prozesse enthalten, die für eine erfolgreiche Emulation bestimmter Dateien benötigt werden können, die eine Reihe von Abhängigkeiten haben. Beispielsweise erfordert die Emulation einer unbekannten Datei den virtuellen Java-Maschinenprozess, bei dem der bösartige Code (Exploit) geladen wird, und anschließend eine Schwachstelle (die möglicherweise unbekannt ist) ausgenutzt wird, während Windows-Netzwerkdienste für die nachfolgende Ausführung der bösartigen Funktion benötigt werden können.
  • 5 ist ein Diagramm eines beispielartigen Systems zum Emulieren einer Datei. Wenn es notwendig ist, eine unbekannte Datei 501 zu emulieren, kann der Emulator 503 verwendet werden, der die notwendige Abbildung mittels des Abbildungs-Ladungsmoduls 502 in den Emulator laden kann. Das Modul 502 kann die erforderliche Abbildung in der Datenbank der Abbildungen 504 auf der Grundlage der Kriterien bestimmen, die im Kontext von 3 beschrieben sind. Gleichzeitig kann der Emulator 503 auf der Grundlage einer der Bedingungen, die die Erstellung von Abbildungen erforderlich machen (wie oben diskutiert), eine Anforderung an das Abbildungs-Erstellungmodul 505 senden, eine Abbildung zu erstellen. Das Modul 505 kann eine Baumstruktur der Abbildungen des Emulatorzustands behalten, wobei die Übergänge von bestimmten Knoten des Baums zu anderen Knoten auf den angegebenen Bedingungen beruhen. Die Datenbank 504 selbst kann im Betriebsspeicher des Computers gehalten werden.
  • Die Verwendung des Systems von 5 ermöglicht die Lösung mehrerer Probleme:
    • • Beschleunigen des Ladens des Emulatorzustands, wenn auszuführende Dateien emuliert werden, da das Laden der Abbildung ein Kopiervorgang im Betriebsspeicher ist;
    • • Bestimmen möglicher Fehlercodes bei der nachfolgenden Ausführung der Anwendung (wie beim Starten eines Installers);
    • • Umgehen möglicher Anti-Emulations-Tricks, um eine bösartige Funktion zu identifizieren.
  • 6 ist ein Diagramm, das ein beispielartiges Mehrzweck-Computersytem 5 darstellt, in dem das hier offenbarte System zum Emulieren einer Datei implementiert ist. Das Computersystem 5 kann – ohne darauf beschränkt zu sein – Folgendes umfassen: Einen Personal Computer, ein Notebook, einen Tablet-Computer, ein Smartphone, einen Netzwerkserver, einen Router oder eine andere Art Verarbeitungsgerät. Wie gezeigt kann das Computersystem 5 einen oder mehrere Hardware-Prozessoren 15, Speicher 20, ein oder mehrere Festplattenlaufwerke 30, ein oder mehrere optische Laufwerke 35, eine oder mehrere serielle Schnittstellen 40, eine Grafikkarte 45, eine Audiokarte 50 und Netzwerkkarte(n) 55 umfassen, die von einem Systembus 10 verbunden werden. Der Systembus 10 kann eine beliebige von verschiedenen Busstrukturarten sein, einschließlich eines Speicherbusses oder eines Speicher-Controllers, eines Peripheriebusses und eines lokalen Busses, wobei eine beliebige einer Vielzahl von bekannten Busarchitekturen verwendet wird. Der Prozessor 15 kann einen oder mehrere Intel®Core 2 Quad 2,33 GHz-Prozessoren oder eine andere Art Mikroprozessor aufweisen.
  • Der Systemspeicher 20 kann einen permanenten Speicher (ROM) 21 und einen Arbeitsspeicher (RAM) 23 umfassen. Der Speicher 20 kann als DRAM (dynamisches RAM), EPROM, EEPROM, Flash- oder andere Art der Speicherarchitektur ausgeführt sein. Das ROM 21 speichert ein Eingabe-/Ausgabesystem (BIOS) 22, das die Grundroutinen enthält, die helfen, Informationen zwischen den Modulen des Computersystems 5 zu übertragen, beispielsweise beim Hochfahren. Das RAM 23 speichert das Betriebssystem 24 (OS), wie Windows®7 Professional oder eine andere Art von Betriebssystem, das für das Management und die Koordination der Vorgänge und die Zuweisung und das Teilen der Hardware-Ressourcen in dem Computersystem 5 verantwortlich ist. Der Speicher 20 speichert auch Anwendungen und Programme 25. Der Speicher 20 speichert auch verschiedene Laufzeitdaten 26, die von den Programmen 25 verwendet werden.
  • Das Computersystem 5 kann weiterhin ein oder mehrere Festplattenlaufwerke 30, wie SATA HDD, sowie ein oder mehrere optische Laufwerke 35 zum Lesen oder Schreiben auf einer entfernbaren optischen Platte wie einer CD-ROM, DVD-ROM oder anderen optischen Medien aufweisen. Die Laufwerke 30 und 35 und ihre angeschlossenen computerlesbaren Medien bieten eine nichtflüchtige Speicherung computerlesbarer Instruktionen, Datenstrukturen, Anwendungen und Programmodulen/Subroutinen, die hier offenbarte Algorithmen und Verfahren ausführen. Obgleich das beispielartige Computersystem 5 magnetische und optische Platten verwendet, wird dem Fachmann klar sein, dass andere Arten computerlesbarer Medien, die Daten speichern können, die einem Computersystem 5 zugänglich sind, wie Magnetcassetten, Flash-Speicherkarten, digitale Videodisks, RAMs, ROMS, EPROMs und andere Speicherarten ebenfalls in alternativen Aspekten des Computersystems 5 verwendet werden können.
  • Das Computersystem 5 umfasst weiterhin eine Vielzahl serieller Schnittstellen 40 wie einen universellen seriellen Bus (USB) zur Verbindung einer oder mehrerer Dateneingabeeinrichtungen 75, wie eine Tastatur, eine Maus, ein Touchpad und andere. Serielle Schnittstellen 40 können auch verwendet werden, um eine oder mehrere Datenausgabeeinrichtungen 80 zu verbinden, wie einen Drucker, einen Scanner und andere, sowie ein oder mehrere andere Peripheriegeräte 85 wie externe Datenspeichereinrichtungen und Ähnliches. Das System 5 kann auch eine Grafikkarte 45 wie nVidia®GeForce®GT 240M oder eine andere Videokarte umfassen, um eine Schnittstelle mit einer Anzeige 60 oder einer anderen Videowiedergabeeinrichtung wie einer Touchscreen-Anzeige zu bilden. Das System 5 kann auch eine Audiokarte 50 umfassen, um Ton über interne oder externe Lautsprecher 65 zu reproduzieren. Zusätzlich kann das System 5 eine oder mehrere Netzwerkkarten 55 umfassen, wie Ethernet, WiFi, GSM, Bluetooth, oder eine andere drahtgebundene, drahtlose oder Mobilfunknetz-Schnittstelle, um das Computersystem 5 mit einem Netzwerk 70 wie dem Internet zu verbinden.
  • In verschiedenen Aspekten können die hier beschriebenen Systeme und Verfahren in Hardware, Software, Firmware oder einer beliebigen Kombination daraus ausführt werden. Wenn sie in Software ausführt werden, können die Verfahren als eine oder mehrere Instruktionen oder als Code auf einem nichtflüchtigen computerlesbaren Medium gespeichert werden. Das computerlesbare Medium umfasst Datenspeicherung.
  • Beispielhalber und nicht im einschränkenden Sinn kann dieses computerlesbare Medium RAM, ROM, EEPROM, CD-ROM, Flash-Speicher oder andere Arten eines elektrischen, magnetischen oder optischen Speichermediums oder eines beliebigen anderen Mediums umfassen, das verwendet werden kann, um einen gewünschten Programmcode in Form von Instruktionen oder Datenstrukturen zu tragen oder zu speichern, und auf das durch einen Prozessor eines Mehrzweckcomputers zugegriffen werden kann.
  • In verschiedenen Aspekten sind die Systeme und Verfahren in dieser Offenbarung als Module beschrieben. Der Begriff „Modul”, wie er hier verwendet wird, bezeichnet ein real existierendes Gerät, eine real existierende Komponente oder eine Anordnung von Komponenten, die unter Verwendung von Hardware ausgeführt wird, beispielsweise durch einen anwendungsspezifischen integrierten Schaltkreis (ASIC) oder ein Field Programmable Gate Array (FPGA), oder als eine Kombination aus Hardware und Software wie beispielsweise durch ein Mikroprozessorsystem und einen Satz von Instruktionen zur Implementierung der Funktionalität des Moduls, die (während sie ausgeführt werden) das Mikroprozessorsystem in ein Spezialgerät umwandeln. Ein Modul kann auch als Kombination der beiden implementiert werden, wobei bestimmte Funktionen allein durch Hardware ermöglicht werden und andere Funktionen durch eine Kombination aus Hardware und Software ermöglicht werden. Bei bestimmten Ausführungsformen kann wenigstens ein Teil des Moduls und in anderen Fällen das gesamte Modul in dem Prozessor eines Mehrzweckcomputers (wie dem oben für 6 im Einzelnen beschriebenen) ausgeführt werden. Dementsprechend kann jedes Modul in einer Vielzahl geeigneter Konfigurationen verwirklicht werden und sollte nicht auf eine spezielle, hier beispielartig dargestellte Ausführungsform begrenzt werden.
  • Der Klarheit halber sind hier nicht alle Routinemerkmale der Aspekte offenbart. Es ist klar, dass bei der Entwicklung jeder tatsächlichen Ausführungsform der Erfindung zahlreiche ausführungsformspezifische Entscheidungen getroffen werden müssen, um die spezifischen Ziele des Entwicklers zu erreichen, und dass diese spezifischen Ziele bei verschiedenen Ausführungsformen und verschiedenen Entwicklern unterschiedlich sind. Es ist klar, dass ein solcher Entwicklungsaufwand komplex und zeitaufwändig sein kann, er ist aber dennoch eine Routineentwicklungsaufgabe für den Durchschnittsfachmann, der von dieser Offenbarung profitiert.
  • Weiterhin ist zu beachten, dass die hier verwendete Phraseologie oder Terminologie der Beschreibung dient und nicht einschränkend zu verstehen ist, so dass die Terminologie oder Phraseologie dieser Beschreibung vom Fachmann vor dem Hintergrund der Lehren und der Anleitung, die hierin ausgeführt sind, im Zusammenhang mit dem Wissen des Fachmanns auf dem einschlägigen Gebiet/den einschlägigen Gebieten auszulegen ist. Weiterhin ist nicht beabsichtigt, dass einem Begriff in der Beschreibung oder den Ansprüchen eine ungewöhnliche oder spezielle Bedeutung zugeschrieben werden soll, sofern dies nicht ausdrücklich vermerkt ist.
  • Die unterschiedlichen, hier offenbarten Aspekte schließen gegenwärtige und zukünftige bekannte Äquivalente der hier beispielartig genannten bekannten Module ein. Während Aspekte und Anwendungen gezeigt und beschrieben wurden, wird dem Fachmann, der von dieser Offenbarung profitiert, klar sein, dass viele weitere Modifikationen zu den oben erwähnten möglich sind, ohne von den hier offenbarten erfinderischen Konzepten abzuweichen.
  • Das erfindungsgemäße System zum Bewahren und anschließenden Wiederherstellen eines Zustands eines Programmemulators einer Antivirus-Anwendung kann durch die folgenden Verfahren angewandt werden:
    • a) Verfahren zum Emulieren einer Datei (501) in einem Computersystem (5) zur Erfassung von Schadprogrammen, wobei das Verfahren umfasst: Laden der Datei (501) in einen Emulator (503) des Computersystems (5); Bestimmen, ob eine Emulation zum ersten Mal durchgeführt wird oder nicht; wenn die Emulation zum ersten Mal durchgeführt wird, Emulieren der Datei (501) unter Verwendung einer Initialabbildung des Emulatorzustands; während der Emulation der Datei (501): Erstellen und Speichern einer oder mehrerer neuer Abbildungen des Emulatorzustands in einer Baum-Datenstruktur bei Auftreten einer oder mehrerer vorher definierter Bedingungen, die aus der Ausführung der Emulation resultieren, und Laden eines Zustands eines virtuellen Dateisystems und eines virtuellen Registers in den Emulator (503), bevor bösartige Codes in dem Computersystem (5) erfasst werden; wenn die Emulation nicht zum ersten Mal durchgeführt wird, Identifizieren einer oder mehrerer neuer Abbildungen des Emulatorzustands, der während der Initialemulation der Datei (501) erstellt wurde; und Laden der einen oder mehreren identifizierten Abbildungen des Emulatorzustands, der zum Emulieren der Datei (501) verwendet werden soll, in den Emulator (503); Bestimmen, ob die Initialemulation der Datei (501) beim Auftreten eines Anti-Emulations-Tricks richtig oder unrichtig beendet wurde; wenn die Emulation beim Auftreten eines Anti-Emulations-Tricks unrichtig beendet wurde, Navigieren entlang der Baum-Datenstruktur, um eine oder mehrere neue Abbildungen des Emulatorzustands zu identifizieren, die mit dem Emulatorzustand vor der unrichtigen Beendigung in Verbindung stehen; und Wiederaufnehmen des Emulierens der Datei (501) unter Verwendung der identifizierten einen oder mehreren neuen Abbildungen des Emulatorzustands; und wenn die Emulation richtig beendet wurde, kein Wiederaufnehmen des Emulierens der Datei (501).
    • b) Verfahren nach Absatz a), wobei die vorher definierten Bedingungen eines oder mehrere aus Folgendem umfassen: Ein Auftreten von Abzweigungen in einem Code der emulierten Datei (501), Erfassung eines Anti-Emulations-Tricks, Emulation einer vorher bestimmten Zahl von Instruktionen und ein vorher bestimmtes Zeitintervall.
    • c) Verfahren nach Absatz a), wobei die Emulation richtig bei wenigstens einem aus Folgendem beendet wird: Erfassung eines schädlichen Verhaltens der emulierten Datei (501), Emulation der Datei (501) für einen vorher bestimmten Zeitraum und Emulation einer vorher bestimmten Zahl von Instruktionen.
    • d) Verfahren nach Absatz a), wobei die Emulation unrichtig bei wenigstens einem aus Folgendem beendet wird: Auftreten eines Anti-Emulations-Tricks, Fehlen einer erforderlichen Bibliothek und Auftreten einer ungesteuerten Ausnahme, die zur Beendigung des Prozesses führt.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 2013/0110490 A1 [0011]

Claims (6)

  1. System zum Emulieren einer Datei (501) in einem Computersystem (5) zur Erfassung von Schadprogrammen, wobei das System (5) umfasst: einen Hardware-Prozessor (15), der für Folgendes konfiguriert ist: Laden der Datei (501) in einen Emulator (503) des Computersystems (5); Bestimmen, ob eine Emulation zum ersten Mal durchgeführt wird oder nicht; wenn die Emulation zum ersten Mal durchgeführt wird, Emulieren der Datei (501) unter Verwendung einer Initialabbildung des Emulatorzustands; während der Emulation der Datei (501): Erstellen und Speichern einer oder mehrerer neuer Abbildungen des Emulatorzustands in einer Baum-Datenstruktur bei Auftreten einer oder mehrerer vorher definierter Bedingungen, die aus der Ausführung der Emulation resultieren, und Laden eines Zustands eines virtuellen Dateisystems und eines virtuellen Registers in den Emulator (503), bevor bösartige Codes in dem Computersystem (5) erfasst werden; wenn die Emulation nicht zum ersten Mal durchgeführt wird, Identifizieren einer oder mehrerer neuer Abbildungen des Emulatorzustands, der während einer Initialemulation der Datei (501) erstellt wurde; und Laden der einen oder mehreren identifizierten Abbildungen des Emulatorzustands, der zum Emulieren der Datei (501) verwendet werden soll, in den Emulator (503); Bestimmen, ob die Initialemulation der Datei (501) beim Auftreten eines Anti-Emulations-Tricks richtig oder unrichtig beendet wurde; wenn die Emulation beim Auftreten eines Anti-Emulations-Tricks unrichtig beendet wurde, Navigieren entlang der Baum-Datenstruktur, um eine oder mehrere neue Abbildungen des Emulatorzustands zu identifizieren, die mit dem Emulatorzustand vor der unrichtigen Beendigung in Verbindung stehen; und Wiederaufnehmen des Emulierens der Datei (501) unter Verwendung der identifizierten einen oder mehreren neuen Abbildungen des Emulatorzustands; und wenn die Emulation richtig beendet wurde, kein Wiederaufnehmen des Emulierens der Datei (501).
  2. System nach Anspruch 1, wobei die vorher definierten Bedingungen eines oder mehrere aus Folgendem umfassen: Ein Auftreten von Abzweigungen in einem Code der emulierten Datei (501), Erfassung eines Anti-Emulations-Tricks, Emulation einer vorher bestimmten Zahl von Instruktionen und ein vorher bestimmtes Zeitintervall.
  3. System nach Anspruch 1, wobei die Emulation richtig bei wenigstens einem aus Folgendem beendet wird: Erfassung eines schädlichen Verhaltens der emulierten Datei (501), Emulation der Datei (501) für einen vorher bestimmten Zeitraum und Emulation einer vorher bestimmten Zahl von Instruktionen.
  4. System nach Anspruch 1, wobei die Emulation unrichtig bei wenigstens einem aus Folgendem beendet wird: Auftreten eines Anti-Emulations-Tricks, Fehlen einer erforderlichen Bibliothek und Auftreten einer ungesteuerten Ausnahme, die zur Beendigung des Prozesses führt.
  5. Computerprogrammprodukt, umfassend Programmcode zum Implementieren des Systems nach wenigstens einem der vorhergehenden Ansprüche 1 bis 4, wenn das Computerprogrammprodukt in einer Computereinrichtung ausgeführt wird.
  6. Computerprogrammprodukt nach Anspruch 5, das auf einem nichtflüchtigen computerlesbaren Speichermedium gespeichert ist.
DE202014011116.2U 2013-10-24 2014-04-03 System zum Bewahren und nachfolgenden Wiederherstellen eines Emulatorzustands Expired - Lifetime DE202014011116U1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
RU2013147291 2013-10-24
RU2013147291/08A RU2553056C2 (ru) 2013-10-24 2013-10-24 Система и способ сохранения состояния эмулятора и его последующего восстановления
US14/221,488 2014-03-21
US14/221,488 US9111096B2 (en) 2013-10-24 2014-03-21 System and method for preserving and subsequently restoring emulator state

Publications (1)

Publication Number Publication Date
DE202014011116U1 true DE202014011116U1 (de) 2017-12-07

Family

ID=52997074

Family Applications (1)

Application Number Title Priority Date Filing Date
DE202014011116.2U Expired - Lifetime DE202014011116U1 (de) 2013-10-24 2014-04-03 System zum Bewahren und nachfolgenden Wiederherstellen eines Emulatorzustands

Country Status (3)

Country Link
US (2) US9111096B2 (de)
DE (1) DE202014011116U1 (de)
RU (1) RU2553056C2 (de)

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2553056C2 (ru) * 2013-10-24 2015-06-10 Закрытое акционерное общество "Лаборатория Касперского" Система и способ сохранения состояния эмулятора и его последующего восстановления
WO2016203759A1 (ja) * 2015-06-16 2016-12-22 日本電気株式会社 分析システム、分析方法、分析装置及び、コンピュータ・プログラムが記憶された記録媒体
RU2634171C1 (ru) * 2016-12-12 2017-10-24 Акционерное общество "Лаборатория Касперского" Способ выполнения кода интерпретатором
US10416991B2 (en) * 2016-12-14 2019-09-17 Microsoft Technology Licensing, Llc Secure IoT device update
US10715526B2 (en) 2016-12-14 2020-07-14 Microsoft Technology Licensing, Llc Multiple cores with hierarchy of trust
US10402273B2 (en) 2016-12-14 2019-09-03 Microsoft Technology Licensing, Llc IoT device update failure recovery
US9817675B1 (en) 2017-01-31 2017-11-14 Hytrust, Inc. Methods and systems for attaching an encrypted data partition during the startup of an operating system
RU2659742C1 (ru) 2017-08-17 2018-07-03 Акционерное общество "Лаборатория Касперского" Способ эмуляции исполнения файлов, содержащих инструкции, отличные от машинных
US10691800B2 (en) * 2017-09-29 2020-06-23 AO Kaspersky Lab System and method for detection of malicious code in the address space of processes
EP3926470B1 (de) 2020-06-19 2023-08-16 AO Kaspersky Lab Emulator und emulationsverfahren

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130110490A1 (en) 2011-10-31 2013-05-02 International Business Machines Corporation Verifying Processor-Sparing Functionality in a Simulation Environment

Family Cites Families (37)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4933956A (en) 1983-04-14 1990-06-12 Codex Corporation Simplified decoding of lattices and codes
US6067410A (en) 1996-02-09 2000-05-23 Symantec Corporation Emulation repair system
US6093213A (en) * 1995-10-06 2000-07-25 Advanced Micro Devices, Inc. Flexible implementation of a system management mode (SMM) in a processor
US6795966B1 (en) * 1998-05-15 2004-09-21 Vmware, Inc. Mechanism for restoring, porting, replicating and checkpointing computer systems using state extraction
US6338147B1 (en) * 1998-10-29 2002-01-08 International Business Machines Corporation Program products for performing checkpoint/restart of a parallel program
US6415436B1 (en) * 1998-12-11 2002-07-02 Hewlett-Packard Company Mechanism for cross validating emulated states between different emulation technologies in a dynamic compiler
US6374207B1 (en) * 1999-02-10 2002-04-16 International Business Machines Corporation Methods, data structures, and computer program products for representing states of interaction in automatic host access and terminal emulation using scripts
US8805664B1 (en) * 2003-08-11 2014-08-12 The Mathworks, Inc. System and method for simulating branching behavior
US7849297B2 (en) * 2003-08-28 2010-12-07 Mips Technologies, Inc. Software emulation of directed exceptions in a multithreading processor
US7403887B1 (en) * 2004-01-14 2008-07-22 Microsoft Corporation Emulated memory management
US20060155525A1 (en) * 2005-01-10 2006-07-13 Aguilar Maximino Jr System and method for improved software simulation using a plurality of simulator checkpoints
US7328145B2 (en) * 2005-04-05 2008-02-05 Cisco Technology, Inc. Method and system for emulation of an internetwork operating system device
JP2007058731A (ja) * 2005-08-26 2007-03-08 Matsushita Electric Ind Co Ltd プロセッサ、及び並列命令実行対応デバッグ装置
US7664626B1 (en) * 2006-03-24 2010-02-16 Symantec Corporation Ambiguous-state support in virtual machine emulators
US7962798B2 (en) * 2006-04-17 2011-06-14 The Trustees Of Columbia University In The City Of New York Methods, systems and media for software self-healing
US20080127114A1 (en) * 2006-11-28 2008-05-29 Amit Vasudevan Framework for stealth dynamic coarse and fine-grained malware analysis
US20080320594A1 (en) 2007-03-19 2008-12-25 Xuxian Jiang Malware Detector
US8011010B2 (en) 2007-04-17 2011-08-30 Microsoft Corporation Using antimalware technologies to perform offline scanning of virtual machine images
US8296119B2 (en) * 2007-11-05 2012-10-23 Cadence Design Systems, Inc. Saving and restarting discrete event simulations
US8370932B2 (en) * 2008-09-23 2013-02-05 Webroot Inc. Method and apparatus for detecting malware in network traffic
US9177144B2 (en) * 2008-10-30 2015-11-03 Mcafee, Inc. Structural recognition of malicious code patterns
US7673201B1 (en) * 2009-03-12 2010-03-02 Xilinx, Inc. Recovering a prior state of a circuit design within a programmable integrated circuit
US7603713B1 (en) 2009-03-30 2009-10-13 Kaspersky Lab, Zao Method for accelerating hardware emulator used for malware detection and analysis
US20110041179A1 (en) 2009-08-11 2011-02-17 F-Secure Oyj Malware detection
US8635395B2 (en) * 2009-09-14 2014-01-21 Vmware, Inc. Method of suspending and resuming virtual machines
US8832829B2 (en) 2009-09-30 2014-09-09 Fireeye, Inc. Network-based binary file extraction and analysis for malware detection
RU101235U1 (ru) * 2010-03-02 2011-01-10 Закрытое акционерное общество "Лаборатория Касперского" Система проверки на присутствие вредоносного программного обеспечения с изменяемыми настройками проверки
US20110219449A1 (en) * 2010-03-04 2011-09-08 St Neitzel Michael Malware detection method, system and computer program product
US8898509B2 (en) * 2010-05-18 2014-11-25 Vmware, Inc. Policy-based checkpointing fault tolerance across remote virtual machines
US8832836B2 (en) 2010-12-30 2014-09-09 Verisign, Inc. Systems and methods for malware detection and scanning
US8418099B2 (en) 2011-03-08 2013-04-09 Oracle International Corporation Performance counters for integrated circuits
US20120246630A1 (en) * 2011-03-23 2012-09-27 Secure By Design System and Method for Automating Installation and Updating of Third Party Software
US9665266B2 (en) 2011-10-27 2017-05-30 Blackberry Limited Setting reminders from an instant messaging application
US9514507B2 (en) * 2011-11-29 2016-12-06 Citrix Systems, Inc. Methods and systems for maintaining state in a virtual machine when disconnected from graphics hardware
JP5991211B2 (ja) * 2012-05-25 2016-09-14 富士通株式会社 シミュレーション方法、およびシミュレーションプログラム
RU2514141C1 (ru) 2012-09-28 2014-04-27 Закрытое акционерное общество "Лаборатория Касперского" Способ эмуляции вызовов системных функций для обхода средств противодействия эмуляции
RU2553056C2 (ru) * 2013-10-24 2015-06-10 Закрытое акционерное общество "Лаборатория Касперского" Система и способ сохранения состояния эмулятора и его последующего восстановления

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130110490A1 (en) 2011-10-31 2013-05-02 International Business Machines Corporation Verifying Processor-Sparing Functionality in a Simulation Environment

Also Published As

Publication number Publication date
US20150121531A1 (en) 2015-04-30
US9740864B2 (en) 2017-08-22
US9111096B2 (en) 2015-08-18
RU2013147291A (ru) 2015-04-27
RU2553056C2 (ru) 2015-06-10
US20150294112A1 (en) 2015-10-15

Similar Documents

Publication Publication Date Title
DE202014011116U1 (de) System zum Bewahren und nachfolgenden Wiederherstellen eines Emulatorzustands
RU2637997C1 (ru) Система и способ обнаружения вредоносного кода в файле
US9117079B1 (en) Multiple application versions in a single virtual machine
US10078577B2 (en) Policy compliance of container images
US9063766B2 (en) System and method of manipulating virtual machine recordings for high-level execution and replay
JP2018041438A5 (de)
KR101806090B1 (ko) 멀웨어 검출을 위한 애플리케이션들의 제네릭 언패킹
US20110225459A1 (en) Generating a debuggable dump file for a virtual machine
RU2514142C1 (ru) Способ повышения эффективности работы аппаратного ускорения эмуляции приложений
US10546144B2 (en) Dynamically excluding sensitive information from system snapshot
CN105678160A (zh) 用于提供对引导驱动程序的原始例程的访问的***和方法
US10275595B2 (en) System and method for characterizing malware
WO2019047510A1 (zh) IOS平台隐藏dylib文件的方法、存储介质、电子设备及***
CN113821297B (zh) 仿真器和仿真方法
US20140298002A1 (en) Method and device for identifying a disk boot sector virus, and storage medium
US20170091067A1 (en) Using core files to develop diagnostic programs
DE202013103358U1 (de) Selektive Einschätzung der Schädlichkeit von im Adressraum eines vertrauenswürdigen Prozesses ausgeführtem Software-Code
CN104794407A (zh) 一种基于kvm的虚拟机文件强制访问控制方法及***
EP3293660A1 (de) System und verfahren zur detektion bösartiger codes in dateien
US20240202338A1 (en) Method and a system for detecting malware activity in a .net platform
RU2815242C1 (ru) Способ и система перехвата .net вызовов посредством патчей на промежуточном языке
US11609993B2 (en) Emulator and emulation method
Galli An Introduction to Fuzzing and a Direct Application to the Real World
Dumstorff Virtualize A Piece Of Evidence Or Mount Its Partition With Linux
EP2866167A1 (de) System und Verfahren zur Konservierung und anschließenden Wiederherstellung eines Emulatorzustands

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: V. FUENER EBBINGHAUS FINCK HANO, DE

R150 Utility model maintained after payment of first maintenance fee after three years
R207 Utility model specification
R151 Utility model maintained after payment of second maintenance fee after six years
R152 Utility model maintained after payment of third maintenance fee after eight years
R071 Expiry of right