Kapitel 7 - Debugger. Universität Mannheim



Ähnliche Dokumente
Visual Basic Express Debugging

Tevalo Handbuch v 1.1 vom

Internet Explorer Version 6

Konfiguration von Igel ThinClients fu r den Zugriff via Netscaler Gateway auf eine Storefront/ XenDesktop 7 Umgebung

Upgrade von Windows Vista auf Windows 7

MetaQuotes Empfehlungen zum Gebrauch von

Wo finde ich die Software? - Jedem ProLiant Server liegt eine Management CD bei. - Über die Internetseite

Sicherheit für Windows Vista Teil 2: Windows Tool zum Entfernen bösartiger Software

Ablaufbeschreibung für das neu Aufsetzen von Firebird und Interbase Datenbanken mit der IBOConsole

Firmware-Update, CAPI Update

Hinweise zum Update des KPP Auswahltools (Netzwerkinstallation) auf Version 7.2

Dealer Management Systeme. Bedienungsanleitung. Freicon Software Logistik (FSL) für Updates

Lokale Installation von DotNetNuke 4 ohne IIS

MSDE 2000 mit Service Pack 3a

3. Klicken Sie im folgenden Fenster unbedingt auf "Installation fortsetzen", um die für das Update benötigten Treiber zu installieren.

Backup der Progress Datenbank

Update auf Windows 8.1 Schrittweise Anleitung

Datensicherung und Wiederherstellung

1 Voraussetzungen für Einsatz des FRITZ! LAN Assistenten

SharePoint Workspace 2010 Installieren & Konfigurieren

Anleitung zum Computercheck Windows Firewall aktivieren oder eine kostenlose Firewall installieren

ARAkoll 2013 Dokumentation. Datum:

Installation und Inbetriebnahme von Microsoft Visual C Express

OpenMAP WEBDrive Konfiguration. Oxinia GmbH , Version 1

Windows 10. Vortrag am Fleckenherbst Bürgertreff Neuhausen.

INTERNETZUGANG WLAN-ROUTER ANLEITUNG FIRMWARE-UPDATE SIEMENS

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

Anti-Botnet-Beratungszentrum. Windows XP in fünf Schritten absichern

Duonix Service Software Bedienungsanleitung. Bitte beachten Sie folgende Hinweise vor der Inbetriebnahmen der Service Software.

Reparaturmodus unter Office und 2013 finden

TrekStor - ebook-reader TrekStor (TS) Edition - Firmware-Update

ltlasten in der Registrierdatenbank löschen

Installation von Microsoft Visual C Express

SafeRun-Modus: Die Sichere Umgebung für die Ausführung von Programmen

Task: Nmap Skripte ausführen

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Umgang mit der Software ebuddy Ändern von IP Adresse, Firmware und erstellen von Backups von ewon Geräten.

EasyWk DAS Schwimmwettkampfprogramm

Update SFirm 3.1 von Vorgängerversionen. Installation. S Sparkasse Oberpfalz Nord

Buddy - Algorithmus Handbuch für Endnutzer Stand

Formular»Fragenkatalog BIM-Server«

Anwenderdokumentation AccountPlus GWUPSTAT.EXE

Zwischenablage (Bilder, Texte,...)

VIDA ADMIN KURZANLEITUNG

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version September

Allgemeine Hinweise. Softwareinstallation. Im Rahmen des Praktikums kommt folgende Software zum Einsatz

Step by Step Webserver unter Windows Server von Christian Bartl

Cockpit 3.4 Update Manager

MORE Profile. Pass- und Lizenzverwaltungssystem. Stand: MORE Projects GmbH

Netzwerkeinstellungen unter Mac OS X

eduvote Ein Umfragesystem für Lehrveranstaltungen - PowerPoint Add-In -

Übung - Datenmigration in Windows XP

Verbinden. der Firma

Samsung Large Format Display

