-
Gebiet der Erfindung
-
Das Gebrauchsmuster betrifft allgemein die Informationsverarbeitungs- und Kommunikationstechnologien und insbesondere eine Computersicherheitsvorrichtung zur Einschätzung, ob ein Stück Code (d. h. Programmanweisungen), das dafür ausgelegt ist, im Adressraum eines vertrauenswürdigen Prozesses ausgeführt zu werden, schädlichen Code enthält.
-
Hintergrund der Erfindung
-
Mit der Ausdehnung der Anwendungsgebiete für Computereinrichtungen wächst auch die Anzahl verschiedener Schadprogramme, wie etwa Netzwerkwürmer, Trojaner-Programme und Computerviren. Im Allgemeinen besteht der Zweck eines Schadprogramms darin, die Kontrolle über ein Computersystem zu erlangen, um Aktionen wie beispielsweise den Diebstahl von vertraulichen Informationen auszuführen.
-
Bei einem der zum Detektieren von Schadprogrammen verwendeten Ansätze wird das Verhalten von Anwendungen analysiert. Dieser Ansatz basiert auf dem Abfangen von durch eine Anwendung aufgerufenen Funktionen und auf ihrer nachfolgenden Untersuchung. Bei der Untersuchung werden verschiedene verdächtige Aktionen entdeckt, wie etwa ein Versuch des Zugriffs auf Systemdateien durch einen nicht vertrauenswürdigen Prozess (beispielsweise einen Prozess, der von einer Datei aus gestartet wurde, die in dem System vor relativ kurzer Zeit erschienen ist).
-
Herkömmliche Ansätze dieses Typs zum Detektieren von Schadprogrammen neigen dazu, eine wesentliche Unzulänglichkeit aufzuweisen. Diese Unzulänglichkeit ist darauf zurückzuführen, dass der schädliche Code beispielsweise unter Verwendung von Programm- oder Betriebssystemanfälligkeiten im Adressraum eines vertrauenswürdigen Prozesses implementiert werden kann, um Threads zu erzeugen oder um inmitten der existierenden Prozess-Threads gestartet zu werden, die im Namen und auf der Privilegierungsebene dieses Prozesses ausgeführt werden. In diesem Fall wird der durch den schädlichen Code initiierte und oben beispielhaft erörterte Versuch des Zugriffs auf die Systemdateien nicht als verdächtig angesehen, weil er im Namen eines vertrauenswürdigen Prozesses ausgeführt wird. Die Schadprogramme, die das oben beschriebene Infektionsmuster verwenden, sind auf dem Gebiet als Exploits bekannt.
-
Ein Beispiel für einen vertrauenswürdigen Prozess, in dessen Namen ein schädlicher Code ausgeführt werden kann, ist svchost.exe – ein Prozess in der Microsoft Windows®-Betriebssystemfamilie für aus dynamischen Bibliotheken geladene Dienste. In einem Betriebssystem können mehrere Kopien dieses Prozesses für jeden der in einem speziellen Teilbereich der Systemregistrierung registrierten Dienste gestartet werden. Wenn ein Schadprogramm sich erfolgreich als ein derartiger Dienst registriert, wird der schädliche Programmcode dann im Adressraum von einem der svchost.exe-Prozesse ausgeführt.
-
Ein Browserprozess kann als ein weiteres Beispiel für einen vertrauenswürdigen Prozess angesehen werden, der traditionell durch Schadprogramme ausgenutzt wird. Ein schädlicher Code, der sich auf einer Seite befindet, die vom Benutzer besucht wird, kann automatisch heruntergeladen und im Adressraum des Browserprozesses gestartet werden, wenn Anfälligkeiten vorhanden sind.
-
Es sind eine Reihe von Lösungen vorgeschlagen worden, die dazu bestimmt sind, einen schädlichen Code zu detektieren, der das oben erörterte Infektionsmuster verwendet.
-
Beispielsweise wird bei einem Ansatz, wie in dem
US-Patent Nr. 7 228 563 geoffenbart, wenn eine kritische Funktion (beispielsweise eine Funktion zur Erzeugung eines neuen Prozesses) aufgerufen wird, die Adresse des diese Funktion aufrufenden Codes im Speicher bestimmt. Wenn der Aufruf-Code sich nicht in dem Speicherbereich befindet, in dem die Speicherung von ausführbarem Code erlaubt ist, wird das Aufrufen der Funktion als verdächtig angesehen und zwingend beendet. Der nicht-ausführbare Speicherbereich kann insbesondere ein Bereich des dynamisch zugewiesenen Speichers (eines Heaps) im virtuellen Adressraum eines Prozesses sein. Dieser Bereich wird verwendet, um durch einen Prozess dynamisch erzeugte Datenobjekte in dem für den Prozess zugewiesenen Speicher zu platzieren. Da der oben erwähnte Bereich Daten enthält, ist das Vorhandensein eines ausführbaren Codes in diesem Bereich untypisch und wird als verdächtig angesehen.
-
Ein weiterer Ansatz, wie in dem
US-Patent Nr. 8 230 499 geoffenbart, ist dazu bestimmt, einen schädlichen Code zu detektieren, der im Adressraum eines Browserprozesses ausgeführt wird. Beim Abfangen einer Download-Funktion (beispielsweise UrlDownloadToFileA, UrlDownloadToFileW, UrlDownloadToCacheFileA und UrlDownloadToCacheFileW) wird die Rücksprungadresse der aufgerufenen Funktion bestimmt; wenn die Rücksprungadresse sich in einem Heap befindet, wird der Download verboten.
-
Es sollte beachtet werden, dass, wenn die oben erwähnten Ansätze verwendet werden, der schädliche Code nicht detektiert wird, wenn er sich im ausführbaren Bereich eines Adressraums befindet. Außerdem ist das Verifizieren der Aufrufe kritischer Funktionen für alle Prozesse ohne Ausnahmen eine ressourcenverzehrende Aufgabe und kann zum ”Einfrieren” der vom Benutzer betriebenen Anwendungen führen.
-
Es wird daher eine Lösung benötigt, die Unzulänglichkeiten wie die oben erörterten behebt, während sie eine effektive und effiziente Detektion von schädlichem Code bereitstellt.
-
Kurzfassung der Erfindung
-
Die vorliegende Erfindung ist auf ein System zur Detektion von schädlichem Code gerichtet, der in mit bekannten Programmen assoziierte Prozesse injiziert wurde. Das System umfasst eine Datenverarbeitungseinrichtung, die eine Vielzahl von Datenverarbeitungsressourcen einschließlich einer Datenverarbeitungshardware und eines auf der Datenverarbeitungshardware ausgeführten Betriebssystems und eine Vielzahl von Programmen umfasst, die eine Schnittstelle mit den Datenverarbeitungsressourcen bilden und als Prozesse ausführbar sind, die einen oder mehrere Threads aufweisen, wobei die Datenverarbeitungshardware dafür ausgelegt ist, einen Satz von Anweisungen auszuführen, ihn in einem nichtflüchtigen Speichermedium zu speichern, und die Datenverarbeitungshardware zu veranlassen, einen Satz von Modulen zu implementieren, wobei unter der Modulen
ein Prozessüberwachungsmodul dafür ausgelegt ist, auf der Datenverarbeitungshardware ausgeführte aktive Prozesse zu detektieren,
ein Prozessauswahlmodul dafür ausgelegt ist, aus den durch das Prozessüberwachungsmodul überwachten Prozessen nur diejenigen Prozesse auszuwählen, die empfängliche Prozesse sind, wobei das Prozessauswahlmodul dafür ausgelegt ist, die empfänglichen Prozesse basierend auf vordefinierten Prozessauswahlkriterien auszuwählen,
ein Funktionsaufrufverfolgungsmodul dafür ausgelegt ist, Funktionsaufrufe zu verfolgen, die durch Threads von jedem der durch das Prozessauswahlmodul ausgewählten empfänglichen Prozesse vorgenommen wurden,
ein Modul zum Abfangen von Aufrufen kritischer Funktionen dafür ausgelegt ist, aus den verfolgten Funktionsaufrufen nur diejenigen Funktionsaufrufe zu identifizieren, die Aufrufe kritischer Funktionen sind, wobei das Modul zum Abfangen von Aufrufen kritischer Funktionen dafür ausgelegt ist, die Aufrufe kritischer Funktionen basierend auf Kriterien zur Bestimmung kritischer Funktionen zu identifizieren, und
ein Analysemodul dafür ausgelegt ist, für jeden identifizierten Aufruf einer kritischen Funktion Programmanweisungen zu identifizieren, die diesen Aufruf einer kritischen Funktion verursacht haben, und die Schädlichkeit der Programmanweisungen basierend auf einem vorherbestimmten Satz von Analysekriterien einzuschätzen.
-
Bevorzugte Ausführungsformen der Erfindung sind in den Ansprüchen 2 bis 15 geoffenbart.
-
Das System der vorliegenden Erfindung erlaubt die Bereitstellung eines Verfahrens zur Detektion von schädlichem Code, der in mit bekannten Programmen assoziierte Prozesse injiziert wurde. Das Verfahren umfasst:
- • Überwachung der Ausführung von Prozessen auf der Datenverarbeitungshardware;
- • Auswahl aus den Prozessen, die überwacht werden, nur derjeniger Prozesse, die empfängliche Prozesse sind, wobei die Auswahl auf vordefinierten Prozessauswahlkriterien basiert;
- • Verfolgung für jeden der ausgewählten empfänglichen Prozesse von Funktionsaufrufen, die durch Threads des Prozesses vorgenommen wurden;
- • Identifizierung aus den verfolgten Funktionsaufrufen nur derjeniger Funktionsaufrufe, die Aufrufe kritischer Funktionen sind, wobei die Identifizierung der Aufrufe kritischer Funktionen auf Kriterien zur Bestimmung kritischer Funktionen basiert;
- • Identifizierung für jeden identifizierten Aufruf einer kritischen Funktion von Programmanweisungen, die den Aufruf der kritischen Funktion verursacht haben, und
- • Einschätzung der Schädlichkeit der Programmanweisungen basierend auf vordefinierten Einschätzungskriterien.
-
Kurze Beschreibung der Zeichnungen
-
Die Erfindung lässt sich bei Betrachtung der folgenden ausführlichen Beschreibung verschiedener Ausführungsformen der Erfindung in Verbindung mit den beigefügten Zeichnungen vollständiger verstehen, wobei
-
1A ein Blockdiagramm ist, das ein typisches Beispiel für einen virtuellen Adressraum eines Prozesses veranschaulicht;
-
1B ein Blockdiagramm ist, das ein typisches Beispiel für eine Abfolge von Aufrufen veranschaulicht, die im Namen eines nicht durch einen Exploit infizierten Prozesses durchgeführt wurden;
-
1C ein Blockdiagramm ist, das ein typisches Beispiels für Aufrufe veranschaulicht, die im Namen eines durch einen Exploit infizierten Prozesses durchgeführt wurden;
-
2 ein Strukturdiagramm ist, das ein computerimplementiertes System zur Einschätzung der Schädlichkeit eines im Adressraum eines vertrauenswürdigen Prozesses ausgeführten Stücks Code gemäß einer Ausführungsform der vorliegenden Erfindung veranschaulicht;
-
3 ein Blockdiagramm ist, das ein Beispiel für einen Aufrufstapel und die Ausführung von assoziiertem Code veranschaulicht;
-
4 ein Flussdiagramm ist, das ein beispielhaftes maschinenimplementiertes Verfahren zur Einschätzung der Schädlichkeit eines im Adressraum eines vertrauenswürdigen Prozesses ausgeführten Stücks Code veranschaulicht; und
-
5 ein Blockdiagramm ist, das ein Beispiel für ein Allzweck-Computersystem veranschaulicht, das nach seiner Konfigurierung gemäß der hierin beschriebenen Architektur gemäß verschiedenen Aspekten der Erfindung zu einer Spezialvorrichtung gemacht worden ist, mit der Aspekte der Erfindung ausgeführt werden.
-
Obwohl verschiedene Modifikationen und alternative Formen der Erfindung möglich sind, wurden Einzelheiten von dieser anhand von Beispielen in den Zeichnungen gezeigt und werden ausführlich beschrieben. Es versteht sich jedoch, dass die Absicht nicht darin besteht, die Erfindung auf die beschriebenen speziellen Ausführungsformen zu beschränken. Stattdessen soll die Erfindung alle Modifikationen, Äquivalente und Alternativen abdecken, die in den Gedanken und Schutzumfang der Erfindung wie durch die angefügten Ansprüche definiert fallen.
-
Detaillierte Beschreibung der bevorzugten Ausführungsformen
-
Ein Prozess kann als ein Verbund von Ressourcen betrachtet werden, die zur Ausführung eines Programmcodes erforderlich sind. Ein Prozess weist einen virtuellen Adressraum auf, von dem ein Beispielstrukturdiagramm in 1 veranschaulicht ist. In den virtuellen Adressraum eines Prozesses 100 wird eine ausführbare Datei projiziert, aus der der Prozess (in dem Beispiel, das erörtert wird, ist es die Datei iexplore.exe des Webbrowsers Internet Explorer) sowie die zu ihm gehörigen dynamisch gelinkten Bibliotheken (DLLs) geladen werden. Außerdem speichert der Adressraum des Prozesses Datenstrukturen, wie etwa einen Stapel und einen Heap, die nachstehend detaillierter erörtert werden. Jeder Prozess enthält wenigstens einen Thread. Ein Thread verwendet Systemressourcen (beispielsweise Dateien, Systemregistrierungsschlüssel, Synchronisationsobjekte) und den Adressraum des Prozesses. Die Ausführung eines Programmcodes erfolgt über die Prozess-Threads.
-
Die in 1B und 1C gezeigten Beispiele veranschaulichen den Unterschied zwischen einer Abfolge der Aufrufe, die im Namen eines Prozesses durchgeführt wurden, der keinen Exploit enthält, und der Abfolge der Aufrufe, die im Namen des gleichen Prozesses durchgeführt wurden, der einen Exploit enthält. Wie aus dem in 1C gezeigten Beispiel ersichtlich, wird in einem gewissen Stadium die Kontrolle an einen in einem Heap befindlichen ausführbaren Code übertragen. Alle nachfolgenden Aufrufe werden durch den Exploit im Namen des beispielhaften Prozesses, iexplore.exe, durchgeführt, um die schädliche Funktionalität zu implementieren. Gemäß den Ansätzen gemäß bestimmten Aspekten der Erfindung repräsentiert die Übertragung der Kontrolle an einen in einem Heap befindlichen ausführbaren Code ein Kriterium, das die Schädlichkeit des Codes anzeigt. Daher erleichtert die Verwendung von hierin beschriebenen Ansätzen die rechtzeitige Detektion eines schädlichen Stücks Code und verhindert die Realisierung seiner schädlichen Funktionalität.
-
2 ist ein Strukturdiagramm, das eine Systemarchitektur zur Einschätzung der Schädlichkeit eines im Adressraum eines vertrauenswürdigen Prozesses ausgeführtem Stücks Code veranschaulicht. Eine Liste von Prozessen 210, die in einem beliebigen Moment in einem Betriebssystem ausgeführt werden, umfasst typischerweise einige Dutzend (oder möglicherweise mehr) Prozesse, abhängig von der Anzahl gestarteter Anwendungen. Es sollte beachtet werden, dass 2 ein vereinfachtes Beispiel für eine Liste von Prozessen zeigt, die ausgeführt werden. Die gleichen Prinzipien gelten für einen größeren und unterschiedlicheren Satz von Prozessen.
-
Das Analysieren von jedem einzelnen Prozess auf das Vorhandensein von schädlichem Code ist eine ressourcenverzehrende Aufgabe, deren Ausführung zu wahrgenommenem langsamen Betrieb des Computersystems oder zur Nichtansprechbarkeit, d. h. zum ”Einfrieren”, von Anwendungen in verschiedenen Stadien ihres Betriebs führen kann. Zur Lösung des oben erwähnten Problems beinhaltet ein Aspekt der vorliegenden Erfindung das selektive Abzielen der Analyse auf Prozesse, von denen bestimmt wird, dass sie empfängliche Prozesse sind, d. h. jene Prozesse, für die die Anwesenheit eines schädlichen Codes im Adressraum als am wahrscheinlichsten angesehen wird.
-
Demgemäß wird eine Anordnung von Modulen, die nachstehend detaillierter beschrieben werden, bereitgestellt. Der Ausdruck Modul wie hierin verwendet bedeutet eine Einrichtung, Komponente oder Anordnung von Komponenten der realen Welt, die unter Verwendung von Hardware, wie etwa beispielsweise durch eine anwendungsspezifische integrierte Schaltung (ASIC) oder eine im Feld programmierbare Gatter-Anordnung (FPGA), oder als eine Kombination aus Hardware und Software, wie etwa durch ein Mikroprozessorsystem und einen Satz von Programmanweisungen, die das Modul für eine Implementierung der speziellen Funktionalität anpassen, implementiert ist, die (während sie ausgeführt werden) das Mikroprozessorsystem in eine Spezialeinrichtung verwandeln. Ein Modul kann auch als eine Kombination aus den beiden implementiert sein, wobei gewisse Funktionen durch Hardware allein erleichtert werden und andere Funktionen durch eine Kombination aus Hardware und Software erleichtert werden. Bei bestimmten Implementierungen kann wenigstens ein Teil und in einigen Fällen alles eines Moduls auf dem Prozessor (den Prozessoren) eines Computers oder mehrerer Computer (z. B. Cluster-Knoten) ausgeführt werden, die ein Betriebssystem, Systemprogramme und Anwendungsprogramme, einschließlich Cluster-Datenverarbeitungsoperationen, ausführen, während sie auch unter Verwendung von Multitasking, Multithreading, gegebenenfalls verteilter Verarbeitung (z. B. Cloud) oder anderer derartiger Techniken das Modul implementieren. Demgemäß kann jedes Modul in vielfältigen geeigneten Konfigurationen realisiert sein und sollte im Allgemeinen nicht auf irgendeine hierin exemplifizierte spezielle Implementierung beschränkt werden, wenn nicht solche Beschränkungen ausdrücklich genannt werden.
-
Prozesse, die auf der Datenverarbeitungs-Hardware ausgeführt werden, werden durch ein Prozessüberwachungsmodul 220 überwacht. Bei einem Ansatz detektiert das Prozessüberwachungsmodul 220 das Starten eines Prozesses und erzeugt einen Zeiger zu dem Adressraum dieses Prozesses oder stellt irgendeine andere geeignete Anzeige jedes Prozesses, der in dem Betriebssystem ausgeführt wird, bereit. Das Prozessüberwachungsmodul 220 umfasst ein Prozessauswahlmodul 225, das einen Prozess auf der Basis gewisser Charakteristika entweder als analysierenswert oder als nicht analysierenswert klassifiziert. Diejenigen Prozesse, die analysierenswert sind, sind im Allgemeinen Prozesse, die empfänglicher für die Einfügung von Schadsoftware sind. Bei einer verwandten Ausführungsform werden die Prozessauswahlkriterien zum Detektieren und Auswählen empfänglicher Prozesse in einer Prozessauswahlkriteriendatenbank 230 gespeichert. Beispiele für solche Charakteristika werden nachstehend erörtert.
-
Wie oben bemerkt, kann die Infiltration eines schädlichen Codes in den Adressraum eines Prozesses durch Ausnutzung einer Anfälligkeit in einer Anwendung durchgeführt werden. Dies ist der Grund, warum bei einer spezifischen Ausführungsform der vorliegenden Erfindung die Tatsache, dass ein Prozess zu einer bekannten anfälligen Anwendung gehört, ein Charakteristikum eines empfänglichen Prozesses darstellt.
-
Bei einer anderen spezifischen Ausführungsform der Erfindung kann ein Charakteristikum eines empfänglichen Prozesses durch die Tatsache repräsentiert sein, dass der Prozess zu einer Anwendung gehört, die Netzwerkverbindungen aufbaut (beispielsweise ein Webbrowser), weil Anwendungen dieses Typs am häufigsten durch Schadprogramme ausgenutzt werden.
-
Zusätzlich kann die in einer Anwendung bereitgestellte Fähigkeit zur Erzeugung von Kindprozessen (beispielsweise Prozessen zum Herunterladen und Installieren von Aktualisierungen, Prozessen für neue Tabs in verschiedenen Browser-Versionen) durch ein Schadprogramm verwendet werden, um die schädliche Funktionalität zu implementieren. Daher kann ein weiteres Charakteristikum eines empfänglichen Prozesses durch die Tatsache repräsentiert sein, dass der Prozess zu einer Anwendung gehört, die die Fähigkeit aufweist, Kindprozesse zu erzeugen.
-
Weitere Charakteristika eines empfänglichen Prozesses können sein: die Tatsache, dass der Prozess zu einer populären Anwendung gehört (je populärer die Anwendung ist, umso aktiver suchen Angreifer üblicherweise nach ihren Anfälligkeiten, um sie auszunutzen), und die Tatsache, dass der Prozess zu einer Anwendung gehört, deren Größe einen eingestellten Wert überschreitet (je größer die Anwendung ist, umso mehr Anfälligkeiten weist sie üblicherweise auf).
-
Ein weiteres Charakteristikum eines empfänglichen Prozesses kann die Tatsache sein, dass der Prozess zu einer Anwendung gehört, die ohne Verwendung eines Dateimanagers gestartet wurde. Ein Dateimanager (beispielsweise Windows Explorer) implementiert eine grafische Benutzerschnittstelle zum Arbeiten mit einem Betriebssystem (Starten von Anwendungen, Arbeiten mit Dateien und der Systemregistrierung etc.). Daher bedeutet das Starten einer Anwendung ohne die Verwendung eines Dateimanagers, dass die Anwendung nicht auf Initiative des Benutzers gestartet wurde, was ein verdächtiger Umstand ist.
-
Nachdem das Prozessauswahlmodul 225 empfängliche Prozesse im System detektiert hat, übermittelt es die Bezeichner dieser Prozesse an das Modul 245 zum Abfangen von Aufrufen kritischer Funktionen. Das Modul 245 zum Abfangen von Aufrufen kritischer Funktionen ist dazu bestimmt, unter den Aufrufen aller durch jeden empfänglichen Prozess durchgeführten Funktionen, die durch das Funktionsaufrufverfolgungsmodul 240 verfolgt werden, die Aufrufe kritischer Funktionen abzufangen. Bei dieser Ausführungsform ist eine kritische Funktion eine Funktion, die mit schädlichem Code assoziiert ist, der im Adressraum eines empfänglichen Prozesses ausgeführt wird. Im Allgemeinen muss ein Stück Schadcode zur Implementierung seiner Funktionalität einen neuen Prozess oder einen neuen Thread erzeugen. Daher werden bei einer Ausführungsform die Funktion zur Erzeugung eines neuen Prozesses (CreateProcess) und die Funktionen zur Erzeugung eines neuen Threads (CreateThread/CreateRemoteThread) als kritisch angesehen.
-
Für gewisse Typen empfänglicher Prozesse kann es weitere Beispiele für kritische Funktionen geben. Wenn beispielsweise ein Prozess, der zu einer Anwendung gehört, deren Funktionalität nicht die Erzeugung von ausführbaren Dateien beinhaltet (beispielsweise Adobe Reader), eine Funktion zum Schreiben einer ausführbaren Datei durchführt (z. B. WriteFile), ist eine derartige Funktion auch kritisch.
-
Die Information darüber, welche durch einen empfänglichen Prozess aufgerufenen Funktionen als kritisch angesehen werden sollten, wird durch das Modul 245 zum Abfangen von Aufrufen kritischer Funktionen von der Datenbank 250 für kritische Funktionen empfangen.
-
Wenn durch das Modul 245 zum Abfangen von Aufrufen kritischer Funktionen unter den Aufrufen aller durch einen empfänglichen Prozess durchgeführten Funktionen eine kritische Funktion abgefangen worden ist, wird die Information über den Aufruf einer derartigen Funktion zusammen mit dem Bezeichner des Prozesses, der den Aufruf getätigt hat, zu dem Analysemodul 260 übermittelt. Das Analysemodul 260 führt die Analyse des empfangenen Aufrufstapels durch, um den ausführbaren Code zu identifizieren, der den Aufruf jener Funktion initiiert hat. Die Verfahrensweise zum Analysieren eines Aufrufstapels wird nachstehend detaillierter erörtert. Nach Identifizierung der Adresse des ausführbaren Codes, der den Aufruf der kritischen Funktion initiiert hat, schätzt das Analysemodul 260 die Schädlichkeit des Codes basierend auf einer Anzahl von Kriterien ein, wobei Informationen über diese in der Datenbank 270 für Kriterien gespeichert sind.
-
Abhängig von der Ausführungsform der Erfindung können die Kriterien zum Einschätzen der Schädlichkeit eines Stücks Code einschließen:
- – die Tatsache, dass sich der ausführbare Code in einem Heap befindet;
- – die Tatsache, dass der Code Anweisungen enthält, die typisch für Exploits sind (beispielsweise Anweisungen, die von einem Exploit verwendet werden, um seine Adresse zu bestimmen. Für Prozessoren mit x86-Architektur können derartige Anweisungen beispielsweise die folgende Form annehmen: call $ + 5; pop <reg>);
- – die Tatsache, dass der Code Charakteristika eines positionsunabhängigen Codes enthält. Das Vorhandensein derartiger Charakteristika ist typisch für Exploits, weil ein positionsunabhängiger Code in irgendeinem Speicherbereich des ausgenutzten Programms implementiert werden kann. Arbeiten mit dem Mechanismus zur strukturierten Ausnahmebehandlung (SEH) und Analyse des Exports von Bibliotheken können Beispiele für derartige Charakteristika sein;
- – die Tatsache, dass der Code Operationscodes (Opcodes) enthält, die typisch für einen Datenabgleich sind;
- – die Tatsache, dass der Code kodierte Hashes aus Funktionsnamen enthält.
-
Bei einer spezifischen Ausführungsform für diese Erfindung erfolgt die Einschätzung der Schädlichkeit des Codes, der einen Aufruf der Funktion zur Erzeugung eines neuen Prozesses (CreateProcess) initiiert hat, basierend auf den Tatsachen und Umständen, die den Empfang der Datei umgeben. Es folgen Beispiele für die Kriterien zur Einschätzung der Verdächtigkeit der Datei, die gestartet wird:
- – die Quelle, von der die Datei empfangen wird. Die Tatsache, dass die Datei beispielsweise von einer schädlichen Webseite empfangen wurde, kann bedeuten, dass der Code, der ausgeführt wird, schädlich ist. In diesem Fall kann die Datenbank 270 eine Liste derartiger Quellen speichern;
- – die Tatsache, dass der Benutzer in das Herunterladen der Datei involviert war. Angreifer nutzen häufig die sogenannte ”Drive-by-Download”-Technologie, bei der das Starten eines schädlichen Objektes auf dem Computer eines Benutzers auf dessen automatisches Herunterladen von einer vom Benutzer besuchten Webseite folgt. In diesen Fall ist es für das Herunterladen und das Starten des schädlichen Objektes nicht erforderlich, dass der Benutzer/die Benutzerin irgendwelche Maßnahmen ergreift oder seine/ihre Zustimmung bestätigt. Aus diesem Grund wird eine Datei, die ohne direkte Beteiligung des Benutzers heruntergeladen wurde, als verdächtig angesehen, genauso wie der von einer derartigen Datei geladene Code;
- – die Zeitspanne, die von dem Moment, in dem die Datei assembliert worden ist, bis zu dem Moment, in dem sie auf dem Computer des Benutzers erscheint, verstrichen ist. Die Besonderheiten der Erzeugung von Exploits erfordern, dass so wenig Zeit wie möglich von dem Moment, in dem der Angreifer eine Anfälligkeit in einer Software entdeckt, bis zu dem Moment, in dem ein diese Anfälligkeit ausnutzender schädlicher Code auf dem Computer des Benutzers gestartet wird, verstreicht; (ansonsten kann der Software-Hersteller eine Korrektur an der Anfälligkeit vornehmen, was eine erfolgreiche Attacke weniger wahrscheinlich macht). Aus diesem Grund werden zur Beschleunigung der Attacke die schädlichen Dateien, die Anfälligkeiten nutzen, üblicherweise nicht geprüft. Daher ist für die schädlichen Dateien die Zeitspanne, die von dem Moment der Assemblierung bis zu dem Moment des Erscheinens auf dem Computer des Benutzers verstrichen ist, im Wesentlichen kürzer als für die sicheren Dateien.
-
Die Einschätzung der Schädlichkeit eines Stücks Code basierend auf den obigen Kriterien kann über das Analysemodul 260 unter Verwendung solcher Einrichtungen wie Fuzzylogik oder künstlicher neuronaler Netze erfolgen. Nach der Einschätzung wird eine Entscheidung über die Schädlichkeit des ausführbaren Codes getroffen. Bei einer spezifischen Ausführungsform für diese Erfindung wird nach der Einschätzung der Schädlichkeit die Information zur weiteren Überprüfung an ein auf dem Computer des Benutzers installiertes Antivirensystem übermittelt.
-
3 ist ein Diagramm, das die Verwendung eines Funktionsaufrufstapels gemäß einer Ausführungsform veranschaulicht. Ein Funktionsaufrufstapel ist eine Datenstruktur, die unter Verwendung des LIFO-Prinzips (”zuletzt herein – zuerst hinaus”) organisiert ist. Ein Stapel 300 speichert Informationen zur Rückgabe der Kontrolle von Unterprogrammen an ein Programm (oder an ein Unterprogramm im Falle verschachtelter oder rekursiver Aufrufe). Das in 3 dargelegte Beispiel zeigt, dass während der Ausführung des Codes ein Aufruf der Funktion F1 erfolgt, welche die Parameter p1, p2 und p3 aufweist. Dem tatsächlichen Aufruf der Funktion geht die Übermittlung ihrer Parameter an den Stapel voraus, die in umgekehrter Reihenfolge durchgeführt werden können – von Parameter p3 zu Parameter p1. Außerdem wird ansprechend auf das Aufrufen der Funktion F1 die Adresse für den Rücksprung von dieser Funktion zu dem Stapel geschoben; dies ist die Speicheradresse der Anweisung, die unmittelbar auf die Funktionsaufrufanweisung folgt. Falls erforderlich, wird auch ein Speicherbereich für lokale Variablen der Funktion F1 in dem Stapel zugewiesen. Ähnliche Aktionen werden bei nachfolgenden Aufrufen von Funktion F2 mit Parameter p1 und von Funktion F3 mit Parametern p1 and p2 durchgeführt. Das Stapelelement, das Information über eine Kopie einer Funktion speichert, wird als ein Stack-Frame bezeichnet. Wie aus dem Diagramm ersichtlich, ist es möglich, durch Analysieren von Funktionsrücksprungadressen, beginnend bei dem letzten Stack-Frame, die Adresse des Codes zu finden, der den Aufruf irgendeiner der Funktionen initiiert hat.
-
Wenn beispielsweise festgestellt wird, dass Funktion F3 eine kritische Funktion ist, deren Aufruf im Namen eines empfänglichen Prozesses erfolgte, wird das Modul 260 beim Analysieren des Aufrufstapels 300 anfänglich den Code überprüfen, der sich an der Rücksprungadresse für diese Funktion befindet. Wenn als Ergebnis der Überprüfung der Code nicht als schädlich angesehen wird, dann kann das Analysemodul 260 sequentiell die Codekopien an den Funktionsrücksprungadressen überprüfen, deren Aufrufe in dem Stapel dem Aufruf der Funktion F3 vorausgegangen sind.
-
4 zeigt den Operationsalgorithmus eines Systems zur Einschätzung der Schädlichkeit eines im Adressraum eines vertrauenswürdigen Prozesses ausgeführten Stücks Code. Bei Stufe 410 überwacht das Prozessüberwachungsmodul 220 die im Betriebssystem gestarteten Prozesse. Wenn der Prozess gestartet worden ist, bestimmt das Prozessauswahlmodul 225 bei 420, ob der gestartete Prozess irgendwelche Charakteristika eines empfänglichen Prozesses aufweist, wobei Informationen über derartige Charakteristika in der Prozessauswahlkriteriendatenbank 230 gespeichert sind. Wenn der gestartete Prozess irgendwelche Charakteristika eines empfänglichen Prozesses aufweist, verfolgt das Funktionsaufrufverfolgungsmodul 240 bei 422 Funktionsaufrufe, die durch den Prozess erfolgten. Für jede aufgerufene Funktion prüft das Modul 245 zum Abfangen von Aufrufen kritischer Funktionen bei 426, ob diese aufgerufene Funktion eine kritische Funktion ist. Im Bejahensfall fängt bei 430 das Modul 245 zum Abfangen von Aufrufen kritischer Funktionen unter den Aufrufen aller durch den Prozess durchgeführten Funktionen die Aufrufe kritischer Funktionen ab. Die Information darüber, welche der durch den empfänglichen Prozess aufgerufenen Funktionen als kritisch betrachtet werden sollte, ist in der Datenbank 250 für kritische Funktionen gespeichert.
-
Nach dem Abfangen eines Aufrufs einer kritischen Funktion analysiert das Analysemodul 260 bei 440 den Aufrufstapel, um den ausführbaren Code, der den Aufruf der Funktion initiiert hat, zu identifizieren. Danach schätzt das Analysemodul 260 bei 450 die Schädlichkeit des ausführbaren Codes auf der Basis der Kriterien ein, wobei Informationen über diese in der Datenbank 270 gespeichert sind. Basierend auf den Ergebnissen der Einschätzung bei 460 trifft das Analysemodul 260 eine Entscheidung über die Schädlichkeit des ausführbaren Codes.
-
5 ist ein Diagramm, welches ein Computersystem 1 in weiteren Einzelheiten veranschaulicht, auf dem Aspekte der hierin beschriebenen Erfindung gemäß verschiedenen Ausführungsformen implementiert werden können. Das Computersystem 1 kann eine Datenverarbeitungseinrichtung, wie etwa einen Personalcomputer 2, aufweisen. Der Personalcomputer 2 umfasst eine oder mehrere Verarbeitungseinheiten 4, einen Systemspeicher 6, eine Videoschnittstelle 8, eine Ausgangsperipherieschnittstelle 10, eine Netzschnittstelle 12, eine Benutzereingabeschnittstelle 14, eine entfernbare Speicherschnittstelle 16 und eine nicht entfernbare Speicherschnittstelle 18 und einen Systembus oder einen Hochgeschwindigkeits-Kommunikationskanal 20, wodurch die verschiedenen Komponenten miteinander verbunden sind. Bei verschiedenen Ausführungsformen können die Verarbeitungseinheiten 4 mehrere logische Kerne aufweisen, die in der Lage sind, auf computerlesbaren Medien, wie etwa dem Systemspeicher 6 oder einem an der entfernbaren Speicherschnittstelle 16 oder der nicht entfernbaren Speicherschnittstelle 18 angebrachten Speicher, gespeicherte Informationen zu verarbeiten. Der Systemspeicher 6 des Computers 2 kann einen nicht flüchtigen Speicher, wie etwa einen Nurlesespeicher (ROM) 22, oder einen flüchtigen Speicher, wie etwa einen Direktzugriffsspeicher (RAM) 24, umfassen. Der ROM 22 kann ein grundlegendes Ein-/Ausgabesystem (BIOS) 26 aufweisen, um die Kommunikation mit dem anderen Abschnitt des Computers 2 zu unterstützen. Der RAM 24 kann Abschnitte verschiedener Softwareanwendungen, wie etwa das Betriebssystem 28, Anwendungsprogramme 30 und andere Programmmodule 32, speichern. Ferner kann der RAM 24 andere Informationen, wie etwa Programm- oder Anwendungsdaten 34, speichern. Bei verschiedenen Ausführungsformen speichert der RAM 24 Informationen, die geringe Latenzen und einen effizienten Zugriff erfordern, wie etwa Programme und Daten, die manipuliert oder bearbeitet werden. Bei verschiedenen Ausführungsformen weist der RAM 24 einen Speicher mit doppelter Datenrate (DDR), einen Fehler korrigierenden Speicher (ECC) oder andere Speichertechnologien mit verschiedenen Latenzen und Konfigurationen, wie RAMBUS oder DDR2 und DDR3, auf. Auf diese Weise kann der Systemspeicher 6 bei verschiedenen Ausführungsformen die Eingangsdaten, Zugangsberechtigungsdaten, Betriebsspeicherdaten, Befehlssatzdaten, Analyseergebnisdaten und Betriebsspeicherdaten speichern. Ferner können die Verarbeitungseinheiten 4 bei verschiedenen Ausführungsformen dafür ausgelegt sein, Befehle auszuführen, welche den Zugang zu den vorstehend erwähnten gespeicherten Daten begrenzen, indem Zugangsberechtigungen angefordert werden, bevor der Zugriff auf die Informationen gewährt wird.
-
Die entfernbare Speicherschnittstelle 16 und die nicht entfernbare Speicherschnittstelle 18 können den Computer 2 mit Plattenlaufwerken 36, wie etwa SSD-Laufwerken oder rotierenden Plattenlaufwerken, verbinden. Diese Plattenlaufwerke 36 können weiteren Speicherplatz für verschiedene Softwareanwendungen, wie etwa das Betriebssystems 38, Anwendungsprogramme 40 und andere Programmmodule 42, bereitstellen. Ferner können die Plattenlaufwerke 36 andere Informationen, wie etwa Programm- oder Anwendungsdaten 44, speichern. Bei verschiedenen Ausführungsformen speichern die Plattenlaufwerke 36 Informationen, die nicht die gleichen niedrigen Latenzen wie bei anderen Speichermedien erfordern. Ferner können das Betriebssystem 38, Daten des Anwendungsprogramms 40, Programmmodule 42 und Programm- oder Anwendungsdaten 44 die gleichen Informationen sein wie jene, die bei verschiedenen vorstehend erwähnten Ausführungsformen im RAM 24 gespeichert sind, oder sie können unterschiedliche Daten sein, die möglicherweise von den im RAM 24 gespeicherten Daten abgeleitet sind.
-
Ferner kann die entfernbare nicht flüchtige Speicherschnittstelle 16 den Computer 2 mit magnetischen tragbaren Plattenlaufwerken 46 verbinden, die magnetische Medien, wie etwa eine Diskette 48, ein Iomega®-Zip- oder Jazz-Laufwerk, oder optische Plattenlaufwerke 50 verwenden, die optische Medien 52 für das Speichern computerlesbarer Medien, wie etwa Blu-Ray®, DVD-R/RW, CD-R/RW und andere ähnliche Formate, verwenden. Wieder andere Ausführungsformen verwenden SSDs oder drehbare Platten, die in tragbaren Gehäusen aufgenommen sind, um die Kapazität des entfernbaren Speichers zu erhöhen.
-
Der Computer 2 kann die Netzschnittstelle 12 verwenden, um mit einem oder mehreren fernen Computer 56 über ein lokales Netz (LAN) 58 oder ein Weitbereichsnetz (WAN) 60 zu kommunizieren. Die Netzschnittstelle 12 kann eine Netzschnittstellenkarte (NIC) oder eine andere Schnittstelle, wie etwa ein Modem 62, verwenden, um eine Kommunikation zu ermöglichen. Das Modem 62 kann eine Kommunikation über Telefonleitungen, eine Koaxialleitung, eine Faseroptik, eine Netzleitung oder drahtlos ermöglichen. Der ferne Computer 56 kann eine ähnliche Hardware- und Softwarekonfiguration aufweisen oder einen Speicher 64 aufweisen, der ferne Anwendungsprogramme 66 enthält, die dem Computer 2 zusätzliche computerlesbare Befehle bereitstellen können. Bei verschiedenen Ausführungsformen kann der ferne Computerspeicher 64 verwendet werden, um Informationen, wie etwa identifizierte Dateiinformationen, zu speichern, die später zum lokalen Systemspeicher 6 heruntergeladen werden können. Ferner kann der ferne Computer 56 bei verschiedenen Ausführungsformen ein Anwendungsserver, ein Verwaltungsserver, Client-Computer oder eine Netzanwendung sein.
-
Ein Benutzer kann Informationen unter Verwendung von Eingabeeinrichtungen, die mit der Benutzereingabeschnittstelle 14, wie etwa einer Maus 68 und einer Tastatur 70, verbunden sind, in den Computer 2 eingeben. Zusätzlich kann die Eingabeeinrichtung ein Trackpad, ein Fingerabdruckscanner, ein Joystick, ein Strichcodescanner, ein Medienscanner oder dergleichen sein. Die Videoschnittstelle 8 kann für eine Anzeige, wie etwa einen Bildschirm 72, Sichtinformationen bereitstellen. Die Videoschnittstelle 8 kann eine eingebettete Schnittstelle oder eine diskrete Schnittstelle sein. Ferner kann der Computer mehrere Videoschnittstellen 8, Netzschnittstellen 12 und entfernbare Schnittstellen 16 und nicht entfernbare Schnittstellen 18 verwenden, um die Flexibilität beim Betrieb des Computers 2 zu erhöhen. Ferner verwenden verschiedene Ausführungsformen mehrere Bildschirme 72 und mehrere Videoschnittstellen 8, um die Leistung und die Fähigkeiten des Computers 2 zu variieren. Andere Computerschnittstellen können im Computer 2 eingeschlossen sein, wie etwa die Ausgangsperipherieschnittstelle 10. Diese Schnittstelle kann mit einem Drucker 74 oder Lautsprechern 76 oder anderen Peripheriegeräten verbunden sein, um für den Computer 2 zusätzliche Funktionalität bereitzustellen.
-
Verschiedene alternative Konfigurationen und Implementierungen des Computers liegen innerhalb des Gedankens der Erfindung. Diese Variationen können ohne Einschränkung zusätzliche mit dem Systembus 20 verbundene Schnittstellen einschließen, wie etwa einen universellen seriellen Bus (USB), einen Druckeranschluss, einen Gameport, einen PCI-Bus, PCI-Express oder Integrierungen der verschiedenen vorstehend beschriebenen Komponenten in Chipset-Komponenten, wie etwa der Northbridge oder der Southbridge. Beispielsweise kann die Verarbeitungseinheit 4 bei verschiedenen Ausführungsformen einen eingebetteten Speichercontroller (nicht dargestellt) aufweisen, um eine effizientere Datenübertragung vom Systemspeicher 6 zu ermöglichen, als sie der Systembus 20 bereitstellen kann.
-
Die vorstehenden Ausführungsformen sind als veranschaulichend und nicht als einschränkend vorgesehen. Zusätzliche Ausführungsformen liegen innerhalb der Ansprüche. Wenngleich Aspekte der vorliegenden Erfindung mit Bezug auf bestimmte Ausführungsformen beschrieben wurden, werden Fachleute zusätzlich erkennen, dass Änderungen an der Form und den Einzelheiten vorgenommen werden können, ohne vom durch die Ansprüche definierten Gedanken und Schutzumfang der Erfindung abzuweichen.
-
Durchschnittsfachleute auf den relevanten Gebieten werden verstehen, dass die Erfindung weniger Merkmale aufweisen kann, als sie in irgendeiner einzelnen vorstehend beschriebenen Ausführungsform erläutert wurden. Die hier beschriebenen Ausführungsformen sind nicht als eine erschöpfende Präsentation der Arten vorgesehen, in denen die verschiedenen Merkmale der Erfindung kombiniert werden können. Demgemäß sind die Ausführungsformen keine einander ausschließenden Kombinationen von Merkmalen, sondern die Erfindung kann vielmehr eine Kombination verschiedener einzelner Merkmale umfassen, die aus verschiedenen einzelnen Ausführungsformen ausgewählt sind, wie Durchschnittsfachleute auf dem Gebiet verstehen werden.
-
Das System der vorliegenden Erfindung kann in den folgenden Verfahren angewandt werden:
- a) Verfahren zur Detektion von Schadcode, der in mit bekannten Programmen assoziierte Prozesse injiziert wurde, in einer Datenverarbeitungseinrichtung, die eine Vielzahl von Datenverarbeitungsressourcen einschließlich einer Datenverarbeitungshardware und eines auf der Datenverarbeitungshardware ausgeführten Betriebssystems und eine Vielzahl von Programmen umfasst, die eine Schnittstelle mit den Datenverarbeitungsressourcen bilden und als Prozesse ausführbar sind, die einen oder mehrere Threads aufweisen, wobei das Verfahren umfasst:
Überwachung der Ausführung von Prozessen auf der Datenverarbeitungshardware;
Auswahl aus den Prozessen, die überwacht werden, nur derjeniger Prozesse, die empfängliche Prozesse sind, wobei die Auswahl auf vordefinierten Prozessauswahlkriterien basiert;
Verfolgen von Funktionsaufrufen, die durch Threads des Prozesses vorgenommen wurden, für jeden der ausgewählten empfänglichen Prozesse;
Identifizierung aus den verfolgten Funktionsaufrufen nur derjeniger Funktionsaufrufe, die Aufrufe kritischer Funktionen sind, wobei die Identifizierung der Aufrufe kritischer Funktionen auf Kriterien zur Bestimmung kritischer Funktionen basiert;
Identifizierung von Programmanweisungen, die den Aufruf einer kritischen Funktion verursacht haben, für jeden identifizierten Aufruf einer kritischen Funktion; und
Einschätzung der Schädlichkeit der Programmanweisungen basierend auf vordefinierten Einschätzungskriterien.
- b) Verfahren nach Absatz a), wobei die Auswahl nur derjeniger Prozesse, die empfängliche Prozesse sind, auf Prozessauswahlkriterien basiert, die einen empfänglichen Prozess als einen Prozess definieren, der mit einer oder mehreren spezifizierten Anwendungen assoziiert ist, von denen bekannt ist, dass sie anfällig für eine Ausnutzung sind.
- c) Verfahren nach Absatz a), wobei die Auswahl nur derjeniger Prozesse, die empfängliche Prozesse sind, auf Prozessauswahlkriterien basiert, die einen empfänglichen Prozess als einen Prozess definieren, der mit einer oder mehreren Anwendungen assoziiert ist, die Netzwerkverbindungen aufbauen.
- d) Verfahren nach Absatz a), wobei die Auswahl nur derjeniger Prozesse, die empfängliche Prozesse sind, auf Prozessauswahlkriterien basiert, die einen empfänglichen Prozess als einen Prozess definieren, der mit einer oder mehreren Anwendungen assoziiert ist, die Kindprozesse erzeugen.
- e) Verfahren nach Absatz a), wobei die Auswahl nur derjeniger Prozesse, die empfängliche Prozesse sind, auf Prozessauswahlkriterien basiert, die einen empfänglichen Prozess als einen Prozess definieren, der mit einer Anwendung assoziiert ist, die eine spezifizierte Größe überschreitet.
- f) Verfahren nach Absatz a), wobei die Auswahl nur derjeniger Prozesse, die empfängliche Prozesse sind, auf Prozessauswahlkriterien basiert, die einen empfänglichen Prozess als einen Prozess definieren, der ohne einen Startbefehl von einem Benutzer gestartet wurde.
- g) Verfahren nach einem der Absätze a) bis f), das weiterhin umfasst:
Speicherung der Prozessauswahlkriterien in einer Prozessauswahlkriteriendatenstruktur, die in einem nichtflüchtigen Speichermedium realisiert ist, das Teil der Datenverarbeitungshardware ist.
- h) Verfahren nach einem der Absätze a) bis g), wobei die Identifizierung nur der Aufrufe kritischer Funktionen auf Kriterien zur Bestimmung kritischer Funktionen basiert, die eine kritische Funktion als eine Funktion definieren, die einen neuen Prozess erzeugt.
- i) Verfahren nach einem der Absätze a) bis g), wobei die Identifizierung nur der Aufrufe kritischer Funktionen auf Kriterien zur Bestimmung kritischer Funktionen basiert, die eine kritische Funktion als eine Funktion definieren, die einen neuen Thread erzeugt.
- j) Verfahren nach einem der Absätze a) bis g), wobei die Identifizierung nur der Aufrufe kritischer Funktionen auf Kriterien zur Bestimmung kritischer Funktionen basiert, die eine kritische Funktion als eine Funktion definieren, die mit einer oder mehreren spezifizierten Anwendungen assoziiert ist, die normalerweise nicht die Ausführung einer Datei initiieren, und wobei der Funktionsaufruf die Manipulation einer ausführbaren Datei involviert.
- k) Verfahren nach einem der Absätze a) bis j), das weiterhin umfasst:
Verhinderung, dass der Funktionsaufruf ausgeführt wird, ansprechend auf die Identifizierung jedes Aufrufs einer kritischen Funktion, wenigstens bis die Einschätzung der Schädlichkeit der Programmanweisungen, die den Funktionsaufruf verursacht haben, fertiggestellt ist.
- l) Verfahren nach einem der Absätze a) bis k), wobei die Identifizierung von Programmanweisungen, die den Aufruf einer kritischen Funktion verursacht haben, die Identifizierung von Funktionsaufrufrücksprungadressen in einem Funktionsaufrufstapel des Betriebssystems umfasst.
- m) Verfahren nach einem der Absätze a) bis l), wobei die Identifizierung von Programmanweisungen, die den Aufruf einer kritischen Funktion verursacht haben, die Identifizierung der Rücksprungadresse eines ersten Funktionsaufrufs in einem Funktionsaufrufstapel des Betriebssystems umfasst und ansprechend auf eine Bestimmung, dass Anweisungen an der Rücksprungadresse des ersten Funktionsaufrufs nicht schädlich sind, die Identifizierung einer Rücksprungadresse eines zweiten Funktionsaufrufs entsprechend einer vorherigen Funktion umfasst.
- n) Verfahren nach einem der Absätze a) bis m), wobei die Einschätzung der Schädlichkeit der Programmanweisungen auf Einschätzungskriterien basiert, die Schädlichkeit basierend auf einem Verstreichen der Zeit zwischen einem Zeitpunkt, wenn eine mit einem gestarteten Prozess assoziierte Datei erzeugt wurde, und einem Zeitpunkt des Startens des Prozesses definiert.
- o) Verfahren nach einem der Absätze a) bis n), wobei die Einschätzung der Schädlichkeit der Programmanweisungen das Anwenden wenigstens eines Kriteriums umfasst, das aus der Gruppe ausgewählt ist, die aus Folgenden besteht:
ob die Programmanweisungen in einem Heap gespeichert sind,
ob die Programmanweisungen Anweisungen enthalten, die ihre eigene Adresse bestimmen,
ob die Programmanweisungen Indizien für einen positionsunabhängigen Code enthalten,
ob die Programmanweisungen Operationscodes enthalten, die mit der Durchführung eines Datenabgleichs assoziiert sind,
ob die Programmanweisungen Hashes enthalten, die aus Funktionsnamen generiert sind,
oder aus irgendeiner Kombination aus diesen.
-
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 7228563 [0008]
- US 8230499 [0009]