Log In
Or create an account ->
Imperial Library
Home
About
News
Upload
Forum
Help
Login/SignUp
Index
Liebe Leser!
Inhaltsverzeichnis
Materialien zum Buch
Geleitwort
1 Einleitung
1.1 Über dieses Buch
1.2 Zielgruppe
1.3 Wie Sie mit dem Buch arbeiten
1.4 Die Autoren
2 Exploit! So schnell führt ein Programmierfehler zum Root-Zugriff
2.1 Das Szenario
2.2 Die Vorbereitungsarbeiten, Informationssammlung
2.3 Analyse und Identifikation von Schwachstellen
2.4 Ausnutzung der XSS-Schwachstelle
2.5 Analyse und Identifikation weiterer Schwachstellen
2.6 Zugriff auf das interne Netzwerk
2.7 Angriff auf das interne Netz
2.8 Privilege Escalation am Entwicklungsserver
2.9 Analyse des Angriffs
3 Einführung in die sichere Softwareentwicklung
3.1 Ein Prozessmodell für sichere Softwareentwicklung
3.2 Die Praktiken der sicheren Softwareentwicklung
3.2.1 Code-Review
3.2.2 Architectural Risk Analysis
3.2.3 Risk-Based Security-Tests
3.2.4 Penetration Testing
3.2.5 Abuse Cases
3.2.6 Security Operations
3.3 Fachwissen für sichere Softwareentwicklung
3.3.1 Injection
3.3.2 Broken Authentication
3.3.3 Sensitive Data Exposure
3.3.4 XML External Entities (XXE)
3.3.5 Broken Access Control
3.3.6 Security Misconfiguration
3.3.7 Cross Site Scripting (XSS)
3.3.8 Insecure Deserialization
3.3.9 Using Components with Known Vulnerabilities
3.3.10 Insufficient Logging & Monitoring
4 Grundlagenwissen für sicheres Programmieren
4.1 Praktiken der agilen Softwareentwicklung
4.2 Die Programmiersprache C
4.2.1 Ein einfaches C-Programm
4.2.2 Automatisierung des Build-Prozesses
4.2.3 Die Erstellung und Verwendung von Bibliotheken in C
4.3 Die Programmiersprache Java
4.3.1 Ein einfaches Java-Programm
4.3.2 Automatisierung des Build-Prozesses
4.3.3 Die Erstellung und Verwendung von Bibliotheken in Java
4.4 Versionierung von Quellcode
4.5 Debugging und automatisiertes Testen
4.5.1 Debugging
4.5.2 Automatisiertes Testen
4.6 Continuous Integration
4.7 Beispiele auf GitHub und auf rheinwerk-verlag.de
5 Reverse Engineering
5.1 Analyse von C-Applikationen
5.1.1 Die x86-Architektur
5.1.2 Die x86-64-Architektur
5.1.3 Speicheraufteilung von C-Applikationen
5.1.4 Der GNU Debugger
5.1.5 Die Verwendung des Heap
5.1.6 Die Verwendung des Stacks
5.1.7 Reverse Engineering: Ein konkretes Beispiel
5.2 Analyse von Java-Applikationen
5.2.1 Classdateiformat
5.2.2 Speicheraufteilung von Java-Applikationen
5.2.3 Befehlssatz
5.2.4 Der Java-Disassembler
5.2.5 Class Loader
5.2.6 Garbage Collectors
5.2.7 Just-in-Time Compiler
5.2.8 Reverse Engineering Java: Ein konkretes Beispiel
5.3 Code Obfuscation
6 Sichere Implementierung
6.1 Reduzieren Sie die Sichtbarkeit von Daten und Code
6.1.1 Zugriffskontrollen in Java
6.1.2 Objekte als Parameter
6.1.3 Object Serialization
6.1.4 Immutable Objects
6.1.5 Java Reflection API
6.2 Der sichere Umgang mit Daten
6.2.1 Repräsentation von Daten
6.2.2 Input-Validierung
6.2.3 Output-Codierung
6.3 Der richtige Umgang mit Fehlern
6.3.1 Fehlercodes
6.3.2 Exceptions
6.3.3 Logging
6.4 Kryptografische APIs richtig einsetzen
6.4.1 Java Cryptography Architecture
6.4.2 Sichere Datenspeicherung
6.5 Statische Codeanalyse
6.5.1 Manuelles Code-Review
6.5.2 Automatisiertes Code-Review
6.5.3 Analyse von Bibliotheken
7 Sicheres Design
7.1 Architekturbasierte Risikoanalyse
7.1.1 Analyse der Angriffsfläche
7.1.2 Bedrohungsmodellierung
7.2 Designprinzipien für sichere Softwaresysteme
7.3 Das HTTP-Protokoll
7.3.1 HTTP-Transaktionen
7.3.2 Cookies
7.3.3 HTTPS
7.3.4 Interception Proxy
7.4 Sicheres Design von Webapplikationen
7.4.1 Clientseitige Kontrolle
7.4.2 Zugriffskontrolle
7.4.3 Authentifizierung
7.4.4 Session-Management
7.4.5 Autorisierung
7.4.6 Datenspeicherung
7.4.7 Verhinderung von Browserangriffen
8 Kryptografie
8.1 Verschlüsselung
8.1.1 Grundbegriffe
8.1.2 Symmetrische Verschlüsselung: Designideen von AES
8.1.3 Asymmetrische Verschlüsselung: Hinter den Kulissen von RSA
8.1.4 RSA: Security-Überlegungen
8.1.5 Diffie-Hellman Key Exchange
8.2 Hash-Funktionen
8.2.1 Grundlegende Eigenschaften von Hash-Funktionen
8.2.2 Angriffe auf Hash-Funktionen
8.2.3 Ausgewählte Architekturen von Hash-Funktionen
8.3 Message Authentication Codes und digitale Signaturen
8.3.1 Message Authentication Codes
8.3.2 Digitale Signaturen
8.4 NIST-Empfehlungen
9 Sicherheitslücken finden und analysieren
9.1 Installation der Windows-Testinfrastruktur
9.1.1 Installation des i.Ftp-Clients
9.1.2 Installation der Debugging-Umgebung
9.1.3 Installation der PyWin-Umgebung
9.2 Manuelle Analyse der Anwendung
9.2.1 Identifikation von Datenkanälen in die Anwendung
9.2.2 Analyse der XML-Konfigurationsdateien
9.3 Automatische Schwachstellensuche mittels Fuzzing
9.4 Analyse des Absturzes im Debugger
9.5 Alternativen zum Fuzzing
9.6 Tools zur Programmanalyse
9.6.1 Olly Debug
9.6.2 Immunity Debugger
9.6.3 WinDebug
9.6.4 x64dbg
9.6.5 IDA Pro
9.6.6 Hopper
9.6.7 GDB – Gnu Debugger
9.6.8 EDB – Evan’s Debugger
9.6.9 Radare2
9.6.10 Zusammenfassung der Tools
10 Buffer Overflows ausnutzen
10.1 Die Crash-Analyse des i.Ftp-Clients
10.2 Offsets ermitteln
10.3 Eigenen Code ausführen
10.4 Umgang mit Bad Characters
10.5 Shellcode generieren
10.5.1 Bind Shellcode
10.5.2 Reverse Shellcode
10.6 Exception Handling ausnutzen
10.7 Analyse unterschiedlicher Buffer-Längen
10.8 Buffer Offsets berechnen
10.9 SEH-Exploits
10.10 Heap Spraying
11 Schutzmaßnahmen einsetzen
11.1 ASLR
11.2 Stack Cookies
11.3 SafeSEH
11.4 SEHOP
11.5 Data Execution Prevention
11.6 Schutz gegen Heap Spraying
12 Schutzmaßnahmen umgehen
12.1 Was sind Reliable Exploits?
12.2 Bypass von ASLR
12.2.1 Review des i.Ftp-Exploits
12.2.2 Verwendung von ASLR-freien Modulen
12.2.3 Verwendung von ASLR-freien Modulen – i.Ftp.exe
12.2.4 Partielles Überschreiben der Sprungadresse
12.2.5 Egg Hunting
12.2.6 Verwendung von ASLR-freien Modulen – Lgi.dll
12.2.7 Brute Force einer Sprungadresse
12.2.8 Partielles Überschreiben der Return-Adresse II
12.2.9 Ermitteln der Adressen aus dem laufenden Programm
12.2.10 Fehlertolerante Sprungbereiche
12.3 Bypass von Stack Cookies
12.4 Bypass von SafeSEH
12.5 Bypass von SEHOP
12.6 Data Execution Prevention (DEP) – Bypass mittels Return Oriented Programming
12.6.1 DEP unter Windows
12.6.2 Return Oriented Programming
12.7 DEP Bypass mittels Return-to-libc
13 Format String Exploits
13.1 Formatstrings
13.2 Die fehlerhafte Anwendung
13.3 Aufbau der Analyseumgebung
13.4 Analyse des Stack-Inhalts
13.5 Speicherstellen mit %n überschreiben
13.6 Die Exploit-Struktur
13.7 Die Ermittlung von Adressen und Offsets
13.8 Die Verifikation der Adressen im Debugger
13.9 Die erste lauffähige Version des Exploits
13.10 ASLR Bypass
14 Real Life Exploitation
14.1 Heartbleed
14.2 SSL OpenFuck
14.3 Shellshock
14.4 Eternal Blue
14.5 Spectre und Meltdown
14.6 Stagefright
Stichwortverzeichnis
Rechtliche Hinweise
Über den Autor
← Prev
Back
Next →
← Prev
Back
Next →