Snort Ausarbeitung

Werbung
Snort
Vortrag im Fach
Anwendung Rechnernetze
Jan-Peter Hashagen
Wintersemester 2007/08
Hochschule Merseburg
1
Inhaltsverzeichnis
Einführung in Intrusion Detection Systeme.........................................................................................3
Arten von IDS.......................................................................................................................................4
Netzwerkbasierte IDS......................................................................................................................4
Hostbasierte IDS..............................................................................................................................5
Verteilte IDS....................................................................................................................................6
Weitere IDS-Arten...........................................................................................................................6
Funktionsweise von IDS.......................................................................................................................7
Probleme von IDS................................................................................................................................7
False positives..................................................................................................................................8
False negatives.................................................................................................................................8
Paketmodifikationen........................................................................................................................8
Insertion Attacks..............................................................................................................................8
Evasion Attacks..............................................................................................................................10
Ressourcenüberlastung..................................................................................................................10
Warum sind IDS wichtig?...................................................................................................................11
Snort...................................................................................................................................................12
Beispiele für Bedrohungen............................................................................................................12
Wurm.........................................................................................................................................12
Server Exploit...........................................................................................................................12
Snort Architektur............................................................................................................................13
Sniffer............................................................................................................................................14
Präprozessoren...............................................................................................................................14
Erkennung......................................................................................................................................15
Regeln............................................................................................................................................16
Alarme...........................................................................................................................................19
Barnyard.........................................................................................................................................20
Neu in Snort 2.8.............................................................................................................................20
Portlisten...................................................................................................................................20
IPv6...........................................................................................................................................21
Quellen...............................................................................................................................................21
2
Einführung in Intrusion Detection Systeme
Ein Intrusion Detection System (frei übersetzt: Einbruchserkennungssystem) dient der Erkennung
nichtautorisierter Zugangsversuche oder Angriffe auf ein System oder Netzwerk. Das Prinzip von
IDS ist dabei nicht neu. Die Funktionsweise von Autoalarmanlagen, Videoüberwachungen oder der
Analyse von Protokollen ist der von IDS sehr ähnlich.
Intrusion Detection Systeme benachrichtigen den Administrator über Angriffe. In eingeschränktem
Maß ist auch eine Vereitelung laufender Angriffe möglich. IDS sind hierauf jedoch nicht
spezialisiert, und die diesbezüglichen Möglichkeiten werden in diesem Dokument auch nicht näher
beschrieben.
Von IDS lässt sich eine Analogie zu Anti-Viren Software ziehen. Ein IDS macht im Netzwerk das, was
die Anti-Viren Software auf der Festplatte tut. Sie inspiziert den Traffic, sucht nach Angriffen und
versucht diese abzuwehren.
Intrusion Detection Systeme können sowohl rein softwarebasiert sein als auch als Kombinationen
aus Hardware und Software in Form vorinstallierter und vorkonfigurierter Stand-Alone IDS Geräte
existieren. Die IDS Software kann problemlos auf Rechnern gemeinsam mit anderen Diensten
laufen, aber separate IDS Sensoren und Manager sind die beliebtere Variante.
Mittels IDS lässt sich sehr gut die Einhaltung von Firmen-Sicherheitsrichtlinien überwachen.
Beispielsweise könnte leicht festgestellt werden, ob Mitarbeiter unerwünschte Chat-Programme
oder Filesharing-Dienste nutzen.
Als ein sehr wichtiger Aspekt ist festzuhalten, dass ein Intrusion Detection System nur ein Baustein
im Sicherheitskonzept eines Netzwerkes ist. Weitere Elemente wie Firewalls, Anti-Viren Software,
Proxys und ähnliches mehr sind elementare Bestandteile und keinesfalls zu vernachlässigen.
3
Arten von IDS
Intrusion Detection Systeme werden nach der Art der überwachten Aktivitäten, des Traffics oder
der Systeme unterschieden.
Netzwerkbasierte IDS
Abbildung 1: Netzwerkbasierte IDS
Netzwerkbasierte Intrusion Detection Systeme überwachen Teilnetze und Backbones und suchen
dort nach Angriffssignaturen.
4
Hostbasierte IDS
Abbildung 2: Hostbasierte IDS
Hostbasierte Intrusion Detection Systeme laufen auf einzelnen Hosts und überwachen das
Betriebs- und das Dateisystem auf Zeichen für Eindringlinge.
5
Verteilte IDS
Abbildung 3: Verteiltes IDS
Verteilte Intrusion Detection Systeme sind Gruppen von IDS, die als entfernte Sensoren fungieren
und ihre Daten an eine zentrale Managementstation schicken.
Weitere IDS-Arten
Gateway IDS
Ein Gateway IDS ist ein netzwerkbasiertes IDS, das am Gateway zwischen dem eigenen und einem
anderen Netzwerk eingesetzt wird. Es überwacht den Traffic in und aus dem Netzwerk am
Übergangspunkt.
Anwendungs-IDS
Anwendungs-IDS sind auf das Verstehen und Parsen von anwendungsspezifischem Traffic
6
fokussiert. Sie berücksichtigen dabei den Fluss der Anwendungslogik und der darunter liegenden
Protokolle.
In der Praxis werden meist Kombinationen aus netzwerk- und hostbasierten IDS eingesetzt. Die
signaturbasierte Erkennung von Angriffen arbeitet in der Kombination sehr effektiv.
Funktionsweise von IDS
IDS können nach der Art der überwachten Informationen unterschieden werden. Diese können
●
netzwerkspezifisch
●
hostspezifisch oder
●
anwendungsspezifisch
sein. Bei netzwerkspezifischen Informationen handelt es sich um den Inhalt der Pakete oder um
Hosts, die als Angreifer bekannt sind. Hostspezifische Informationen beziehen sich auf verwendete
Systemaufrufe, den Inhalt lokaler Protokolldateien und Dateisystemberechtigungen.
Anwendungsspezifische Informationen meinen den korrekten Fluss der Anwendungsdaten.
IDS werden ebenfalls nach der Art der Ereignisanalyse unterschieden:
●
Signaturerkennung
●
Anomalieerkennung
Die Signaturerkennung entspricht der Technik von Anti-Viren Software. Der Traffic wird mit
Aktivitätsmustern und Angriffssignaturen verglichen. Dies ist die verbreitetste Art der
Trafficbehandlung. Bei der Anomalieerkennung werden Heuristiken (Regeln oder vordefinierte
Konzepte) verwendet. Mittels dieser Heuristiken wird bestimmt, was das System unter „normaler“
und „unnormaler“ Aktivität versteht. Dadurch können Anomalien von normalem Systemverhalten
unterschieden, und es kann gegebenenfalls eingegriffen werden. Für die Bestimmung der
Heuristiken können Benutzerprofile verwendet werden. Die Benutzerprofile werden durch Analyse
des Traffics erstellt, etwa mittels statistischer Proben, regelbasierter Verfahren oder neuraler
Netzwerke.
Wird ein Angriff von einem IDS festgestellt, gibt es zwei Möglichkeiten der Reaktion:
●
Passive Reaktion
●
Aktive Reaktion
Die passive Reaktion beschränkt sich auf das Erzeugen von Alarmen und/oder Protokolleinträgen.
Bei der aktiven Reaktion versucht das IDS, aktiv in den Traffic einzugreifen. Dies kann durch das
Senden von TCP-Resetpaketen geschehen, mittels derer versucht wird, TCP-Verbindungen zu
unterbrechen. Problematisch dabei kann das Auftreten von Race Conditions sein, da nicht
garantiert werden kann, dass das Resetpaket den Zielrechner schneller erreicht als das Paket des
Angreifers. Weitere Möglichkeiten der aktiven Reaktion stellen das direkte Verwerfen von Traffic
(wenn das IDS inline betrieben wird) oder das Eintragen angreifender Hosts in Blocklisten dar.
Probleme von IDS
Probleme von IDS, auf die hier eingegangen werden soll, sind false positives, false negatives,
Paketmodifikationen sowie Insertion und Evasion Attacks.
7
False positives
Jedes IDS produziert false positives und false negatives. Unter einem false positve versteht man
das Auslösen eines Alarms bei normalem Traffic, wenn kein Einbruch oder Angriff erfolgt.
In der Standardkonfiguration produzieren die meisten IDS viele false positives. Um sie zu
reduzieren, muss das IDS an das Netz angepasst werden. Der Administrator muss dafür möglichst
genaue Kenntnis darüber haben, was im Netz passiert und was die Geräte tun sollten.
Zu false positives ist anzumerken, dass viele Hersteller und sogar manche erfahrene
Sicherheitsexperten behaupten, dass auch Ereignisse false positives seien, die dem Administrator
egal sind. Das ist falsch! Tatsächlich handelt es sich um echte positives, die lediglich in der
konkreten Umgebung oder zum aktuellen Zeitpunkt unwichtig sind.
False negatives
Unter einem false negative versteht man das Gegenteil eines false positives, nämlich das
Nichtauslösen eines Alarms, wenn ein Angriff stattfindet. Dies wird als viel schlimmer als ein false
positive angesehen, und man ist bestrebt, false negatives unbedingt zu vermeiden.
Paketmodifikationen
Die Sicherheitsexperten Tim Newsham und Tom Ptacek machten der Sicherheitscommunity einige
Defizite von IDS bekannt.
Durch kreative Fragmentierung von Paketen oder das Schreiben mit Überlappungen, die anders
wieder zusammengesetzt würden, als man dies aufgrund der individuellen Fragmente vermutete,
war es möglich, Angriffe direkt unter der Nase der meisten IDS durchzuführen.
Als Gegenmaßnahme wurden Präprozessoren entwickelt, die den Datenstrom genauer verstehen,
sowie Werkzeuge zur Wiederzusammensetzung von Fragmenten.
Insertion Attacks
Unter einer Insertion Attack versteht man das Einfügen nicht gültiger Pakete in die Leitung.
Ungültig kann hierbei bedeuten, dass das Paket vom Zielrechner verworfen wird, weil es
●
eine ungültige Struktur besitzt oder
●
den Zielrechner gar nicht erreicht.
Liest das IDS das ungültige Paket, kann es die Bedeutung des restlichen Traffics gegebenenfalls
nicht mehr erkennen. Dieser Zustand ist in Abbildung 4 dargestellt:
8
Abbildung 4: Erfolgreiche Insertion Attack
Ein Beispiel für eine Insertion Attack wird im Folgenden am im Februar 1996 bekannt gewordenen
phf.cgi Angriff gezeigt. Durch Anhängen des Newline-Characters an die GET-Anfrage lassen sich
beliebige Befehle auf dem angegriffenen Rechner ausführen. Das Auslesen der UNIX-Passwortdatei
würde etwa so funktionieren:
GET /cgi-bin/phf?\n/bin/cat\n/etc/passwd
Um einen solchen Angriff zu erkennen, führen IDS in GET-Anfragen eine Substring-Suche nach der
Zeichenfolge „phf“ durch. Eine erfolgreiche Insertion Attack lässt diese Suche ins Leere laufen,
indem die GET-Anfrage durch den Angreifer so modifiziert wird, dass die Zeichenfolge „phf“ nicht
mehr vorhanden ist:
GET /cgi-bin/phunhackf?\n/bin/cat\n/etc/passwd
Aus „phf“ wurde „phunhackf“. Nun muss der Angreifer nur noch dafür sorgen, dass der Zielrechner
die GET-Anfrage mit „phf“ erhält, während das IDS die harmlose, modifizierte GET-Anfrage
untersucht. Dies lässt sich durch beabsichtigtes Verfälschen der IP Checksumme des modifizierten
Pakets erreichen. Der Zielrechner wird dieses Paket verwerfen. Das IDS kann, abhängig von seiner
Konfiguration, dennoch einen Blick in das Paket werfen und so erfolgreich in die Irre geführt
werden.
Insertion Attacks funktionieren immer dann, wenn das IDS mehr Pakete akzeptiert als das
beschützte System. Daraus kann die Folgerung gezogen werden, dass IDS so strikt wie möglich bei
der Annahme von Paketen sein sollten. Damit kann man sich jedoch ein schwerwiegenderes
Problem einhandeln, die Evasion Attack.
9
Evasion Attacks
Bei der Evasion Attack verwirft das IDS ein Paket, das vom Zielrechner angenommen wird.
Abbildung 5: Evasion Attack
Ein Beispiel für eine Evasion Attack ist das Beginnen einer TCP-Verbindung mit Daten, etwa eine
GET-Anfrage, im Handshake-Paket. Der TCP/IP-Standard sieht dies zwar nicht vor, verbietet es aber
nicht. Wertet der Zielrechner die Daten aus, das IDS dagegen nicht, ist der Angreifer dem IDS
erfolgreich „ausgewichen“.
Ressourcenüberlastung
Eine weitere Angriffsart auf IDS stellt das Überlasten der Systemressourcen
●
CPU,
●
Arbeitsspeicher,
●
Festplattenkapazität und
●
Netzwerkbandbreite
dar. Die CPU ist mit dem Lesen von Paketen, der Bestimmung ihrer Art und Zuordnung zu einem
bestimmten, gespeicherten Netzwerkstatus beschäftigt. Ein IP Fragment muss etwa den anderen
Fragmenten zugeordnet werden, die zum entsprechenden Datagramm gehören. Im
Arbeitsspeicher erfolgt die Speicherung des TCP-Verbindungsstatus, die Verwaltung von Speichern
zur Zusammensetzung von Fragmenten sowie die Verwaltung von Datenpuffern zur Überprüfung
auf bekannte Muster. Ein Angreifer versucht möglichst viele, bedeutungslose Pakete zu senden,
damit das überlastete IDS die tatsächlich gefährlichen Pakete verpasst.
Auf der Festplatte des IDS werden Aktivitätsprotokolle gespeichert. Jedes Ereignis verbraucht
Speicherplatz. Da nur endlich viel Speicher vorhanden ist, versucht der Angreifer auch hier wieder,
mittels einer Flut bedeutungsloser Ereignisse die Festplatte zu füllen, damit sein Angriff unbemerkt
erfolgen kann.
IDS verfolgen die Aktivität in den überwachten Netzwerken, die allerdings nur sehr selten voll
ausgelastet sind. Wenige Überwachungssysteme können ein stark ausgelastetes Netz zuverlässig
überwachen, da das IDS im Gegensatz zu den Zielrechnern alle Pakete lesen muss. Der Angreifer
10
versucht nun, die Netzwerkbandbreite zu überlasten, indem er den Durchsatz soweit wie möglich
durch das Senden bedeutungsloser Informationen erhöht. Damit wird eine korrekte Analyse des
Traffics verhindert, da am IDS nur noch ein Teil der Pakete ankommt.
Warum sind IDS wichtig?
Jeder kennt das geflügelte Wort „Was ich nicht weiß, macht mich nicht heiß“, doch jeder, der schon
mal ein gebrauchtes Auto gekauft hat, weiß, wie absurd diese Aussage sein kann.
Es ist von größter Wichtigkeit, Kenntnis über laufende Angriffe zu haben. Werden die Systeme
gerade untersucht? Läuft ein Einbruchsversuch? Gibt es andere böswillige Aktivitäten? Das zu
wissen, kann den Unterschied zwischen einer erfolgreichen und einer fehlgeschlagenen
Kompromittierung ausmachen.
Genauso wichtig ist es, Detailinformationen über frühere Angriffe zu haben, um eine
größtmögliche Genauigkeit bei der Analyse zu gewährleisten. Es muss exakt festgestellt werden
können, welche Systeme und Daten kompromittiert wurden.
In manchen US-Bundesstaaten wie Washington und Kalifornien gibt es eine Veröffentlichungspflicht für Unternehmen. Datendiebstähle und Kompromittierungen müssen den betroffenen
Kunden gemeldet werden. Die Unternehmen sind natürlich bestrebt, dies zu vermeiden, da solche
Meldungen zu schlechter Presse, zu Verlust an Kundenvertrauen und eventuell zu fallenden
Aktienkursen führen.
Botnets sind ein Thema, da Hacker versuchen, die Kontrolle über möglichst viele Einzelrechner zu
erlangen. Dabei ist es ihnen egal, ob es sich um Computer von Privatpersonen oder um
Workstations in Unternehmen handelt. Ein von Hackern ferngesteuerter Rechner wird als Zombie
bezeichnet. Botnets werden von Hackern gerne für verteilte Denial-of-service (DDoS) Angriffe
benutzt, wobei Tausende oder Hunderttausende von Zombies einen oder wenige Server angreifen,
um sie lahmzulegen. Im Februar 2000 gab es einen solchen Angriff auf zahlreiche große Webseiten
wie eBay, Amazon.com, AOL Time Warner, CNN, Dell, Excite und Yahoo. Mitte 2004 gab es einen
weiteren großen Angriff auf das DNS System des Providers Akamai, wodurch sehr gut
angebundene Seiten wie Microsoft, Google und Yahoo nicht mehr erreichbar waren.
Natürlich ist jedes Unternehmen bestrebt, dass das eigene Netz nicht Teil solcher Angriffe ist. Aus
dem Ausmaß der Angriffe lässt sich die Lehre ziehen, dass kein Netz klein genug ist, um
ungeschützt zu bleiben. Wenn ein Hacker einen fremden Computer benutzen kann, wird er es tun.
Botnets bergen nicht nur die Gefahr der Teilnahme an DDoS-Angriffen. Es ist ebenfalls gängige
Praxis, dass Zombies für den Versand von Spammails missbraucht werden. Bei Privatcomputern
mag dies noch kein so schwerwiegendes Problem sein. Gehen aber über die Maildomain eines
Unternehmens Millionen von Spammails raus, droht dieser Domain schnell ein Blacklisting durch
große Provider. Das führt dazu, dass Mails des Unternehmens von diesen Servern nicht mehr
angenommen werden, was sich als sehr geschäftsschädigend erweisen kann.
Gerne werden gehackte Computer auch als Warez-Server missbraucht. Auf dem gehackten
Rechner wird etwa ein FTP-Server installiert und darüber dann alle erdenklichen illegalen Daten
ausgetauscht, von Programmen über Filme, Musik, Pornographie und ähnliches mehr. Unter
Umständen kann es einem Unternehmen also passieren, dass es eine Klage wegen CopyrightVerletzungen erhält, ohne überhaupt gewusst zu haben, dass die fraglichen Daten über
Workstations im Unternehmen liefen.
11
Als weiterer Punkt ist die Industriespionage zu nennen, denn ein gehackter Rechner eröffnet
natürlich auch die Möglichkeit, beliebige Daten zu stehlen.
Snort
Snort ist ein Open Source Netzwerk-IDS, das erstmals Ende 1998 verfügbar war, damals noch mit
sehr rudimentärer Funktionalität. Ende 1999 wurde Version 1.5 freigegeben, die bereits
Unterstützung für Plug-Ins enthielt.
Snort ist mehr als ein netzwerkbasiertes IDS. Es kann auch als Sniffer und Packet logger eingesetzt
werden. Dies sind die Kernfunktionalitäten von Snort. Im Wesentlichen funktioniert Snort wie ein
großer Staubsauger, der alle Objekte eines bestimmten Typs, in diesem Fall Pakete, aufsaugt und
zur Weiterverarbeitung bereitstellt.
Snort steht für eine Vielzahl verschiedener Plattformen zur Verfügung, darunter Linux,
verschiedene BSD-Varianten, Solaris, Mac OS X, HP-Unix, IRIX und Windows.
Snort arbeitet mit signaturbasierter Erkennung. Es werden Regeln verwendet, um gefährliche
Pakete im Netzwerk zu finden. Beispielsweise fahndet Snort nach Peer-to-peer File-Sharing
Diensten, indem nach GET-Anfragen auf anderen Ports als Port 80 gesucht wird.
Beispiele für Bedrohungen
Im Folgenden werden zwei typische Bedrohungen gezeigt, mit denen IDS umgehen müssen und
wie Snort darauf reagiert.
Wurm
Der Dabber Wurm zielt auf Rechner ab, die bereits mit dem äußerst schädlichen Sasser Wurm
infiziert sind.
Sasser nutzt einen Fehler im Local Security Authority Subsystem Service (LSASS) von Windows.
Findet er einen verwundbaren Rechner, infiziert er ihn mit einem Code, der den eigentlichen
Wurm von bereits infizierten Rechnern kopiert. Dazu startet er auf Port 5554 einen FTP-Server. Der
befallene Rechner wird von dem Wurm in unregelmäßigen Abständen ein- und ausgeschaltet.
Dadurch entstehen massive Produktivitätsverluste in Unternehmen bzw. Mängel in der
Erreichbarkeit und Nutzbarkeit von Internetseiten durch die Kunden.
Die entsprechende Snort Regel sucht nach TCP-Paketen, die an Rechner im internen Netz auf Port
5554 adressiert sind und das Wort „PORT“ im Nutzdatenteil enthalten. Bei einem Treffer wird die
Meldung „COMMUNITY VIRUS Dabber PORT overflow attempt port 5554“ ausgegeben.
alert tcp $EXTERNAL_NET any -> $HOME_NET 5554
(msg:"COMMUNITY VIRUS Dabber PORT overflow attempt port 5554";
flow:to_server,established,no_stream;
content:"PORT"; nocase; isdataat:100,relative;
pcre:"/^PORT\s[^\n]{100}/smi"; reference:MCAFEE,125300;
classtype:attemptedadmin; sid:100000110; rev:1;)
Server Exploit
Der Oracle TNS Listener ist ein zentraler Dienst für Oracle Datenbanken. Standardmäßig ist dieser
Dienst nicht passwortgeschützt. Anfang 2005 wurde bekannt, dass iSQL Plus (ein Webinterface für
SQL Plus) dazu missbraucht werden kann, den TNS Listener abzuschalten. Im Juli 2005 stellte
12
Oracle hierfür einen Bugfix bereit. Aufgrund der hohen Uptime Anforderungen kommerzieller
Datenbanken sind immer noch (Stand: 02/2007) viele ungepatchte Server in Betrieb. Es klingt
verrückt, dass die kritischsten Server für den Betrieb des Unternehmens als „zu wichtig zum
Patchen“ angesehen werden. Manche Administratoren denken aber tatsächlich so, andere wissen
nichts von der Lücke oder verstehen nicht die Wichtigkeit schneller und regelmäßiger Updates.
Ein IDS kann diese Lücke schließen. Wenn der Datenbanklistener allzu häufig abstürzt, könnte ein
Blick in die IDS Alarmprotokolle nützlich sein.
Die entsprechende Snort Regel sucht nach TCP-Paketen, die an SQL Server auf Port 3339 adressiert
sind und die Worte „isqlplus“, „COMMAND“, „STOP“, und „LISTENER“ im Nutzdatenteil enthalten.
Bei einem Treffer wird die Meldung „COMMUNITY ORACLE TNS Listener shutdown via iSQLPlus
attempt“ ausgegeben.
alert tcp $EXTERNAL_NET any -> $SQL_SERVERS 3339
(msg:"COMMUNITY ORACLE TNS Listener shutdown via iSQLPlus attempt";
flow:to_server,established;
content:"isqlplus"; nocase;
content:"COMMAND"; nocase; distance:0;
content:"STOP"; nocase; distance:0;
content:"LISTENER"; nocase; distance:0;
pcre:"/isqlplus\x2F[^\r\n]*COMMAND\s*\x3D\s*STOP[^\r\n\x26]*LISTENER/si";
reference:bugtraq,15032; reference:url,www.red-databasesecurity.
com/advisory/oracle_isqlplus_shutdown.html; classtype:attempteduser;
sid:100000166; rev:1;)
Snort Architektur
Snort besteht aus den Komponenten
●
Sniffer,
●
Präprozessor,
●
Erkennung und
●
Alarmmodul.
Zusätzlich werden die Ereignisse in Dateien oder Datenbanken protokolliert.
Abbildung 6: Snort Architektur
13
Der Sniffer sammelt alle Pakete vom Netzwerkbackbone auf. Dann schickt er die Pakete durch den
Präprozessor, um festzustellen, um was für Pakete es sich genau handelt. Die Pakete werden nach
ihrem Typ sortiert und in der Erkennungsengine mittels der Regelsätze untersucht. Abschließend
erfolgt abhängig von den Wünschen des Administrators eine Protokollierung und Speicherung in
einer Datenbank.
Nur noch der Sniffer ist Teil des Snort-Kerncodes. Der Präprozessor, die Erkennungsengine und das
Alarmmodul wurden zu Plug-Ins verändert.
Sniffer
Ein Sniffer ist ein Gerät (Hardware oder Software), das zum Abhören von Netzwerken benutzt wird.
Im Internet ist dies meistens IP Traffic, aber in LANs können auch andere Protokolle wie IPX und
AppleTalk vorkommen.
Da der IP Traffic aus vielen verschiedenen übergeordneten Protokollen besteht (TCP, UDP, ICMP,
Routingprotokolle, IPSec), analysieren Sniffer die verschiedenen Netzwerkprotokolle, um die
Pakete in menschenlesbare Form zu bringen.
Sniffer werden eingesetzt für
●
Netzwerkanalyse und Problembehebung,
●
Leistungsanalyse und Benchmarks,
●
Auslesen von Klartext-Passworten und andere interessanten Daten.
Abbildung 7: Sniffer
Der Sniffer empfängt die Pakete über ein promiscous interface. Die IDS Management Funktionen
laufen aus Sicherheitsgründen über eine andere Netzwerkschnittstelle.
Präprozessoren
Ein Präprozessor nimmt die Rohdaten und prüft sie mittels spezieller Plug-Ins (RPC, HTTP, Port
Scanner, Fragmentierung). Diese Plug-Ins prüfen die Pakete auf einen bestimmten Verhaltenstyp
genauer, als dies mit Regeln möglich wäre. Wenn der Typ bestimmt wurde, werden die Pakete an
die Erkennungsengine weitergeleitet.
14
Abbildung 8: Präprozessor
Präprozessoren sind äußerst nützlich, da die Plug-Ins nach Belieben aktiviert
oder deaktiviert werden können. Damit lässt sich die Genauigkeit der Analyse
exakt steuern.
Ein Beispiel: Wir erhalten in unserem Netz eine Menge Portscans, die sich aber
nicht als relevante Bedrohung erweisen. Daher entscheiden wir uns dafür, dass
wir keine Portscan-Alarme mehr vom IDS erhalten möchten. Um dies zu
erreichen, muss lediglich der Portscan-Präprozessor deaktiviert werden.
Bevor die Präprozessoren den Traffic erhalten, muss er durch die
Protokolldecoder. Die Präprozessoren zur Defragmentierung setzen
fragmentierte Pakete neu zusammen, unabhängig davon, ob die
Fragmentierung böswillig oder durch natürliche Vorgänge im Netzwerk erfolgte.
Der stream4 Präprozessor überprüft, ob die Pakete Teil einer aufgebauten
Sitzung sind oder nicht. Der stream4_reassemble Präprozessor setzt TCPStreams zu einem „Pseudo-Paket“ zusammen, um sie im Kontext analysieren zu
können. Die Präprozessoren der Anwendungsebene bestehen aus einer
Sammlung von Präprozessoren (die ständig mehr werden), die komplexe
Protokolle normalisieren können. Es werden gegebenenfalls Ereignisse erzeugt,
wenn die Protokolle fehlerhaft implementiert sind oder ein versuchter
Missbrauch des Protokolls festgestellt wird.
Wenn die Präprozessoren ihre Arbeit beendet haben, werden die Pakete an die Erkennungsengine
weitergeleitet.
Erkennung
Die Erkennungsengine ist der wichtigste Teil der signaturbasierten Intrusion Detection von Snort.
Die Daten werden vom Präprozessor entgegengenommen und gegen einen Satz von Regeln
15
geprüft. Wenn die Regeln mit Daten in den Paketen übereinstimmen, werden sie an das
Alarmmodul weitergeleitet
Abbildung 9: Erkennung
Regeln
Eine Snort Regel besteht aus dem Header und Optionen. Der Header besteht aus
●
Aktion
●
Protokoll
●
IP/Port
Die Optionen bestehen aus
●
Meldung
●
Fluß
●
Inhalt
●
Metadaten
16
Mögliche Werte für Aktion sind:
Aktion
Beschreibung
alert
Alarm erzeugen
pass
Paket durchlassen
drop
Paket verwerfen
reject
Paket ablehnen
sdrop
Paket verwerfen ohne Meldung
Die Werte drop, reject und sdrop stehen nur zur Verfügung, wenn das IDS inline betrieben wird.
Inline bedeutet, dass der gesamte Traffic in beiden Richtungen durch das IDS hindurchgeschleust
wird.
Als Protokoll sind tcp, udp, icmp oder ip (als Obermenge der anderen drei) die gängigsten Werte.
Hier lässt sich aber auch jedes andere Ethernet-Protokoll angeben.
Hinter dem Protokoll folgen IP-Adresse und Port des Quellrechners, dahinter die des Zielrechners.
Hier können Werte sowohl als Klartext als auch in Form vordefinierter Variablen, wie etwa
$SQL_SERVERS, verwendet werden. Ebenfalls ist es hier möglich, IP- und Port-Ranges anzugeben.
Der erste Wert in den Optionen, die Meldung, stellt lediglich eine Klartext-Meldung für das
Protokoll dar. Hier soll möglichst kurz und eindeutig beschrieben sein, was die Regel macht.
Der Fluß gibt die Richtung an, in die das Paket fließt. Mögliche Werte sind hier
●
to_server
●
from_server
●
to_client
●
from_client
●
established
●
stateless
Bei der Angabe von established werden nur Pakete untersucht, die zu Streams gehören, die mit
einem vollständigen 3-Wege Handshake begonnen haben. Die Angabe stateless untersucht
dagegen einzelne Pakete ohne Zugehörigkeit.
Im Inhalt wird als Klartext angegeben, wonach Snort im Nutzdatenteil suchen soll. Alternativ ist die
Verwendung von Hexcode möglich, der von Pipe-Symbolen umschlossen sein muss. Zusätzlich
können verschiedene Optionen angegeben werden:
Option
Beschreibung
depth
Suchtiefe (bis zu welchem Byte)
offset
Suche ab Byte x
within
Finde x innerhalb der nächsten y Bytes nach z
distance
Nächster Treffer mindestens x Bytes nach y
Die Inhaltsoption pcre erlaubt die Untersuchung des Inhalts mittels Perl-kompatibler regulärer
Ausdrücke.
17
In den Metadaten stehen die folgenden Angaben:
●
Referenz
●
Classtype
●
Security ID
●
Revision
Die Referenz verweist auf Informationen über die Art des Exploits oder Fehlers, den die Regel
überwacht. Hier kann auch eine URL mit weiterführenden Informationen angegeben werden. Der
Classtype erlaubt eine Einstufung der Wichtigkeit der Regel, ob es sich etwa um unbedeutenden
Chat Traffic, Portscans oder schwerwiegende Server Exploits handelt. Die Security ID (sid) weist der
Regel einen eindeutigen Wert zu. Dieser ist für die Arbeit mit Datenbanken unabdingbar. Die
Revision (rev) gibt die Version der Regel an.
18
Alarme
Abbildung 10: Alarmmodul
Nachdem die Behandlung durch die Regeln beendet ist, muss das Ergebnis der Prüfung irgendwo
ausgegeben oder gespeichert werden. Trifft eine Regel auf ein Datenpaket zu, wird ein Alarm
ausgelöst. Alarme können in eine Protokolldatei geschrieben oder über eine Netzwerkverbindung
oder durch UNIX Sockets an den Windows Nachrichtendienst oder an SNMP Traps gesendet
werden. Die Alarme können auch in SQL Datenbanken wie MySQL und PostgreSQL gespeichert
werden.
Dafür verwendet die Alarmkomponente eine Vielzahl verschiedener Plug-Ins. Ein paar Beispiele:
Plug-In
Beschreibung
SnortSnarf
Snort Analyzer mit HTML Ausgabe
Snortplot
Perl Skript für graphische Darstellung der Angriffe
Swatch
Echtzeit Syslog-Überwachung mit Unterstützung für E-Mail Benachrichtigung
ACID
Analysekonsole für Intrusiondatenbanken
BASE
ACID-Nachfolger; empfohlen für Abfrage und Analyse von Snort Alarmen
19
Barnyard
Snort war ursprünglich nicht für viele der heutigen Aufgaben konzipiert wie Erkennung von
Portscans, Zusammensetzen von TCP-Datenströmen, HTTP URI Normalisierung und Protokollierung
in Datenbanken. Viele der Ausgabe Plug-Ins waren zu langsam, weil die Netze zu schnell oder die
Plug-Ins zu anspruchsvoll waren. Das war problematisch, da der Sniffer solange blockiert war, bis
das Ausgabe Plug-In seine Arbeit beendet hatte.
Daher war man bestrebt, die Ausgabe von der Überwachung zu trennen und eine asynchrone
Ereignisverarbeitung zu ermöglichen. Das hat zudem den Vorteil, dass die Ausgabe ohne RootRechte laufen kann, da nur der Sniffer direkten Zugriff auf das promiscous interface benötigt.
Aus diesen Überlegungen heraus entstanden die Snort Unified Files. Sie gewährleisten eine
einheitliche Abspeicherung der wichtigen Informationen:
●
Alarme
●
Protokolle
●
Stream-stat
Die Alarmdateien enthalten alle essentiellen Informationen über einen Snort Alarm, aber nicht
mehr. Dadurch werden sie äußert klein, nämlich gerade 56 Byte.
Die Protokolldateien enthalten alle Informationen über die Regel, die zum Ereignis führte.
Weiterhin enthalten sie das komplette Paket.
Die Stream-stat Dateien werden nicht aufgrund von Alarmen erzeugt. Der stream4 Präprozessor
schreibt Informationen über jede beobachtete TCP-Sitzung in eine Stream-stat Datei. Diese Dateien
werden bislang jedoch noch von keinen Ausgabe Plug-Ins verwendet.
Neu in Snort 2.8
Die wichtigsten Neuerungen in Snort 2.8 sind Portlisten sowie Unterstützung für IPv6.
Portlisten
Beispiele für die Angabe von Portvariablen in der Snort-Konfigurationsdatei:
Beispiel
Beschreibung
portvar EXAMPLE1 80
Port 80
var EXAMPLE2_PORT [80:90]
Ports 80 bis 90 inklusive
var PORT_EXAMPLE2 [1]
Port 1
portvar EXAMPLE3 any
jeder beliebige Port
portvar EXAMPLE4 [!70:90]
alle Ports außer 70 bis 90 inklusive
portvar EXAMPLE5 [80,91:95,100:200]
Ports 80, 91 bis 95 inklusive sowie 100 bis 200
inklusive
Die Verwendung von „var“ wird in Zukunft veraltet sein. Wird sie benutzt, muss der Variablenname
mit PORT_ beginnen oder mit _PORT enden. Die Portlisten-Neuerung ist in EXAMPLE5 dargestellt.
20
IPv6
Ein Beispiel für die Verwendung von IPv6 Adressen:
alert ip\
fe80::20c:29ff:fe00:c6c2 any -> fe80::20c:29ff:fe60:232a any\
(msg:"LOCAL IPv6 Link Local test"; sid:2000001;)
Quellen
Snort – IDS and IPS Toolkit (Beale, Baker, Esler)
http://www.snort.org/docs/idspaper/ (11/2007)
http://searchsecurity.techtarget.com.au/topics/article.asp?DocID=1278254 (11/2007)
21
Herunterladen