Login
Newsletter
Werbung

So, 20. Juni 2004, 00:00

Exploiting Software

Wie gelingt es Hackern eigentlich immer wieder aufs Neue, Schwachstellen ausfindig zu machen und für ihre Zwecke zu nutzen? Das ist der Punkt, an dem »Exploiting Software« von Greg Hoglund und Gary McGraw ansetzt. Dieses englischsprachige Buch enthält zahlreiche Beispiele erfolgreicher Attacken, beschreibt typische Tools eines Hackers und erläutert ausgiebig spezielle Hacker-Techniken.

Cover von Exploiting Software

Ralf Rösler

Cover von Exploiting Software

Vorwort

Software-Sicherheit hat in den letzten Jahren immer mehr an Brisanz gewonnen. In regelmäßigen Abständen werden neue Sicherheitslücken und Bugs bekannt, die mitunter desaströse Auswirkungen auf das System haben.

Aber warum ist das eigentlich so? Warum sind die heutigen Computerprogramme so fehlerhaft? Wieso sind Firewalls und Antivirensoftware nicht in der Lage, ein System wirkungsvoll vor gegnerischen Angriffen zu schützen? Und überhaupt: Wie gelingt es Hackern eigentlich immer wieder aufs Neue, Schwachstellen ausfindig zu machen und für ihre Zwecke zu nutzen?

Das ist der Punkt, an dem »Exploiting Software« von Greg Hoglund und Gary McGraw ansetzt. Dieses englischsprachige Buch enthält zahlreiche Beispiele erfolgreicher Attacken, beschreibt typische Tools eines Hackers und erläutert ausgiebig spezielle Hacker-Techniken.

Der Grundgedanke ist einfach: Wenn man seine Software bzw. System ausreichend vor Angriffen schützen möchte, muss man erst einmal verstehen, wie Hacker vorgehen und ihre Angriffe ausführen.

Das Buch

Das Buch erläutert zunächst in allgemeiner Form, warum die hohe Komplexität heutiger Software für eine immer höhere Anzahl von Bugs und Sicherheitslücken verantwortlich ist. Dabei ist insbesondere die Aufstellung der Lines of Code unterschiedlicher Software interessant. So erfährt der Leser zum Beispiel, dass das aktuelle Windows XP mit 40 Mio. Codezeilen um den Faktor 8 größer ist als noch Windows 95 (5 Mio. Codezeilen). Dementsprechend erhöht sich dann natürlich auch die Anzahl potentieller Fehlerquellen.

Die Erläuterung spezifischer Begriffe und Techniken findet sich in Kapitel 2. So werden zum Beispiel Begriffe wie Bug, Exploit oder Attack Pattern anschaulich beschrieben, genauso wie auch Techniken wie zum Beispiel Network/Port Scanning oder Backdoors.

Um ein grundlegendes Verständnis von Software zu erlangen, werden in Kapitel 3 sehr ausführlich Reverse-Engineering-Techniken dargestellt. Was ist ein Disassembler und wie funktioniert er? Was ist White/Black/Gray Box Testing? Wie kann man Speicher lesen und schreiben? Wie debuggt man Multithread-Programme? All das wird mit ausführlichen Codebeispielen und Darstellungen anschaulich erläutert. Die Autoren gehen sogar so weit, ein kleines selbstgeschriebenes Code-Coverage-Tool vorzustellen. Es ist schon verblüffend, mit wie wenig Aufwand man ansehnliche Tools erstellen kann.

In Kapitel 4 geht es ganz um Server-Software und ihre Schwachstellen. Vor allen Dingen die Möglichkeiten, über Web-Interfaces und FTP ein System anzugreifen, werden dargestellt. So werden zum Beispiel Command und Argument Injection beschrieben und auch die Sicherheitsrisiken von PHP werden erwähnt. Durch die umfangreiche Beschreibung verschiedenster Angriffsmöglichkeiten bekommt man sehr schnell ein Gespür dafür, worauf man beim Einsatz von Server-Software achten sollte. Insbesondere die Verwendung von White Lists (einem Datenfilter) sollte man beherzigen.

Um das Bild zu vervollständigen, wird im nächsten Kapitel 5 auch auf die Schwachstellen von Client-Software eingegangen. Selbstverständlich sind nicht nur Server potentiellen Gefahren ausgesetzt, auch Clients sind gefährdet! Unter anderem werden Script Injection, HTTP-Anfragen und Email Injection erläutert.

