DE102017106016A1 - System und Verfahren zur Erkennung von Befehlssequenzen von Interesse - Google Patents

System und Verfahren zur Erkennung von Befehlssequenzen von Interesse Download PDF

Info

Publication number
DE102017106016A1
DE102017106016A1 DE102017106016.2A DE102017106016A DE102017106016A1 DE 102017106016 A1 DE102017106016 A1 DE 102017106016A1 DE 102017106016 A DE102017106016 A DE 102017106016A DE 102017106016 A1 DE102017106016 A1 DE 102017106016A1
Authority
DE
Germany
Prior art keywords
representation
processors
virtual address
address space
electronic device
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.)
Ceased
Application number
DE102017106016.2A
Other languages
English (en)
Inventor
John S. Flowers
Martin QUIROGA
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.)
TrustPipe LLC
Original Assignee
TrustPipe LLC
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 TrustPipe LLC filed Critical TrustPipe LLC
Publication of DE102017106016A1 publication Critical patent/DE102017106016A1/de
Ceased 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/562Static detection
    • 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/1408Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
    • H04L63/1416Event detection, e.g. attack signature detection
    • 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
    • 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
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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/1433Vulnerability analysis
    • 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
    • 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
    • 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/1458Denial of Service
    • 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/033Test or assess software

Landscapes

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

Abstract

Ein Befehlssequenzen-Erkennungssystem wird trainiert, um Befehlssequenzen von Interesse, wie beispielsweise Bedrohungen durch bösartige Computerdaten, zu ermitteln. Das Training umfasst das Destillieren der Charakteristiken bekannter Befehlssequenzen von Interesse (z. B. Eindringung durch Computerviren, Exploits, Würmer, oder dergleichen) in einen Satz von Metaausdrücken. Zur Laufzeit kombiniert das Befehlssequenzen-Erkennungssystem den minimalen Satz von Metaausdrücken mit effizienten Computeralgorithmen zur Auswertung von Metaausdrücken, um bekannte Befehlssequenzen von Interesse sowie deren unbekannte Varianten unter einem unbekannten Satz von Befehlssequenzen zu erkennen. Das Befehlssequenz-Erkennungssystem kann eine geeignete Reaktion auf die Erkennung von Befehlssequenzen von Interesse liefern.

