Workshop Reverse Engineering und Exploiting Brutewoorse IT-Sec Gruppe Agenda Unser Programm für heute 1. 2. 3. 4. Wer sind wir? Motivation Was ist Reverse Engineering Wie funktioniert Reverse Engineering a. Hands-On Beispiele mit GDB 5. Maßnahmen gegen Reverse Engineering 6. Reverse Engineering Tools und Skills Geschichte - Gründung 2014 - Inzwischen in 3. Generation - Größere Erfolge bei CTFs - Internationale Top 10% State of the Union - Wöchentliche Treffen (meistens) - Austausch, Planung, Weiterbildung, Write-ups, etc.. - Monatliche CTFs (meistens :P) - Am Wochenende - Neue Pfade - Neue Leitung, Kooperation mit dem Chaos Darmstadt Neue Mitglieder? Realweltangriffe: Stagefright - 7 Sicherheitslücken in libstagefright von Android ca. 95% (950 Millionen) Android-Geräte betroffen Remote-Code-Execution über manipulierte Bilder möglich Bisher nur Proof-of-Concept Exploits gebaut ältere Geräte immer noch verwundbar Realweltangriffe: Heartbleed Gemeinsamkeit von Stagefright und Hearbleed - Quellcode liegt offen / “Open Source”-Vulnerabilities - Können über statische/dynamische Quellcode-Analyse gefunden werden - “relativ” einfach Realweltangriffe: Mirai Botnetz - Botnetz, das aus Internet-of-Things-Geräten besteht. - Kann sehr mächtige DDos-Attacken ausführen (> 1 Tbit/s) - Malware-Angriff auf Management-Schnittstelle bei Routern - Analyse der Funktionsweise nur über Reverse Engineering möglich Realweltangriffe: Internet Explorer Wozu verwendet man Reverse Engineering? - Malware-Analyse Rekonstruktion alter Software Nachträgliche Erstellung von Dokumentation Finden von Sicherheitslücken in Closed-Source-Software (z.b. Treiber/Firmware/alles was sich hacken lässt) - Denial of Service Angriffe - Erstellen von Exploits für Remote-Code-Execution - Analyse von Konkurrenz-Software Was ist Reverse Engineering? Let’s talk about cookies: Was ist Reverse Engineering? Now let’s talk about the real stuff: libraries source code compiler assembler linker executable binary Was ist Reverse Engineering? Can we reverse it? libraries source code compiler assembler linker executable binary But how? Executable and Linking Format (ELF-Binary) - Standard für portable object files Executables Shared Libraries relocatable files static and dynamic binaries Layout einer ELF-binary executable code (assembler, read only) read only data (constants) read/write data (variables) Beispiel 1 - How to linux-console Beispiel 2 - how to GDB Was ist GDB? - GNU Debugger Autor: Richard Stallman de-facto Standard-Debugger in Linux konsolenbasiert erweiterbar Manual: https://sourceware.org/gdb/onlinedocs/gdb/ x86 Prozessor - Führt Assembler-Anweisungen aus - Verschiedene Register: - EAX/RAX: Akkumulator EBX/RBX: Basis ECX/RCX: Zähler EDX/RDX: Daten/Allzweck ESI/RSI: Quellindex (Zeichenketten) EDI/RDI: Zielindex (Zeichenketten) ESP/RSP: Stapelzeiger EBP/RBP: Stapelsegment (Anfangsadresse) EIP/RIP: Befehlszeiger Stackframe Parameters Return Addresse ebp Saved EBP Local Variables esp Stackframe und Methodenaufruf argc argv[] Stackframe für main() Return Addresse ebp Saved EBP esp *pw eip ebp Return Addresse to main Stackframe für EBP of main check_password() foobar input result esp Beispiel 3 - Buffer Overflow Buffer Overflow *pw Return Addresse to AAAAAAAAAAAAAAAA main AAAAAAAAAAAAAAAA EBP of mainAAAAAAAAAAAAAAAA foobar input result eip: 0xaaaaaaaaaaaa => Segmentation fault AAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAA Beispiel 4 - Remote code execution Remote code execution Parameters Neue Sprung Addresse Return Addresse Saved EBP Padding Exploit Code Buffer[80] Maßnahmen gegen Buffer Overflow: Canary Parameters Return Addresse Saved EBP Neue Sprung Addresse Canary Padding Exploit Code Buffer[80] Maßnahmen gegen Buffer Overflow: Address Space Layout Randomization example2 libc 1. Aufruf 0xabcde 0x12345 2. Aufruf 0xcdbae 0x24135 3. Aufruf 0xbceda 0x53426 …. …. …. Maßnahmen gegen Reverse Engineering - Packing Obfuscation fehlende Debugging-Symbols Verschlüsselung “Spaghetti-Code” Reverse Engineering Skills Architekturen (Hardware) C, Assembler Betriebssysteme Reverse Engineering Skills auch Python kann hilfreich sein Motivation … und viel Zeit Reverse Engineering Tools GNU Debugger (gdb) OllyDbg Immunity Debugger https://www.gnu.org/software/gdb/ http://www.ollydbg.de/ https://www.immunityinc.com/products/debugger/ radare2 Hopper http://radare.org/r/ https://www.hopperapp.com/ IDA Pro https://www.hex-rays.com/products.shtml Vorgehen PE herunterladen prüfen (file) ausführen ELF Tools Ressourcen OverTheWire (Wargames) http://overthewire.org/wargames/ Smash The Stack (Wargames) http://smashthestack.org/wargames.html Corelan (Tutorials) https://www.corelan.be/ SecurityTube (Tutorials) http://www.securitytube.net/ Bildquellen - http://memeshappen.com/media/created/----meme-42321.jpg https://www.immunityinc.com/images/debugger-logo-large.jpg http://radare.org/r/img/r2logo3.png https://www.hopperapp.com/Hopper_v4.png https://www.hex-rays.com/products/ida/index.shtml - alle anderen Materialien lassen sich in der Public Domain finden
© Copyright 2025 ExpyDoc