x64dbg ist ein Open-Source-Debugger und ein beliebtes Malware-Analysetool für Windows. Ein Debugger wird verwendet, um den Code während der Ausführung Stück für Stück durchzugehen, damit man genau sehen kann, was darin geschieht. Debugger sind für die Behebung von Fehlern unverzichtbar, werden aber auch zum Reverse Engineering von Malware verwendet. Dieser Beitrag ist der Auftakt zu einer vierteiligen Serie, die sich mit dem Tool und den folgenden Inhalten befasst:
- Teil 1: Was ist x64dbg und wie benutzt man es?
- Teil 2: Entpacken von Malware mit x64dbg
- Teil 3: Stapelspeicher: Ein Überblick
- Teil 4: x64dbg – Tutorial
Ein Überblick über x64dbg
Im Gegensatz zu Entwicklern, die beim Debuggen Zugriff auf ihren eigenen Quellcode haben, arbeiten Malware-Analysten in der Regel mit kompiliertem Assembler-Code (z. B. mit EXE-Dateien oder DLLs unter Windows). Assembler-Code ist eine systemnahe Programmiersprache, die für eine bestimmte Computerarchitektur entwickelt wurde, etwa die 64-Bit-Architektur. Daher der Name x64dbg. Es gibt auch eine Version für die 32-Bit-Architektur unter dem Namen x32dbg. In der Regel fängt ein Malware-Analyst nicht mit einem Debugger an. Zunächst erfolgen bestimmte statische Analysen, und oft wird die Malware sogar in einer virtuellen Maschine ausgeführt, samt einiger Tools zur Verhaltensanalyse. So lässt sich verstehen, was genau die Malware tut. Nach dieser ersten Phase kann ein Debugger verwendet werden, um die Malware zu entpacken und dann die spezifischen Funktionen der Malware zu analysieren. Das wird auch als Reverse Engineering bezeichnet.
So wird x64dbg installiert
Die Installation des Tools ist einfach und es kann auf der Download-Seite der offiziellen Website https://x64dbg.com/ heruntergeladen werden.
- Haftungsausschluss: Versuchen Sie nicht, Malware zu analysieren, ohne vorher eine sichere, virtualisierte Umgebung einzurichten. x64dbg sollte nicht auf Ihrem Host-Computer installiert werden, um Malware zu analysieren.
Laden Sie die neueste Version von x64dbg herunter, die Sie als ZIP-Datei im Bereich „Downloads“ der x64dbg-Website finden. Der Inhalt kann in einen Ordner der Wahl extrahiert und die eigenständigen Binärdateien können ausgeführt werden, um die Software zu starten. Es sind keine Installationsschritte zu befolgen. Wie bereits erwähnt gibt es zwei Versionen: eine für 64-Bit-Binärdateien und eine zweite für 32-Bit-Binärdateien. Ebenso gibt es eine dritte Option: x96 (64 + 32) ermöglicht es dem Benutzer, eine Malware-Datei auf dieses Symbol zu ziehen. Die richtige Version des Debuggers wird anschließend geladen, indem die Architektur überprüft wird.
Was machen die einzelnen Fenster?
Wenn eine Malware-Datei ujn mm*/************************/in x64dbg geöffnet wird, sieht das zunächst ziemlich überwältigend und verwirrend aus. Es gibt sechs Hauptbereiche des Tools: fünf Fenster und die Hauptsymbolleiste, die unten zu sehen ist.
X64dbg – Hauptsymbolleiste
Der obere, äußerste Teil des Fensters zeigt den Namen der analysierten Datei an: „267.exe“. Auch zu sehen sind die vom Betriebssystem zugewiesene Prozess-ID und das Modul, das gerade analysiert wird (warum das Modul wichtig ist, besprechen wir in einem kommenden Artikel). Die Symbole in der Symbolleiste sind der Schlüssel zum Assembler-Code der Malware. Die wichtigsten Symbole, die auch Anfänger kennen sollten, können Sie im folgenden Bild sehen. Die folgenden Symbole sind recht einfach:
- Das Ordnersymbol wird verwendet, um eine Datei zur Analyse zu öffnen.
- Der kreisförmige Pfeil dient dazu, zum Programmstart zurückzukehren.
- Das Stopp-Symbol stoppt das Programm, wenn es in x64dbg ausgeführt wird.
- Das Pfeilsymbol führt das Programm aus.
- Das Pausensymbol pausiert das Programm.
Die letzten beiden Symbole werden von Malware-Analysten am häufigsten verwendet. Das erste Symbol ist ein Pfeil nach unten mit einem kleinen Kreis darunter. Dies ist die Schaltfläche „Step Into“ (Hineinspringen), das nächste Symbol ist die Schaltfläche „Step Over“ (Überspringen). Malware besteht aus zahlreichen Funktionen, die vom Malware-Autor geschrieben oder importiert wurden. Um eine bestimmte Funktion zu analysieren, muss der Analyst in die Funktion „hineinspringen“ (Step Into), um den entsprechenden Assembler-Code zu sehen. Alternativ kann man eine Funktion „überspringen“ (Step Over), die nicht von Interesse ist. Machen Sie sich keine Sorgen, wenn das noch nicht viel Sinn ergibt. Dieses Thema behandeln wir in einem kommenden Artikel ausführlicher. Die Reihe der Registerkarten am unteren Rand des Bildes enthält verschiedene Ansichten und Daten, die zur Erleichterung der Analyse verwendet werden können. Einige wichtige Registerkarten sind:
- CPU: Zeigt den Assembler-Code von oben nach unten an
- Diagramm: Zeigt ein Diagramm an, damit der Benutzer visuell sehen kann, welche Funktion von einer anderen aufgerufen wird. Andere Tools wie IDAPro und Ghidra bieten eine ähnliche Funktion.
- Haltepunkte: Es ist möglich, nach Anweisungen oder Strings zu suchen, die von Interesse sein könnten, und Haltepunkte gegen diese Anweisungen zu setzen. X64dbg erlaubt es dem Benutzer dann, das Programm bis zum Erreichen dieses Haltepunktes laufen zu lassen, um es anschließend zu analysieren. Das folgende Bild zeigt einige Haltepunkte, die bei den Windows-Funktionen „CreateDirectoryW“ und „WriteFile“ gesetzt wurden
- Speicherabbildung: Hier wird angezeigt, welche Daten im Speicher gespeichert sind und an welchen Adressen sich diese Daten befinden. Im folgenden Beispiel befindet sich der „.text“-Abschnitt der zu analysierenden Malware an der Adresse „00F21000“. Die Spalte „Protection“ (Schutz) zeigt auch an, ob dieser Bereich im Speicher ausführbar, lesbar oder beschreibbar ist. Diese sind an den Flags E, R und W zu erkennen. Das wird sich als nützlich erweisen, wenn ich erkläre, wie man die Speicherabbildung zum Entpacken von Malware verwendet.
- Aufrufliste: Diese Liste ist praktisch, wenn ein Haltepunkt für eine bestimmte Windows-Funktion festgelegt wurde. In einem Bild zuvor hatte ich einen Haltepunkt auf „CreateDirectoryW“ gesetzt. So wird dieser Haltepunkt jedes Mal ausgelöst, wenn die Malware beginnt, ein Verzeichnis auf einem kompromittierten Gerät zu erstellen. X64dbg hält dann bei dieser Funktion an. Anhand der Aufrufliste kann ich sehen, welcher vom Malware-Autor geschriebene Code „CreateDirectoryW“ aufruft und ermitteln, wo dieses Verzeichnis erstellt wird und welchen Namen es hat.
X64dbg-Hauptfenster
Das Hauptfenster in x64dbg enthält den Inhalt der ausgewählten Registerkarte. Standardmäßig ist das die Registerkarte „CPU“, die die Assembler-Anweisungen enthält. Die erste Spalte enthält die EIP. Das ist der Anweisungszeiger. Dieser verweist einfach auf das nächste Code-Segment, das ausgeführt werden soll. Die zweite Spalte enthält die Adressen innerhalb der Binärdatei, an denen sich die Befehle befinden. Im obigen Beispiel zeigt etwa die EIP auf die Adresse „0138CD97“. Die dritte Spalte ist die hexadezimale Darstellung der Anweisung in Spalte 4. Dort befinden sich die Assembler-Anweisungen. Auch hier zeigt das obige Beispiel, dass die EIP auf die nächste auszuführende Anweisung verweist, „push ebp“. Die fünfte Spalte enthält Daten, die von x64dbg ausgefüllt wurden, oder Notizen, die vom Analysten hinzugefügt wurden. Das obige Beispiel zeigt, dass „0138CD97“ der „EntryPoint“ der Malware ist, d. h. es ist der Beginn des Codes des Malware-Autoren und hier beginnt die Hauptfunktion. Die dritte Spalte, die die Assembler-Anweisungen enthält, ist wahrscheinlich die wichtigste, da diese Daten von Malware-Analysten verwendet werden, um zu verstehen, was genau die Malware tut. Einige gängige Anweisungen:
- PUSH: Fügt einen Wert zum Stapel hinzu
- POP: Entfernt („poppt“) einen Wert vom Stapel
- CALL: Führt eine Funktion aus
- RET: Gibt den Wert einer abgeschlossenen Funktion aus
- JMP: Springt zu einem Adressen-Standort
- CMP: Vergleicht zwei Werte
- MOV: Verschiebt Daten von einem Ort zu einem anderen
- ADD: Addiert einen Wert
- SUB: Subtrahiert einen Wert
X64dbg-Fenster mit Bezug zu Registern
Das nächste Fenster enthält Informationen zu den Registern. Die Register werden von einem Programm zum Speichern von Daten verwendet, die dann für die spätere Verwendung leicht aufgerufen werden können. Einige von ihnen verfügen über bestimmte Verwendungszwecke.
- EAX: Wird für Addition, Multiplikation und Rückgabewerte verwendet
- EBX: Allgemeines Register für verschiedene Vorgänge
- ECX: Wird als Zähler verwendet
- EDX: Allgemeines Register für verschiedene Vorgänge
- EBP: Wird verwendet, um auf Argumente und lokale Variablen zu verweisen
- ESP: Verweist auf das letzte Argument auf dem Stapel
- ESI/EDI: Wird in Speicherübertragungsbefehlen verwendet
Das EIP ist kein Register, sondern der Anweisungszeiger, der auf die aktuelle Anweisung in x64dbg verweist. Dieses Feld enthält die Adresse, an der sich die Anweisung befindet.
X64dbg-Fenster mit Bezug auf den Stapelspeicher
Das dritte Fenster enthält Parameter, die zum Stapel hinzugefügt (gepusht) wurden. Dies wird in einem späteren Artikel über die Funktionsweise des Stapelspeichers im Detail erklärt.
X64dbg-Fenster, das Stapel und Daten enthält
Das vierte Fenster enthält den Stapel und die Daten, die auf den Stapel gepusht wurden, sowie die Adressen im Speicher, auf die sie abgebildet sind. Auch dies wird in einem späteren Artikel noch einmal ausführlich behandelt.
X64dbg-Fenster mit Sicherungsdaten
Das sechste und letzte Fenster enthält Sicherungsdaten. Mit den Sicherungsfenstern kann der Benutzer sehen, welche Daten in einem Register gespeichert werden oder welche Daten an einer bestimmten Adresse gespeichert sind. Auf den ersten Blick sind das vielleicht sehr viele Information. Dennoch bietet dieser Artikel Ihnen hoffentlich ein solides Verständnis davon, was x64dbg ist und wie Sie das Tool bedienen können. In den nächsten Artikeln werde ich die Methodik erläutern, die ich für das Reverse Engineering von Malware verwende. Außerdem werde ich den Stapelspeicher und seine Verwendung durch x64dbg erklären und schließlich an echter Malware ein paar Reverse-Engineering-Methoden demonstrieren. Für Informationen zu Best Practices beim Schutz vor Malware bietet Varonis kostenlose Testversionen und Tutorials für DatAlert an. Dabei handelt es sich um ein Produkt zur verhaltensbasierten Bedrohungserkennung , das Bedrohungen in Ihrer Umgebung mithilfe von maschinellem Lernen identifiziert.
Wie soll ich vorgehen?
Im Folgenden finden Sie drei Möglichkeiten, wie Sie das Datenrisiko in Ihrem Unternehmen verringern können:
Vereinbaren Sie eine Demo mit uns, um Varonis in Aktion zu erleben. Wir passen die Session an die Datensicherheitsanforderungen Ihres Unternehmens an und beantworten alle Fragen.
Sehen Sie sich ein Beispiel unserer Datenrisikobewertung an und erfahren Sie, welche Risiken in Ihrer Umgebung lauern könnten. Varonis DRA ist völlig kostenlos und bietet einen klaren Weg zur automatischen Sanierung.
Folgen Sie uns auf LinkedIn, YouTubeund X (Twitter), um kurze Einblicke in alle Themen der Datensicherheit zu erhalten, einschließlich Data Security Posture Management (DSPM), Bedrohungserkennung, KI-Sicherheit und mehr.