Freitag, 29. August 2008

News

präsentiert von: entwickler.com
Donnerstag, 9. März 2006

About Security #47: Beispiele für IDS-Regeln

Wie angekündigt gibt es diese Woche praktische Beispiele zu Intrusion-Detection-Systemen. Für verschiedene Angriffe werden passende Regeln für die Mustererkennung vorgestellt. Das Intrusion-Detection-System soll u.a. Directory-Traversal-Angriffe (About Security #16), das Heraufladen von PHP-Dateien und Angriffe auf eine Pufferüberlauf-Schwachstelle (About Security #5–10) erkennen.

Bevor die einzelnen Schwachstellen behandelt werden, müssen die für die Regeln notwendigen Informationen festgelegt werden. Zum einen muss das IDS wissen, wo es suchen, d.h. auf welche Pakete es achten soll. Dazu sind die gleichen Informationen wie bei einer Firewall nötig (About Security #29 ff.): Senderadresse und -Port, Zieladresse und -Port, das Protokoll und ob es sich um eine bestehende Verbindung handelt oder nicht. Zur Erkennung von Angriffen auf eine Webanwendung ergibt das folgende Regeln:

Senderadresse Port Zieladresse Port Protokoll Verbindung

Externes Netz beliebig Webserver 80 TCP besteht

Außerdem muss das IDS wissen, was es suchen soll, d.h. nach welchen Mustern.

About Security –
die Themen bisher:
  • Einführung (#1, 2, 3, 4)
  • Eine typische Schwachstelle: Der Pufferüberlauf
    (#5, 6, 7, 8, 9, 10)
  • Schwachstellen in Webanwendungen:
  • - SQL-Injection
    (#11, 12, 13)
    - Cross-Site Scripting
    (#14, 15)
    - Skriptcode einschleusen (#16)
    - HTTP Request Smuggling
    (#17, 18, 19, 20)
    - HTTP Response Splitting
    (#21, 22, 23, 24, 25)
    - Gefahren für Webanwendungen
    (#26)
  • Webserversicherheit
    (#27, 28)
  • Firewall (#29, 30, 31, 32, 33, 34, 35, 36)
  • Logfiles (#37, #38, #39, #40, #41)
  • Intrusion Detection (#42, 43, 44, 45, 46)

Directory-Traversal
Die angenommene Directory-Traversal-Schwachstelle befindet sich im Skript anwendung/hilfe/anzeige.pl:

http://www.server.example/anwendung/hilfe/anzeige.pl?
     parameter=[Directory-Traversal]

Die Webanwendung speichert ihre Benutzerdatenbank im Verzeichnis /datenbanken im Wurzelverzeichnis des Webservers. Es ist ein Wurm im Umlauf, der sich über die Webanwendung verbreitet und dabei zuerst über die Directory-Traversal-Schwachstelle die Benutzerdatenbank herunterlädt. Der dazu notwendig HTTP-Request lautet

GET /anwendung/hilfe/anzeige.pl?
     parameter=../../datenbanken/admin.db

Um diesen Angriff zu erkennen, muss das Intrusion-Detection-System auf entsprechende HTTP-Requests achten. Als erster Ansatz bietet sich für die Suche folgendes Muster an:

"/anwendung/hilfe/anzeige.pl?
     parameter=../../datenbanken/admin.db"

Damit würde ein Angriff des bekannten Wurms erkannt. Für Versuche, andere Dateien über die Schwachstelle herunterzuladen, wäre das IDS aber blind. Das lässt sich leicht ändern, indem auf die Angabe des Datenbank-Verzeichnisses und der Datenbank verzichtet wird:

"/anwendung/hilfe/anzeige.pl?parameter=../../"

Dies ist natürlich nur möglich, wenn die Webanwendung die Zeichenfolge ../../ selbst nicht verwendet. Ansonsten würde jeder zulässige Aufruf, der die Zeichenfolge enthält, einen Fehlalarm (false positive) auslösen.

Aber auch dieses Muster lässt sich umgehen, z.B. indem ein zusätzlicher Parameter eingefügt wird:

GET /anwendung/hilfe/anzeige.pl?
     gibts=nicht&parameter=../../datenbanken/admin.db

Da die Webanwendung den ihr unbekannten Parameter ignoriert, funktioniert der Exploit trotzdem. Das Muster muss also weiter verbessert werden. Dazu kann es aufgespalten werden:

"/anwendung/hilfe/anzeige.pl" UND "parameter=../../"

Das IDS prüft jetzt, ob die Daten diese beiden Zeichenketten enthalten. Eingefügte zusätzliche Parameter oder der Zugriff auf andere Dateien verhindern die Erkennung eines Angriffs nicht mehr.

Heraufladen von PHP-Dateien
Ein Skript, dass in einem Forum zum Heraufladen von Bildern verwendet wird, prüft die Endung der heraufgeladenen Dateien nicht. Dadurch kann über

GET /forum/upload.php?bild=boese.php

das PHP-Skript boese.php heraufgeladen werden. Für das IDS ergibt sich mit den obigen Überlegungen das folgende Muster:

"/forum/upload.php" UND "bild=" UND ".php".

Pufferüberlauf
Der eingesetzte POP3-Server enthält eine Pufferüberlauf-Schwachstelle, die durch einen überlangen Parameter für den Befehl USER ausgenutzt wird. Um einen Angriff zu erkennen, soll das IDS nicht auf bestimmte bekannte Parameter, sondern allgemein auf einen überlangen Parameter achten (vgl. About Security #46). Statt des Webservers ist diesmal der POP3-Server, Port 110, Ziel der Pakete:

Senderadresse Port Zieladresse Port Protokoll Verbindung

Externes Netz beliebig POP3-Server 80 110 besteht

In den Daten muss nach dem Befehl USER, gefolgt von einem Parameter, der länger als z.B. 50 Zeichen ist, gesucht werden.

Weitere Parameter
Die Regeln können weiter eingeschränkt werden, um unnötige Analysen zu vermeiden. So kann die Flussrichtung der Daten von Interesse sein: Für die Suche nach Directory-Traversal-Angriffen müssen nur Pakete untersucht werden, die von außen an den Webserver gesendet werden. In der Gegenrichtung könnte z.B. mit bestimmten Mustern nach der Übertragung vertraulicher Daten gesucht werden. Auch die zu untersuchende Datenmenge kann in manchen Fällen eingeschränkt werden: Erfordert ein bekannter Angriff z.B. zwingend eine bestimmte Zeichensequenz in den ersten n Bytes der übertragenen Daten, muss der Rest des Pakets nicht mehr darauf untersucht werden. Selbst wenn die Sequenz dort vorkommt wäre sie kein Zeichen für einen Angriff.

Nächste Woche gibt es einen Bericht über Neuigkeiten von der CeBIT. In der darauf folgenden Woche wird die Umsetzung der obigen Beispiele mit dem Open-Source-IDS Snort beschrieben.

 

 

Wenn Sie Fragen oder Themenvorschläge haben, können Sie diese gerne an die angegebene E-Mail-Adresse senden oder im Security-Forum einbringen!

 

Carsten Eilers


Ihre Meinung ist uns wichtig!
Mobile Computing Heute & Morgen!
Nehmen Sie an unserer Umfrage zum Thema Mobile Computing in Deutschland teil und nutzen Sie die Chance eine Casio Exilim EX-Z1050-Digitalkamera zu gewinnen!

Konferenzen

BASTA! 2008

BASTA! 2008

22.-26. September 2008
Rheingoldhalle, Mainz

SQLCON 2008

SQLCON 2008

22.-26. September 2008
Rheingoldhalle, Mainz

IPC 2008

IPC 2008

27.-31. Oktober 2008
Rheingoldhalle, Mainz

AJAX IN ACTION 2008

AJAX IN ACTION 2008

28.-31. Oktober 2008
Rheingoldhalle, Mainz

EKON 12

EKON 12

28.-31. Oktober 2008
Congress Centrum, Mainz

W-JAX 2008

W-JAX 2008

3.- 7. November 2008
ArabellaSheraton Hotel München

SOACON 2008

SOACON 2008

3.- 7. November 2008
Arabella Sheraton Hotel, München

JAX Asia 2008

JAX Asia 2008

25.-28. November 2008
Singapore, Kuala Lumpur, Jakarta

Werbung
Top-Jobs

OLYMPUS EUROPA Holding GmbH

Web-Entwickler (m/w)

Hueber Verlag GmbH & Co. KG

Webdesigner/ Webprogrammierer (m/w)

Gebit Solutions

Java Profis gesucht (m/w)

Software & Support Verlag GmbH

Volontär (w/m) Redaktion, Vollzeit

Magazine

Entwickler Magazin - Enterprise Technologies & Business Solutions

Entwickler Magazin

Enterprise Technologies & Business Solutions

dot.net magazin - die unabhängige Quelle für .NET-Technologien

dot.net magazin

Die Quelle für .NET-Technologien

Eclipse Magazin

Eclipse Magazin

Weltweit erstes Magazin für Eclipse-Entwickler

Java Magazin - Internet & Enterprise Technology

Java Magazin

Internet & Enterprise Technology

CREATE OR DIE - Ein Leben für die Kreativität

CREATE OR DIE

Ein Leben für die Kreativität

Business Technology - Management Magazin

Business Technology

Management Magazin

PHP Magazin - Professional PHP Development

PHP Magazin

Professional PHP Development

Bücher


hosted by HostEurope