Suchen

Security-Tools – Das Metasploit-Framework (Teil 2) Exploits für Client- und Server-Applikationen entwickeln und anwenden

Autor / Redakteur: Marcell Dietl / Stephan Augsten

Betriebssysteme werden immer umfangreicher, ihre Quellcodes komplexer und das Angebot an Software zusehends größer. Für einen Kriminellen sind all dies mögliche Angriffspunkte, um einzelne Computer oder ganze Netzwerke erfolgreich zu kompromittieren. In diesem Beitrag widmet sich Security-Insider.de den Funktionen Metasploits zum Aufdecken und Ausnutzen von Schwachstellen.

Metasploit ermöglicht es, Server und Clients mittels eigens entwickelter Exploits zu kompromittieren.
Metasploit ermöglicht es, Server und Clients mittels eigens entwickelter Exploits zu kompromittieren.
( Archiv: Vogel Business Media )

Laut einer Studie von NCSP aus dem Jahre 2005 tauchten Fehler im Code kommerzieller Applikationen mindestens alle 1000 Zeilen auf; oftmals auch häufiger. Das US Unternehmen Coverity veröffentlichte etwa zeitgleich eine Analyse des Linux-Kernels. In mehr als fünf Millionen Zeilen Code (Lines of Code, LoC) konnte hier nur etwa alle 5000 Zeilen ein Fehler nachgewiesen werden.

Für die Verfechter quelloffener Systeme war dies ein Beweis für deren Sicherheit. Ein Hacker verfügt damit dennoch über mehrere hundert Stellen, die ein System verwundbar machten. Ob nun kommerziell oder quelloffen: Der Sicherheit fremder Software – besonders in kritischen Umgebungen – sollte niemals blind vertraut werden.

Um diesem Defizit beizukommen, bietet Metasploit eine Reihe von Ruby-Modulen, die besonders gut für den Einsatz in Fuzzern geeignet sind. Fuzzer sind simple Programme und Tools, mit deren Hilfe man die Robustheit einer Applikation durch das Senden vieler verschiedener Daten testen kann.

Kommt es dabei zum Absturz des Dienstes, gilt es die genaue Ursache zu untersuchen. Mit Hilfe von fertigen Skripten lässt sich anschließend ein individueller Exploit realisieren, der gut portierbar ist und als Beweis gegenüber anderen Verantwortlichen verwendet werden kann.

Seite 2: Mithilfe von Fuzzing schnell konkrete Ergebnisse erzielen

Mithilfe von Fuzzing schnell konkrete Ergebnisse erzielen

Der Einsatz und Nutzen von Fuzzern ist unter Sicherheitsexperten noch immer stark umstritten. Dennoch sind solche Tests in größeren Unternehmen zum festen Bestandteil bei der Entwicklung neuer Software geworden.

Mithilfe von Metasploit lassen sich derartige Skripte sehr schnell realisieren. Um ein Modul zum Auffinden schwacher Passwörter in IMAP-Servern zu einem Fuzzer für das entsprechende IMAP-Protokoll zu machen, bedarf es nur der Änderung weniger Zeilen Code.

Bibliotheken gibt es zudem für fast jeden erdenklichen Netzwerkdienst. Von weit verbreiteten wie FTP und SMTP bis hin zu Raritäten wie NDMP, das zum Steuern von NAS-Servern dient. Dies spart Zeit und passt zu einem der Ziele von Metasploit: Jeglicher Code muss schnell und einfach weiterverwendet werden können.

Um das eigene Skript zu nutzen, muss dieses noch in der Ordnerstruktur an der richtigen Stelle abgelegt werden, damit es anschließend über die MSF-Konsole aufgerufen und gestartet werden kann. Zur gezielten Analyse etwaiger Crashs sollte der Dienst zeitgleich im Debug Modus laufen; zum Beispiel mithilfe des darauf spezialisierten und freien Immunity Debugger.

Einen funktionalen Exploit mit geeignetem Payload realisieren