Für jeden, der schon immer mal wissen wollten, wie man Software untersuchen kann, um Sicherheitsfehler aufzuspüren, für den ist Kapitel 6 interessant. Die Autoren beschreiben dort, wie man mittels eines Disassemblers bzw. Debuggers Code untersucht. Dabei werden unter anderem auch Fachausdrücke wie Speedbreaks, Buffer tracing und Leapfrogging erklärt. Gerade die Problematik der Ghost- und Meta-Zeichen wird aufgezeigt.

Eines der bekanntesten Probleme hinsichtlich Softwaresicherheit ist der Buffer Overflow. Und obwohl die Problematik nicht neu ist, gibt es doch in regelmäßigen Abständen neue Bugs, die sich auf einen Overflow zurückführen lassen. Das ist auch der Grund, warum sich in diesem Buch gleich das ganze Kapitel 7 damit befasst. Verschiedenste Overflow Attack Pattern wie APIAufrufe, Umgebungsvariablen und Stacküberlauf werden beschrieben. Was man beim täglichen Programmieren leicht übersieht: Auch die Formatierung von Strings birgt ein mitunter erhebliches Sicherheitsrisiko, so zum Beispiel bei der Benutzung von syslog().

Das letzte Kapitel befasst sich ausführlich mit Rootkits. Rootkits sind Programme, die Low-Level-Zugriffe auf einem System erlauben und die für andere Nutzer »unsichtbar« sind. In diesem Kapitel wird beschrieben, wie man sich ein Rootkit für Windows 2000/XP schreibt (!) und wie man dieses nutzen kann, um Call Hooking durchzuführen.

Unter Call Hooking versteht man das geschickte Verbiegen der Adressen von Systemfunktionen. Dadurch kann man ein System vollständig unter seine Kontrolle bekommen, ohne dass andere Nutzer das bemerken.

Das Schreiben eines Hardware-Virus, sowie direkte Manipulation aller erdenklichen Hardware-Komponenten ist möglich! Auch das Ausspähen persönlicher Daten durch Key Logging oder Plattenzugriffe wird zum Kinderspiel. Alles sehr gefährlich und gerade deshalb ist es umso wichtiger, darüber Bescheid zu wissen und sich dagegen zu wappnen.

Fazit

Das Buch ist Klasse! Die beiden Autoren haben ein Gespür dafür, wie man die anspruchsvollere Problematik anschaulich darstellt. Auch ihr leicht verständlicher Stil trägt dazu bei, den Leser für die Thematik zu begeistern.

Es sind vor allem die vielen Beispiele, die dem Leser den Stoff nahe bringen. Dabei spürt man immer wieder die langjährige Erfahrung der Autoren. Hier wird nicht theoretisch über etwas philosophiert. Nein, hier bekommt man einen Eindruck, wie das in der Praxis läuft.

Sehr anschaulich und ausführlich werden verschiedenste Attack Patterns und Softwarefehler dargestellt und beschrieben.

Schön finde ich auch die regelmäßige Erwähnung von Tools und Techniken, die man für den einen oder anderen Zweck benötigt. Ganz egal, ob es sich dabei um Runtime Tracer wie zum Beispiel Fenris für Linux oder einen herkömmlichen Debugger wie GDB handelt. Oft haben die Autoren die Beschreibungen durch Screenshots ergänzt, so dass man leicht die jeweilige Vorgehensweise nachvollziehen kann.

Besonders gefallen haben mir die Kapitel 4 und 8. Jeder Leser wird danach die Sicherheit von PHP mit anderen Augen sehen. Begeistert hat mich auch die Beschreibung der Rootkits, wobei mich insbesondere das Call Hooking fasziniert. Die Möglichkeit, ein komplettes System mit relativ einfachen Mitteln vollständig und für andere Nutzer unsichtbar zu kontrollieren, ist schon sehr beeindruckend.

Einziger Wermutstropfen sind die zahlreichen Codebeispiele, die leider meistens nur für Windows NT oder XP nutzbar sind. Hier hätte ich gerne noch mehr Unix-spezifische Anwendungen gesehen.

Fakten

Jahr : 2004
Autor : Greg Hoglund/Gary McGraw
Preis : 48,10 EUR
Umfang: 450 Seiten
Verlag: Addison-Wesley
ISBN : 0-201-78695-8

Kommentare (Insgesamt: 0 )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung