Open Source im professionellen Einsatz
Linux-Magazin Online Artikel/

Webanwendungen auf Schwachstellen prüfen mit dem Security Scanner Ratproxy

Rattenfänger

30.12.2008

Seit Mitte des Jahres greift Google den Entwicklern von Web 2.0 und AJAX-Anwendungen mit Ratproxy unter die Arme: Das kostenlose Testwerkzeug stöbert Sicherheitsprobleme auf, indem es den Netzwerkverkehr belauscht und darin nach auffälligen Mustern sucht. Dieser Artikel aus dem Sonderheft "Sichere Server" stellt das Tool näher vor.

1081

Wer eigene Web-2.0-Anwendungen entwickelt, möchte lieber früher als später wissen, ob diese bösartigen Angriffen gewachsen sind. Ein solches Vorhaben unterstützen verschiedene Testwerkzeuge, die jedoch bislang entweder eine schöne Stange Geld kosteten, wie etwa das Online-Tool Chorizo [2], oder aber viel Fachwissen und Einarbeitungswillen in eine fummelige Benutzeroberfläche voraussetzten, wie die Burpsuite [3]. Wie schön wäre es, wenn man einfach auf Knopfdruck feststellen könnte, welche Sicherheitslöcher noch in der eigenen Software klaffen und man am Besten gleich auch noch Tipps erhielte, wo sie im Quellcode zu finden sind.

Einen gewaltigen Schritt in diese Richtung geht Ratproxy [1]. Diese kleine, aber feine Sicherheitssoftware stammt aus den Entwicklungslabors des Suchmaschinengiganten Google. Dort schuf man das Werkzeug ursprünglich, um den eigenen Anwendungen auf den Zahn zu fühlen. Im Juli 2008 entschloss man sich jedoch, den aktuellen Stand unter die Apache License 2.0 zu stellen und der Öffentlichkeit zu präsentieren.

Lauschangriff

Google selbst beschreibt das Werkzeug als "halbautomatisiertes, größtenteils passives Web-Application Sicherheits-Audit Werkzeug". Hinter dieser kryptischen Bezeichnung versteckt sich eine äußerst simple Arbeitsweise: Ratproxy belauscht die Kommunikation zwischen Browser und Anwendung. Den dabei mitgelesenen Datenstrom klopft das Werkzeug automatisch auf bekannte Probleme, Risiken und Sicherheitslücken ab. Entwickler müssen Ratproxy folglich nur noch anwerfen und die Ausgaben begutachten. Das Testwerkzeug verlangt weder, dass man erst zeitaufwendig irgendwelche Testdaten generiert, noch dass man sie anschließend über eine umständlich zu bedienende Oberfläche Richtung Webanwendung feuert.

Von dieser sieht Ratproxy aufgrund seiner Arbeitsweise vor allem die Benutzerschnittstelle -- also genau die Teile, die als erstes ins Visier von Angreifern oder Skriptkiddies geraten. Darüber hinaus erreicht das Werkzeug Bereiche, in die andere Konkurrenzprodukte nicht so leicht vordringen. Diese bleiben beispielsweise gerne schon einmal vor passwortgeschützten Bereichen hängen oder scheitern an Weiterleitungen. Auf diese Weise umschifft Ratproxy auch geschickt das Javascript-Problem: Herkömmliche Testwerkzeuge müssen über mehr oder weniger aufwendige Verfahren erraten, wie und unter welchen Umständen welche Funktionen als nächstes zum Einsatz gelangt. Dieses Problem tritt besonders beim Test von Benutzeroberflächen zu Tage, wo Anwendern üblicherweise zahlreiche Schaltflächen und Menüs zur mehr oder weniger freien Auswahl stehen. Ratproxy wartet in solchen Fällen einfach ab, was der Benutzer seines Browsers als nächstes anstellt.

Dummerweise liegt hier auch gleichzeitig der Hase im Pfeffer: Das Werkzeug kann nur die Teile der Webanwendung unter die Lupe nehmen, die der Browser auch ansteuert. Führt dessen Herrchen bestimmte Funktionen nicht aus, bleiben sie folglich ungetestet. Man sollte sich daher vor der Inbetriebnahme von Ratproxy einen kleinen Schlachtplan zurechtlegen, welche Teile der Webanwendung man in welcher Reihenfolge aktiviert.

Dafür lassen sich allerdings auch bereits im produktiven Umfeld arbeitende Systeme nachträglich unter die Lupe nehmen -- schließlich liest Ratproxy standardmäßig nur mit und verursacht somit auch kein größeres Datenaufkommen im Netzwerk. Andere Scanner blasen demgegenüber mit DoS- oder Cross-Site-Skripting-Attakten zum Angriff, die das produktive System mit einer recht hohen Wahrscheinlichkeit in die Knie zwingen würden.

Mausefalle aufstellen

