Angreifer verwenden Batch-Dateien, um ihre Arbeit zu automatisieren und zu beschleunigen, indem sie die Ausführung mehrerer Befehle ermöglichen. Auf diese Weise muss der Angreifer keine manuellen Eingaben tätigen, sondern lediglich das bösartige Skript auf dem System des Opfers ausführen.
Damit diese bösartigen Batch-Dateien nicht von klassischen Antiviren-Software erkannt werden, werden Batch-Dateien oftmals noch mittels einem Obfuscator verschleiert. Was in einem solchen Fall passieren kann, verraten wir Ihnen.
Inhaltsverzeichnis
Was ist Batch File Obfuscation?
Batch File Obfuscation ist ein Verfahren, um die Lesbarkeit und Verständlichkeit einer Batch-Datei durch Verschleierung von Informationen zu reduzieren. Die Gründe, weshalb Batch Files verschleiert werden und wie Batch File Obfuscation erkennbar ist, können Sie hier nachlesen: Eine Einführung in die Batch File Obfuscation
Nachfolgend werden wir Ihnen ein praktisches Beispiel aus einem DFIR-Einsatz vorstellen. Der Vorfall steht mit der Ransomware-Gruppe BlackBasta in Verbindung. Das Incident Response Team der Oneconsult zeigt, wie sie vorgegangen sind, als sie auf verdächtige Dateien und eine unbekannte Technik gestossen sind.
Verdächtige Batch-Dateien
Im Rahmen eines Incident Response Einsatzes fand das Team der Oneconsult zwei merkwürdige Batch-Dateien. Diese Dateien weckten das Interesse, weil sie unter C:\Windows\ gespeichert waren und an diesem Ort keine Batch-Dateien erwartet wurden. Zuerst wurde die einfachere Batch-Datei analysiert, die lediglich eine Überwachungskomponente von Defender deinstalliert.
Es wurde interessant, als die zweite .bat-Datei im Editor geöffnet wurde. Wie in der Abbildung 2 ersichtlich, trugen die fremden Zeichen nicht zum Verständnis der Funktionsweise der Batch-Datei bei. Aufgrund der Dateiendung wurde angenommen, dass es sich um eine .bat-Datei handelt. Daraus wurde gefolgert, dass es sich um eine Batch File Obfuscation handeln muss, die man zuvor noch nicht angetroffen hat.
Hypothesen verfolgen
Es wurde vermutet, dass UTF-BOMs zur Verwirrung verwendet werden. BOM steht für Byte Order Mark und ist eine Bytefolge, die an den Anfang einer Datei angehängt wird. Sie dient als Kennung, um die Byte-Reihenfolge sowie die Kodierungsform in UCS/Unicode-Strings zu definieren. Dies ermöglicht es verschiedenen Systemen und Textdateien korrekt darzustellen. In der Vergangenheit wurde häufig UTF-16 verwendet, welches zwei oder vier Bytes für die Kodierung benötigt. Damit UTF-16 korrekt interpretiert werden kann, muss auch angegeben werden, ob die Bytes von links nach rechts oder andersherum gelesen werden. Die erste Art des Lesens wird Big Endian (BE) und die zweite Little Endian (LE) genannt. Wenn UTF-16 LE interpretiert werden soll, kann am Anfang einer Datei die Zeichenkette fffe (hexadezimal) angegeben werden. Heutzutage wird hauptsächlich UTF-8 verwendet, das Zeichenketten mit einer Länge von bis zu vier Bytes unterstützt.
Um dem nachzugehen, wurde die Datei in CyberChef hochgeladen. CyberChef ermöglicht es schnell und einfach verschiedene Transformationen auf eine Eingabe anzuwenden. Dies ist besonders bei DFIR-Einsätzen hilfreich, da Hypothesen ohne grossen Aufwand getestet werden können. Wie in der Abbildung 3 ersichtlich, sind direkt gewisse Elemente lesbar.
Suche nach passendem Obfuscator
Um nun die ganze Obfuscation zu verstehen, wurde mittels Google Suche nach dem Begriff «Batch File Obfuscation» gesucht. Eines der ersten Treffer verweist auf ein Github-Repository, welches einen Obfuscator für Batch-Dateien bereitstellt. Das vorhandene Beispiel weist eine grosse Ähnlichkeit mit der gefundenen Batch-Datei auf. Durch Überfliegen des Codes konnten die beiden Tricks hinter dieser Verschleierung verstanden werden.
Wie vermutet, bestand der erste Schritt darin, ein falsches UTF-BOM an den Anfang der bösartigen .bat-Datei zu setzen, in diesem Fall UTF-16 LE. CyberChef interpretiert dieses BOM nicht, daher sind bestimmte Strings erkennbar. Auch cmd.exe interpretiert dieses BOM nicht, so dass der Code genauso ausgeführt wird wie in der ursprünglichen Batch-Datei.
Der zweite Trick ist auf die Syntax von Batch zurückzuführen, wie auf Teilstrings zugegriffen werden kann (siehe asciich.ch). Ein Teilstring extrahiert eine bestimmte Anzahl von Zeichen aus einem String. Dabei wird der Inhalt des definierten Strings %VARIABLENNAMEN ab der Startposition ausgegeben. Mit der Anzahl der Zeichen wird definiert, wie viele Zeichen ausgegeben werden sollen:
%VARIABLENNAME:~STARTPOSITION,ANZAHLZEICHEN%
Ein Beispiel dieses Teilstring-Ansatzes ist in der Abbildung 4 demonstriert. Dabei wird der Variable oc den String «Wünsche Dir einen ganz schönen Start in die neue Woche» zugewiesen. Der Befehl set ist für das Setzen der Variable verantwortlich. Mit echo kann der ganze String angezeigt werden. Nun soll nur der Teil ab dem zwölften Zeichen ausgegeben werden, dies wird mit %oc:~12%
erzielt. Mit %oc:~23,7
wird festgelegt, dass ab dem dreiundzwanzigsten Zeichen die nächsten sieben Zeichen ausgegeben werden sollen.
Deobfuscation
In der bösartigen Batch-Datei wurde ebenfalls eine zufällig benannte Variable ¯ÃÃÃ
definiert und einem String zugewiesen. Dieser String enthält alle Zeichen, die in der Originaldatei benötigt werden. Somit kann jedes Zeichen in der Originaldatei durch den beschriebenen Teilstring-Ansatz ersetzt werden. Wie in Abbildung 5 zu sehen ist, wird %¯ÃÃÃ:~11,1% zu p und %¯ÃÃÃ:~15,1% zu o.
Damit dies nicht für jedes Zeichen gemacht werden muss, kann dieser Vorgang vereinfacht werden. Dazu wurde der Inhalt von CyberChef kopiert und in einer neue .bat-Datei eingefügt. Am Anfang jeder Zeile, ausser der Zeile mit set, wurde echo gesetzt. Das neu erstellte Batch File ist in Abbildung 6 ersichtlich.
Die erstellte Batch-Datei kann nun in einer VM ausgeführt werden. Die Ausführung in der VM verhindert, dass die vom Angreifer beabsichtigten Befehle auf dem eigenen System ausgeführt werden. Generell sollten verdächtige Dateien immer in einer virtuellen Umgebung und niemals auf dem eigenen System ausgeführt werden. Abbildung 7 zeigt den tatsächlichen Inhalt der bösartigen Batch-Datei. Der Angreifer wollte mit dieser Batch-Datei zunächst Windows Defender deaktivieren. Die ersten zwei Befehle sind für diese Deaktivierung zuständig. Am Ende soll Windows Defender deinstalliert werden.
Was bisher nicht angesprochen wurde, ist, dass der verwendete Obfuscator bestimmte Sonderregeln definiert hat. Diese fügen zusätzliche Symbole zwischen bestimmten Teilstrings ein. Ein Beispiel für solche zusätzlichen Symbole ist in Abbildung 8 zu sehen. Dies ist jedoch für das eigentliche Verständnis dessen, was diese Batch-Datei tut, nicht relevant. Wenn dies die Rekonstruktion stört, können diese Zeichen manuell entfernt werden.
Zusammenfassung
Bei dieser Batch File Obfuscation Technik besteht der erste Schritt in der Umwandlung von UTF-8 in UTF-16 LE unter Verwendung von BOM. Dies bedeutet, dass bei der Überprüfung der Datei mit einem Texteditor die eigentliche Funktionalität nicht verstanden werden kann. Wird dieses BOM entfernt oder mit einem Tool geöffnet, der dieses ignoriert, können bereits die ersten Elemente erkannt werden. Um den gesamten Inhalt zu verstehen, muss die von Batch verwendete Syntax verstanden werden. Sobald dies bekannt ist, können die einzelnen Buchstaben rekonstruiert werden. Angreifer verwenden unterschiedliche Obfuscation-Techniken oder entwickeln diese weiter. Dies führt dazu, dass unbekannte Techniken angetroffen werden. Daher ist es immer ratsam sich einen ersten Überblick mithilfe einer Google Suche zu verschaffen.
Haben Sie noch Fragen zur Batch File Obfuscation Technik oder benötigen dabei Unterstützung? Unser Digital Forensics und Incident Response Team hilft gerne weiter. Wir freuen uns über Ihre Kontaktaufnahme.