Die Suche nach Exploits ist die Königsdisziplin für Entwickler. Neben viel Ausdauer und Spaß an Knobeleien müssen Sie zudem Wissen über Angriffsvektoren und Sicherheitsprobleme mitbringen. Hier lernen Sie die wichtigsten Techniken und Tools kennen und bekommen einen tiefgehenden Einblick in das Aufspüren, Ausnutzen und Verhindern von Exploits. Aus dem Inhalt: Sichere Software-Entwicklung: Prozesslayout, Memory Management und mehr Reverse Engineering Secure Coding: Encapsulation, Data Validation, Error Handling Secure Design: Architectural Risk Analysis Kryptografie Lücken finden: Fuzzing, Codeanalyse und mehr Buffer Overflows ausnutzen Mitigations einsetzen: ASLR, SEHOP und mehr Schutzmechanismen umgehen Real Life Exploits: Heartbleed, Shellshock, Spectre & Meltdown und mehr
Spectre & Meltdown, Heartbleed, Shellshock, Stagefright und mehr
Autorentext
Dr. Egon Teiniker ist Professor für Software Engineering an der FH JOANNEUM in Kapfenberg (Österreich). Seine Schwerpunkte liegen im Bereich Software Design und Software Security. Weiters ist er seit vielen Jahren als Gastdozent an der Hochschule Bremen tätig, wo er Methoden zur Entwicklung komplexer Softwaresysteme und Sichere Softwareentwicklung lehrt. Sein Beitrag in diesem Buch erstreckt sich über fünf Kapitel, in denen er die Themenbereiche Sichere Softwareentwicklung (Implementierung und Design) sowie Reverse Engineering abdeckt.
Inhalt
Materialien zum Buch ... 13 Geleitwort ... 15 1. Einleitung ... 17 1.1 ... Über dieses Buch ... 17 1.2 ... Zielgruppe ... 19 1.3 ... Wie Sie mit dem Buch arbeiten ... 20 1.4 ... Die Autoren ... 20 2. Exploit! So schnell führt ein Programmierfehler zum Root-Zugriff ... 21 2.1 ... Das Szenario ... 21 2.2 ... Die Vorbereitungsarbeiten, Informationssammlung ... 22 2.3 ... Analyse und Identifikation von Schwachstellen ... 23 2.4 ... Ausnutzung der XSS-Schwachstelle ... 25 2.5 ... Analyse und Identifikation weiterer Schwachstellen ... 26 2.6 ... Zugriff auf das interne Netzwerk ... 31 2.7 ... Angriff auf das interne Netz ... 35 2.8 ... Privilege Escalation am Entwicklungsserver ... 39 2.9 ... Analyse des Angriffs ... 42 3. Einführung in die sichere Softwareentwicklung ... 43 3.1 ... Ein Prozessmodell für sichere Softwareentwicklung ... 44 3.2 ... Die Praktiken der sicheren Softwareentwicklung ... 46 3.3 ... Fachwissen für sichere Softwareentwicklung ... 51 4. Grundlagenwissen für sicheres Programmieren ... 67 4.1 ... Praktiken der agilen Softwareentwicklung ... 68 4.2 ... Die Programmiersprache C ... 69 4.3 ... Die Programmiersprache Java ... 76 4.4 ... Versionierung von Quellcode ... 82 4.5 ... Debugging und automatisiertes Testen ... 84 4.6 ... Continuous Integration ... 91 4.7 ... Beispiele auf GitHub und auf rheinwerk-verlag.de ... 94 5. Reverse Engineering ... 97 5.1 ... Analyse von C-Applikationen ... 97 5.2 ... Analyse von Java-Applikationen ... 129 5.3 ... Code Obfuscation ... 148 6. Sichere Implementierung ... 151 6.1 ... Reduzieren Sie die Sichtbarkeit von Daten und Code ... 151 6.2 ... Der sichere Umgang mit Daten ... 160 6.3 ... Der richtige Umgang mit Fehlern ... 176 6.4 ... Kryptografische APIs richtig einsetzen ... 182 6.5 ... Statische Codeanalyse ... 211 7. Sicheres Design ... 227 7.1 ... Architekturbasierte Risikoanalyse ... 227 7.2 ... Designprinzipien für sichere Softwaresysteme ... 232 7.3 ... Das HTTP-Protokoll ... 235 7.4 ... Sicheres Design von Webapplikationen ... 244 8. Kryptografie ... 281 8.1 ... Verschlüsselung ... 281 8.2 ... Hash-Funktionen ... 309 8.3 ... Message Authentication Codes und digitale Signaturen ... 321 8.4 ... NIST-Empfehlungen ... 327 9. Sicherheitslücken finden und analysieren ... 329 9.1 ... Installation der Windows-Testinfrastruktur ... 329 9.2 ... Manuelle Analyse der Anwendung ... 335 9.3 ... Automatische Schwachstellensuche mittels Fuzzing ... 340 9.4 ... Analyse des Absturzes im Debugger ... 343 9.5 ... Alternativen zum Fuzzing ... 344 9.6 ... Tools zur Programmanalyse ... 344 10. Buffer Overflows ausnutzen ... 357 10.1 ... Die Crash-Analyse des i.Ftp-Clients ... 357 10.2 ... Offsets ermitteln ... 360 10.3 ... Eigenen Code ausführen ... 363 10.4 ... Umgang mit Bad Characters ... 368 10.5 ... Shellcode generieren ... 372 10.6 ... Exception Handling ausnutzen ... 377 10.7 ... Analyse unterschiedlicher Buffer-Längen ... 379 10.8 ... Buffer Offsets berechnen ... 382 10.9 ... SEH-Exploits ... 382 10.10 ... Heap Spraying ... 386 11. Schutzmaßnahmen einsetzen ... 391 11.1 ... ASLR ... 391 11.2 ... Stack Cookies ... 393 11.3 ... SafeSEH ... 395 11.4 ... SEHOP ... 396 11.5 ... Data Execution Prevention ... 396 11.6 ... Schutz gegen Heap Spraying ... 399 12. Schutzmaßnahmen umgehen ... 401 12.1 ... Was sind Reliable Exploits? ... 401 12.2 ... Bypass von ASLR ... 402 12.3 ... Bypass von Stack Cookies ... 418 12.4 ... Bypass von SafeSEH ... 419 12.5 ... Bypass von SEHOP ... 420 12.6 ... Data Execution Prevention (DEP) -- Bypass mittels Return Oriented Programming ... 423 12.7 ... DEP Bypass mittels Return-to-libc ... 449 13. Format String Exploits ... 451 13.1 ... Formatstrings ... 451 13.2 ... Die fehlerhafte Anwendung ... 454 13.3 ... Aufbau der Analyseumgebung ... 457 13.4 ... Analyse des Stack-Inhalts ... 459 13.5 ... Speicherstellen mit %n überschreiben ... 463 13.6 ... Die Exploit-Struktur ... 466 13.7 ... Die Ermittlung von Adressen und Offsets ... 468 13.8 ... Die Verifikation der Adressen im Debugger ... 471 13.9 ... Die erste lauffähige Version des Exploits ... 473 13.10 ... ASLR Bypass ... 477 14. Real Life Exploitation ... 485 14.1 ... Heartbleed ... 485 14.2 ... SSL OpenFuck ... 488 14.3 ... Shellshock ... 493 14.4 ... Eternal Blue ... 495 14.5 ... Spectre und Meltdown ... 504 14.6 ... Stagefright ... 509 Index ... 511
Spectre & Meltdown, Heartbleed, Shellshock, Stagefright und mehr
Autorentext
Dr. Egon Teiniker ist Professor für Software Engineering an der FH JOANNEUM in Kapfenberg (Österreich). Seine Schwerpunkte liegen im Bereich Software Design und Software Security. Weiters ist er seit vielen Jahren als Gastdozent an der Hochschule Bremen tätig, wo er Methoden zur Entwicklung komplexer Softwaresysteme und Sichere Softwareentwicklung lehrt. Sein Beitrag in diesem Buch erstreckt sich über fünf Kapitel, in denen er die Themenbereiche Sichere Softwareentwicklung (Implementierung und Design) sowie Reverse Engineering abdeckt.
Inhalt
Materialien zum Buch ... 13 Geleitwort ... 15 1. Einleitung ... 17 1.1 ... Über dieses Buch ... 17 1.2 ... Zielgruppe ... 19 1.3 ... Wie Sie mit dem Buch arbeiten ... 20 1.4 ... Die Autoren ... 20 2. Exploit! So schnell führt ein Programmierfehler zum Root-Zugriff ... 21 2.1 ... Das Szenario ... 21 2.2 ... Die Vorbereitungsarbeiten, Informationssammlung ... 22 2.3 ... Analyse und Identifikation von Schwachstellen ... 23 2.4 ... Ausnutzung der XSS-Schwachstelle ... 25 2.5 ... Analyse und Identifikation weiterer Schwachstellen ... 26 2.6 ... Zugriff auf das interne Netzwerk ... 31 2.7 ... Angriff auf das interne Netz ... 35 2.8 ... Privilege Escalation am Entwicklungsserver ... 39 2.9 ... Analyse des Angriffs ... 42 3. Einführung in die sichere Softwareentwicklung ... 43 3.1 ... Ein Prozessmodell für sichere Softwareentwicklung ... 44 3.2 ... Die Praktiken der sicheren Softwareentwicklung ... 46 3.3 ... Fachwissen für sichere Softwareentwicklung ... 51 4. Grundlagenwissen für sicheres Programmieren ... 67 4.1 ... Praktiken der agilen Softwareentwicklung ... 68 4.2 ... Die Programmiersprache C ... 69 4.3 ... Die Programmiersprache Java ... 76 4.4 ... Versionierung von Quellcode ... 82 4.5 ... Debugging und automatisiertes Testen ... 84 4.6 ... Continuous Integration ... 91 4.7 ... Beispiele auf GitHub und auf rheinwerk-verlag.de ... 94 5. Reverse Engineering ... 97 5.1 ... Analyse von C-Applikationen ... 97 5.2 ... Analyse von Java-Applikationen ... 129 5.3 ... Code Obfuscation ... 148 6. Sichere Implementierung ... 151 6.1 ... Reduzieren Sie die Sichtbarkeit von Daten und Code ... 151 6.2 ... Der sichere Umgang mit Daten ... 160 6.3 ... Der richtige Umgang mit Fehlern ... 176 6.4 ... Kryptografische APIs richtig einsetzen ... 182 6.5 ... Statische Codeanalyse ... 211 7. Sicheres Design ... 227 7.1 ... Architekturbasierte Risikoanalyse ... 227 7.2 ... Designprinzipien für sichere Softwaresysteme ... 232 7.3 ... Das HTTP-Protokoll ... 235 7.4 ... Sicheres Design von Webapplikationen ... 244 8. Kryptografie ... 281 8.1 ... Verschlüsselung ... 281 8.2 ... Hash-Funktionen ... 309 8.3 ... Message Authentication Codes und digitale Signaturen ... 321 8.4 ... NIST-Empfehlungen ... 327 9. Sicherheitslücken finden und analysieren ... 329 9.1 ... Installation der Windows-Testinfrastruktur ... 329 9.2 ... Manuelle Analyse der Anwendung ... 335 9.3 ... Automatische Schwachstellensuche mittels Fuzzing ... 340 9.4 ... Analyse des Absturzes im Debugger ... 343 9.5 ... Alternativen zum Fuzzing ... 344 9.6 ... Tools zur Programmanalyse ... 344 10. Buffer Overflows ausnutzen ... 357 10.1 ... Die Crash-Analyse des i.Ftp-Clients ... 357 10.2 ... Offsets ermitteln ... 360 10.3 ... Eigenen Code ausführen ... 363 10.4 ... Umgang mit Bad Characters ... 368 10.5 ... Shellcode generieren ... 372 10.6 ... Exception Handling ausnutzen ... 377 10.7 ... Analyse unterschiedlicher Buffer-Längen ... 379 10.8 ... Buffer Offsets berechnen ... 382 10.9 ... SEH-Exploits ... 382 10.10 ... Heap Spraying ... 386 11. Schutzmaßnahmen einsetzen ... 391 11.1 ... ASLR ... 391 11.2 ... Stack Cookies ... 393 11.3 ... SafeSEH ... 395 11.4 ... SEHOP ... 396 11.5 ... Data Execution Prevention ... 396 11.6 ... Schutz gegen Heap Spraying ... 399 12. Schutzmaßnahmen umgehen ... 401 12.1 ... Was sind Reliable Exploits? ... 401 12.2 ... Bypass von ASLR ... 402 12.3 ... Bypass von Stack Cookies ... 418 12.4 ... Bypass von SafeSEH ... 419 12.5 ... Bypass von SEHOP ... 420 12.6 ... Data Execution Prevention (DEP) -- Bypass mittels Return Oriented Programming ... 423 12.7 ... DEP Bypass mittels Return-to-libc ... 449 13. Format String Exploits ... 451 13.1 ... Formatstrings ... 451 13.2 ... Die fehlerhafte Anwendung ... 454 13.3 ... Aufbau der Analyseumgebung ... 457 13.4 ... Analyse des Stack-Inhalts ... 459 13.5 ... Speicherstellen mit %n überschreiben ... 463 13.6 ... Die Exploit-Struktur ... 466 13.7 ... Die Ermittlung von Adressen und Offsets ... 468 13.8 ... Die Verifikation der Adressen im Debugger ... 471 13.9 ... Die erste lauffähige Version des Exploits ... 473 13.10 ... ASLR Bypass ... 477 14. Real Life Exploitation ... 485 14.1 ... Heartbleed ... 485 14.2 ... SSL OpenFuck ... 488 14.3 ... Shellshock ... 493 14.4 ... Eternal Blue ... 495 14.5 ... Spectre und Meltdown ... 504 14.6 ... Stagefright ... 509 Index ... 511
Titel
Exploit!
Untertitel
Code härten, Bugs analysieren, Hacks verstehen
EAN
9783836266000
Format
E-Book (epub)
Hersteller
Veröffentlichung
28.07.2019
Digitaler Kopierschutz
frei
Anzahl Seiten
519
Lesemotiv
Unerwartete Verzögerung
Ups, ein Fehler ist aufgetreten. Bitte versuchen Sie es später noch einmal.