02.07.2008, 07:59 Uhr
Reverse Engineering als Security Check
Geschlossene Applikationen sperren sich gegen jeden tieferen Blick. Wer über ihre Funktionsweise und Sicherheit genaues wissen will, muss zu anderen Mitteln greifen.
Marc Ruef ist Buchautor und Security Consultant beim Sicherheitsunternehmen scip AG, Zürich, www.scip.ch
Die kommerzielle Computerindustrie gibt ihre dedizierten Produkte an den Endkunden als sogenannte Blackboxes weiter. Das heisst, die Lösungen arbeiten als autonome Elemente, die ihre genau definierten Ziele erfüllen können, ohne dass der Endanwender überhaupt weiss, wie das Ganze vonstattengeht. Dies kann dann entweder eine Closed Source Software oder auch eine Appliance-Lösung sein (zum Beispiel eine Firewall oder ein Router).
Derlei Blackboxen sind mit dem gravierenden Nachteil verbunden, dass Aussenstehende aufgrund des fehlenden Verständnisses für die Funktionsweise keine Rückschlüsse auf etwaige Schwachstellen ziehen können. Der Kunde muss dem Hersteller glauben, dass dieser alle Anstrengungen unternommen hat, um ein sicheres Produkt zu schaffen und bereitzustellen. Menschliches Versagen und der stetig wachsende Kostendruck lassen aber berechtigterweise an diesem traditionellen Credo zweifeln.
Allen, die es genau wissen wollen, gibt Reverse Engineering ein mächtiges Werkzeug an die Hand, um diese Blackbox zu knacken. Wie der Name schon sagt, kehrt sich dabei die ursprüngliche Entwicklung um: Man arbeitet sich also vom finalen Produkt zu den ursprünglichen Blaupausen vor. Als Ergebnis eines umfassenden Reversings winkt letztlich das ganzheitliche Verständnis für die Funktionsweise und den Aufbau des untersuchten Produkts. Ein solches Reversing kann auf verschiedenen Ebenen angestrebt werden.
Netzwerkanalyse: Aufspüren von Kommunikationswegen
Bei netzwerkbasierten Lösungen lassen sich zum Beispiel die entsprechenden Kommunikationsbeziehungen und der damit geführte Datenaustausch untersuchen. Durch einen Protocol Analyzer werden die übertragenen Pakete aufgezeichnet. Weitere Untersuchungen zeigen dann, was für ein Protokoll eingesetzt wird und welche Angriffsmöglichkeiten sich dadurch ergeben könnten (zum Beispiel Replay-Attacken oder schwache Verschlüsselungen).
Live-Analyse: Software-Aktivitäten unter der Lupe
Die jeweiligen Betriebssysteme und Software-Elemente werden desweiteren bezüglich Funktionsaufrufen, Assembler-Instruktionen und Speicherbelegungen analysiert. Dabei lässt sich in ähnlicher Weise wie bei der Netzwerkanalyse das Verhalten der Software erkennen. Ineffiziente Prozeduren oder das Ablegen von sensitiven Daten im Klartext sind hier als mögliche Sicherheitslücken genauso denkbar wie das Anlegen von für jedermann beschreibbaren Dateien oder das Einlesen manipulierter Objekte aus der Windows-Registry.
Disassemblierung: Sicherheitslücken entdecken
Urspünglich im zwielichtigen Bereich des Software-Crackings eingesetzt, wird das Reversing von binären Applikationen je länger je mehr auch für das Finden von Sicherheitslücken herangezogen. Durch die Disassemblierung der entsprechenden Binaries bringt man den exakten Ablauf der Instruktionen, welche an den Prozessor weitergereicht werden, in Erfahrung. Mit grossem Aufwand wird es damit möglich, zu jedem Zeitpunkt der Programmausführung den exakten Zustand des Systems determinieren zu können.Unschöne und ungewollte Zustände (etwa Race Condition und Pufferüberlauf) lassen sich dabei mit absoluter Genauigkeit ermitteln.
Fazit: Nur für erfahrene Spezialisten
Reverse Engineering ist, will man es mit einem Höchstmass an Genauigkeit betreiben, mit einem schier unendlichen Aufwand verbunden. Der Reverser muss in einer Laborumgebung das zu untersuchende Objekt vorbereiten und es in akribischer Kleinarbeit in seine logischen und funktionalen Einzelteile zerlegen. Er muss sich mit einer hohen Vielschichtigkeit technischer Komponenten auseinandersetzen und diese bis ins kleinste Detail verstehen können. Aus diesem Grund ist eine solche Aufgabe nur durch erfahrene Spezialisten in angemessener Weise zu bewältigen.
Marc Ruef