Firmware-Installationsanleitung für AVIC-F60DAB, AVIC-F960BT, AVIC-F960DAB und AVIC-F860BT

Handbuch USB Treiber-Installation

Computeria Solothurn

Windows Server 2012 RC2 konfigurieren

Tutorial -

Einrichtung des WS_FTP95 LE

Update auf Windows 8.1 Schrittweise Anleitung

ISA Server Best Practice Analyzer

FreePDF XP Handbuch. Aktuelle Version bei Fertigstellung: FreePDF XP 1.0. Inhalt:

WOT Skinsetter. Nun, erstens, was brauchen Sie für dieses Tool zu arbeiten:

In diesem Tutorial lernen Sie, wie Sie einen Termin erfassen und verschiedene Einstellungen zu einem Termin vornehmen können.

Ein Leitfaden für Anfänger unter Zuhilfenahme frei verfügbarer Software! (bei z.b. Google Microsoft Powertoys suchen, oder diesen Link verwenden )

Nokia Handy - Daten sichern.

Konfiguration des ewon GSM Modems Kurzbeschreibung zum Aufbau einer GSM Verbindung

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

TECHNISCHE DOKUMENTATION ZUM TURBO-FREEZER XL 3 & XE 1

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Installationsanleitung Barcode-Scanner des MEDI Baden- Württemberg e.v.

Win-Digipet V 9.2 Premium Edition Wie bastele ich mir steuerbare Kontakte. Wie bastele ich mir steuerbare Kontakte? -Quick-And-Dirty-Lösung-

Psyprax GmbH. Netzwerk Installation unter XP. Wichtig für alle Netzwerkinstallationen: Psyprax GmbH

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware

Erstellen eines Screenshot

Einspielanleitung für das Update DdD Cowis backoffice DdD Cowis pos

Installation der Konfigurationsdateien für alle Windows-Versionen bis einschließlich Microsoft Windows 7

2. Konfiguration der Adobe Software für die Überprüfung von digitalen Unterschriften

mobilepoi 0.91 Demo Version Anleitung Das Software Studio Christian Efinger Erstellt am 21. Oktober 2005

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

Meldung Lokale Anwendung inkompatibel oder Microsoft Silverlight ist nicht aktuell bei Anmeldung an lokal gespeicherter RWE SmartHome Anwendung

ICS-Addin. Benutzerhandbuch. Version: 1.0

Zentrale Installation

Anleitung zum BW-Bank Computer-Check Windows-Firewall aktivieren

Persönliches Adressbuch

Anleitung zum Öffnen meiner Fotoalben bei web.de

Internet online Update (Internet Explorer)

GFAhnen Datensicherung und Datenaustausch

Überprüfung der digital signierten E-Rechnung

Windows 10 > Fragen über Fragen

Kundenleitfaden Installation

Das Einzelplatz-Versionsupdate unter Version Bp810

Dokumentenverwaltung. Copyright 2012 cobra computer s brainware GmbH

Fingerpulsoximeter. A. Wie führt man einen Echtzeitdatentransfer vom PULOX PO-300 zum Computer durch und speichert diese Messdaten auf dem PC?

Bedienungsanleitung. E-Learning Software VedA

Bekannte Effekte bei Soft- und Hardware der ESTEC Datenlogger sowie der PC Auswertesoftware

Backup Premium Kurzleitfaden

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

FastViewer Remote Edition 2.X

Transkript:

Kapitel 7 - Debugger

zynamics Hersteller von Reverse Engineering Tools Fünf Produkte BinDiff BinNavi VxClass (Deutscher IT-Sicherheitspreis 2006) BinCrowd PDF Tool 2

Was ist ein Debugger (offiziell)? Ein Debugger (von engl. bug im Sinne von Programmfehler) ist ein Werkzeug zum Diagnostizieren, Auffinden und Beheben von Fehlern in Computersystemen, dabei vor allem in Programmen, aber auch in der für die Ausführung benötigten Hardware. Wikipedia 3

Was ist ein Debugger (RE)? Ein Debugger (von engl. bug im Sinne von Programmfehler) ist ein Werkzeug zum Herausfinden der Funktionalität von Programmen für die kein Quellcode vorliegt. Ich 4

Debugging im RE-Kontext Malware-Analyse Aufdeckung von Sicherheitslücken Entdeckung von Lizenzverstößen Behebung von Interoperabilitätsproblemen Erweiterung von Programmen nach Quellcodeverlust 5

Warum Debugger für RE? Statische Analyse oft schwierig Verschlüsselung, Packer,... Statische Analyse hat oft nicht alle benötigten Informationen Manchmal kapiert mans einfach nicht ohne Programmausführung 6

Verschiedene Debuggertypen Ziel Quelltextdebugger vs. Assemblerdebugger Benutzung Lokaler Debugger vs. Remote Debugger Mächtigkeit Userland Debugger vs. Kernel Debugger 7

Visual Studio Debugger 8

OllyDbg 9

Immunity Debugger 10

SoftICE 11

WinDbg 12

Standardfunktionalität Programmzustand untersuchen Register, Speicher, Stack,... Programmzustand verändern Haltepunkte setzen Einzelschrittausführung Bekannte Datenstrukturen einsehen Exception-Handler-Kette einsehen... 13

Windows Debugger Meistens mit Hilfe der Windows Debug API implementiert Funktionalität in kernel32.dll, psapi.dll und dbghelp.dll Wichtige Funktionen DebugActiveProcess: Prozess debuggen WaitForDebugEvent: Wartet auf Debugger-Events DebugBreakProcess: Anhalten des Prozesses der vom Debugger kontrolliert wird. 14

Laufenden Prozess debuggen Benutzer muss SeDebugPrivilege besitzen OpenProcess DebugActiveProcess WaitForDebugEvent-Schleife DebugSetProcessKillOnExit (Windows XP+) DebugActiveProcessStop (Windows XP+) 15

Neuen Prozess debuggen Benutzer muss SeDebugPrivilege besitzen CreateProcess mit Debug-Flags WaitForDebugEvent-Schleife DebugSetProcessKillOnExit (Windows XP+) DebugActiveProcessStop (Windows XP+) 16

