Ein tiefer Einblick in Speicherbeschädigungs-Schwachstellen, Ausnutzung und Verteidigung
Einleitung
Kapitel 1: Computer-Speicherarchitektur und CPU-Grundlagen
- Die Von-Neumann-Architektur und Speicheradressierung
- CPU-Register und ihre Rollen
- Instruktionsexekution und der Fetch-Decode-Execute-Zyklus
- Endianess und Datenrepräsentation
- Privilegbenen und Ring-Architektur
- Speicherabbildung auf Hardware-Ebene
Kapitel 2: Prozess-Speicheranordnung und Betriebssystem-Speicherverwaltung
- Virtueller Speicher und Adressübersetzung
- Die Text-, Data-, BSS-, Heap- und Stack-Segmente
- Shared Libraries und dynamisches Linking
- Speicherallokation: malloc, free und der Allocator
- Page Tables und die MMU
- Cross-Platform-Unterschiede: Linux vs. Windows-Speicheranordnung
Kapitel 3: Grundlagen der Assemblersprache und Aufrufkonventionen
- Überblick über den x86- und x86_64-Befehlssatz
- Häufige Befehle für die Exploit-Entwicklung
- Der Stapelrahmen: Prolog, Epilog und lokale Variablen
- System V AMD64 ABI-Aufrufkonvention
- Windows x64-Aufrufkonvention
- Positionsunabhängiger Code und Relokationen
Kapitel 4: Debugging-Workflows und Grundlagen der Binäranalyse
- GDB-Grundlagen für die Sicherheitsforschung
- WinDbg, x64dbg und Mona.py unter Windows
- Speicherinspektion und Haltepunkt-Strategien
- Reverse Engineering mit radare2 und Ghidra
- Statische Analyse: objdump, readelf und PE-Tools
- Dynamische Analyse und Instrumentierung mit Frida
Kapitel 5: Stapelbasierte Pufferüberläufe
- Anatomie eines stapelbasierten Überlaufs
- Überschreiben der Rücksprungadresse und Entführung des Kontrollflusses
- Finden des Offsets: Mustererstellung und Absturzanalyse
- NOP-Sleds und Shellcode-Platzierung
- Umgebungsvariablen und Stack Spraying
- Auswirkungen auf Windows- und Linux-Systeme
- Durchgang: Kompletter Stapelüberlauf-Exploit mit Shellcode-Injektion
Kapitel 6: Heap-basierte Pufferüberläufe und Heap-Manipulation
- Wie Memory-Allocatoren funktionieren: glibc ptmalloc und Windows Heap
- Heap Chunk Metadaten und Freilistenverwaltung
- Heap-Overflow-Exploitation-Techniken
- Bin-Sortierung und Konsolidierungsangriffe
- House of Force, House of Spirit und benannte Heap-Techniken
- Walkthrough: Fastbin-Angriff mit Arbitrary Write Primitive
Kapitel 7: Verwandte Speicher-Korruptions-Schwachstellen
- Off-by-One-Fehler und ihre Ausnutzung
- Integer-Überläufe, die zu Speicher-Korruption führen
- Use-After-Free-Schwachstellen
- Double-Free und Freigabe-Pointer-Manipulation
- Format-String-Schwachstellen
- Zugriff außerhalb der Grenzen (Out-of-Bounds Reads and Writes)
- Race Conditions, die die Speicher-Sicherheit beeinflussen
- Walkthrough: Tcache-Vergiftungs-UAF mit Vtable-Überschreibung
- Walkthrough: Format-String-Beliebiges-Schreiben via GOT-Überschreibung
Kapitel 8: Shellcode-Grundlagen und Kontrollflussentführung
- Was ist Shellcode und warum ist er wichtig
- Schreiben positionsunabhängigen Shellcodes
- Syscall-basierter Shellcode für Linux
- Windows-API-Auflösung und LoadLibrary-Techniken
- Nullbyte-Handhabung und Kodierung
- Polymorphe und kodierte Payloads
- Schritt-für-Schritt-Anleitung: Shellcode in einem Stack-Overflow erstellen und ausführen
Kapitel 9: Return-Oriented Programming und Code-Wiederverwendungsangriffe
- Das Problem, das DEP löste, und die ROP-Lösung
- Aufbau von ROP-Ketten: Gadgets, Pivots und Register
- Gadgets mit ropper und ROPgadget finden
- ROP unter Linux: Systemaufruf-Konstruktion
- ROP unter Windows: VirtualAlloc und WinExec
- Durchgang: Vollständige ROP-Kette gegen eine gehärtete Binärdatei
- Jump-Oriented Programming (JOP)
- Signal-Oriented Programming (SROP)
- Oriented Return Composition (ORC)
Kapitel 10: Informationslecks und Adresspreisgabe
- Warum ASLR die Ausnutzung erschwert
- Heap Spraying und deterministisches Speicherlayout
- Format-String-Informationspreisgabe
- Return-to-PLT und GOT-Überschreibung zum Lecken
- Praxisbeispiel: Mehrstufige Exploit-Kette mit ASLR-Umgehung
- Windows-ASLR-Umgehungstechniken
- Partielle Überschreibungen und reduzierte Entropie
- Cross-Process-Informationsbeschaffung
Kapitel 11: Moderne Verteidigungsmaßnahmen und Gegenmaßnahmen
- DEP/NX: Nicht ausführende Speicherseiten
- ASLR: Address Space Layout Randomization
- Stack Canaries und ProPolice
- PIE, RELRO und GOT-Schutz
- SafeSEH und CFG auf Windows
- Control Flow Integrity (CFI)
- Intel CET: Shadow Stacks und Indirect Branch Tracking
- ARM Pointer Authentication (PAC)
- Sandboxing und Prozessisolierung
Kapitel 12: Umgehungsforschung und der Wettrüsten zwischen Exploits und Schutzmaßnahmen
- Der Zeitstrahl: Vom Stack Smashing bis zu modernen Schutzmaßnahmen
- Canary-Umgebungstechniken
- ASLR-Entropie-Analyse und Umgehung
- Full RELRO und GOT-Schreib-Einschränkungen
- CFI-Umgehungsforschung
- CET-Umgehungsansätze
- PAC-Umgehung auf ARM
- Die Zukunft: Was kommt als Nächstes
Kapitel 13: Methoden der Schwachstellenforschung
- Fuzzing-Strategien: Abdeckungsgeleitetes und mutationsbasiertes Fuzzing
- Walkthrough: Einrichten und Durchführen einer Fuzzing-Kampagne
- Crash-Triage und Root-Cause-Analyse
- Binäranalyse: Symbolische Ausführung und konkolisches Testing
- Speichersanitizer: ASan, MSan, UBSan
- Differenzfuzzing und plattformübergreifender Vergleich
- Verantwortliche Offenlegung und CVE-Zuweisung
Kapitel 14: Sichere Programmierpraktiken und Compiler-Härtung
- Sichere String- und Speicherfunktionen
- Bereichsprüfung und sichere Integer-Arithmetik
- Compiler-Flags: FORTIFY_SOURCE, StackProtector, CFProtection
- Speichersichere Sprachen: Rust als Alternative
- Code-Review-Techniken für Speichersicherheit
- Statische Analysewerkzeuge: Clang Analyzer, Coverity, PVS-Studio
Kapitel 15: Exploit-Erkennung, Incident Response und Forensik
- Erkennung von Pufferüberlauf-Angriffen in der Praxis
- EDR und Verhaltensüberwachung für Speicherfehleranfälligkeiten
- Core-Dump-Analyse und Post-Mortem-Debugging
- Netzwerkebene-Exploit-Erkennung
- Incident-Response-Playbooks für RCE-Ereignisse
- Forensische Rekonstruktion des Zeitplans
- Lehren aus großen Exploit-Vorfällen
- Walkthrough: Forensische Analyse eines Stack-Overflow-Exploits