Zum Inhalt springen
Der Guide für ein smartes Leben.
PC-Sicherheit selbst testen

So funktionieren Exploits

Autoren: Redaktion pcmagazin und Jan Kaden • 15.3.2008 • ca. 3:00 Min

So funktionieren Exploits Wie kann es passieren, dass man mit relativ wenigen Zeilen Code ein ganzes System übernehmen kann? Hierfür haben Cracker viele Techniken entwickelt. Eine grundlegende Methode ist der Stack Overflow. Sie basiert darauf, dass man gezielt bestimmte Bereiche eines Programms...

So funktionieren Exploits

Wie kann es passieren, dass man mit relativ wenigen Zeilen Code ein ganzes System übernehmen kann? Hierfür haben Cracker viele Techniken entwickelt. Eine grundlegende Methode ist der Stack Overflow. Sie basiert darauf, dass man gezielt bestimmte Bereiche eines Programms im Systemspeicher überschreibt.

Dieses manipulierte Programm erledigt dann nicht mehr die Aufgaben, für die es eigentlich programmiert war. Stattdessen führt es den Code des Crackers aus, mit dem es überschrieben wurde.

Das Überschreiben des Codes funktioniert im Falle eines Stack Overflow so: Wenn jemand Daten in ein Programm eingibt, werden diese an bestimmten Plätzen im Speicher abgelegt, die über Variablennamen benannt sind.

Diese Plätze sind im Normalfall so groß dimensioniert, dass die eingegebenen Daten darin Platz haben. Allerdings darf man sich diese Speicherbereiche nicht wie abgeschlossene Kästchen vorstellen. Sie sind eher wie Leerstellen in einem fortlaufenden Text.

Sollten die eingegebenen Daten einmal nicht in den dafür vorgesehenen Platz passen, so "laufen sie über". Daher kommt der Name Stack Overflow. Die Inhalte der nächsten Variablen werden von den überlaufenden Daten überschrieben oder es trifft die Hinweise (Pointer), die dem Prozessor sagen, welchen Befehl er als nächstes ausführen soll.

Das ist genau das, was der Cracker will. Denn nun kann er diesen Pointer auf sein eigenes Programm zeigen lassen. Der Computer führt den Crackercode aus.

Machtapparat
Internet Explorer hat eine gefährliche Seite geladen. In der Metasploit- Konsole sieht der Cracker, dass der Fisch den Exploit-Köder gefressen hat.
© Archiv

Die Aufgabe des Programmierers ist es eigentlich, solche Überläufe zu verhindern. Leider schleichen sich immer wieder Programmierfehler ein, die dann von Angreifern ausgenutzt werden. Die brauchen das Programm nur noch mit einem Übermaß an Daten zu füttern und können so eigenen Code einschmuggeln. Das hört sich zwar einfach an, ist aber in der Praxis gar nicht so leicht. Man muss zunächst die Schwachstelle aufspüren.

Dann muss der Programmcode mit Hilfe eines Debuggers genau analysiert werden, um herauszubekommen, an welcher Stelle welcher Code eingefügt werden muss, um den gewünschten Überlauf zu erzeugen. Schließlich muss man dem entsprechenden Programm die schädlichen Daten "unterjubeln".

Das hier gezeigte Beispiel ist die einfachste Form einer Overflow-Attacke. Natürlich gibt es wesentlich komplexere Varianten wie zum Beispiel den Heap-Overflow, bei dem dynamisch zugewiesene Speicherbereiche manipuliert werden. Das Prinzip des Überschreibens ist aber bei allen diesen Attacken dasselbe.

Eine andere Möglichkeit besteht darin, einem Programm ausführbare Befehle zu übergeben, wo eigentlich Daten erwartet wurden. Der Klassiker sind SQL-Abfragen in Datenbanken. Wer in schlecht programmierten Eingabemasken zum Beispiel statt echten Namen SQL-Befehle eintippt, kann oft mehr herausholen, als eigentlich erlaubt war (SQL-Injection).

Einen ähnlichen Effekt trifft man gelegentlich in Web-Foren an: Ein Angreifer nutzt die Gelegenheit und gibt statt seiner Meinung Javascript- Code ein. Wenn das Forum nicht entsprechend gesichert ist, erschienen plötzlich gefährliche Links und Buttons auf der Homepage, die den Besucher auf Crackersites umleiten.

Leben mit dem Risiko

Das Teuflische an Exploits ist, dass der Angegriffene sich kaum dagegen wehren kann. Exploits nutzen Fehler in Programmen aus, die deren Benutzer in den meisten Fällen nicht kennt. Software-Hersteller reden eben nicht gern über Probleme mit ihren Produkten. Dem unmündigen User bleibt nur übrig, möglichst regelmäßig nach Updates für seine Software Ausschau zu halten.

Gefährlich bleiben aber die so genannten Zero-Day-Exploits. Das sind Angriffe auf Software- Schwachstellen, die noch nicht entdeckt wurden - außer vom Angreifer natürlich. In diesem Fall gibt es vor dem Tag des Angriffs, dem Tag Null, noch keinen entsprechenden Patch.

Hier kann Metasploit eine echte Hilfe sein. Sicherheitsexperten oder gute White-Hat-Hacker können mit dem Framework eine Sicherheitslücke finden, bevor sie böswilligen Crackern auffällt. Solch ein Exploit, der nicht dafür benutzt wird, Schaden anzurichten, wird auch Proof-of-Concept-Exploit genannt, zu Deutsch Machbarkeitsbeweis.

Es geht nur darum, die technischen Möglichkeiten eines Angriffs zu demonstrieren. Dank solcher Proof-of-Concept-Exploits kann der jeweilige Hersteller vielleicht reagieren, bevor tatsächlich eine Gefahr für seine Kunden droht.

Tools für Sicherheitstests

Metasploit ist nicht das einzige Programm seiner Art. Exploits lassen sich zum Beispiel auch mit den kostenpflichtigen Testprogrammen Core Impact (www.coresecurity.com) und Immunity Canvas (www.immunitysec.com) durchführen. Ein Standard-Tool für Penetration-Tests ist auch der kostenlose Network-Scanner Nessus (www.nessus.org).