Python wird mehr und mehr zur bevorzugten Programmiersprache von Hackern, Reverse Engineers und Softwaretestern, weil sie es einfach macht, schnell zu entwickeln. Gleichzeitig bietet Python die Low-Level-Unterstützung und die Bibliotheken, die Hacker glücklich machen. Hacking mit Python bietet eine umfassende Anleitung, wie man diese Sprache für eine Vielzahl von Hacking-Aufgaben nutzen kann. Das Buch erläutert die Konzepte hinter Hacking-Tools und -Techniken wie Debugger, Trojaner, Fuzzer und Emulatoren. Doch der Autor Justin Seitz geht über die Theorie hinaus und zeigt, wie man existierende Python-basierte Sicherheits-Tools nutzt - und wie man eigene entwickelt, wenn die vorhandenen nicht ausreichen. Sie lernen, wie man: - lästige Reverse Engineering- und Sicherheits-Aufgaben automatisiert - einen eigenen Debugger entwirft und programmiert - Windows-Treiber "fuzzed" und mächtige Fuzzer von Grund auf entwickelt - Code- und Library-Injection, Soft- und Hard-Hooks und andere Software-Tricks vornimmt - gesicherten Traffic aus einer verschlüsselten Webbrowser-Session erschnüffelt - PyDBG, Immunity Debugger, Sulley, IDAPython, PyEMU und andere Software nutzt Die weltbesten Hacker nutzen Python für ihre Arbeit. Warum nicht auch Sie?
Inhaltsverzeichnis
1;Vorwort;6 2;Danksagungen;8 3;Inhaltsverzeichnis;10 4;Einführung;14 5;1 Ihre Entwicklungsumgebung einrichten;16 5.1;1.1 Anforderungen an das Betriebssystem;16 5.2;1.2 Python 2.5 herunterladen und installieren;17 5.2.1;1.2.1 Python unter Windows installieren;17 5.2.2;1.2.2 Python unter Linux installieren;17 5.3;1.3 Einrichten von Eclipse und PyDev;19 5.3.1;1.3.1 Des Hackers bester Freund: ctypes;20 5.3.2;1.3.2 Dynamische Libraries nutzen;21 5.3.3;1.3.3 C-Datentypen konstruieren;23 5.3.4;1.3.4 Parameter per Referenz übergeben;25 5.3.5;1.3.5 Strukturen und Unions definieren;25 6;2 Debugger und Debugger-Design;28 6.1;2.1 Universal-CPU-Register;29 6.2;2.2 Der Stack;31 6.3;2.3 Debug-Events;33 6.4;2.4 Breakpunkte;34 6.4.1;2.4.1 Software-Breakpunkte;34 6.4.2;2.4.2 Hardware-Breakpunkte;37 6.4.3;2.4.3 Speicher-Breakpunkte;39 7;3 Entwicklung eines Windows-Debuggers;42 7.1;3.1 Prozess, wo bist Du?;42 7.2;3.2 Den Zustand der CPU-Register abrufen;50 7.2.1;3.2.1 Threads aufspüren;51 7.2.2;3.2.2 Alles zusammenfügen;52 7.3;3.3 Debug-Event-Handler implementieren;56 7.4;3.4 Der machtvolle Breakpunkt;60 7.4.1;3.4.1 Software-Breakpunkte;60 7.4.2;3.4.2 Hardware-Breakpunkte;65 7.4.3;3.4.3 Speicher-Breakpunkte;69 7.5;3.5 Fazit;73 8;4 PyDbg - ein reiner Python-Debugger für Windows;74 8.1;4.1 Breakpunkt-Handler erweitern;74 8.2;4.2 Handler für Zugriffsverletzungen;77 8.3;4.3 Prozess-Schnappschüsse;80 8.3.1;4.3.1 Prozess-Schnappschüsse erstellen;80 8.3.2;4.3.2 Alles zusammenfügen;82 9;5 Immunity Debugger - Das Beste beider Welten;86 9.1;5.1 Den Immunity Debugger installieren;86 9.2;5.2 Immunity Debugger - kurze Einführung;87 9.2.1;5.2.1 PyCommands;88 9.2.2;5.2.2 PyHooks;88 9.3;5.3 Entwicklung von Exploits;90 9.3.1;5.3.1 Exploit-freundliche Instruktionen finden;90 9.3.2;5.3.2 Böse Zeichen filtern;92 9.3.3;5.3.3 DEP unter Windows umgehen;95 9.4;5.4 Anti-Debugging-Routinen in Malware umgehen;99 9.4.1;5.4.1 IsDebuggerPresent;100 9.4.2;5.4.2 Prozessiteration unterbinden;100 10;6 Hooking;102 10.1;
6.1 Soft Hooking mit PyDbg;102 10.2;6.2 Hard Hooking mit dem Immunity Debugger;107 11;7 DLL- und Code-Injection;114 11.1;7.1 Erzeugung entfernter Threads;114 11.1.1;7.1.1 DLL-Injection;116 11.1.2;7.1.2 Code-Injection;118 11.2;7.2 Zum Übeltäter werden;121 11.2.1;7.2.1 Dateien verstecken;121 11.2.2;7.2.2 Eine Hintertür codieren;122 11.2.3;7.2.3 Kompilieren mit py2exe;126 12;8 Fuzzing;130 12.1;8.1 Fehlerklassen;131 12.1.1;8.1.1 Pufferüberläufe;131 12.1.2;8.1.2 Integerüberläufe;132 12.1.3;8.1.3 Formatstring-Angriffe;134 12.2;8.2 Datei-Fuzzer;135 12.3;8.3 Weitere Überlegungen;141 12.3.1;8.3.1 Codedeckungsgrad (Code Coverage);141 12.3.2;8.3.2 Automatisierte statische Analyse;142 13;9 Sulley;144 13.1;9.1 Sulley installieren;145 13.2;9.2 Sulley-Primitive;145 13.2.1;9.2.1 Strings;146 13.2.2;9.2.2 Trennsymbole;146 13.2.3;9.2.3 Statische und zufällige Primitive;146 13.2.4;9.2.4 Binäre Daten;147 13.2.5;9.2.5 Integerwerte;147 13.2.6;9.2.6 Blöcke und Gruppen;148 13.3;9.3 WarFTPD knacken mit Sulley;149 13.3.1;9.3.1 FTP - kurze Einführung;150 13.3.2;9.3.2 Das FTP-Protokollgerüst erstellen;151 13.3.3;9.3.3 Sulley-Sessions;152 13.3.4;9.3.4 Netzwerk- und Prozessüberwachung;153 13.3.5;9.3.5 Fuzzing und das Sulley-Webinterface;154 14;10 Fuzzing von Windows-Treibern;158 14.1;10.1 Treiberkommunikation;159 14.2;10.2 Treiber-Fuzzing mit dem Immunity Debugger;160 14.3;10.3 Driverlib - das statische Analysetool für Treiber;163 14.3.1;10.3.1 Gerätenamen aufspüren;164 14.3.2;10.3.2 Die IOCTL-Dispatch-Routine aufspüren;165 14.3.3;10.3.3 Unterstützte IOCTL-Codes aufspüren;167 14.4;10.4 Einen Treiber-Fuzzer entwickeln;169 15;11 IDAPython - Scripting für IDA Pro;174 15.1;11.1 IDAPython installieren;175 15.2;11.2 IDAPython-Funktionen;176 15.2.1;11.2.1 Utility-Funktionen;176 15.2.2;11.2.2 Segmente;176 15.2.3;11.2.3 Funktionen;177 15.2.4;11.2.4 Cross-Referenzen;177 15.2.5;11.2.5 Debugger-Hooks;178 15.3;11.3 Beispielskripten;179 15.3.1;11.3.1 Aufspüren von Cross-Referenzen auf gefährliche Funktionen;17
9 15.3.2;11.3.2 Codeabdeckung von Funktionen;181 15.3.3;11.3.3 Stackgröße berechnen;182 16;12 PyEmu - der skriptfähige Emulator;186 16.1;12.1 PyEmu installieren;186 16.2;12.2 PyEmu-Übersicht;187 16.2.1;12.2.1 PyCPU;187 16.2.2;12.2.2 PyMemory;188 16.2.3;12.2.3 PyEmu;188 16.2.4;12.2.4 Ausführung;188 16.2.5;12.2.5 Speicher- und Register-Modifier;188 16.2.6;12.2.6 Handler;189 16.3;12.3 IDAPyEmu;194 16.3.1;12.3.1 Funktionen emulieren;196 16.3.2;12.3.2 PEPyEmu;199 16.3.3;12.3.3 Packer für Executables;200 16.3.4;12.3.4 UPX-Packer;200 16.3.5;12.3.5 UPX mit PEPyEmu entpacken;201 17;Index;206