Description

  • 1. Gebiet
  • Die vorliegende Offenbarung betrifft allgemein das Gebiet der digitalen Sicherheit, und insbesondere die Erkennung von Aktivitäten von Interesse in einer oder mehreren Befehlssequenzen, einschließlich der Erkennung von bösartigen Aktivitäten.
  • 2. Beschreibung des Standes der Technik
  • Die Verbreitung von Computertechnologien hat auf dem Bereich der digitalen Sicherheit Herausforderungen gestellt. Wie allgemein bekannt ist, kann ein elektronisches Gerät (z. B. ein Computer, der auf einer Unternehmensplattform arbeitet) bösartige Computerdaten aufweisen und/oder bösartige Computerdaten an andere elektronische Geräte verbreiten. Dies kann zum Beispiel zu einer erheblichen Systemstörung und einem wirtschaftlichen Verlust führen. Ein Fachmann würde erkennen, dass Angriffe, die auf intelligenten Computerdaten basieren, Computerviren, Malware, Würmer, Trojaner, Bots, Eindringungen (z. B. unautorisierter Zugriff), Exploits (z. B. Eskalation von Privilegien, Verletzung der Vertraulichkeit), zeitbasierte Angriffe (z. B. Dienstverweigerung), oder dergleichen umfassen. Der Begriff „Bedrohung” wird verwendet, um eine oder mehrere dieser Arten von Angriffen zu beschreiben.
  • Herkömmliche digitale Sicherheitstechnologien können dazu verwendet werden, um auf einem elektronischen Gerät gespeicherte und/oder ausgeführte bösartige Computerdaten zu erkennen und/oder zu entfernen. Solche digitalen Sicherheitstechnologien können „Anti-Virus-Software”, „Malware-Erkennung”, „Eindringungsverhinderung”, „Gegenangriffe”, Firewalls, oder dergleichen umfassen, obwohl diese Begriffe nicht identisch in der Bedeutung sind. Der Begriff „einheitliches Gefahrenmanagement” (Englisch: „Unified Threat Management”) („UTM”) wurde verwendet, um eine oder mehrere dieser Implementierungen digitaler Sicherheitstechnologien zu beschreiben.
  • Herkömmliche digitale Sicherheitstechnologien erkennen typischerweise Bedrohungen unter Verwendung von Signaturen, die bestimmten Bedrohungen entsprechen. Existierende Entwürfe unter diesem Paradigma sind auf mindestens zwei Art und Weisen mangelhaft. Erstens beruht die Erkennung einer Bedrohung auf der a priori Kenntnis der spezifischen Bedrohung und der Verfügbarkeit einer Signatur für die spezifische Bedrohung. Das heißt, herkömmliche digitale Sicherheitstechnologien beruhen auf bekannten Signaturen, um das Vorhandensein eines bekannten Computervirus zu erkennen, und infolgedessen versagen herkömmliche digitale Sicherheitstechnologien dabei, Bedrohungen zu erkennen, für die eine Signatur noch nicht verfügbar oder bekannt ist. Beispielsweise können herkömmliche digitale Sicherheitstechnologien nicht in der Lage sein, eine unbekannte Variation eines bekannten Computervirus zu erkennen.
  • Zweitens behalten aufgrund der ständig wachsenden Zahl bekannter Bedrohungen herkömmliche digitale Sicherheitstechnologien eine wachsende Zahl von Signaturen bei. Wenn Prozesse auf einem elektronischen Gerät ausgeführt werden, werden beibehaltende Signaturen mit den Programmabbildern verglichen, um mögliche Bedrohungen zu identifizieren. In vielen Fällen verwendet das Vergleichen von Signaturen, um Programmabbilder auf diese Weise zu vergleichen, umfangreiche Rechenressourcen. Im Kontext von Verbraucher-Computern sollte es selbst den gelegentlichen Computerbenutzer nicht überraschen, dass der Betrieb von Antivirussoftware bewirken kann, dass ein Computer langsamer wird.
  • Trotz Verbesserungen auf diesem Gebiet sind die herkömmlichen digitalen Sicherheitstechnologien weiterhin durch diese Mängel begrenzt, die Konsequenzen ihres Designs sind.
  • KURZE ZUSAMMENFASSUNG
  • Ein beispielhaftes Verfahren zum Erkennen einer Befehlssequenz von Interesse umfasst, bei einem elektronischen Gerät mit einem oder mehreren Prozessoren, Identifizieren eines Prozesses, der auf dem elektronengesteuerten Gerät ausgeführt wird. Das Verfahren umfasst ferner das Erhalten, unter Verwendung des einen oder der mehreren Prozessoren, einer Darstellung eines virtuellen Adressraums des Prozesses. In einigen Beispielen zeigt die Darstellung eine oder mehrere Befehlssequenzen an, die von dem einen oder den mehreren Prozessoren des elektronischen Geräts durchgeführt werden sollen. Das Verfahren umfasst ferner das Erzeugen, unter Verwendung des einen oder der mehreren Prozessoren, eines Datensegments, das auf der Darstellung basiert. In einigen Beispielen umfasst das Datensegment eine Vielzahl von ganzen Zahlen. Das Verfahren umfasst ferner das Bestimmen, unter Verwendung des einen oder der mehreren Prozessoren, ob ein Metaausdruck, der eine Vielzahl von geordneten ganzen Zahlen enthält, in dem Datensegment erscheint. In einigen Beispielen entspricht der Metaausdruck einer Befehlssequenz von Interesse. Das Verfahren umfasst ferner, wenn der Metaausdruck in dem Datensegment erscheint, das Initiieren einer Operation.
  • BESCHREIBUND DER FIGUREN
  • 1 zeigt einen virtuellen Adressraum gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 2 zeigt ein beispielhaftes Verfahren zum Erkennen von Befehlssequenzen von Interesse gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 3 zeigt ein Verfahren zum Trainieren eines „Unified Threat Management”-Systems (UTMS) gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 4 zeigt ein beispielhaftes Verfahren zum Implementieren einer Abstandsfunktion gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 5(A)–(F) zeigen beispielhafte Sequenzen von ganzen Zahlen gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 6(A)–(C) zeigen beispielhafte Sequenzen von ganzen Zahlen gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 7 zeigt beispielhafte Sequenzen von ganzen Zahlen gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 8 zeigt beispielhafte Sequenzen von ganzen Zahlen gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 9 zeigt ein beispielhaftes Computersystem zum Erkennen von Befehlssequenzen von Interesse gemäß einer Ausführungsform der vorliegenden Erfindung.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die folgende Beschreibung wird vorgelegt, um es einem Fachmann zu ermöglichen, die verschiedenen Ausführungsformen herzustellen und zu verwenden. Beschreibungen von speziellen Geräten, Techniken und Anwendungen werden nur als Beispiele gegeben. Verschiedene Modifikationen der hierin beschriebenen Beispiele sind für den Fachmann leicht ersichtlich, und die hierin definierten allgemeinen Prinzipien können auf andere Beispiele und Anwendungen angewendet werden, ohne vom Geist und Umfang der verschiedenen Ausführungsformen abzuweichen. Somit sind die verschiedenen Ausführungsformen nicht dazu gedacht, auf die hierin beschriebenen und gezeigten Beispiele beschränkt zu sein, sondern sind dem Umfang, der mit den Ansprüchen konsistent ist, zuzurechnen.
  • Die hierin beschriebenen Ausführungsformen umfassen Techniken zum Erkennen von Befehlssequenzen von Interesse. Beispielhafte Befehlssequenzen von Interesse umfassen Befehlssequenzen, die Computerviren, Malware, Würmern, Trojanern, Bots, Eindrigungen (z. B. unautorisierter Zugriff), Exploits (z. B. Eskalation von Privilegien, Verletzung der Vertraulichkeit), zeitbasierte Angriffe (z. B. Dienstverweigerung), oder dergleichen, sind aber nicht darauf beschränkt.
  • 1 Überblick
  • Beispiele der vorliegenden Erfindung sind auf virtuelle Adressräume gerichtet. Im Allgemeinen ist ein virtueller Adressenraum ein Satz (z. B. einer oder mehrere) von Adressenbereichen (z. B. virtuelle Adressen), die beispielsweise einem Betriebssystem zur Verfügung gestellt werden. Jedem Prozess, der auf einem elektronischen Gerät ausgeführt wird, wird ein jeweiliger virtueller Adressraum zugewiesen. Unter Bezugnahme auf 1 umfasst ein virtueller Adressraum mehrere Teile: einen Kernelraum 102 und einen Benutzerraum. Der Kernelraum 102 ist für den Kernel reserviert und wird der Kürze halber nicht weiter diskutiert. Der Benutzerraum wird weiter in Segmente unterteilt, die einen Ausführungsstapel 104, einen Heap 106, ein Speicherabbildungssegment 108 (einschließlich dynamischer Links), eine BSS-Segment 110 (z. B. zum Speichern von Variablen, die nicht in Quellcode initialisiert sind, oder Zeiger darauf), ein Datensegment 112 (z. B. zum Speichern von in Quellcode initialisierten Variablen oder Zeigern darauf), und ein Codesegment 114 (z. B. zum Speichern eines Programmbildes oder eines Zeigers darauf).
  • Im Betrieb speichert der Ausführungsstapel 104 temporäre Variablen und Funktionsparameter. Wenn eine Funktion aufgerufen wird, wird ein Stapelrahmen auf den Ausführungsstapel 104 geschoben, während die Funktion ausgeführt wird, und der Rahmen wird weggesteckt (z. B entfernt), wenn die Funktion zurückkehrt. In dieser Weise dient der Ausführungsstapel 104 als ein Last-in-First-Out(LIFO)-Mechanismus, durch den verschiedene Operationen durchgeführt werden. Ein Zeiger wird verwendet, um die „Oberseite” des Stapels während des Betriebs zu verfolgen, und die Stapelgröße ist typischerweise in der Größe festgelegt. Andererseits speichert der Heap 106 Variablen, die jedoch über mehrere Funktionsaufrufe bestehen bleiben, so dass auf gespeicherte Variablen durch einen Prozess global zugegriffen werden kann. Die Größe des Heaps kann unter Verwendung verschiedener Zuteilungsfunktionen (z. B. malloc(), calloc()) eingestellt werden. Das Speicherabbildungssegment 108 umfasst eine oder mehrere dynamische Links zum Zugreifen auf eine oder mehrere Bibliotheken (z. B. DLLs), wenn es während des Betriebs erforderlich ist.
  • 2 zeigt einen beispielhaften Prozess 200 zum Erkennen von Befehlssequenzen von Interesse. Für die Zwecke dieser Offenbarung wird der Begriff „Unified Threat Management System” (UTMS) verwendet, um Computersicherheitstechnologien zu beschreiben, die den Prozess 200 durchführen, unabhängig davon, ob die Technologien in Softwareform (z. B. als Softwarepaket) oder in Hardwareform (z. B. eine anwendungsspezifische Schaltung oder ein Gerät) vorgesehen sind. Innerhalb des Prozesses 200 kann der Block 210 als ein Trainingsprozess bezeichnet werden, während die Blöcke 220240 gemeinsam als Laufzeitprozess bezeichnet werden können.
  • Bei Block 210 wird ein UTMS trainiert, um eine oder mehrere Befehlssequenzen von Interest zu identifizieren. Beispielsweise kann das UTMS mit einer Darstellung eines virtuellen Adressraums eines Prozesses versehen sein, der einer bestimmten, bekannten Bedrohung entspricht. Die Darstellung kann z. B. Befehlen oder Anzeichen dafür umfassen, die der bekannten Bedrohung entsprechen. In einigen Beispielen wird die Darstellung unter Verwendung einer Anwendung erhalten, die dazu konfiguriert ist, die Darstellung während der Ausführung des Prozesses zu erkennen, wie beispielsweise eine Stapelzurückverfolgungsfunktion. Die Darstellung kann eine oder mehrere Befehlssequenzen anzeigen, die von dem einen oder den mehreren Prozessoren des elektronischen Geräts durchgeführt werden sollen. Ferner kann die Darstellung Befehlssequenzen anzeigen, die mit einer beliebigen Anzahl von Threads des Prozesses verknüpft sind und/oder ferner mit Befehlssequenzen verknüpft sein können, die für eine Multithread-Operation (z. B. Hyperthreading) konfiguriert sind. Jede bekannte Datenstruktur kann verwendet werden, um die Darstellung zu implementieren, einschließlich, aber nicht beschränkt auf eine Tabelle, eine verknüpfte Liste, oder eine Kombination davon, und kann in einigen Beispielen in Reaktion auf einen Kontextwechsel zu, beispielsweise, dem Prozess, der mit dem virtuellen Adressraum verknüpft ist, erhalten werden.
  • Während des Trainings identifiziert das UTMS aus der Trainingsdarstellung Befehlssequenzen und/oder Daten (z. B. Daten, die mit den Befehlssequenzen verknüpft sind), die darauffolgend dazu verwendet werden können, das Vorhandensein der gleichen Sequenzsequenzen von Interesse in einem anderen, unbekannten Satz von Operationen zu identifizieren. Zusätzlich wird durch die Verarbeitung bei Block 210 das UTMS auch in Lage versetzt, das Vorhandensein von Bedrohungen zu identifizieren, die mit der Bedrohung, die zuvor in den Trainingsanweisungen bereitgestellt wurde (d. h. eine Variante), in Zusammenhang stehen.
  • Bei Block 220 überwacht das UTMS einen virtuellen Adressraum, um zu bestimmen, ob die (trainierten und in Zusammenhang stehenden) Befehlssequenzen von Interesse im virtuellen Adressraum vorhanden sind. Beispielsweise kann das UTMS den virtuellen Adressraum überwachen, um zu bestimmen, ob ein Prozess, der dem virtuellen Adressraum entspricht, beabsichtigt, Befehle auszuführen, die mit schädlicher Aktivität verknüpft sind. Die Überwachung des virtuellen Adressraums auf diese Weise kann beispielsweise das Überwachen eines Ausführungsstapels des virtuellen Adressraums, eines Heaps des virtuellen Adressraums, eines Speicherabbildungssegments, und/oder eines beliebigen anderen Teils eines virtuellen Adressraums umfassen. In einigen Beispielen kann das UTMS Teile eines oder mehrerer zusätzlicher virtueller Adressräume, wie z. B. diejenigen, die mit dem virtuellen Adressraum verbunden sind, über einen oder mehrere dynamische Links überwachen.
  • Im Entscheidungsblock 230 bestimmt das UTMS, ob der überwachte virtuelle Adressraum normal oder anormal ist. Ein anormaler virtueller Adressraum ist einer, in dem das UTMS eine oder mehrere Befehlssequenzen von Interesse identifiziert hat. Wenn eine anormale Befehlssequenz gefunden wird, geht die Verarbeitung zum Block 240 über, wo das UTMS eine oder mehrere geeignete Reaktionen liefert (z. B. erzeugt). Die Bereitstellung einer geeigneten Reaktion kann das Bereitstellen eines Benutzer- oder Systemalarms umfassen und/oder kann das Beenden eines oder mehrerer Threads des Prozesses umfassen, der mit dem virtuellen Adressraum verknüpft ist. In einem anderen Beispiel kann das Bereitstellen einer geeigneten Reaktion das Beenden aller Threads des Prozesses, der mit dem virtuellen Adressraum verknüpft ist, umfassen. In noch einem anderen Beispiel kann das Bereitstellen einer geeigneten Reaktion das Beenden mindestens eines Threads von jedem einer Vielzahl von Prozessen umfassen. In einigen Beispielen kann das UTMS einen OS-Kernel anweisen, Threads und/oder Prozesse zu beenden. In anderen Beispielen kann das UTMS eine dynamische Linkbibliothek, mit der der Prozess verbunden ist, umfassen, und kann Threads und/oder Prozesse direkt beenden. Wenn keine anormalen Befehlssequenzen gefunden werden, kehrt die Verarbeitung zum Block 220 zurück, und das UTMS überwacht einen anderen virtuellen Adressraum eines, beispielsweise, virtuellen Adressraums. Wie beschrieben, kann das UTMS einen virtuellen Adressraum in Reaktion auf einen Kontextwechsel überwachen. Auf diese Weise kann das UTMS jede Anzahl von Prozessen, die auf einem elektronischen Gerät ausgeführt werden, überwachen (z. B. sequentiell überwachen).
  • In der Diskussion unten wird der Einfachheit halber die Bedrohung von Computerviren als beispielhafte Befehlssequenz von Interesse verwendet. Das Verfahren 200 (1) ist jedoch nicht auf irgendwelche Beispiele beschränkt. Vielmehr kann der Prozess 200 von einem UTMS verwendet werden, um viele andere Arten von Befehlssequenzen von Interesse zu verwalten, wie oben diskutiert wurde. Gleichzeitig hebt die (beispielhafte) Diskussion von Computerviren die wesentlichen Vorteile des Prozesses 200 in einer Weise hervor, die für viele Computerbenutzer, einschließlich des Durchschnittsfachmanns, verständlich ist.
  • Gegenwärtig sind über 2 Millionen existierende Computerviren bekannt. Die genaue Anzahl variiert zwischen 2,5 Millionen und 8 Millionen, weil verschiedene Ursprungsquellen Computerviren unterschiedlich katalogisieren. Bei Block 210 des Prozesses 200 kann ein UTMS mit einer Befehlssequenz versehen sein, die einen oder mehrere Angriffe widerspiegelt, die mit einem bekannten Computervirus oder mehreren bekannten Computerviren verknüpft sind. Nach Abschluss des Blocks 210 wird das UTMS trainiert, um das Vorhandensein dieses einen oder der mehreren Computerviren sowie deren jeweilige Varianten in einem virtuellen Adressraum zu erkennen. In den Blöcken 220240 überwacht das UTMS einen virtuellen Adressraum auf die Anwesenheit dieses einen oder der mehrerer Computerviren und deren Varianten. Auf diese Weise ist das UTMS in der Lage, Angriffe zu verwalten, die auf bekannten Bedrohungen und ihren unbekannten Varianten basieren.
  • Das Verfahren 200 ist auf mindestens zwei Arten bemerkenswert. Erstens erzeugt Block 210 beschränkte Datensequenzen, die dazu verwendet werden können, alle bekannten Computerviren und ihre jeweiligen Varianten zu erkennen. Somit muss ein UTMS, das den Prozess 200 verwendet, nicht notwendigerweise auf die a priori-Kenntnis eines spezifischen Computervirus angewiesen sein, um den Computervirus in einem virtuellen Adressraum während des Betriebs zu erkennen. Zweitens sind beschränkte Datensequenzen, die bei Block 210 bereitgestellt werden, effizient in der Struktur und in der Größe, verglichen mit bekannten Computervirus-Signaturdateien, die von herkömmlichen Computer-Antivirus-Technologien verwendet werden. Insbesondere wurde festgestellt, dass beschränkte Datensequenzen von insgesamt weniger als 200 (8-Bit) Bytes ausreichend sind, um die meisten, wenn nicht sogar alle Computerviren, die gegenwärtig bekannt sind, unter Verwendung von Prozess 200 zu identifizieren. Diese Größe steht in starkem Kontrast zu der Größe von herkömmlichen Computervirus-Signaturdateien, die typischerweise eine Größe von 50 Megabyte (MB) bis 300 MB haben. Um es aus einem Blickwinkel zu betrachten, die Größe von 50 MB ist um 5 Größenordnungen größer als die Größe von 200 (8-Bit) Bytes. Somit können im Betrieb eines UTMS mit dem Prozess 200 enorme Recheneffizienzen realisiert werden.
  • 2. Training
  • Die 3 veranschaulicht einen beispielhaften Prozess 300 zum Trainieren eines UTMS. Der Prozess 300 kann beispielsweise dazu verwendet werden, den Block 210 (1) zu implementieren. Bei Block 310 wird ein Prozess identifiziert, und es wird eine Darstellung eines virtuellen Adressraums des Prozesses erhalten. Die Darstellung kann beispielsweise unter Verwendung einer beliebigen Anzahl von Funktionen erhalten werden, einschließlich, aber nicht beschränkt auf, Stapelzurückverfolgungsfunktionen und dergleichen. Wie beschrieben, kann die Darstellung die Befehlssequenzen des Prozesses umfassen oder anzeigen. Das Konzept des „Befehls” ist in der Technik gut bekannt und wird hier nicht ausführlich beschrieben. Der Begriff „Befehl” kann Befehle aus einem oder mehreren Befehlssätzen, wie beispielsweise einen Befehlssatz eines x86-Prozessors, umfassen.
  • In einigen Beispielen umfasst die in Block 310 erhaltene Darstellung eine für die Ausbildung eines UTMS interessante Befehlssequenz, oder zeigt diese an. In dem vorliegenden Beispiel ist die Befehlssequenz von Interesse das Vorhandensein von Befehlen, die mit einem Computervirus in dem virtuellen Adressraum eines Prozesses verknüpft sind. Somit können die Befehle, die dem Block 310 bereitgestellt werden, auf einen Angriff auf ein elektronisches Gerät unter Verwendung eines Computervirus hinweisen.
  • Optional werden in einigen Beispielen Darstellungen von zusätzlichen virtuellen Adressräumen erhalten. Die zusätzlichen virtuellen Adressräume können beispielsweise diejenigen sein, die mit dem virtuellen Adressraum über einen oder mehrere dynamische Links verknüpft sind. Während der Betrieb hierin in Bezug auf eine Darstellung eines einzelnen virtuellen Adressenraums beschrieben wird, versteht es sich, dass die beschriebenen Beispiele analog zur Analyse von Darstellungen von mehreren virtuellen Adressenräumen gelten. Auf diese Weise kann das UTMS anhand von Befehlssequenzen trainiert werden, die nicht in einem einzigen virtuellen Adressraum enthalten sind, sondern vielmehr von mehreren virtuellen Adressräumen umfasst, aufgerufen, oder anderweitig verknüpft werden.
  • In einigen Beispielen sind nur bestimmte Teile einer Befehlssequenz für das Erkennen Befehlssequenzen von Interesse relevant. Dementsprechend werden bei Block 320 die relevanten Abschnitte einer Befehlssequenz beibehalten, und Fremdinformationen werden verworfen. Beispielsweise können ein oder mehrere Befehle, die mit einem oder mehreren von dem Ausführungsstapel, Heap, Speicherabbildungssegmente, oder irgendeinem anderen Teil eines virtuellen Adressraums verknüpft sind, verworfen werden. Zusätzlich oder alternativ können Teile von Befehlen verworfen werden. Als Beispiel können Operanden und/oder Zeiger verworfen werden. Als ein anderes Beispiel können Befehle eines bestimmten Typs verworfen werden. Opcodes können beispielsweise dazu verwendet werden, einen Typ eines oder mehrerer Befehle zu identifizieren, und Befehle mit Opcodes eines bestimmten Typs (z. B. NOP) können verworfen werden. Die Ausgabe des Blocks 320 wird als eine „relevante Befehlssequenz” bezeichnet.
  • Bei Block 330 wird die relevante Befehlssequenz von Block 320 bitweise in ganze Zahlen umgewandelt, wodurch eines oder mehrere Datensegmente erzeugt werden. Jedes Datensegment kann eine Sequenz von ganzen Zahlen umfassen, die einer Teilmenge der in Block 310 erhaltenen Information entspricht. In einer Ausführungsform werden 8-Bit-Ganzzahlen verwendet. Befehle, die weniger als 8 Bits umfassen, werden durch Auffüllen von Nullen zu den am meisten signifikanten Ausgangsbits in eine 8-Bit-Darstellung umgewandelt. Beispielsweise kann der Block 320 die Bits „100” in „0000 0100” umwandeln. Befehle für Operationen, die mehr als 8 Bits umfassen, werden in mehrere 8-Bit-Segmente umgewandelt. Beispielsweise wandelt Block 320 die Bits „0001 0010 0100 1000” in „0001 0010” und „0100 1000” um.
  • Wie hier verwendet, beschreibt der Begriff „Sequenz” eine Liste von geordneten Elementen. Es sollte erkannt werden, dass die Reihenfolge von Elementen innerhalb von Sequenzen von ganzen Zahlen, die bei Block 330 vorgesehen sind, aus der Reihenfolge und der Nachbarschaft der relevanten Teile der in den Blöcken 310320 verarbeiteten Befehlssequenzen abgeleitet wird. Mit anderen Worten, in dem Maße, in dem eine Befehlssequenz von Interesse eine charakteristische Reaktion bei der Ausführung eines Prozesses erzeugt, wird diese Reaktion durch die Implementierung der Blöcke 310330 erfasst. Die Reaktion wird bei der Implementierung der Blöcke 340360, die weiter unten diskutiert werden, destilliert, so dass die Reaktion nützlich wird zum Erkennen von Befehlssequenzen von Interesse in einem unbekannten Satz von Befehlssequenzen.
  • Bei Block 340 wird eine Abstandsfunktion verwendet, um Charakteristiken aus den Sequenzen von ganzen Zahlen zu identifizieren, die durch Block 330 erzeugt werden. In einigen Beispielen wird die Abstandsfunktion durch Vergleichen von Sequenzen von ganzen Zahlen für unterschiedliche Befehle und/oder Befehlssequenzen durchgeführt. Beispielsweise wird eine Sequenz von ganzen Zahlen, die durch den Block 330 (basierend auf einem ersten Satz von Befehlen aus Block 320) erzeugt werden, mit der nächsten, benachbarten Sequenz von ganzen Zahlen verglichen, die durch den Block 330 erzeugt werden (basierend auf dem nächsten, benachbarten Satz von Befehlen aus Block 320).
  • Herkömmliche Abstandsfunktionen, wie beispielsweise Zeichenfolgen-Abstandsfunktionen, sind in der Technik gut bekannt und werden hier nicht ausführlich diskutiert. Als ein Beispiel kann eine herkömmliche Zeichenfolgen-Abstandsfunktion verwendet werden, um zu bestimmen, dass die Zeichenfolgen „a b c” und „z b c” einen Abstand von 1 haben, da die Zeichenfolgen nur dadurch variieren, dass „a” in der ersteren durch „z” in der letzteren ersetzt wird, und stellt den einzigen Unterschied zwischen den beiden Zeichenfolgen dar. Die vom Block 310 erzeugten Befehlssequenzen eignen sich zum Vergleich durch Abstandsfunktionen, da der Block 330 Sequenzen von ganzen Zahlen erzeugt, die durch eine Abstandsfunktion als einzelne Elemente behandelt werden können. Herkömmliche Zeichenfolgen-Abstandsfunktionen liefern jedoch keine Abstandsmetriken, die für die Erkennung von Befehlssequenzen von Interesse ausreichen. Zum Beispiel bietet das Wissen, dass zwei Zeichenfolgen sich um einen Abstand von 1 unterscheiden, wenig nützliche Informationen für die Computerviruserkennung.
  • In einer Ausführungsform führt der Block 340 eine unten beschriebene benutzerdefinierte Abstandsfunktion durch, die reduzierte Sequenzen von ganzen Zahlen erzeugt, die die Erkennung von Befehlssequenzen von Interesse unterstützen. Der Einfachheit halber wird die benutzerdefinierte Abstandsfunktion des Blocks 340 unter Bezugnahme auf die 4 und 5 diskutiert. 4 veranschaulicht einen beispielhaften Prozess 400 zum Durchführen der benutzerdefinierten Abstandsfunktion in einer Ausführungsform. 9 veranschaulicht beispielhafte Sequenzen von ganzen Zahlen, wie sie durch den beispielhaften Prozess 800 verarbeitet werden, in der einen Ausführungsform.
  • Zu 4 kommend, bei Block 410 identifiziert die benutzerdefinierte Abstandsfunktion ganze Zahlen, die in benachbarten Paaren von Sequenzen von ganzen Zahlen auftreten, die durch Block 340 (3) erzeugt werden. 5A veranschaulicht beispielhafte Sequenzen 510519 von ganzen Zahlen. 5B veranschaulicht beispielhaft eine ganze Zahl „101”, die in mindestens Paaren von benachbarten Sequenzen 510511, 511512 und 512513 von ganzen Zahlen erscheint. (Beachte, die Sequenzen 514519 von ganzen Zahlen sind der Einfachheit halber nicht dargestellt). Bei Block 410 identifiziert die benutzerdefinierte Abstandsfunktion auch die erste Instanz einer identifizierten ganzen Zahl in Paaren von benachbarten Sequenzen von ganzen Zahlen. 5C veranschaulicht, dass die erste Instanz von „101” in benachbarten Sequenzen 510511, 511512 und 512513 von ganzen Zahlen identifiziert wird.
  • Bei Block 420 (4) richtet die benutzerdefinierte Abstandsfunktion die ersten Instanzen der identifizierten ganzen Zahl in einem Paar benachbarter Sequenzen von ganzen Zahlen aus. 5D veranschaulicht die Ausrichtung der ersten Instanzen von „101” in Paaren von benachbarten Sequenzen 510511, 511512 und 512513 von ganzen Zahlen.
  • Bei Block 430 (4) kann unter bestimmten Bedingungen eine reduzierte Sequenz von ganzen Zahlen für ein Paar benachbarter Sequenzen von ganzen Zahlen erzeugt werden. Eine reduzierte Sequenz von ganzen Zahlen wird (für ein Paar benachbarter Sequenzen von ganzen Zahlen) erzeugt, wenn eine oder mehrere der ganzen Zahlen, die dem Paar benachbarter Gruppen von Sequenzen von ganzen Zahlen gemeinsam sind, zwei Bedingungen erfüllen. Das heißt, eine reduzierte Sequenz von ganzen Zahlen wird erzeugt, wenn eine oder mehrere der ganzen Zahlen, die dem Paar von benachbarten Gruppen von Sequenzen gemeinsam sind, (i) in der gleichen Reihenfolge in dem Paar benachbarter Sequenzen von ganzen Zahlen erscheinen, und (ii) Positionen in dem Paar von Sequenzen von ganzen Zahlen haben, die innerhalb eines ersten Abstandsschwellenwertes liegen. In einer Ausführungsform ist der erste Abstandsschwellenwert vier. Wenn sie erzeugt wird, würde eine reduzierte Sequenz von ganzen Zahlen solche ganzen Zahlen aufweisen, die die oben genannten Anforderungen (i) und (ii) erfüllen (in Bezug auf ein Paar benachbarter Sequenzen von ganzen Zahlen).
  • Zum Beispiel, unter Bezugnahme auf 5E, wenn die erste Instanz von „101” zwischen den Sequenzen 510 und 511 von ganzen Zahlen ausgerichtet ist, erfüllen die ganzen Zahlen „48” und „52” die oben angegebenen Anforderungen (i) und (ii). Insbesondere erscheinen die ganzen Zahlen „101”, „48”, und „52” in beiden Sequenzen 510 und 511 von ganzen Zahlen in der gleichen Reihenfolge. Ferner erscheint die ganze Zahl „48” in beiden Sequenzen von ganzen Zahlen 510 und 511 innerhalb des ersten Abstandsschwellenwerts (von vier, in der vorliegenden Ausführungsform). Somit wird, wie in 5F, eine reduzierte Sequenz 520 von ganzen Zahlen erzeugt, und umfasst die Sequenz „101 48 52” von ganzen Zahlen. Wie in 5F auch gezeigt wird, erfüllen die ganzen Zahlen „101”, „48”, und 52 in den Sequenzen 511 und 512 von ganzen Zahlen auch die oben genannten Anforderungen (i) und (ii). Somit wird eine reduzierte Sequenz 521 von ganzen Zahlen erzeugt, die die Sequenz von ganzen Zahlen „101 48 52” umfasst. Wie auch in 5F bezeigt wird, erfüllen die ganzen Zahlen „53” und „101” in den Sequenzen 512 und 513 von ganzen Zahlen auch die oben genannten Anforderungen (i) und (ii). Somit wird eine reduzierte Sequenz 522 von ganzen Zahlen erzeugt, die die Sequenz von ganzen Zahlen „53 101” umfasst.
  • Die Blöcke 410430 wiederholen sich für andere ganze Zahlen, die innerhalb mindestens eines Paares von benachbarten Sequenzen von ganzen Zahlen auftreten. Zum Beispiel erscheint die ganze Zahl „48” auch in mindestens einem Paar von benachbarten Sequenzen von ganzen Zahlen unter den Sequenzen 510519 von ganzen Zahlen. Somit werden die Blöcke 410430 für eine 4-Bit-Ganzzahl „48” wiederholt.
  • Nach Abschluss des Blocks 430 (der in einigen Beispielen eine beispielhafte Zeichenfolgenfunktion ist, die in Block 340 von 3 ausgeführt wird) geht die Verarbeitung zu Block 350 (3) über. Bei Block 350 wird die Frequenz, bei der eine reduzierte Sequenz von ganzen Zahlen innerhalb eines zweiten Abstandsschwellenwerts in den Sequenzen der in Block 330 erzeugten ganzen Zahlen erscheint, bestimmt. Der erste und der zweite Abstandsschwellenwert können gleich sein oder können unterschiedlich sein. In einer Ausführungsform ist der zweite Abstandsschwellenwert vier. 6A veranschaulicht beispielhafte Sequenzen 510519 von ganzen Zahlen, die durch Block 330 erzeugt wurden. 6B veranschaulicht das Erscheinen von reduzierten Sequenzen 520522 (5F) von ganzen Zahlen innerhalb von Sequenzen 510519 von ganzen Zahlen. Wie gezeigt, erscheint in acht der zehn Sequenzen 510519 von ganzen Zahlen eine reduzierte Sequenz 520 von ganzen Zahlen („101 48 52”) (innerhalb des beispielhaften zweiten Abstandsschwellenwerts von vier). Somit ist eine Frequenz von 40% mit einer reduzierten Sequenz 520 von ganzen Zahlen verknüpft. Aus dem gleichen Grund ist eine Frequenz von 40% mit einer reduzierten Sequenz 521 von ganzen Zahlen verknüpft. Beachte, dass reduzierte Sequenzen 520 und 521 von ganzen Zahlen nicht innerhalb des zweiten auftreten Abstandsschwellenwerts (von vier, in diesem Beispiel) in der Sequenz 516 Sequenz von ganzen Zahlen erscheinen, da die ganzen Zahlen „101” und „48” in der Ganzzahl-Sequenz 516 durch mehr als vier Positionen getrennt sind. Wie auch gezeigt wird, erscheint eine reduzierte Sequenz 522 von ganzen Zahlen („53 101”) (innerhalb des beispielhaften zweiten Abstandsschwellenwerts von vier) in drei der zehn Sequenzen 510519 von ganzen Zahlen. Somit ist eine Frequenz von 30% mit einer reduzierten Sequenz 522 von ganzen Zahlen verknüpft. Die Frequenzen, die mit reduzierten Sequenzen 520521 von ganzen Zahlen verknüpft sind, sind in 6B dargestellt. Diese Werte, die die Frequenzen angeben, mit denen reduzierte Sequenzen von ganzen Zahlen innerhalb eines Abstandsschwellenwerts in Sequenzen von ganzen Zahlen erscheinen, können mit dem Begriff „Konfidenzwerte” bezeichnet werden.
  • Bei Block 360 (3) werden reduzierte Sequenzen von ganzen Zahlen mit Konfidenzwerten unterhalb eines Schwellenkonfidenzwerts verworfen. In einer Ausführungsform liegt der Schwellenkonfidenzwert zwischen 40–50%. Die 6C veranschaulicht die Verwerfung der reduzierten Sequenz 522 von ganzen Zahlen. Zusätzlich werden reduzierte Sequenzen 520 und 521 von ganzen Zahlen (die gleich sind) de-dupliziert und als reduzierte Sequenz 630 von ganzen Zahlen beibehalten. Für die Zwecke dieser Offenbarung kann jede reduzierte Sequenz 630 von ganzen Zahlen als „Metaausdruck” bezeichnet werden.
  • Der Metaausdruck 630 stellt die Informationen dar, die ausreichen, um eine Befehlsaktivität von Interesse innerhalb eines virtuellen Adressraums zu erkennen. Insbesondere ist der Metaausdruck 630 ausreichend, um die Befehlssequenz zu erkennen, die durch die anfängliche Eingabe zum Prozess 300 (3) dargestellt wird. Es sei daran erinnert, dass die Eingabe zum Prozess 300 (3) ein Satz von Befehlen ist, die mit einem Angriff, wie beispielsweise einem Angriff unter Verwendung eines Computervirus, verknüpft sind.
  • Der Prozess 300 (3) kann für andere Arten von Befehlssequenzen von Interesse wiederholt werden. Beispielsweise kann der Prozess 300 unter Verwendung einer Befehlssequenz durchgeführt werden, die einen Angriff von Computerwurm A anzeigt, um einen Metaausdruck zum Erkennen des Computerwurms A und der Varianten des Computerwurms A zu identifizieren. Der Prozess 300 kann erneut unter Verwendung von Befehlssequenzen durchgeführt werden, die einen Angriff durch Computerausnutzung B anzeigen, um einen Metaausdruck zum Erkennen des Computerexploits B und seiner Varianten zu identifizieren. Tatsächlich kann der Prozess 300 für verschiedene Computerviren, Malware, Würmer, Trojaner, Bots, Eindringungen (z. B. unautorisierter Zugriff), Exploits (z. B. Eskalation von Privilegien, Verletzung der Vertraulichkeit), zeitbasierte Angriffe (z. B. Dienstverweigerung), oder dergleichen, die bekannt sind, dass sie existieren, wiederholt werden, um Metaausdrücke zu bestimmen, die verwendet werden können, um bösartige Befehlen sowie deren jeweilige Varianten zu identifizieren.
  • Wichtig ist, dass bestimmt wurde, dass viele verschiedene bösartige Befehlssequenzen die gleichen Metaausdrücke teilen. Das heißt, zwei verschiedene Befehlssequenzen von Interesse (wie beispielsweise ein bekannter Computervirus A und ein bekannter Computervirus B) können denselben Metaausdruck teilen und sind daher mit einem einzigen Metaausdruck nachweisbar. Ferner kann ein Metaausdruck, der beispielsweise von einem vorhandenen Computervirus erzeugt wird, dazu verwendet werden, alle Varianten des vorhandenen Computervirus zu erkennen, unabhängig von den Permutationen, Größen, oder Charakteristiken der Varianten (d. h. selbst wenn die Varianten unbekannt sind). Nur ein völlig neuer Typ von Computervirus und nicht eine Variante eines existierenden Computervirus würde durch den vorhandenen Metaausdruck nicht erkannt werden. Auf diese Weise genügt eine Handvoll Metaausdrücke, um viele, wenn nicht sogar alle bekannten Computerviren (deren Anzahl zwischen 2,5 bis 4 Millionen, abhängig von der Ursprungsquelle, liegt) sowie deren jeweilige Varianten zu identifizieren.
  • Die 7 veranschaulicht 9 beispielhafte Metaausdrücke 700712. Die Metaausdrücke 700712 umfassen insgesamt weniger als 200 (8-Bit) Bytes und können dazu verwendet werden, alle Varianten des vorhandenen Computervirus zu erkennen, wie oben diskutiert. Diese Größe steht in starkem Kontrast zu der Größe einer typischen Datenbank von Antivirussignaturen, die in der Größenordnung von 50 MB oder mehr liegt. Die Struktur und die minimale Größe dieser Metaausdrücke bieten im Vergleich zu herkömmlichen Computersicherheitstechnologien enorme Recheneffizienzen.
  • 3. Laufzeit
  • Die Effizienz, mit der die Befehlssequenzen von Interesse unter Verwendung der Metaausdrücke, die durch den Prozess 300 bereitgestellt werden, erkannt werden können, wird nun diskutiert. Nach Abschluss des Prozesses 300 (der ein beispielhafter UTMS-Trainingsprozess ist, der bei Block 210 von 1 ausgeführt wird) geht die Verarbeitung zum Block 220 von 1 über. Bei Block 220 verwendet ein UTMS Metaausdrücke, um einen virtuellen Adressraum zu analysieren, und zu erkennen, ob der virtuelle Adressraum normal oder anormal ist. Die Verarbeitung bei Block 220 beginnt mit dem Erhalten einer Darstellung des virtuellen Adressenraums. Zu diesem Zweck können die Techniken des Blocks 310 (3) verwendet werden. Wie beschrieben, kann die Darstellung beispielsweise unter Verwendung einer Stapelzurückverfolgungsfunktion erhalten werden. Als nächstes werden Befehlssequenzen der Darstellung auf relevante Informationen hin gefiltert. Zu diesem Zweck können die Techniken des Blocks 320 (3) verwendet werden. Als nächstes werden die relevanten Befehlssequenzen in Sequenzen von ganzen Zahlen umgewandelt. Die Bitgröße der während der Laufzeit verwendeten ganzen Zahlen ist die gleiche wie die Bitgröße der ganzen Zahlen, die während des Trainings in einigen Beispielen verwendet wurden. In einer Ausführungsform sind die ganzen Zahlen 4 Bits groß. In einer anderen Ausführungsform sind die ganzen Zahlen 8 Bits groß. Zum Zwecke der Umwandlung relevanter Befehlssequenzen in Sequenzen von ganzen Zahlen können die Techniken des Blocks 330 (3) verwendet werden. Es sei daran erinnert, dass in einigen Beispielen das UTMS weitere virtuelle Adressräume analysieren kann, um zu bestimmen, ob der virtuelle Adressraum normal oder anormal ist. Dementsprechend können die Techniken der Blöcke 310, 320 und 330 gleichzeitig auf eine Vielzahl von virtuellen Adressenräumen angewendet werden.
  • Die durch Block 330 erzeugten Sequenzen von ganzen Zahlen werden mit einem oder mehreren Metaausdrücken verglichen, um zu bestimmen, ob der analysierte virtuelle Adressraum normal oder anormal ist. Ein analysierter virtueller Adressraum wird als „anormal” betrachtet, wenn zwei Kriterien erfüllt sind: (i) jede ganze Zahl in einem Metaausdruck ist in der Sequenz von ganzen Zahlen vorhanden, die dem virtuellen Adressraum entspricht, und (ii) die Sequenz von ganzen Zahlen erscheint in der gleichen Reihenfolge sowohl in der entsprechenden Sequenz von ganzen Zahlen als auch in dem Metaausdruck. Bemerkenswert ist, dass ein virtueller Adressraum als normal betrachtet wird, wenn die Bedingung (i) darin fehlschlägt, wahr zu sein. (Das Fehlschlagen der Bedingung (ii) ist weniger von Nutzen, weil eine Sequenz von ganzen Zahlen mehrere Instanzen einer bestimmten ganzen Zahl haben kann und alle Instanzen bei der Bedingung (ii) fehlschlagen müssen, damit die Bedingung (ii) als Ganzes fehlschlägt.)
  • Wenn ein anormaler Verkehr erkannt wird, folgt das UTMS dem Entscheidungsblock 230 zum Block 240, wo eine oder mehrere geeignete Reaktionen erzeugt werden. Wenn ein normaler virtueller Adressraum erkannt wird, kehrt das UTMS zum Block 220 zurück und analysiert zusätzliche virtuelle Adressräume eines oder mehrerer anderer Prozesse und/oder darauffolgend den gleichen Prozess. Die Blöcke 210230 werden mit Bezug auf 8 diskutiert. 8 stellt beispielhafte Sequenzen von ganzen Zahlen 800809 und einen beispielhaften Metaausdruck 810 dar. Der Metaausdruck 810 kann einer der Metaausdrücke sein, die während des Trainings bereitgestellt (z. B. erzeugt) wurden (Block 210 von 1). Die Länge des Metaausdrucks 810 wird der Einfachheit halber verkürzt. Wie gezeigt, enthalten die Sequenzen 801, 802 und 809 alle ganzen Zahlen des Metaausdrucks 810 in der gleichen Reihenfolge, in der die ganzen Zahlen im Metaausdruck 810 erscheinen. Somit sind alle Sequenzen 801, 802 und 809 von ganzen Zahlen mit virtuellen Adressräumen verknüpft, die als anormal angesehen werden. Somit enthalten die Sequenzen 800 und 803808 von ganzen Zahlen nicht alle geordneten ganzen Zahlen des Metaausdrucks 810. Somit sind Sequenzen 800 und 803808 von ganzen Zahlen mit virtuellen Adressräumen verknüpft, die als normal betrachtet werden.
  • Wie aus der vorstehenden Diskussion ersichtlich ist, führt ein UTMS bei Block 220 viele Ganzzahlvergleiche durch. Somit ist die Optimierung von Ganzzahlvergleichen für die Effizienz des UTMS wichtig. Es sei daran erinnert, dass ein virtueller Adressraum als normal betrachtet wird bei der ersten Instanz, in der eine ganzen Zahl in dem Metaausdruck in der Sequenz von ganzen Zahlen, die dem virtuellen Adressraum entsprechen, fehlt. Somit wird die Leistung des UTMS verbessert, wenn eine frühzeitige „normal”-Bestimmung durchgeführt werden kann. Hierzu ist es von Nutzen, die Technik des Blocks 220 so zu strukturieren, dass die Ganzzahlvergleiche zwischen einer Sequenz von ganzen Zahlen und einem Metaausdruck beendet wird, sobald eine ganze Zahl aus dem Metaausdruck in der Sequenz von ganzen Zahlen als fehlend identifiziert wird.
  • In einer Ausführungsform verwendet der Block 220 einen verschachtelten Computerprogrammiersprachenausdruck, der einen Gesamtwert von „fehlgeschlagen” (z. B. einen Booleschen Wert) zurückgibt, wenn irgendeine der verschachtelten Ebenen eine „falsch” Bedingung zurückgibt. Somit wird, sobald ein UTMS die Abwesenheit einer ganzen Zahl (bei einer der verschachtelten Ebenen) identifiziert, die Verarbeitung des gesamten verschachtelten Computerprogrammiersprachenausdrucks beendet. Der entsprechende virtuelle Adressraum wird somit als normal identifiziert (in diesem Fall ist keine zusätzliche Bedrohungserkennung erforderlich), und ein darauffolgender virtueller Adressraum kann analysiert werden. Beispielsweise erlaubt die LISP-Computerprogrammiersprache einen verschachtelten Ausdruck in der Form ((((A) (B)) (C)) (D)), der einen Gesamtwert von „fehlgeschlagen” zurückgibt, wenn einer der Ausdrücke (A), (B), (C) und/oder (D) „falsch” ist. In diesem Beispiel kann der Ausdruck (A) abfragen, ob die erste ganzen Zahl in einem Metaausdruck in einer Sequenz von ganzen Zahlen erscheint, und der Ausdruck (B) kann abfragen, ob die zweite ganze Zahl im Metaausdruck in der Sequenz von ganzen Zahlen erscheint, und so weiter.
  • Bei Block 240 können geeignete Reaktionen erzeugt werden. Eine geeignete Reaktion kann ein Benutzer- oder Systemalarm sein, der das Vorhandensein einer Befehlssequenz von Interesse anzeigt. Eine andere geeignete Reaktion kann sein, einen Prozess, oder Threads eines Prozesses, zu beenden, der mit einem anormalen virtuellen Adressraum verknüpft ist. Eine weitere geeignete Reaktion kann auch das Beenden mindestens eines Threads von jedem einer Vielzahl von Prozessen umfassen.
  • Teile des Prozesses 200 (1) können in einem beispielhaften Computersystem 900 implementiert werden, das in 9 dargestellt wird. In einigen Ausführungsformen ist das Computersystem 900 ein elektronisches Gerät, einschließlich, aber nicht beschränkt auf, einem Router, eines Gateways, einer Firewall, einem Mobilgerät, einem Desktopcomputer, einem Laptopcomputer, einem Mobiltelefon, einem Tablet, oder einer beliebigen Kombination davon. In einigen Ausführungsformen ist das Computersystem 900 ein dedizierter Mikroprozessor, wie beispielsweise ein Kryptoprozessor. Insbesondere können die Trainingsaspekte des Prozesses 200 (d. h. Block 210) und die Laufzeitaspekte des Prozesses 200 (d. h. die Blöcke 220240) auf demselben oder auf verschiedenen Computersystemen implementiert werden.
  • Wie in 9 gezeigt wird, umfasst das Computersystem 900 eine Computer-Hauptplatine 902 mit dem Bus 910, der den I/O-Abschnitt 904, eine oder mehrere zentrale Verarbeitungseinheiten (CPU) 906, und einen Speicherabschnitt 908 miteinander verbindet. Der Speicherabschnitt 908 kann ein dazugehöriges Speichermodul 920 aufweisen. Das Speichermodul 920 kann beispielsweise ein nichtflüchtiger Speicher (z. B. NAND-Flash, NOR-Flash) und/oder flüchtiger Speicher sein und kann ferner in einigen Beispielen ein entfernbares Speichergerät umfassen. Der I/O-Abschnitt 904 ist mit der Netzwerkschnittstelle 912 verbunden, die Netzwerkpakete empfängt und/oder sendet. Der I/O-Abschnitt 904 kann mit der Anzeige 914, dem Eingabegerät 916, und/oder der Speichereinheit 918 verbunden sein. Der Speicherabschnitt 908, das Speichermodul 920, und/oder die Speichereinheit 922 können das computerlesbare Medium, das computerausführbare Befehle und/oder Daten zur Durchführung eines beliebigen der oben beschriebenen Prozesse unter Verwendung der CPU 906 enthält, speichern (z. B. berührbar verkörpern. Die computerausführbaren Befehle können beispielsweise in einer Allzweck-Programmiersprache (z. B. LISP, C) oder in einer speziellen anwendungsspezifischen Sprache geschrieben sein. Das Eingabegerät 916 kann ein USB-Port sein, der Eingaben von USB-kompatiblen Geräten, wie beispielsweise einer Tastatur, einer Maus, einem Speicherstick, oder dergleichen, unterstützt. Zumindest einige Werte, die auf den Ergebnissen der oben beschriebenen Prozesse basieren, können in den Speicher, wie beispielsweise dem Speicher 908, dem Speichermodul 920, und/oder der Plattenspeichereinheit 918 zur darauffolgenden Verwendung gespeichert werden.
  • Teile des Prozesses 200 (1) können auch über spezifisch angeordnete integrierte Schaltungen (z. B. anwendungsspezifische integrierte Schaltungen) in einen Prozessor implementiert werden. In einigen Ausführungsformen kann die integrierte Schaltung Teil des Hauptprozessors eines Geräts, wie beispielsweise der Hauptprozessor eines Mobiltelefons, sein. In einigen Ausführungsformen kann die integrierte Schaltung Teil eines Hilfsprozessors eines Geräts, wie beispielsweise ein Prozessor, der mit der Hauptplatine eines Laptops verbunden ist, sein. Die integrierten Schaltungen können computerausführbare Befehlen und/oder Daten für jede der oben beschriebenen Prozesse enthalten. Die computerausführbaren Befehle können beispielsweise in einer speziellen anwendungsspezifischen (z. B. prozessorspezifischen) Sprache geschrieben werden.
  • In einigen Ausführungsformen sind computerausführbare Befehle, die auf der Programmiersprache C basieren, die weniger als 1 MB betragen, ausreichend, um den Prozess 200 (1) auszuführen. Die Ausführung dieser computerausführbaren Befehle erfordert nicht mehr als 300 Kilobyte (16-Bit-Bytes) des Laufzeitspeichers (z. B. Speicher mit wahlfreiem Zugriff). Moderne Computersysteme und/oder Prozessoren sind gut dazu in der Lage, computerausführbare Befehle dieser Größen zu verarbeiten.
  • Obwohl nur bestimmte beispielhafte Ausführungsformen oben ausführlich beschrieben worden sind, wird der Fachmann ohne weiteres erkennen, dass viele Modifikationen in den beispielhaften Ausführungsformen möglich sind, ohne materiell von den neuartigen Lehren und Vorteilen dieser Offenbarung abzuweichen. Zum Beispiel können Aspekte der oben offenbarten Ausführungsformen in anderen Kombinationen kombiniert werden, um zusätzliche Ausführungsformen zu bilden. Dementsprechend sollen alle derartigen Modifikationen als innerhalb des Rahmens dieser Technologie liegend betrachtet werden.

Claims (36)

  1. Verfahren zum Erkennen einer Befehlssequenz von Interesse, wobei das Verfahren aufweist: bei einem elektronischen Gerät mit einem oder mehreren Prozessoren: Identifizieren eines Prozesses, der auf dem elektronischen Gerät ausgeführt wird; Erhalten, unter Verwendung des einen oder der mehreren Prozessoren, einer Darstellung eines virtuellen Adressraums des Prozesses, wobei die Darstellung eine oder mehrere Befehlssequenzen anzeigt, die von dem einen oder den mehreren Prozessoren des elektronischen Gerätes durchgeführt werden sollen; Erzeugen, unter Verwendung des einen oder der mehreren Prozessoren, eines Datensegments basierend auf der Darstellung, wobei das Datensegment eine Vielzahl von ganzen Zahlen aufweist; Bestimmen, unter Verwendung des einen oder der mehreren Prozessoren, ob ein Metaausdruck, der eine Vielzahl von geordneten ganzen Zahlen umfasst, in dem Datensegment erscheint, wobei der Metaausdruck einer Befehlssequenz von Interesse entspricht; und wenn der Metaausdruck in dem Datensegment erscheint, Initiieren einer Operation.
  2. Verfahren nach Anspruch 1, wobei das Erhalten, unter Verwendung des einen oder der mehreren Prozessoren, einer Darstellung eines virtuellen Adressraums des Prozesses aufweist: Identifizieren eines Kontextwechsels; und in Reaktion auf die Identifizierung des Kontextwechsels, Erhalten der Darstellung des virtuellen Adressraums des Prozesses.
  3. Verfahren nach Anspruch 2, wobei das Identifizieren des Kontextwechsels aufweist: Identifizieren eines Kontextwechsels, der mit dem Prozess verknüpft ist.
  4. Verfahren nach Anspruch 1, wobei das Erhalten, unter Verwendung des einen oder der mehreren Prozessoren, eines virtuellen Adressraums des Prozesses aufweist: Erhalten einer ersten Darstellung des virtuellen Adressraums; und Erhalten einer zweiten Darstellung des virtuellen Adressraums, und wobei das Erzeugen, unter Verwendung des einen oder der mehreren Prozessoren, eines Datensegments, basierend auf der Darstellung, aufweist: Erzeugen des Datensegments basierend auf der ersten und der zweiten Darstellung.
  5. Verfahren nach einem der Ansprüche 1 bis 4, wobei das Erhalten, unter Verwendung des einen oder der mehreren Prozessoren, eines virtuellen Adressraums des Prozesses aufweist: Erhalten der Darstellung unter Verwendung einer Stapelzurückverfolgungsfunktion.
  6. Verfahren nach einem der Ansprüche 1 bis 5, wobei das Initiieren der Operation aufweist: Bewirken, dass der Prozess beendet wird.
  7. Verfahren nach Anspruch 6, wobei das Bewirken, dass der Prozess beendet wird, aufweist: Bewirken, dass der Prozess beendet wird unter Verwendung eines Betriebssystemkernels, der auf dem elektronischen Gerät ausgeführt wird.
  8. Verfahren nach einem der Ansprüche 1 bis 7, wobei die Darstellung jedem einer Vielzahl von Threads des Prozesses entspricht.
  9. Verfahren nach Anspruch 8, wobei das Initiieren der Operation aufweist: Beenden der Ausführung von jedem der Vielzahl von Threads des Prozesses.
  10. Verfahren nach Anspruch 8, wobei das Initiieren der Operation aufweist: selektives Beenden von jedem der Vielzahl von Threads des Prozesses.
  11. Verfahren nach einem der Ansprüche 1 bis 10, wobei die Darstellung mindestens eine Tabelle, eine verlinkte Liste, oder eine Kombination davon ist.
  12. Verfahren nach Anspruch 1, wobei die Darstellung eine Vielzahl von Daten anzeigt, die mit der einen oder den mehreren Befehlssequenzen verknüpft sind.
  13. Nicht-transitorisches computerlesbares Medium, das mit Programmbefehlen codiert ist, die, wenn sie von einem oder mehreren Prozessoren eines elektronischen Geräts ausgeführt werden, den Prozessor veranlassen, ein Verfahren auszuführen, das aufweist: Identifizieren eines Prozesses, der auf dem elektronischen Gerät ausgeführt wird; Erhalten, unter Verwendung des einen oder der mehreren Prozessoren, einer Darstellung eines virtuellen Adressraums des Prozesses, wobei die Darstellung eine oder mehrere Befehlssequenzen anzeigt, die von dem einen oder den mehreren Prozessoren des elektronischen Gerätes durchgeführt werden sollen; Erzeugen, unter Verwendung des einen oder der mehreren Prozessoren, eines Datensegments basierend auf der Darstellung, wobei das Datensegment eine Vielzahl von ganzen Zahlen aufweist; Bestimmen, unter Verwendung des einen oder der mehreren Prozessoren, ob ein Metaausdruck, der eine Vielzahl von geordneten ganzen Zahlen umfasst, in dem Datensegment erscheint, wobei der Metaausdruck einer Befehlssequenz von Interesse entspricht; und wenn der Metaausdruck in dem Datensegment erscheint, Initiieren einer Operation.
  14. Nicht-transitorisches computerlesbares Medium nach Anspruch 13, wobei das Erhalten, unter Verwendung des einen oder der mehreren Prozessoren, einer Darstellung eines virtuellen Adressraums des Prozesses aufweist: Identifizieren eines Kontextwechsels; und in Reaktion auf die Identifizierung des Kontextwechsels, Erhalten der Darstellung des virtuellen Adressraums des Prozesses.
  15. Nicht-transitorisches computerlesbares Medium nach Anspruch 14, wobei das Identifizieren des Kontextwechsels aufweist: Identifizieren eines Kontextwechsels, der mit dem Prozess verknüpft ist.
  16. Nicht-transitorisches computerlesbares Medium nach Anspruch 13, wobei das Erhalten, unter Verwendung des einen oder der mehreren Prozessoren, einer Darstellung eines virtuellen Adressraums des Prozesses aufweist: Erhalten einer ersten Darstellung des virtuellen Adressraums; und Erhalten einer zweiten Darstellung des virtuellen Adressraums, und wobei das Erzeugen, unter Verwendung des einen oder der mehreren Prozessoren, eines Datensegments, basierend auf Darstellung, aufweist: Erzeugen des Datensegments basierend auf der ersten und der zweiten Darstellung.
  17. Nicht-transitorisches computerlesbares Medium nach einem der Ansprüche 13 bis 16, wobei das Erhalten, unter Verwendung des einen oder der mehreren Prozessoren, einer Darstellung eines virtuellen Adressraums des Prozesses aufweist: Erhalten der Darstellung unter Verwendung einer Stapelzurückverfolgungsfunktion.
  18. Nicht-transitorisches computerlesbares Medium nach einem der Ansprüche 13 bis 17, wobei das Initiieren einer Operation aufweist: Bewirken, dass der Prozess beendet wird.
  19. Nicht-transitorisches computerlesbares Medium nach Anspruch 18, wobei das Bewirken, dass der Prozess beendet wird, aufweist: das Bewirken, dass der Prozess beendet wird unter Verwendung eines Betriebssystemkernels. der auf dem elektronischen Gerät ausgeführt wird.
  20. Nicht-transitorisches computerlesbares Medium nach einem der Ansprüche 13 bis 19, wobei die Darstellung jedem einer Vielzahl von Threads des Prozesses entspricht.
  21. Nicht-transitorisches computerlesbares Medium nach Anspruch 20, wobei das Initiieren der Operation aufweist: Beenden der Ausführung von jedem der Vielzahl von Threads des Prozesses.
  22. Nicht-transitorisches computerlesbares Medium nach Anspruch 20, wobei das Initiieren der Operation aufweist: selektives Beenden von jedem der Vielzahl von Threads des Prozesses.
  23. Nicht-transitorisches computerlesbares Medium nach einem der Ansprüche 13 bis 22, wobei die Darstellung mindestens eine Tabelle, eine verlinkte Liste, oder eine Kombination davon ist.
  24. Nicht-transitorisches computerlesbares Medium nach Anspruch 13, wobei die Darstellung eine Vielzahl von Daten anzeigt, die mit der einen oder den mehreren Befehlssequenzen verknüpft sind.
  25. Elektronisches Gerät zum Erkennen einer Befehlssequenz von Interesse, aufweisend: einen oder mehrere Prozessoren; Speicher; und eines oder mehrere Programme, wobei das eine oder die mehreren Programme in dem Speicher gespeichert sind und dazu gestaltet sind, von dem einen oder den mehreren Prozessoren ausgeführt zu werden, wobei das eine oder die mehrere Programme Befehle umfassen zum: Identifizieren eines Prozesses, der auf dem elektronischen Gerät ausgeführt wird; Erhalten, unter Verwendung des einen oder der mehreren Prozessoren, einer Darstellung eines virtuellen Adressraums des Prozesses, wobei die Darstellung eine oder mehrere Befehlssequenzen anzeigt, die von dem einen oder den mehreren Prozessoren des elektronischen Gerätes durchgeführt werden sollen; Erzeugen, unter Verwendung des einen oder der mehreren Prozessoren, eines Datensegments basierend auf der Darstellung, wobei das Datensegment eine Vielzahl von ganzen Zahlen aufweist; Bestimmen, unter Verwendung des einen oder der mehreren Prozessoren, ob ein Metaausdruck, der eine Vielzahl von geordneten ganzen Zahlen umfasst, in dem Datensegment erscheint, wobei der Metaausdruck einer Befehlssequenz von Interesse entspricht; und wenn der Metaausdruck in dem Datensegment erscheint, Initiieren einer Operation.
  26. Elektronisches Gerät nach Anspruch 25, wobei das Erhalten, unter Verwendung des einen oder der mehreren Prozessoren, einer Darstellung eines virtuellen Adressraums des Verfahrens aufweist: Identifizieren eines Kontextwechsels; und in Reaktion auf die Identifizierung des Kontextwechsels, Erhalten der Darstellung des virtuellen Adressraums des Prozesses.
  27. Elektronisches Gerät nach Anspruch 26, wobei das Identifizieren des Kontextwechsels aufweist: Identifizieren eines Kontextwechsels, der mit dem Prozess verknüpft ist.
  28. Elektronisches Gerät nach Anspruch 25, wobei das Erhalten, unter Verwendung des einen oder der mehreren Prozessoren, einer Darstellung eines virtuellen Adressraums des Verfahrens aufweist: Erhalten einer ersten Darstellung des virtuellen Adressraums; und Erhalten einer zweiten Darstellung des virtuellen Adressraums, und wobei das Erzeugen, unter Verwendung des einen oder der mehreren Prozessoren, eines Datensegments, basierend auf die Darstellung, aufweist: Erzeugen des Datensegments basierend auf der ersten und der zweiten Darstellung.
  29. Elektronisches Gerät nach einem der Ansprüche 25 bis 28, wobei das Erhalten, unter Verwendung des einen oder der mehreren Prozessoren, einer Darstellung eines virtuellen Adressraums des Verfahrens aufweist: Erhalten der Darstellung unter Verwendung einer Stapelzurückverfolgungsfunktion.
  30. Elektronisches Gerät nach einem der Ansprüche 25 bis 29, wobei das Initiieren einer Operation aufweist: Bewirken, dass der Prozess beendet wird.
  31. Elektronisches Gerät nach Anspruch 30, wobei das Bewirken, dass der Prozess beendet wird, aufweist: Bewirken, dass der Prozess beendet wird unter Verwendung eines Betriebssystemkernels, der auf dem elektronischen Gerät ausgeführt wird.
  32. Elektronisches Gerät nach einem der Ansprüche 25 bis 31, wobei die Darstellung jedem einer Vielzahl von Threads des Prozesses entspricht.
  33. Elektronisches Gerät nach Anspruch 32, wobei das Initiieren der Operation aufweist: Beenden einer Ausführung von jedem der Vielzahl von Threads des Prozesses.
  34. Elektronisches Gerät nach Anspruch 32, wobei das Initiieren der Operation aufweist: selektives Beenden von jedem der Vielzahl von Threads des Prozesses.
  35. Elektronisches Gerät nach einem der Ansprüche 25 bis 34, wobei die Darstellung mindestens eine Tabelle, eine verlinkte Liste, oder eine Kombination davon ist.
  36. Elektronisches Gerät nach Anspruch 25, wobei die Darstellung eine Vielzahl von Daten anzeigt, die mit der einen oder den mehreren Befehlssequenzen verknüpft sind.
DE102017106016.2A 2016-03-22 2017-03-21 System und Verfahren zur Erkennung von Befehlssequenzen von Interesse Ceased DE102017106016A1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201662311840P 2016-03-22 2016-03-22
US62/311,840 2016-03-22

Publications (1)

Publication Number Publication Date
DE102017106016A1 true DE102017106016A1 (de) 2017-09-28

Family

ID=59814587

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102017106016.2A Ceased DE102017106016A1 (de) 2016-03-22 2017-03-21 System und Verfahren zur Erkennung von Befehlssequenzen von Interesse

Country Status (3)

Country Link
US (1) US20170279821A1 (de)
CN (1) CN107220544A (de)
DE (1) DE102017106016A1 (de)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8856324B2 (en) 2013-01-28 2014-10-07 TrustPipe LLC System and method for detecting a compromised computing system
JP6851191B2 (ja) * 2016-12-15 2021-03-31 キヤノン株式会社 情報処理システム、情報処理装置、その制御方法とプログラム
CN111291368B (zh) * 2018-12-07 2024-06-18 北京奇虎科技有限公司 Cpu漏洞的防御方法及系统
CN111444509B (zh) * 2018-12-27 2024-05-14 北京奇虎科技有限公司 基于虚拟机实现的cpu漏洞检测方法及系统
CN111382440B (zh) * 2018-12-27 2024-05-10 北京奇虎科技有限公司 基于虚拟机实现的cpu漏洞检测方法及系统
CN111245780A (zh) * 2019-12-23 2020-06-05 北京威努特技术有限公司 一种基于工业防火墙的序列攻击检测实现方法
US10990676B1 (en) 2020-07-01 2021-04-27 Morgan Stanley Services Group Inc. File collection method for subsequent malware detection
US11061879B1 (en) 2020-07-01 2021-07-13 Morgan Stanley Services Group Inc. File indexing and retrospective malware detection system
US10860717B1 (en) 2020-07-01 2020-12-08 Morgan Stanley Services Group Inc. Distributed system for file analysis and malware detection

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101739519B (zh) * 2008-11-24 2013-01-16 财团法人资讯工业策进会 用于一硬件的监控装置及监控方法
CN102521542B (zh) * 2011-12-19 2015-01-07 北京大学 一种计算机软件漏洞利用的捕获方法及系统
CN102819697B (zh) * 2011-12-26 2015-07-22 哈尔滨安天科技股份有限公司 一种基于线程反编译的多平台恶意代码检测方法和系统
US8347391B1 (en) * 2012-05-23 2013-01-01 TrustPipe LLC System and method for detecting network activity of interest
US9483642B2 (en) * 2012-10-30 2016-11-01 Gabriel Kedma Runtime detection of self-replicating malware
US8856324B2 (en) * 2013-01-28 2014-10-07 TrustPipe LLC System and method for detecting a compromised computing system
US9886577B2 (en) * 2014-09-26 2018-02-06 Mcafee, Llc Detection and mitigation of malicious invocation of sensitive code
US20160232347A1 (en) * 2015-02-09 2016-08-11 Palo Alto Networks, Inc. Mitigating malware code injections using stack unwinding
US10229268B2 (en) * 2015-03-28 2019-03-12 Leviathan, Inc. System and method for emulation-based detection of malicious code with unmet operating system or architecture dependencies
US9998483B2 (en) * 2015-12-22 2018-06-12 Mcafee, Llc Service assurance and security of computing systems using fingerprinting

Also Published As

Publication number Publication date
CN107220544A (zh) 2017-09-29
US20170279821A1 (en) 2017-09-28

Similar Documents

Publication Publication Date Title
DE102017106016A1 (de) System und Verfahren zur Erkennung von Befehlssequenzen von Interesse
DE112019001121B4 (de) Auf einem computer implementiertes verfahren zum identifizieren von malware und system hierfür
DE112018002031B4 (de) Sichern einer betriebssystemkonfiguration unter verwendung von hardware
DE60303753T2 (de) Selektives Erkennen von böswilligem Rechnercode
DE60220214T2 (de) Methode und System zum Entdecken von Eindringlingen
DE602004010563T2 (de) Ausführliche Identifizierung von Hardware zur Verbindung der Software mit einem änderungstolerantem Computersystem
DE202011111121U1 (de) System zum Erfassen komplexer Schadsoftware
DE202014011086U1 (de) System zur Bestimmung einer Vertrauenswürdigkeitskategorie von Anwendungen, die eine Schnittstellenüberlagerung durchführen
DE102018109397A1 (de) Techniken für sicherheitschip-speicher für vertrauenswürdige ausführungsumgebungen
DE112012006419T5 (de) System und Verfahren zum Erkennen von Netzwerkaktivität von Interesse
DE112012002624T5 (de) Regex-Kompilierer
DE112014000578T5 (de) System und Verfahren zum Erkennen eines kompromittierten Computersystems
DE102013203854A1 (de) Erfassen von bösartigem Computercode in einem ausführenden Programmmodul
DE112012000526T5 (de) Malware - Erkennung
DE112012000279T5 (de) Ermitteln der Anfälligkeit von Computer-Software-Anwendungen gegenüber Rechteausweitungsangriffen
DE202014011089U1 (de) System zum Kopieren von Dateien zwischen verschlüsselten und unverschlüsselten Datenspeichereinrichtungen
DE112019000594T5 (de) Injizieren von Abfangcode in einen Ausführungspfad eines ein Programm ausführenden Prozesses, um einen Abfangadressbereich zu erzeugen, um möglichen schädlichen Programmcode zu erkennen
DE102012208751A1 (de) Datensicherheit für eine Datenbank in einer Mehrknotenumgebung
DE102016204698A1 (de) Verbessern des Erkennens von Steganographie am Perimeter
DE102016102945A1 (de) Code-Analyse zum Bereitstellen von Datenschutz in ETL-Systemen
DE102020112592A1 (de) Anwendungsverhaltensbezogene Fingerabdrücke
DE112021004808T5 (de) Erkennen von malware durch analyse verteilter telemetriedaten
EP2362321A1 (de) Verfahren und System zum Erkennen einer Schadsoftware
DE112022003368T5 (de) Verschlüsselungsüberwachungsregister und -system
KR20210054799A (ko) Url 클러스터링을 위한 url의 요약을 생성하는 방법 및 장치

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R083 Amendment of/additions to inventor(s)
R002 Refusal decision in examination/registration proceedings
R003 Refusal decision now final
R082 Change of representative

Representative=s name: ZACCO LEGAL RECHTSANWALTSGESELLSCHAFT MBH, DE