Ratproxy in Betrieb zu nehmen ist kinderleicht: Einfach den Quellcode von der Homepage herunterladen und das gute Dutzend C-Dateien über mit »make« übersetzen. Es gibt weder ein »configure«-Skript, noch irgendwelche umfangreichen Abhängigkeiten. Lediglich die Bibliotheken »libcrypto« und »libssl« (meist via OpenSSL geliefert) samt Headern müssen greifbar sein.

Der Start des Testwerkzeugs fällt schon wieder etwas komplizierter aus: Satte 22 Parameter regeln, welche Tests Ratproxy in welchem Umfang durchführt. Von ihnen hängt somit auch maßgeblich ab, wie umfangreich die Ausgaben ausfallen. Damit man nicht gleich beim ersten Durchlauf von einer Lawine an Problemmeldungen überrollt wird, sollte man zunächst mit den Standardvorgaben starten:

./ratproxy -v /tmp -w ratproxy.log -d meinedomain.de -lfscm

Dieser Befehl setzt Ratproxy auf die Web-Anwendung hinter »meinedomain.de« an. Alle URLs die nicht von diesem Server stammen, bleiben außen vor. Damit stellt man sicher, dass Ratproxy nicht versehentlich irgendwelche externen Werbeseiten mittestet. Der aufgezeichnete HTTP-Verkehr landet in vielen kleinen Dateien im temporären Verzeichnis (»-v /tmp«), während die Analyseergebnisse, also die eigentlich interessanten Informationen, in die Datei »ratproxy.log« wandern. Den verbliebenen Rattenschwanz dröselt der Kasten ,,Ratproxy-Parameter`` auf.

Wer dennoch lieber gleich das volle Programm fahren möchte, erweitert die Parameter zu folgendem Wurm:

./ratproxy -v /tmp -w ratproxy.log -d meinedomain.de -lextifscgjm

Das optional noch verfügbare Duo »-XC« (Großschreibung beachten) befreit Ratproxy schließlich aus seiner passiven Zuschauerrolle. Ohne Hemmungen prüft es dann, wie robust die Web-Anwendung auf XSS und XSRF-Attacken reagiert (»-X«) und wiederholt einige Requests mit veränderten Parametern (»-C«).

 

Tabelle 1: Wichtige Kommandozeilen-Schalter für Ratproxy

Parameter

Bedeutung

-l

Standardmäßig vergleicht Ratproxy Webseiten mit Hilfe von Checksummen. Der Parameter -l aktiviert ein weniger strenges Verfahren.

-f

Ratproxy inspiziert auch Flash-Anwendungen, die es bei gesetztem »-v« Parameter sogar für eine tiefere Analyse disassembliert.

-s

Auch sämtliche POST-Requests landen im Logfile.

-c

Notiert alle Seiten, die ein Cookie setzen möchten -- und zwar unabhängig davon, ob sie möglicherweise ein Sicherheitsrisiko darstellen.

-m

Ratproxy zeichnet alle Inhalte auf, die sich außerhalb der eigenen Domain befinden (Stichwort Remote Linking). Ohne diesen Parameter landen nur remote verlinkte Skripte und Stylesheets im Log. Voraussetzung ist jeweils, dass »-d« gesetzt wurde.

-e

Wirft einen genaueren Blick auf den aufs Caching.

-x

Protokolliert alle URLs, die später generell bei weiteren (manuellen) XSS-Tests helfen könnten.

-t

Standardmäßig protokolliert Ratproxy alle, für einen Directory-Traversal Angriff anfällige Schwachstellen. Dieser Parameter lässt auch weniger wahrscheinliche Kandidaten durch, die dann Ausgangspunkt für eine manuelle Analyse sein können.

-i

Protokolliert alle mitgeschickten PNG-Dateien, die wiederum in der Vergangenheit für XSS-Angriffe missbraucht wurden (insbesondere ältere Internet Explorer-Versionen sind hierfür anfällig).

-g

Erweitert die XSRF-Tests auch auf GET-Requests.

-j

Aktiviert die Erkennung von riskanten JavaScript-Konstruktionen, wie beispielsweise »eval()«-Aufrufe.

-X

Ratproxy greift selbst aktiv ins Geschehen ein und testet die Web-Anwendung auf ihre Anfälligkeit für XSS und XSRF-Angriffe.

-C

Ratproxy wiederholt einige Requests mit veränderten Parametern.

Eine vollständige und umfassende Aufstellung liefert die Dokumentation unter [1].

Sollte die Web-Anwendung auch Flash-Objekte ausliefern, disassembliert und analysiert sie Ratproxy. Dabei hilft dem Testwerkzeug der Flare Actionscript Decompiler, den es allerdings nur als fertig kompilierte Closed-Source-Anwendung gibt. Ratproxy liegt standardmäßig die Ausführung für x86-Prozessoren bei. Eine Fassung für 64-Bit-Linux gibt es auf der Flare-Homepage [4]. Die von dort bezogene und entpackte Datei erwartet Ratproxy im Unterverzeichnis »flare-dist«.

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Get it on Google Play

Deutschland

Ähnliche Artikel

comments powered by Disqus

Ausgabe 11/2014

Digital Issue: Price € 6,40
(incl. VAT)

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.