-
Die
vorliegende Erfindung betrifft Methoden und Systeme zur Entdeckung
von Eindringlingen.
-
Eindringlingsentdeckungssysteme
(IDS) sind Systeme, die bei versuchtem oder erfolgreichem Eindringen
in ein Informationssystem oder Netz versuchen, dieses zu entdecken
oder zu alarmieren, in den Fällen
also, in denen das Eindringen als eine nicht autorisierte oder unerwünschte Aktivität im Hinblick
auf dieses System oder Netz zu betrachten ist.
-
Pufferüberläufe (BOFs)
bei pufferspeicherabhängigen
Benutzereingaben sind zu einem der größten Sicherheitsprobleme im
Internet und ganz allgemein der modernen Computeranwendung geworden.
Dies ist darauf zurückzuführen, daß ein derartiger
Fehler leicht beim Programmieren gemacht werden kann, und obgleich
ein solcher Fehler für
den Benutzer, der den Quellencode nicht versteht oder nicht handhaben
kann, unsichtbar ist, können
viele solche Fehler leicht ausgenutzt werden.
-
Das
Prinzip der Ausnutzung eines Pufferüberlaufs ist, die Teile des
Speichers zu überschreiben,
von denen angenommen wird, daß sie
durch eine willkürliche
Eingabe überschrieben
werden, und den Rechner zu veranlassen, diesen Code auszuführen. Um
zu sehen, wie und wo ein Überlauf
stattfindet, wollen wir zunächst
betrachten, wie ein Speicher organisiert ist.
-
Im
folgenden wird eine Art eines BOF-Angriffs im Einzelnen erläutert. Es
wird jedoch darauf hingewiesen, daß dies nur ein Beispiel ist
und daß die
Details des Angriffs sich von einem Angriff zum anderen ändern können. So
kann beispielsweise die Hinweismarke eine gewisse andere Marke sein
als die für
den Stapeladressenraum. (Unten wird der Ausdruck "Stapelhinweismarke" verwendet, der sich auf
eine Hinweismarke für
den Stapeladressenraum bezieht.) Speicheradressen können physikalische Adressen
des Speichers oder virtuell/logische Adresse sein, die für die in
einem Computer ablaufenden Prozesse benutzt werden. Eine Seite ist
ein Teil des Speichers, der seine eigene relative Adressierung verwendet,
was bedeutet, daß der
Kern den ursprünglichen
Speicher für
den Prozeß zuteilt,
zu dem dann Zutritt gewährt
wird, ohne zu wissen, wo der Speicher physikalisch im RAM angeordnet
ist. Der Prozeßspeicher
besteht aus drei Teilen: der Adressenraum der Prozesse ist in wenigstens
drei Bereiche unterteilt: Code, Daten und Stapel. Die Daten im Codesegment
sind Maschineninstruktionen, die der Prozessor ausgibt. Die Codeausgabe
ist nicht linear, sie kann überspringen,
springen und unter bestimmten Bedingungen Funktionen aufrufen. Es
gibt daher einen Zeiger, genannt EIP oder Instruktionszeiger. Die
Adresse, bei der der EIP anzeigt, enthält immer den Code, der als
nächstes
ausgeführt
wird. Der Datenbereich ist ein Speicherraum für verschiedene und dynamische
Puffer. In diesem Bereich werden statische Variable gespeichert.
Der Stapel ist ein durchgehender Block von Speicherdaten und möglicherweise
auch gewissen ausführbaren
Codes. Der Boden des Stapels ist an einer festen Adresse und eine
feste Größe des Speichers
ist dem Stapel zugeordnet. Wieviel von diesem Speicherraum benutzt wird,
wird dynamisch durch den Kern unter Laufzeit eingestellt. In Abhängigkeit
von den Einsatzbedingungen nimmt der Stapel entweder ab (in Richtung auf
niedrige Speicheradressen) oder zu. Der Stapel hat die Eigenschaft,
daß das
letzte Objekt, das auf dem Stapel abgelegt wird, das erste Objekt
ist, das entfernt wird. Diese Eigenschaft wird gewöhnlich mit letzte
Schlangeneingabe, erste Schlangenausgabe oder mit LIFO bezeichnet.
Der Stapel besteht aus logischen Stapelrahmen, die angestoßen werden,
sobald eine Funktion verlangt wird und bei der Rückkehr weggeschoben werden.
Ein Stapelrahmen enthält
Parameter für
eine Funktion, seine lokalen Variablen und die Daten, die zur Wiedererlangung
des früheren
Stapelrahmens erforderlich sind, einschließlich des Wertes des Instruktionszeigers
zur Zeit der Funktionsrufadresse nach dem Stapel. Die CPU liefert
Befehle zum Aufschieben auf den Stapel und Wegschieben vom Stapel.
Das Aufschieben führt
dazu, daß ein
Element oben auf dem Stapel hinzugefügt wird. Das Wegschieben verringert
im Gegensatz dazu die Stapelgröße um eine
Element, indem das letzte Element am Kopf des Stapels entfernt wird.
Ein Zählwerk,
genannt Stapelzeiger (SP) zeigt zum Kopf des Stapels. Der Stapelzeiger
(SP) ist ebenfalls einsatzabhängig.
Er kann zu der letzten Adresse auf dem Stapel zeigen oder zu der
nächsten
freien, verfügbaren
Adresse nach dem Stapel.
-
Ein
Puffer ist einfach ein durchgehender Block des Computerspeichers,
der viele Fälle
desselben Datentyps enthält.
Ein Pufferüberlauf
ergibt sich, wenn mehr Daten in einen Puffer gestopft werden, als
dieser handhaben kann, d. h. es kommt zum Überlaufen, Füllen über das
obere Ende, den Rand oder Bund. Pufferüberlauf (BOF) ist auch ein
Ausdruck, der als Programmierfehler Verwendung findet, wel cher die
Fehlbenutzung eines Programms in der Weise ermöglicht, daß das Programm gewisse Daten in
den Speicher überschreibt.
Ein Pufferüberlaufangriff
(BOF-Angriff) ist eine Möglichkeit,
BOF-Schwäche
im Programm auszunutzen, um einen willkürlichen Code abzusetzen oder
den Steuerfluß in
einem Zielsystem, in dem der Code läuft, in arglistiger Weise zu ändern.
-
Der
Mantelcode betrifft einfache Maschineninstruktionen, die auf den
Stapel geschrieben werden und dann die Rückadresse zur Rückführung zum Stapel ändern. Wenn
diese Methode benutzt wird, läßt sich
ein Code in einen ungeschützten
Prozeß einführen und
dann direkt auf den Stapel ansetzen. Die Rückadresse läßt sich ändern, um auf einen Mantelcode
auf dem Stapel hinzuweisen, beispielsweise durch Hinzufügung von
gewissen NOP (no Operation) Instruktionen vor dem Stapel. Infolgedessen
bedarf es keiner 100%igen Genauigkeit in Bezug auf die Vorhersage
des exakten Beginns des Mantelcodes im Speicher (oder sogar gewaltsames
Eingreifen). Die Funktion kehrt irgendwo vor dem Mantelcode auf
den Speicher zurück
und arbeitet sich durch die NOPs zur neuen Rückadresse durch und bedient den
Code auf dem Stapel.
-
In
den meisten Eindringsystemen, die Fingerabdruck als eine von ihren
Methoden zum Entdecken von Eindringlingen verwenden, wird der allgemeine
Fingerabdruck benutzt. Er ist gewöhnlich ein einfaches Muster,
der zu Recherchen nach einem gewissen Teil eines öffentlich
bekannten Angriffs paßt (Teile
des Mantelcodes oder gesamter Angriffscode). Diese bekannten IDS-Methoden
weisen gewisse Schwächen
auf. Zunächst
besteht die Möglichkeit,
einen BOF-Angriff (Mantelcode- und NOP-Teil des BOF-Angriffs) für auf viele
Weisen nutzbaren Service zu schreiben (BOF-Angriffe sind nicht einander ähnlich),
wobei der allgemeine Fingerabdruck keine ausreichende Methode zur
Entdeckung von BOF-Angriffen ist. Darüber hinaus ist es schwer, überaus große Datenmengen
zu bearbeiten, die analysiert werden müssen, und zwar aufgrund der
großen
Abmessung des Fingerabdrucks. Bei den bekannten Methoden wurde eine
Bit-Sequenz im Datenpaket mit einer großen Anzahl langer Fingerabdruckmuster
verglichen. Andererseits bestand aufgrund der langen Fingerabdruckmuster
typischerweise nicht die Notwendigkeit, die Fingerabdrücke mit "vielen Punkten" im Bitstrom des
Datenpakets zu vergleichen. Da jedoch die Anzahl der unterschiedlichen
Fingerabdrücke,
die überprüft werden
muß, sehr
hoch ist (gleich der unterschiedlichen bekannten Angriffstypen),
wurde erhebliche Prozeßkapazität gebunden.
Somit ergibt sich die Notwendigkeit für eine bessere Technik, um
sowohl öffentlich
bekannte als auch bis jetzt unbekannte BOF-Angriffe in einem TCP-Strom
aufzufinden.
-
Die
US 5 511 163 offenbart einen
Netzadapter zur Erkennung von Virussignaturen. Individuelle Dateipakete,
die im Netz zirkulieren, werden in einer einzigen Datei gesammelt
und für
Virussignaturen gescannt. Die Virussignaturen sind Versionen des vollständigen Programmcodes
der Viren. Die
US 6 219 706 beschreibt
eine Firewall zur Steuerung des Verkehrs zu oder von einem lokalen
Netz. Einer der Firewallprozesse besteht darin, Eindringversuche festzustellen,
und zwar durch Vergleichen von Paketnutzlasten mit gut bekannten
Eindringsignaturen.
-
Eine
Aufgabe der Erfindung besteht darin, ein neues Verfahren und System
zum Entdecken von Eindringlingen zu schaffen, das zur Entdeckung
von BOF-Angriffen brauchbar ist.
-
Diese
Aufgabe wird erfindungsgemäß gelöst, wie
in den beigefügten
unabhängigen
Ansprüchen
offenbart. Vorteilhafte Ausführungsformen
der Erfindung sind in den Unteransprüchen beschrieben.
-
Die
grundlegende Idee der vorliegenden Erfindung besteht darin, nach
einem speziellen Strom von Bits zu suchen, der in allen arbeitenden,
generellen BOF-Angriffen
enthalten sein muß.
Ein allgemeiner BOF-Angriff läßt sich
dahingehend beschreiben, daß der
NOP (no Operation) Teil beiseite gelassen wird und nur die Rückadresse
nach dem Mantelcodeteil berücksichtigt
wird. Auch kann ein Mantelcodeteil auf mehrere unterschiedliche
Weisen geschrieben werden. Das einzige, was von einem BOF-Angriff zum
anderen übrig
bleiben muß,
ist ein kleiner Teil der Rückadresse.
Somit ist der spezielle Bit-Strom, nach dem in der vorliegenden
Erfindung geforscht wird, eine spezielle Rückadresse oder ein Teil davon, d.
h. ein Zeiger oder ein Teil des Zeigers. Dieser wird hier Zeigerfingerabdruck
genannt. Der Zeigerfingerabdruck kann zusätzlich zu dem relevanten Zeiger auch
eine Anzahl Extra/Stopf-Bits aufweisen, die keine Bedeutung im Suchprozeß haben.
Der Zeigerfingerabdruck, der recherchiert wird, ist kürzer als
die bekannten Fingerabdrücke,
beispielsweise etwa 8–12
Bits lang. Dies hat den Nachteil, daß ein Zeigerfingerabdruck mit
verschiedenen Punkten im Bitstrom innerhalb eines Datenpakets verglichen
werden muß.
Andererseits kann die Anzahl der Zeigerfingerabdruckmuster erheblich
geringer sein als bei den bekannten Methoden, beispielsweise eines
für jedes Betriebssystem.
D. h., es ist kosteneffizient, nach dem Fingerabdruck aus den Daten
zu suchen, die analysiert werden müssen. Des gerabdruck aus den Daten
zu suchen, die analysiert werden müssen. Des weiteren und noch
wesentlicher, als daß der
Zeigerfingerabdruck in den meisten BOF-Angriffen vorliegen muß, ist die
Tatsache, daß er
auch zur Ermittlung unbekannter Angriffe benutzt werden kann. Bei
den bekannten Methoden ist es erforderlich, zunächst einen neuen Angriff zu
beobachten, bevor es möglich gewesen
ist, dafür
einen Fingerabdruck zu definieren.
-
Die
Erfindung läßt sich
für jede
Art von Zeigern verwenden. Die allgemeinen BOF-Angriffe benutzen Stapelzeiger. Modernere
BOF-Angriffe, so beispielsweise Massenüberläufe und Ein-Byte-Überläufe, verwenden
beispielsweise bibliothekarische c-Funktions-Zeiger (libc) und Zeiger
für eine
globale Offsettabelle (GOT). Auch andere Zeiger lassen sich in BOF-Angriffen
benutzen. Somit können
die Zeiger, nach denen gesucht wird, wahlweise oder alternativ auch
gewisse libc-Funktionszeiger
und Zeiger für GOT
aufweisen. Es wird darauf hingewiesen, daß die Zeiger zwischen unterschiedlichen
Betriebssystemen und Rechnern variieren.
-
Die
Zeigerfingerabdrücke
gemäß der Erfindung
können
für jedes
beliebige Datenformat recherchiert werden. Die Daten können beispielsweise
ein binärer
oder hexadezimaler Code sein oder in einem verschlüsselten
Format vorliegen, beispielsweise in UTF-8 verschlüsseltem
Format. Ein Fingerabdruck in vielfach parallelen Formaten läßt sich
gleichzeitig bei der Analyse verwenden.
-
Der
oder die Zeigerfingerabdrücke
lassen sich in dem gesamten Verkehr suchen. Bei der bevorzugten
Ausführungsform
der Erfindung werden nur spezielle Typen von Paketen oder Datenströmen gemäß einem
speziellen Protokoll oder speziellen Protokollen nach Zeigerfingerabdrücken überwacht. Derartige
Datenpakete oder Datenströme
werden vorzugsweise so ausgewählt,
daß sie
normalerweise keine Zeiger enthalten. Wenn ein Zeigerfingerabdruck
in einem solchen Datenpaket oder Datenstrom gefunden wird, kann
davon ausgegangen werden, daß ein
BOF-Angriff vorliegt. Es können
Einrichtungen vorhanden sein, mit denen festgestellt wird, welche
Datenpakete oder Datenströme
keine Zeiger enthalten sollten, und die Suche wird dann in diesen
ermittelten Paketen oder Strömen
durchgeführt.
-
Bei
einer weiteren Ausführungsform
der Erfindung werden die Teile des Verkehrs, die nicht gemäß einem
speziellen Protokoll benutzt werden, zuerst erkannt, und daraufhin
wird die Zeigerfingerabdruckmethode zur Ermittlung eines BOF-Angriffs
in diesen erkannten Teilen eingesetzt.
-
Bei
einer noch anderen Ausführungsform
der Erfindung können
der oder die Zeigerfingerabdrücke vom
gesamten Verkehr recherchiert werden, und, falls ein Zeigerfingerabdruck
gefunden wird, dann wird dieser daraufhin analysiert, ob das Vorhandensein
eines Zeigers an diesem speziellen Punkt im Verkehr zulässig oder
nicht zulässig
ist. Falls das Vorhandensein des Zeigers nicht zulässig ist,
wird ein BOF-Angriff vermutet, der festzustellen ist.
-
Die
Zeigerfingerabdruckmethode gemäß der Erfindung
läßt sich
besonders vorteilhaft mit anderen IDS-Methoden einsetzen, um die
bestmögliche
Ermittlung zu erreichen.
-
Die
bevorzugten Ausführungsformen
der Erfindung werden unter Bezug auf die beigefügten Zeichnungen beschrieben,
in denen
-
1 ein
Netzwerk darstellt, in dem die vorliegende Erfindung Anwendung findet;
und
-
2, 3 und 4 Fließdiagramme sind,
die unterschiedliche Ausführungsformen
der Erfindung zeigen.
-
System
und Verfahren gemäß der vorliegenden
Erfindung zum Entdecken von Eindringlingen (IDS) können auf
jedes beliebige Netzwerkelement Anwendung finden. Physikalisch gesehen
ist ein derartiges Netzwerkelement eine Maschine mit geeigneter
Software, um die ihr zugedachten Aufgaben zu erfüllen. Sie kann ein Router,
ein Personalcomputer (PC), ein Server oder was auch immer sein,
die für derartige
Zwecke Verwendung finden. Nach Angriffen läßt sich vom Verkehr an vielen
Punkten in einem Datensystem oder Netz recherchieren. Die Auswahl des
Ortes des IDS in einem Netz kann beispielsweise auf der Grundlage
der Bearbeitungskapazität
der zur Verfügung
stehenden Netzeinrichtungen in Bezug auf den Umfang des Netzverkehrs
oder einem Wunsch erfolgen, nur einen speziellen Verkehr zu überprüfen, beispielsweise
den im Intranet auftretenden Verkehr. In 1 sind einige
mögliche
Orte in einem Informationsnetz für
eine Netzeinrichtung IDS X gezeigt, die eine Zeigerfingerabdruckanalyse
gemäß der vorliegenden
Erfindung (oder im allgemeinen eine beliebe Fingerabdruckanalyse)
durchführt.
-
Ein
lokales Datennetz LAN (beispielsweise Intranet) einer Gesellschaft
ist über
eine Firewall 3 und einen Schalter 2 mit dem Internet 1 verbunden. Das
LAN weist Server X und Y sowie Arbeitsplätze 4 und 5 auf.
Der Verkehr innerhalb des LAN wird durch die Vermittlungsstelle 6 vermittelt.
Es sei darauf hingewiesne, daß diese
Netzarchitektur nur präsentiert wird,
um zu zeigen, wie das IDS in einem Datennetz angeordnet werden kann.
Eine Netzarchitektur, wie die benutzte, ist nicht für die vorliegende
Erfindung relevant, und die Erfindung soll nicht auf irgendeinen speziellen
Netztyp oder eine spezielle Netzarchitektur beschränkt werden.
-
Das
System zum Entdecken von Eindringlingen IDS A ist an einem "Portmonitor"-Zugang eines Schalters 2 angeordnet,
der sich außerhalb
des Firewalls 3 der Gesellschaft befindet. Auf einem Portmonitor-Zugang
ist es möglich,
den durch den Schalter 2 laufenden Verkehr zu überwachen.
An diesem Ort des IDS A ist es möglich,
beispielsweise solche Angriffe auf die Gesellschaft zu überwachen
oder festzustellen, deren Fortschreiten an dem Firewall 3 blockiert
wird. Der Nachteil dieses Ortes ist zumindest das hohe Verkehrsaufkommen.
Infolge dessen kann normalerweise der gesamte Verkehr nicht ohne
eine spezielle Anordnung analysiert werden. Diese Art einer speziellen
Anordnung besteht beispielsweise darin, daß mehrere Parallelcomputer
oder Einrichtungen mit einer gewissen speziellen Last kombiniert werden,
die die Lösung
im Gleichgewicht hält.
Der Vorteil ist darin zu sehen, daß dann, wenn die Bearbeitungskapazität ausreicht,
man in der Lage ist, sogar alle versuchten Angriffe auf das Netz
der Gesellschaft zu beobachten, die nicht durch die Firewall 3 hindurch
in das interne Datennetz gelangen.
-
Das
System zum Entdecken von Eindringlingen IDS B befindet sich für das Gesellschaftsnetz
innerhalb der Firewall. Im einzelnen heißt das, das IDS B ist an dem
Portmonitor-Zugang des Schalters 6 gelegen. Somit analysiert
das IDS B nur den Verkehr innerhalb des Gesellschaftsnetzes und
den das Gesellschaftsnetz verlassenden Verkehr, ist jedoch nicht
in der Lage, den Verkehr zu überwachen,
der die Firewall nicht passiert hat. An dieser Stelle sind mehr
Informationen über
die Art des Verkehrs vorhanden und daher ist es leichter, die Anaylsen
auf eine spezielle Art des Verkehrs zu beschränken.
-
Das
System zum Entdecken von Eindringlingen IDS C ist am Server Y angeordnet.
An diesem Platz arbeitet das IDS C zwischen dem Server Y und dem
verblei benden Gesellschaftsnetz und ist in der Lage, nur den Verkehr
zu überwachen,
der zum und vom Server Y stattfindet.
-
Das
System zum Entdecken von Eindringlingen IDS D ist an der Firewall 3 gelegen.
An diesem Ort führt
das IDS D die Analysen in der Firewall 3 hinsichtlich des
Verkehrs aus, der durch die Firewall 3 hindurchgeht.
-
Dazu
kommt, daß ein
IDS-System auch am Ende der Benutzer-Arbeitsplätze 4 oder 5 liegen kann
und den Verkehr dieser besonderen Station analysiert (IDS auf Hostbasis).
-
Gemäß der vorliegenden
Erfindung werden die Angriffe durch Recherchen von Zeigerfingerabdrücken festgestellt,
d. h. Zeigern oder ein Teil von ihnen. Die Zeiger, die hier interessieren,
sind Stapelzeiger, gewisse libc-Funktionszeiger und Zeiger für GOT. All
diese variieren zwischen unterschiedlichen Betriebssystemen und
Rechnern.
-
Im
allgemeinen verwenden Pufferüberlauf (BOF)
Angriffe Stapelzeiger. Weiterentwickelte Angriffe benutzen beispielsweise
Massenüberläufe oder
Ein-Byte-Überläufe. Auch
können
libc-Funktionen und GOT ausgenutzt werden. Libc-Funktions-Adressen und GOT-Zeiger sind
konstant (sie variieren jedoch zwischen unterschiedlichen Bibliotheksversionen,
Betriebssystemen und Rechnern), so daß alle ihre 32 Bits Fingerabdrücke von
Netzströmen
sein können.
-
Typische
Basisstapeladressen für
einige Betriebssysteme (Kerne) sind (in Abhängigkeit von beispielsweise
der aktuellen Übersetzung
des Betriebssystems können
auch andere existieren):
Das IDS-System gemäß der vorliegenden Erfindung überwacht
die Verkehrsströme
und die Suche nach Zeigerfingerabdrücken, d. h. besonderen Zeigern oder
vorbestimmten Teilen solcher Zeiger. Der Fingerabdruck, der gesucht
wird, kann ein konstanter Teil eines Stapelzeigers sein, der in
allen arbeitenden Stapelzeigern vorhanden ist. Der konstante Teil
kann auf der Grundlage der Startadresse des Stapels bestimmt werden.
Es soll nun ein Beispiel für
die Berechnung des konstanten Stapelfingerabdrucks geprüft werden.
-
Es
wird angenommen, daß Programme
gewöhnlich
nicht mehr als zwei Megabyte einer lokalen variablen Größe zuteilen.
Es wird auch angenommen, daß die
Umweltveränderlichen
keinen zu großen
Stapelraum (< 60
Kb) einnehmen. Werden diese beiden Faktoren addiert, so erhält man den
maximalen (schlechtester Fall) Stapelraum, der für den laufenden Benutzerprozeß zugeteilt
ist. Man kann dann den konstanten Teil der Basisstapeladresse auf
folgende Weise berechnen (in der Annahme, daß 221 + 60
Kb annähernd
221 ist): Zunächst ist der Stapel, der den
lokalen Veränderlichen
zugeteilt ist, 3 MB, was bedeutet binär 221 und
0×001FFFFF
in hexadezimalen Zahlen.
-
Die
bedeutet ferner, daß 21
weniger bedeutende Bits von Zeiger zu Zeiger variieren können. Wenn
daher ein Zeiger 32 Bit lang ist, sind die wesentlichsten 11 Bits
(32 – 21
= 11 Bits) in allen geltenden Stapelzeigern, die das Programm benutzt,
konstant.
-
So
kann beispielsweise der konstante Teil des Stapelzeigers für das Linuxprogramm
dadurch berechnet werden, daß der
lokale variable Adressenraum 0×001FFFFF
von der Basisstapeladresse von Linux 0×BFFFFFFF subtrahiert wird.
In anderen Worten, der konstante Teile des beispielsweisen Linuxprogramms
ist
Basisstapeladresse = 0×BFFFFFFF
= in binär 10111111
11111111 11111111 11111111.
Lokale Variablen = 0×001FFFFF
= in binär
00000000 00011111 11111111 11111111.
Konstanter Teil = 0×BFE00000
= in binär
10111111 11100000 00000000 00000000.
-
Als
ein Beispiel für
mögliche
Fingerabdrücke dienen
11-Bit-Fingerabdruckmasken für
die obigen Adressen (so ausgebildet, daß die Zahl der Bits im Fingerabdruck
durch 8 teilbar ist), nämlich
Solaris
2.6 (Intel) O×EF
E0
Redhat Linux 6.x (Intel) O×BF E0
Solaris 7.0 (Intel)
O×FF A0
OptenBSD
2.5 (Intel) O×EF
A0
FreeBSD 3.2 ()ntel) O×BF
A0
-
Beispiele
von Codesegmentadressen, für
die auch ein Fingerabdruck berechnet warden kann, sind:
Redhat
Linux 6.x (Intel) 0×08
00 00 00
Debian Linux 2.4 (Intel) 0×08 00 00 00
Digital Unix
4.0D (Alpha) 0×00
00 00 01 20??????
-
Beispielsweise
können
folgende Fingerabdrücke
zur Ermittlung von Ausbeuten der obigen Codesegmentadressen dienen:
Redhat
Linux 6.x (Intel) 0×08
00
Debian Linux 2.4 (Intel) 0×08 00
Digital Unix 4.0D
(Alpha) 0×01
20
-
Bei
der Suche nach positiven Kennzeichen für Angriffe mit Hilfe der obigen
Fingerabdrücke
wird daran erinnert, daß nur
die ersten 11 Bits des Fingerabdrucks den Daten, die eingesehen
werden, zu vergleichen sind und nicht die ganzen 2 Bytes. D. h.,
die letzten 5 Bits des Fingerabdruckbitmusters bleiben außer Betracht,
wenn der Fingerabdruck mit dem Verkehrsfluß verglichen wird.
-
Es
ist festzustellen, daß auch
weniger als 11 Bits verwendet werden können. Beispielsweise können 8 bis
11 Bits ausreichen. Die Erfindung ist nicht auf irgendeinen speziellen
Stapelfingerabdruck beschränkt.
In der vorliegenden Erfindung bedeutet der Stapelfingerabdruck ein
beliebiges Muster, das zur Suche eines Stückes der Plattform und des
Rechners in Abhängigkeit
von den Startadressenbits paßt,
die bei allen generellen Pufferüberflußangriffen
vorhanden sein müssen.
-
Das
IDS-System A, B, C und D überwacht den
Verkehr und die Recherchen nach Zeigerfingerabdrücken, d. h. vorbestimmten Zeigern
oder vorbestimmten Teilen von Zeigern bezüglich des Datenstroms. Der
zu überwachende
Verkehr hängt
von Einzelheiten bei jeder speziellen Anwendung ab. Es ist möglich, den
gesamten Verkehr zu überwachen oder
nur eine spezielle Art von Paketen oder Datenströmen gemäß einem speziellen Protokoll,
usw. Wenn der Zeigerfingerabdruck in einem solchen Teil des Datenstroms
gefunden wurde, wo er nicht zu dem normalen (legalen) Verkehr gehört, kann
angenommen werden, daß ein
BOF-Angriff vorliegt. Um also in der Lage zu sein, die aktuellen
Angriffe zu erkennen, muß das
IDS-System irgendwie die Teile des Stapelstroms kennen, in denen
das Vorhandensein von Stapelzeigern zulässig ist.
-
Daher
wird bei der bevorzugten Ausführungsform
der Erfindung nach Zeigerfingerabdrücken gesucht, die sich hauptsächlich im
Verkehr gemäß einem
speziellen Protokoll befinden, weil legaler Protokollverkehr keine
Stapelzeiger enthalten sollte, wie durch die Schritte 200, 201 und 202 in
dem Fließbild von 2 gezeigt
ist. So wird beispielsweise in dem FTP-Protokoll die Zeigerfingerabdrucktechnik
gemäß der vorliegenden
Erfindung vorzugsweise ein Kontrollverbindung angewendet, nicht
jedoch auf die Datenverbindung, da der Datenverbindungsverkehr legale
Stapelzeiger enthalten kann. Die einfachste Art und Weise, die FTP-Datenverbindung von
der FTP-Kontrollverbindung zu unterscheiden, bietet das Zugangsfeld
in den Datenpaketen. Die FTP-Kontrollverbindung ist gewöhnlich auf
den Zugang 21 adressiert und die Datenverbindung auf den Zugang
20.
-
In ähnlicher
Weise wird das Verfahren gemäß der Erfindung
nicht vorzugsweise zur Prüfung des
Inhalts einer e-Mail in dem SMTP-Protokoll benutzt. Durch Überwachung
des Verkehrs gemäß dem SMTP-Protokoll
besteht die Möglichkeit,
den Teil des Verkehrs zu erkennen, der den e-Mail-Inhalt übermittelt.
-
Wenn
der Verkehr gemäß dem Protokoll
nur "vom Menschen
wahrnehmbare" Daten
enthält,
in anderen Worten alphanumerische Symbole, die zusätzlich im
US-ASCII-Format
(7 Bits pro Symbol) vorliegen, kann der Zeigerfingerabdruck auf
eine Länge von
einem Bit schrumpfen. Dies ist darauf zurückzuführen, daß, da die alphanumerischen
Symbole 7-Bit-Symbole sind, jedes 8. Bit im Datenstrom 0 ist, wenn
der Verkehr ein legaler Verkehr ist. Falls jedes 8. Bit im Verkehrsstrom
nicht 0 ist, kann angenommen werden, daß der Stapelzeiger gefunden
wird und möglicherweise
ein BOF-Angriff vorliegt, da das höchste Bit in den Stapelzeigern
gewöhnlich
1 ist.
-
Bei
einer weiteren Ausführungsform
der Erfindung werden die Teile des Verkehrs, die nicht mit einem
speziellen eingesetzten Protokoll übereinstimmen, zuerst festgestellt,
und danach wird die Zeigerfingerabdruckmethode zur Ermittlung eines
BOF-Angriffs in diesen festgestellten Teilen eingesetzt. Es besteht
auch die Möglichkeit,
anormale Verwendung von Befehlen gemäß einem speziellen Protokoll
zu erkennen und die Zeigerfingerabdruckmethode zur Ermittlung eines
BOF-Angriffs auf die Teile des Verkehrs einzusetzen, wo ein derartiger
anormaler Gebrauch erkannt wird. Beispielsweise können viele aufeinanderfolgende
Authentifizierungsaufforderungen als anormal betrachtet werden,
da üblicherweise eine
erfolgreiche Authentifizierung ausreicht. Diese Ausführungsform
ist durch die Schritte 300, 301, 302, 303 und 304 im
Fließdiagramm
von 3 dargestellt.
-
Bei
einer weiteren Ausführungsform
der Erfindung kann nach Zeigerfingerabdrücken im gesamten Verkehr gesucht
werden, und wenn der Zeigerfingerabdruck gefunden wird, wird dann
analysiert, ob das Vorhandensein eines Zeigers an der speziellen Stelle
im Verkehr zulässig
ist oder nicht. Falls das Vorhandensein des Zeigers nicht zulässig ist,
wird ein festgestellter BOF-Angriff angenommen. Wenn beispielsweise
der Verkehr ein FTP-Verkehr ist, kann nach dem Zeigerfingerabdruck
zunächst
im gesamten Verkehr gesucht werden, und falls ein Zeigerfingerabdruck
im Verkehr gefunden wird, wird daraufhin analysiert, ob der spezielle
Teil des Verkehrs eine Kontrollverbindung oder eine Datenverbindung
ist. Falls der spezielle Teil des Verkehrs eine Kontrollverbindung
ist, wird ein Angriff festgestellt, und falls der spezielle Teil
eine Datenverbindung ist, wird der Zeiger als Teil des gültigen Verkehrs
und nicht als vorliegender Angriff betrachtet. Diese Ausführungsform
ist durch die Schritte 400, 401, 402 und 403 in
dem Fließdiagramm
von 4 dargestellt.
-
Das
IDS gemäß der vorliegenden
Erfindung registriert gewöhnlich
nur den festgestellten BOF-Angriff und gibt einen Alarm an einen
Systemoperator ab. Mit anderen Worten, die vorliegende Erfindung
ist hauptsächlich
darauf gerichtet, die Anschläge
festzustellen und die festgestellten Anschläge an eine gewisse andere Instanz
zu melden, wie dies durch die Schritte 202, 304 und 403 in
den 2, 3 bzw. 4 dargestellt
ist.
-
Die
Betriebsweise des Systems zum Entdecken von Eindringlingen gemäß der vorliegenden
Erfindung wird nun an einem Beispiel dargestellt. Wie aus 1 ersichtlich,
hat das System B zur Entdeckung von Eindringlingen Kenntnis des
Verkehrsprofils im internen Netz der Gesellschaft, d. h. das IDS
B weiß,
welcher Verkehr in dem Gesellschaftsnetz und zu welchem Ziel zulässig ist.
Es wird nun ferner angenommen, daß der zu überwachende Netzverkehr auf
den Verkehr zu und von einem speziellen Server beschränkt ist,
beispielsweise dem Server X in 1. Außerdem wird
angenommen, daß der
zu überwachende
Server X FTP, e-Mail (beispielsweise SMTP) und DNS (Domainnamenservice)
Dienstleistungen bietet.
-
Das
IDS B hat Kenntnis von den speziellen Protokollen FTP, SMTP und
DNS. Die Kenntnis der Protokolle ermöglicht es, daß das IDS
B die Zeigerfingerabdruckana lysen für das Protokoll selbst ausführen kann,
anstelle die Analysen für
die möglicherweise
beliebigen Daten durchzuführen,
die in dem Protokoll befördert
werden, beispielsweise dem Inhalt der e-Mail oder einem Datenstrom
eines durch das FTP übertragenen
Protokolls und dadurch eine große
Zahl unnötiger
Alarme vermieden werden kann.
-
Infolge
dessen sind die Bitmuster bekannt, die in den Protokollen zulässig sind
sowie die Bitmuster der Zeigerfingerabdrücke. In jenen Fällen, in
denen die beiden Muster in irgendeiner legalen Situation nicht einander
gleich sind, wird eine Zeigerfingerabdruckanalyse für einen
speziellen Teil des Verkehrs durchgeführt. Falls die Analysen anzeigen,
daß das
Bitmuster des Zeigerfingerabdrucks mit einem Bitmuster im Verkehr übereinstimmt,
wurde ein Verkehr gefunden, der nicht dem Protokoll entspricht und daher
möglicherweise
ein versuchter BOF-Angriff ist. Wenn andererseits ein Verkehr festgestellt
wird, der dem Protokoll entspricht, jedoch kein Bitmuster des Zeigerfingerabdrucks
von dem betreffenden Verkehr gefunden werden kann, kann mit ziemlicher
Sicherheit gefolgert werden, daß in
diesem Fall kein BOF-Angriff vorliegt (zumindest kein erfolgreicher).
-
Die
folgende Auflistung zeigt eine normale Verbindung des FTP-Protokolls
vom Start bis zur Authentifizierung:
S: "220 xyz.abc.com FTP server (Version
x.x) ready.
U: "USER
mike"
S: "331 Password required
for mike."
U: "PASS secret"
S: "230 Login mike ok."
U:...
S:...
-
In
diesem Fall wird aufgrund der Kenntnis des FTP-Protokolls das IDS
B erwarten, daß nach "USER <Benutzername>" ein Paßwortbefehl "PASS <Paßwort>" gemäß dem Protokoll
erforderlich ist. Wenn jedoch das IDS B anstelle des Paßwortbefehls etwas
anderes findet und dieses etwas anderes zu gewissen Zeigerfingerabdruckmustern,
die dem IDS B bekannt sind, paßt,
ist wahrscheinlich ein BOF-Angriff
festgestellt worden.
-
Im
folgenden wird ein Beispiel für
einen möglichen
Angriff in den oben beschriebenen Teil des FTP-Protokolls dargestellt.
Ein Stapel Zeigerfingerabdruck für
ein spezielles Linux-Betriebssystem in einem Intel-Prozessor ist
0×bfe.
Dann könnte
ein FTP-Protokollverkehr, der einen Angriff aufweist, lauten:
S: "220 xyz.abc.com FTP
server (Version x.x) ready.
U: "USER mike"
S: "331 Password required for mike."
U:... "\×BF\×EF\×C0\×23" ...
S:...
-
Es
ist zu erkennen, daß sich
ein Zeigerfingerabdruck in dem Protokollverkehr nach dem Paßwortbefehl
befindet, d. h. an einer Stelle, an der normalerweise kein Stapelzeiger
vorhanden sein sollte. Wenn daher ein Zeigerfingerabdruck 0×BFE in
diesem Teil des Protokolls festgestellt wird, läßt sich annehmen, daß ein BOF-Angriff versucht
worden ist.
-
Es
versteht sich für
den auf diesem Gebiet tätigen
Fachmann, daß die
oben beschriebenen Ausführungsformen
nur Beispiele sind und daß vielfältige Änderungen
vorgenommen werden können,
die im Schutzbereich der Erfindung liegen, der durch die beigefügten Ansprüche definiert
wird.