
Incident Response & Digitalforensik Debugging-Erweiterung
SwishDbgExt ist eine Microsoft WinDbg Debugging-Erweiterung, die den Satz verfügbarer Befehle von Microsoft WinDbg erweitert, aber auch vorhandene Befehle repariert und verbessert. Diese Erweiterung wurde von Matt Suiche (@msuiche) entwickelt – zögern Sie nicht, sich unter [email protected] zu melden, um weitere Funktionen anzufragen, einen Beitrag zu leisten und/oder Fehler zu melden.
SwishDbgExt zielt darauf ab, Kernel-Entwicklern, Troubleshootern und Sicherheitsexperten mit einer Reihe von Debugging-, Incident-Response- und Memory-Forensik-Befehlen das Leben zu erleichtern. Da SwishDbgExt eine WinDbg-Debugging-Erweiterung ist, bedeutet dies, dass sie in lokalen oder remote Kernel-Debugging-Sitzungen, Live-Sitzungen, die von Microsoft LiveKd generiert wurden, aber auch in Microsoft-Crash-Dumps, die bei einem Blue Screen of Death oder hybriden Dienstprogrammen wie Comae DumpIt erstellt wurden, verwendet werden kann.
Weitere Informationen auf https://blog.comae.io/comae-2016-contest-swishdbgext-features-3c9a63c62209#.tnt1b9usx
Sie können die WinDbg-Erweiterung entweder in den entsprechenden (x86 oder x64) WinDbg-Ordner kopieren oder manuell mit dem !load-Befehl laden, wie unten gezeigt. Beachten Sie, dass der vollständige Pfad zur zu ladenden DLL keine Leerzeichen oder Anführungszeichen enthalten darf.
!load X:\FullPath\SwishDbgExt.dll
kd> !load E:\projects\labs\SwishDbgExt\bin\x64\SwishDbgExt.dll;
SwishDbgExt v0.7.0 (Nov 2 2016) - Incident Response & Digital Forensics Debugging Extension
SwishDbgExt Copyright (C) 2016 Comae Technologies FZE - http://www.comae.io
SwishDbgExt Copyright (C) 2014-2016 Matthieu Suiche (@msuiche)
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
Wenn Sie Ihre WinDbg-Vorlage mit einer DML-freundlicheren Vorlage aktualisieren möchten, können Sie die dem Paket beiliegende Datei windbg_template.reg direkt importieren.
Zeigt Informationen zu verfügbaren Erweiterungsbefehlen an.
Dieser Befehl gibt Ihnen die Liste aller Befehle, wenn Sie kein Argument angeben, und die Liste der Parameter für einen vorhandenen Befehl, wenn ein Argument angegeben wird.
Callback-Funktionen anzeigen
Nach verwendeten Code-Caves suchen
Verlauf der Konsolenbefehle anzeigen
Benutzeranmeldeinformationen anzeigen (basiert auf gentilwiki's mimikatz)
Liste der Treiber anzeigen. !ms_drivers zeigt eine Liste der derzeit geladenen Treiber an. In diesem Beispiel finden Sie einige der zum Zeitpunkt des Absturzes in diesem Kernel-Dump geladenen Treiber: Mit diesem Befehl können wir auch detaillierte IRP-Informationen zu einem Treiber anzeigen: Im obigen Bild sehen Sie den treiberspezifischen I/O-Stack-Standort im IRP von e1cexpress.sys. Hier sehen wir Funktionscodes wie IRP_MJ_CREATE, die das Zielgeräteobjekt öffnen, was darauf hindeutet, dass es vorhanden und für I/O-Operationen verfügbar ist.
Speicherbereich auf Festplatte dumpen
Ex in der Warteschlange befindliche Worker anzeigen.
!exqueue funktioniert unter Windows 8 nicht richtig, daher musste eine funktionierende Version implementiert werden. Genau wie der ursprüngliche Befehl zeigt dieser die Warteschlange der arbeitenden Threads an.
Segmentierung in WinDbg zurücksetzen (Fix "16.kd>")
GDT anzeigen.
!ms_gdt zeigt die Global Descriptor Table an. Beachten Sie, dass unter x64 jeder Selektor flach ist (0x0000000000000000 bis 0xFFFFFFFFFFFFFFFF). Dieser Befehl kann besonders hilfreich sein, um auf verdächtiges Hooking der GDT zu prüfen, da ein solcher Versuch unter x64 einen Bug Check auslöst. Dies liegt daran, dass x64 das Hooking der GDT verbietet.
Liste der Registry-Hives anzeigen.
ms_hivelist zeigt eine Liste der Registry-Hives an.
Wir können direkt in einen Hive (z.B. \Registry\Machine\Software) schauen, um dessen Unterschlüssel, Werte usw. zu sehen:

IDT anzeigen.
!ms_idt zeigt die Interrupt Descriptor Table an. Ähnlich wie bei der GDT wird bei einem Hooking der IDT unter x64 ein Bug Check ausgelöst. Dies liegt daran, dass Microsoft programmatisch eine Verhinderung des Hookings der IDT implementiert hat, indem ein Kernel-Mode-Treiber normalerweise Aufrufe an die IDT abfängt und dann eigene Verarbeitung hinzufügt. Deshalb gibt es im obigen Bild überall ‘No’.
Analysiert einen Speicherbereich und gibt einen Malware Score Index (MSI) zurück – (basiert auf der Arbeit von Frank Boldewin)
Master Boot Record (MBR) scannen
Netzwerkinformationen anzeigen (Sockets, Verbindungen, ...)
Liste der Objekte anzeigen
Liste der Prozesse anzeigen.
!ms_process ist eine verbesserte Version von !process und !dml_proc.
Eines der netten Dinge, wie Sie unten sehen können, ist die Verwendung von DML (Debugger Markup Language) mit den Befehlen. Alle unterstrichenen Befehle sind tatsächlich Links zu Befehlen.
Im untenstehenden Beispiel sehen Sie die Ausgabe von /vads /scan, um VAD (Virtual Address Descriptors) zu scannen. Sie können feststellen, dass eine Spalte den „Malware Score Index“ angibt, der nützlich sein kann, um Shellcodes oder Heap-Spray zu erkennen.
Im Screenshot unten sehen Sie eine ungewöhnlich hohe Punktzahl in mehreren VADs – aufgrund der Verwendung von Heap-Spray. Durch Klicken auf die Punktzahl wird der Scan-Algorithmus ausgeführt.
Der Scan-Algorithmus basiert auf Frank Boldewin’s Dienstprogramm OfficeMalScanner.
Und gibt Ihnen Informationen darüber, wo sich der Shellcode befindet:
Die Option /scan kann auch für exportierte Funktionen verwendet werden, um festzustellen, ob die EAT (Export Address Table) gepatcht wurde oder ob der Prolog der Funktion modifiziert wurde.
Ähnliche Tests sind für die SSDT (!ms_ssdt) verfügbar.
Key Control Block lesen
Key-Knoten lesen.
Der WinDbg-Befehl !reg war aufgrund einiger Fehler lange Zeit frustrierend. Deshalb hat SwishDbgExt eigene Registry-Explorer-Funktionen, um den Zugriff auf Registry-Daten so einfach wie möglich zu gestalten.
Key-Wert lesen
Verdächtige NDIS-Hooks scannen und anzeigen
Liste der Dienste anzeigen
Funktionen der Service Descriptor Table (SDT) anzeigen.
!ms_ssdt zeigt die System Service Dispatch Table an. Dieser Befehl ist äußerst hilfreich bei der Untersuchung von verdächtigen Rootkit-Hooks durch Direct Kernel Object Manipulation (DKOM). Wenn Sie hier eine Low-Level-Routine sehen, die gehooked ist (wie nt!NtEnumerateKey), kann Ihnen dies bei Ihrer Analyse einer möglichen Rootkit-Infektion helfen.
Informationen zum Store Manager (ReadyBoost) anzeigen.
Dieser Befehl ermöglicht es, den aktuellen ReadyBoost-Cache (erfordert USB 3.0) des Betriebssystems aufzulisten, aber auch die Protokolle der vom Store Manager verwalteten Speicherseiten anzuzeigen. Parameter: /cache
Liste der KTIMER anzeigen.
!ms_timers zeigt die KTIMER-Struktur an, eine undurchsichtige Struktur, die verschiedene Timer-Objekte darstellt und enthält. Dieser Befehl kann hilfreich sein, um herauszufinden, welche Treiber welche Timer-Objekte erstellt haben, welche Treiber welche Routinen aufgerufen haben usw.
Liste der zwischengespeicherten VACBs anzeigen