Hacking mit Python - Fehlersuche, Programmanalyse, Reverse Engineering

von: Justin Seitz

dpunkt, 2009

ISBN: 9783898649810 , 224 Seiten

Format: PDF, OL

Kopierschutz: Wasserzeichen

Windows PC,Mac OSX für alle DRM-fähigen eReader Apple iPad, Android Tablet PC's Online-Lesen für: Windows PC,Mac OSX,Linux

Preis: 33,00 EUR

Mehr zum Inhalt

Hacking mit Python - Fehlersuche, Programmanalyse, Reverse Engineering


 

Vorwort

6

Danksagungen

8

Inhaltsverzeichnis

10

Einführung

14

1 Ihre Entwicklungsumgebung einrichten

16

1.1 Anforderungen an das Betriebssystem

16

1.2 Python 2.5 herunterladen und installieren

17

1.2.1 Python unter Windows installieren

17

1.2.2 Python unter Linux installieren

17

1.3 Einrichten von Eclipse und PyDev

19

1.3.1 Des Hackers bester Freund: ctypes

20

1.3.2 Dynamische Libraries nutzen

21

1.3.3 C-Datentypen konstruieren

23

1.3.4 Parameter per Referenz übergeben

25

1.3.5 Strukturen und Unions definieren

25

2 Debugger und Debugger-Design

28

2.1 Universal-CPU-Register

29

2.2 Der Stack

31

2.3 Debug-Events

33

2.4 Breakpunkte

34

2.4.1 Software-Breakpunkte

34

2.4.2 Hardware-Breakpunkte

37

2.4.3 Speicher-Breakpunkte

39

3 Entwicklung eines Windows-Debuggers

42

3.1 Prozess, wo bist Du?

42

3.2 Den Zustand der CPU-Register abrufen

50

3.2.1 Threads aufspüren

51

3.2.2 Alles zusammenfügen

52

3.3 Debug-Event-Handler implementieren

56

3.4 Der machtvolle Breakpunkt

60

3.4.1 Software-Breakpunkte

60

3.4.2 Hardware-Breakpunkte

65

3.4.3 Speicher-Breakpunkte

69

3.5 Fazit

73

4 PyDbg - ein reiner Python-Debugger für Windows

74

4.1 Breakpunkt-Handler erweitern

74

4.2 Handler für Zugriffsverletzungen

77

4.3 Prozess-Schnappschüsse

80

4.3.1 Prozess-Schnappschüsse erstellen

80

4.3.2 Alles zusammenfügen

82

5 Immunity Debugger - Das Beste beider Welten

86

5.1 Den Immunity Debugger installieren

86

5.2 Immunity Debugger - kurze Einführung

87

5.2.1 PyCommands

88

5.2.2 PyHooks

88

5.3 Entwicklung von Exploits

90

5.3.1 Exploit-freundliche Instruktionen finden

90

5.3.2 »Böse« Zeichen filtern

92

5.3.3 DEP unter Windows umgehen

95

5.4 Anti-Debugging-Routinen in Malware umgehen

99

5.4.1 IsDebuggerPresent

100

5.4.2 Prozessiteration unterbinden

100

6 Hooking

102

6.1 Soft Hooking mit PyDbg

102

6.2 Hard Hooking mit dem Immunity Debugger

107

7 DLL- und Code-Injection

114

7.1 Erzeugung entfernter Threads

114

7.1.1 DLL-Injection

116

7.1.2 Code-Injection

118

7.2 Zum Übeltäter werden

121

7.2.1 Dateien verstecken

121

7.2.2 Eine Hintertür codieren

122

7.2.3 Kompilieren mit py2exe

126

8 Fuzzing

130

8.1 Fehlerklassen

131

8.1.1 Pufferüberläufe

131

8.1.2 Integerüberläufe

132

8.1.3 Formatstring-Angriffe

134

8.2 Datei-Fuzzer

135

8.3 Weitere Überlegungen

141

8.3.1 Codedeckungsgrad (Code Coverage)

141

8.3.2 Automatisierte statische Analyse

142

9 Sulley

144

9.1 Sulley installieren

145

9.2 Sulley-Primitive

145

9.2.1 Strings

146

9.2.2 Trennsymbole

146

9.2.3 Statische und zufällige Primitive

146

9.2.4 Binäre Daten

147

9.2.5 Integerwerte

147

9.2.6 Blöcke und Gruppen

148

9.3 WarFTPD knacken mit Sulley

149

9.3.1 FTP - kurze Einführung

150

9.3.2 Das FTP-Protokollgerüst erstellen

151

9.3.3 Sulley-Sessions

152

9.3.4 Netzwerk- und Prozessüberwachung

153

9.3.5 Fuzzing und das Sulley-Webinterface

154

10 Fuzzing von Windows-Treibern

158

10.1 Treiberkommunikation

159

10.2 Treiber-Fuzzing mit dem Immunity Debugger

160

10.3 Driverlib - das statische Analysetool für Treiber

163

10.3.1 Gerätenamen aufspüren

164

10.3.2 Die IOCTL-Dispatch-Routine aufspüren

165

10.3.3 Unterstützte IOCTL-Codes aufspüren

167

10.4 Einen Treiber-Fuzzer entwickeln

169

11 IDAPython - Scripting für IDA Pro

174

11.1 IDAPython installieren

175

11.2 IDAPython-Funktionen

176

11.2.1 Utility-Funktionen

176

11.2.2 Segmente

176

11.2.3 Funktionen

177

11.2.4 Cross-Referenzen

177

11.2.5 Debugger-Hooks

178

11.3 Beispielskripten

179

11.3.1 Aufspüren von Cross-Referenzen auf gefährliche Funktionen

179

11.3.2 Codeabdeckung von Funktionen

181

11.3.3 Stackgröße berechnen

182

12 PyEmu - der skriptfähige Emulator

186

12.1 PyEmu installieren

186

12.2 PyEmu-Übersicht

187

12.2.1 PyCPU

187

12.2.2 PyMemory

188

12.2.3 PyEmu

188

12.2.4 Ausführung

188

12.2.5 Speicher- und Register-Modifier

188

12.2.6 Handler

189

12.3 IDAPyEmu

194

12.3.1 Funktionen emulieren

196

12.3.2 PEPyEmu

199

12.3.3 Packer für Executables

200

12.3.4 UPX-Packer

200

12.3.5 UPX mit PEPyEmu entpacken

201

Index

206