Wird bei einem Sicherheitstest ein Fehler gefunden, der in keinem der über 400 mitgelieferten Exploits genutzt oder in anderen öffentlich zugänglichen Fehlerberichten beschrieben wird, spricht man von einer Zero-Day-Lücke. Der zur Ausnutzung dieser Lücke zu entwerfende Angriffscode wird als Zero-Day(-Exploit) oder szenetypisch 0day bezeichnet.

Der Zeitaufwand hängt von der Komplexität der betroffenen Applikation und den eingesetzten Schutzmechanismen ab. Grundlegende Informationen, wie etwa die genauen Stellen bestimmter Operationen im Speicher, lassen sich mit einer Reihe vorinstallierter Tools und API-Funktionen schnell ermitteln.

Entscheidend ist abschließend die Wahl eines geeigneten Payloads, der bei erfolgreicher Ausführung auf dem System gestartet wird. Für verschiedene Varianten von Linux, Unix und BSD bis hin zu Windows in 32- und 64-Bit, enthält Metasploit hunderte einsatzbereiter Codes. Je nach benötigter Größe, reicht deren Funktionsumfang vom Anlegen eines neuen Nutzers bis zum Aufbauen einer grafischen Verbindung mittels VNC.

Seite 3: Lücken in Sicherheitssystemen mit Binärcode aufdecken

Lücken in Sicherheitssystemen mit Binärcode aufdecken

Neben dem Gebrauch von Payloads als Teil eines Exploits bietet das Ruby-Skript msfpayload die Möglichkeit, alle zur Verfügung stehenden Codes in verschiedene Ausgabeformate zu konvertieren. Die benötigten Optionen und deren Werte werden auf der Kommandozeile als Argumente an das Skript übergeben. Auf diese Weise lässt sich binnen weniger Sekunden beispielsweise eine EXE-Datei für Windows erzeugen, die einen neuen Nutzer anlegt.

Im Idealfall schlagen Virenscanner oder andere eingesetzte ID/IP Systeme beim Analysieren der erzeugten Datei sofort Alarm. Metasploit bietet jedoch ein weiteres Tool, um diese Systeme zu überlisten: msfencode. Von simplen XOR Instruktionen bis zu polymorphen Routinen mit exotisch klingenden Bezeichnungen wie „Shikata Ga Nai“ bieten sich dem Anwender eine Reihe von Verfahren, den Inhalt der Datei zu verschleiern.

Da sich die meisten Funktionen problemlos miteinander verknüpfen und mehrfach hintereinander aufrufen lassen, gibt es eine große Anzahl möglicher Varianten. Es empfiehlt sich daher, derartige Tests nur automatisiert oder stichprobenartig durchzuführen.

Exploits in verschiedenen Dateiformaten verstecken

Heutzutage sind meist nicht mehr die Server primäre Ziele eines Angriffs, sondern Anwendungen, die auf den Clients ausgeführt werden. Das Bewusstsein vieler Mitarbeiter hinsichtlich der Gefahren beim Öffnen von scheinbar harmlosen PDF- oder MP3-Dateien ist oft nicht gegeben.

Erschwerend kommt hinzu, dass das Verwalten hunderter oder gar tausender Clients weit komplexer ist, als das einzelner zentraler Server. Für Kriminelle sind all dies erfolgversprechende Gründe, die Computer der Angestellten als wichtigstes Ziel zu betrachten.

Das Metasploit-Framework bietet eine Reihe von Exploits, die Fehler in Programmen von Adobe, Microsoft und anderen Herstellern ausnutzen, um beim Öffnen der zugehörigen Dateiformate eigenen Code zu starten. Nicht nur zum Aufspüren realer Gefährdungen ist dies von Vorteil, sondern auch um allen Angestellten das Risiko glaubhaft bewusst zu machen.

Ob es um das Auffinden bisher unbekannter Lücken, das Ausnutzen bereits bekannter oder das Demonstrieren von Gefahren gegenüber anderen Personen geht: Der modulare Ansatz von Metasploit ermöglicht es, mit wenigen Anpassungen in verschiedenen Szenarien zu arbeiten.

(ID:2042713)