Die Debugger-Schleife DEBUG_EVENT event; for (;;) { WaitForDebugEvent(&event, INFINITE); switch(event.dwdebugeventcode) { // Debug Events werden hier verarbeitet } } ContinueDebugEvent( ); 17

Mögliche Debug Events EXCEPTION_DEBUG_EVENT CREATE_THREAD_DEBUG_EVENT CREATE_PROCESS_DEBUG_EVENT EXIT_THREAD_DEBUG_EVENT EXIT_PROCESS_DEBUG_EVENT LOAD_DLL_DEBUG_EVENT UNLOAD_DLL_DEBUG_EVENT OUTPUT_DEBUG_STRING_EVENT RIP_EVENT 18

Verarbeitung des Programmzustands Registerwerte lesen OpenThread + GetThreadContext Registerwerte schreiben OpenThread + GetThreadContext + SetThreadContext Speicher auslesen VirtualProtextEx + ReadProcessMemory + VirtualProtextEx Speicher schreiben VirtualProtextEx + WriteProcessMemory + VirtualProtectEx 19

Exception Events EXCEPTION_DEBUG_EVENT Treten auf im Falle einer Ausnahmesituation Access Violation Divide By Zero Privileged Instruction... Treten auch auf, wenn ein Haltepunkt getroffen oder ein Einzelschritt ausgeführt wird 20

Behandlung von Exception Events EXCEPTION_DEBUG_INFO DWORD dwfirstchance EXCEPTION_RECORD DWORD ExceptionCode DWORD ExceptionFlags _EXCEPTION_RECORD* ExceptionRecord PVOID ExceptionAddress DWORD NumberParameters ULONG_PTR ExceptionInformation [EXCEPTION_MAXIMUM_PARAMETERS] 21

Behandlung von Exception Events Herausfinden der genauen Ausnahme event.u.exception.exceptionrecord.exceptioncode Reguläre Ausnahmen First Pass: An Anwendung weitergeben Second Pass: Fehlermeldung anzeigen Haltepunkt und Einzelschritt Exception Verarbeiten im Debugger 22

Feature: Software-Haltepunkte Möglichkeit ein Programm an einer beliebigen Stelle anzuhalten Ermöglicht das Überspringen unwichtiger Programmpfade Originalcode wird durch Haltepunkt-Befehl 0xCC ersetzt 23

Behandlung von Haltepunkten Ermittlung der Haltepunkt-Adresse Adresskorrektur durchführen Originalbefehl wiederherstellen Warten bis der Prozess fortgesetzt werden soll Einzelschritt ausführen Achtung: Race Condition Achtung: Was, wenn am nächsten Befehl auch ein BP ist? Haltepunkt wiederherstellen Prozess weiter ausführen 24

Feature: Hardware-Haltepunkte Funktionieren ganz anders Maximal 4 Haltepunkte pro CPU Adressen in den Registern DR0 bis DR3 DR7 zur Konfiguration der Haltepunkte Vorteil: Modifizieren Originalcode nicht 25

Feature: Einzelschrittausführung Nur der nächste Befehl soll ausgeführt werden Eventuell Verzweigung in Unterfunktion Minimale Änderung des Programmzustands Vielleicht das wichtigste Feature zum Programmverständnis Einzelschritt eines Threads wird mit dessen Trap-Flag ausgeführt 26

Behandlung von Einzelschritten Ermittlung der Einzelschrittaddresse Keine Addresskorrektur notwendig Trap-Flag wird automatisch zurückgesetzt 27

Feature: Prozedurschritt Sprung zum nächsten Befehl Ignorieren von Funktionsaufrufen Sehr nützlich um bekannte Funktionen zu überspringen 28

Behandlung von Prozedurschritt Prozedurschritt wird nie nativ unterstützt Stattdessen Simulation Ist der aktuelle Befehl ein Funktionsaufruf? Nein: Dann Einzelschritt Ja: Dann Haltepunkt auf den nächsten Befehl und Programm normal ausführen 29

Feature: Tracemodus Ausführen eines Programms und Protokollierung des Programmzustands nach jedem Befehl Sehr nützlich zum Datensammeln für spätere statische Analyse 30

Behandlung von Tracemodus Tracemodus wird nie nativ unterstützt Stattdessen Simulation Wiederholte Ausführung von Einzelschritten Aufzeichnung von Registerwerten und Speicherzellen 31

Thread Events Treten in zwei Fällen auf: Ein neuer Thread wird gestartet Ein aktiver Thread wird beendet 32

Feature: Threads Begrenzte Nützlichkeit beim Reverse Engineering Wichtig bei Malware-Analyse Einfacher Weg zum Finden von Command-Threads Ab und zu ist es nützlich Threads einschlafen zu lassen 33

Behandlung von Thread Creation CREATE_THREAD_DEBUG_INFO HANDLE hthread; LPVOID lpthreadlocalbase; LPTHREAD_START_ROUTINE lpstartaddress; 34

Behandlung von Thread Creation CREATE_THREAD_DEBUG_EVENT Thread ID feststellen Thread Zustand feststellen Startadresse feststellen Weitergabe der Informationen an den Benutzer Eventuell Programm anhalten 35

Behandlung von ExitThread EXIT_THREAD_DEBUG_INFO DWORD dwexitcode 36

Behandlung von Thread Exit EXIT_THREAD_DEBUG_EVENT Thread ID feststellen Weitergabe der Informationen an den Benutzer Eventuell Programm anhalten 37

Prozess Events Treten in vier Fällen auf: Ein neuer Prozess wird gestartet Der aktive Prozess wird beendet Eine DLL wird in den aktiven Prozess geladen Eine DLL wird aus dem aktiven Prozess entladen 38

Feature: Prozesse Begrenzte Nützlichkeit beim Reverse Engineering Wichtig bei der Malware-Analyse Häufig starten Malwareprozesse neue Prozesse 39

Behandlung von Process Creation CREATE_PROCESS_DEBUG_INFO HANDLE hfile HANDLE hprocess HANDLE hthread LPVOID lpbaseofimage DWORD dwdebuginfofileoffset DWORD ndebuginfosize LPVOID lpthreadlocalbase LPTHREAD_START_ROUTINE lpstartaddress LPVOID lpimagename WORD funicode 40

Behandlung von Process Creation CREATE_PROCESS_DEBUG_EVENT Ermittlung der geladenen Datei Erstaunlich kompliziert (Google: GetFileNameFromHandle) Ermittlung weiterer Informationen Prozess ID Initialer Thread Startaddresse Weitergabe der Informationen an den Benutzer Eventuell Programm anhalten 41

Behandlung von Process Exit EXIT_PROCESS_DEBUG_INFO DWORD dwexitcode 42

Behandlung von Process Exit EXIT_PROCESS_DEBUG_EVENT Ermittlung des Rückgabewertes Beenden des Debuggers 43

Behandlung von DLL Loading LOAD_DLL_DEBUG_INFO HANDLE LPVOID DWORD DWORD LPVOID WORD hfile lpbaseofdll dwdebuginfofileoffset ndebuginfosize lpimagename funicode 44

Behandlung von DLL Loading LOAD_DLL_DEBUG_EVENT Ermittlung der geladenen Datei Erstaunlich kompliziert (Google: GetFileNameFromHandle) Ermittlung weiterer Informationen Ladeadresse der Datei im Prozess Dateigröße Updaten der internen Prozessverwaltung Weitergabe der Informationen an den Benutzer Eventuell Programm anhalten 45

Behandlung von DLL Unloading UNLOAD_DLL_DEBUG_INFO LPVOID lpbaseofdll 46

Behandlung von DLL Unloading UNLOAD_DLL_DEBUG_EVENT Ermittlung der entladenen Datei Erstaunlich einfach Updaten der internen Prozessverwaltung Weitergabe der Informationen an den Benutzer Eventuell Programm anhalten 47

Anti-Debugging Malware und andere Programme wehren sich aktiv gegen Analyse Anti-Debugging Code ist nur eine von vielen Möglichkeiten Vorgehensweisen Erkennen eines Debuggers Verhindern der Funktion eines Debuggers Erschwerung der Analyse 48

Erkennen eines Debuggers Offizieller Weg IsDebuggerPresent CheckRemoteDebuggerPresent Dutzende inoffizieller Wege je Debugger Erkennen von Veränderungen im Code durch Haltepunkten Erkennen von Timing-Veränderungen Suche nach RE-Tools im Allgemeinen 49

Verhindern der Funktionalität Verhindern, dass sich ein Debugger an einen Prozess klemmt Automatisches Entfernen von Haltepunkten Gezieltes Auslösen von bekannten Bugs in Debuggern 50

Erschwerung der Analyse Laufzeitpacker benutzen Codeobfuscation Versuchen den Disassembler zu stören Komplizierter Verlauf des Kontrollflusses, etwa über Exceptionhandler 51

52

Referenzen Iczelion s Win32Asm Tutorials http://win32assembly.online.fr/tutorials.html MSDN Debugging API http://msdn.microsoft.com/enus/library/ms679303(vs.85).aspx Gray Hat Python von Justin Seitz Advanced Windows Debugging von Hario Herwardt und Daniel Pravat 53