Marc Ruef befasst sich in seinem Buch mit einer Thematik, zu der es (nicht nur im deutschsprachigen Raum) relativ wenig Referenzwerke gibt. Gute 900 Seiten stark, umreißt es eine beträchtliche Anzahl an einschlägigen Themen in Bezug auf Penetration Testing.
Nach Fertiglesen dieses Werks ist mein Resumee durchwachsen, deshalb führe ich Pro und Contra hier Punkt für Punkt an:
+ Zahlreiche Kapitel sind zeitlos. Speziell Kapitel 4-8 liefern solide Grundlagen zu Trägerprotokollen und deren Eigenschaften zum Themenbezug; zahlreiche Protokoll- und Betriebssystem-Interna werden solide beschrieben.
+ Beinahe ausnahmslos liefert Ruef parallel zur zuvor erläuterten Theorie auch andwendbare und (jedenfalls unterhalb der Applikationsebene, s.u.) realitätsnahe, praktische Beispiele.
+ Der Fokus an Beispielen liegt zwar klar auf Linux, er lässt jedoch - wo adäquat - auch Windows als weitest verbreitetes Betriebssystem nicht außer Acht und verweist gekonnt auf implementierungsspezifische Unterschiede.
+ Ruef legt Wert darauf, sämtliche praktische Beispiele mit zumeist quell-offenen, anerkannten, als quasi-Standard geltenden Programmen durchzuführen (tcpdump für das Lesen des Netzwerkverkehrs, nmap für Mapping und Scanning, hping3 für Packet Construction, etc.)
+ Zusammenfassungen & Quellen: Nach jedem Subkapitel wird kurz und prägant der Inhalt nochmals kurz zusammengefasst, und mit zahlreichen Quellen belegt. Bemerkenswert ist auch, dass sämtliche Quellenverweise zusätzlich mit einem Absatz versehen sind, der Hintergrundinformationen zum jeweiligen Buch sowie einen mehr oder weniger subjektiven, jedoch interessanten Eindruck des Autors schildert.
+ Organisatorisches Kapitel: In Kapitel 2 erklärt Ruef den grunsätzlichen Ablauf eines Pentests, mögliche Modi, Hinweise zur Dokumentation und rechtlichen Belangen.
Nun zu den, leider zahlreichen, Negativpunkten:
- Rechtschreibung: Die Quantität der grammatikalischen Fehler im Buch grenzt an Unzumutbarkeit. Obgleich die Menge an Fehlern zum Ende weniger werden, kann ich mir kaum vorstellen, dass Ruef oder sonstwer das gesamte Manuskript vor dem Druck korrekturgelesen hat. Schade!
- Grafiken und Diagramme: Das Buch enthält grundsätzlich zahlreiche Grafiken die der Veranschaulichung dienen sollten. Unglücklicherweise sind diese überwiegend (meiner Meinung nach) einfach falsch ausgewählt. Ruef skizziert banale und triviale Abläufe in oft in Diagrammen, verzichtet aber bei komplexeren Zusammenhängen oftmals darauf, obgleich sie dem Verständnis hier weitaus dienlicher wären. Die Beschreibung/Beschriftungen von Diagrammen ist darüber hinaus sehr oft mangelhaft, was sich u.a. durch fehlende Achsen-Beschriftungen und falsche Werte bemerkbar macht - anstatt Veranschaulichung kommt somit Verwirrung zum Tragen.
- Faktische Redundanzen: Sehr viele Fakten werden mehrfach redunant beschrieben, teils sogar im selben Kapitel. Das kann in geringem Maße der Anschaulichkeit dienen, wird aber definitiv übertrieben. Das Buch könnte hier durchaus eine Seitenanzahl im dreistelligen Bereich einsparen, und dabei den Lesefluss vereinfachen. Bis auf exotische Portscan-Techniken, sind die Kapitel 5 und 6 (Mapping & Scanning) beispielsweise fast ident.
- Redundanzen bei Beschreibungen von praktischen Beispielen: Beinahe Jeder Beispielaufruf wird gefolgt von einer Tabelle, in der Zeile für Zeile das vorangegangene Beispiel durchgegangen wird. Diese werden nach und nach sehr langweilig und lähmend, da - obgleich schon oftmals zuvor aufgerufen und beschrieben - immer wieder jede einzelne Kommandozeilenoption und jedes Argument erneut im Detail erklärt wird.
- Fehlende Details: So detailliert die erste Hälfte des Buches ist, so fehlt gegen Ende der nötige Detailreichtum. Bei Thematiken wie Firewall-Konzeption und systematische Fehlersuche (Debugging) werden einzelne, essentielle Techniken und Vorgehensweisen umrissen, jedoch viel zu kurz abgehandelt um daraus einen praktischen Nutzen zu ziehen - im Gegensatz zur ersten Hälfte des Buchs, dienen diese Abschnitte lediglich dazu, einen rudimentären Überblick für Neulinge zu gewinnen, mehr aber sicherlich nicht; eher stellt sich hier das Gegenteil ein, nämlich Verwirrung und Unverständnis: Da ist plötzlich von Nop-Sleds die Rede, Assembler Befehle werden nicht erklärt (und obendrein wird AT&T sowie Intel Syntax kommentarlos gewechselt), Pufferüberlaufarten karg umschrieben ohne jemals das Speicherlayout von Prozessen ernsthaft abzuhandeln (Natürlich könnte man über jedes dieser Themen eigene Bücher füllen, aber wieso dann solche Dinge überhaupt noch reinquetschen?) und leider noch vieles mehr. Im Kapitel über Exploiting wird völlig auf Praxisnähe verzichtet und somit auf die Möglichkeit zur Entwicklung eines weiterführenden Verständnisses für realere Szenarien.
- Benötigtes Vorwissen unbalanciert: Meist beschreibt Ruef selbst triviale Dinge, die jeder mit Grundkenntnissen im Netzwerkbereich bereits wissen sollte. Andererseits verwendet er im Text sprunghaft Abkürzungen und Fachterme die nirgendwo erklärt werden bzw. referenziert werden, oder Beispiel-Zusammenhänge die nur von Experten und Fachleuten nachvollzogen werden können.
- Fehlende Essentials (wenn auch nur 2): Zum einen wird an keiner Stelle im Buch, weder in Theorie noch Praxis, auf IPv6 eingegangen; zum anderen spielt das Thema Kryptographie eine untergeordnete bis inexistente Rolle.
- Referenz auf sich selbst: Etwas, dass mich persönlich stört ist die übertriebe Referenzierung auf zovor publizierte Schriften des Autors mitten im Fließtext. Eigenwerbung gut und schön, aber das ist mMn übertrieben. Besonders, weil es zu denjenigen Themen auch zahlreiche andere Publikationen gibt, und Ruef diese Dinge nicht als Erster aufgriff.
Zusammenhängend: Alles in Allem, ein gutes Buch über ein Gebiet auf dem es wenig Konkurrenz gibt. Der Inhalt ist grundsätzlich solide, die Aufbereitung aber leider auf weiten Strecken mangelhaft. Leider wirkt es so, als hätte der Autor gegen Ende des Buches die Movation verloren um Techniken ähnlich detailliert zu beschreiben wie zu Beginn - Schade, denn das Potential hierfür hätte der Autor unbestritten.