
Technische Analyse des Bibi-Windows-Wipers, der israelische Organisationen ins Visier nimmt
Am 30. Oktober entdeckte das Incident-Response-Team von Security Joes einen neuen Linux-Wiper namens „BiBi-Linux“, der von einer pro-Hamas-Hacktivistengruppe eingesetzt wurde, um deren Infrastruktur zu zerstören. Und am 1. November 2023 twitterte ESET Research über eine Windows-Version des BiBi-Wipers, die von BiBiGun, einer von der Hamas unterstützten Hacktivistengruppe, eingesetzt wurde, die erstmals während des Israel-Hamas-Konflikts 2023 in Erscheinung trat.
In diesem Beitrag werden wir uns die Windows-Version des BiBi-Wipers ansehen, die als „BiBi-Windows Wiper“ bekannt ist.
Bei der Ausführung prüft der BiBi-Windows-Wiper, ob dem BiBi-Wiper Argumente übergeben wurden. Das Argument ist hier das zu zerstörende Verzeichnis – bibi.exe <directory_to_destroyed>. Wenn kein Argument angegeben wird, führt er die folgende Routine zum Abrufen der Ziel-Laufwerke aus:
Liest den fest codierten Pfad: „C:\Users“
Ermittelt die aktuell verfügbaren Festplattenlaufwerke mithilfe von GetLogicalDrives(), wobei der Rückgabewert die Bitmaske ist. Anschließend iteriert es durch die A-Z (26) Laufwerke. Als Nächstes führt es einen Bittest mit der abgerufenen Bitmaske durch, um die zugänglichen Laufwerke auf dem System zu bestimmen, und hängt „:\“ an den Laufwerksnamen an.
Hier schließt es das C-Laufwerk aus, indem es auf i != 2 prüft, wobei 2 die Bitmasken-Position für das C-Laufwerk ist.
Dann führt es für die verfügbaren Laufwerke mit Ausnahme des C-Laufwerks GetDriveTypeA() aus, das den Laufwerkstyp abruft. Der BiBi-Windows-Wiper zielt hierbei nur auf die folgenden Laufwerkstypen ab:

Daher zielt der BiBi-Windows-Wiper auf:
Außerdem gibt es die Zielverzeichnisse auf der Konsole aus, ruft die NumberOfProcessors von GetNativeSystemInfo() ab und berechnet anhand der Anzahl der Prozessoren die Threads, die dann auf der Konsole ausgegeben werden.

Des Weiteren erstellt es einen neuen Thread, der die gespeicherten Befehle in umgekehrter Reihenfolge liest, und erstellt dann mithilfe von CreateProcessA einen neuen Prozess, um diese Befehle auszuführen. Die folgenden Befehle werden verwendet:

Außerdem erstellt es einen weiteren Thread, der die Haupt-Wiper-Routinen ausführt. Die Wiper-Routinen führen die folgenden Aktionen aus:

Nun wollen wir verstehen, wie der BiBi-Windows-Wiper die Daten auf dem Rechner zerstört.
Mersenne Twister PseudoRandom Number Generator Algorithm, der Zufallszahlen erzeugt, wie unten gezeigt.
sub_140008BF0() erzeugte Zufallszahl führt dann eine Modulo-Operation (%) mit dem Wert „0xFF + 1 = 100“ durch, und die Ausgabe (der Rest) der Modulo-Operation ist das Byte, mit dem die Zieldatei Byte für Byte überschrieben wird.
Das folgende Beispiel zeigt eine Datei, die aus den Daten „hello“ besteht und in einer Schleife mit diesen 5 Zufallsbytes überschrieben wird.
ogfile_val -> rand_num % (hardcoded_val + 1) -> overwrite_val
h - 0xDD9B40A5 % 0x100 -> 0xA5
e - 0x37905317 % 0x100 -> 0x17
l - 0x54B7A20C % 0x100 -> 0x0C
l - 0xDBD10533 % 0x100 -> 0x33
o - 0x18ED3C42 % 0x100 -> 0x42
Datei mit Zufallsbytes überschrieben – Zerstört!

Sobald die Daten in der Datei mit Zufallsbytes überschrieben und die Datei zerstört wurde, ändert der BiBi-Wiper den Namen der Datei auf folgende Weise:
rand_no = twisterfunc()
remainder_output = rand_no % (0x3D + 1)
wide_string = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
filename_byte = wide_string[remainder_output * 2]
Thus,
if random num = 0xC6D15D79
mod_out = 0xC6D15D79 % 0x3E => 0x31
offset = 0x31 × 0x2 = 0x62
so the 62nd indexed value in the wide string becomes one of the character for the filename. In this case the value is "n"
Dieselbe Routine wird 0xA (10) Mal ausgeführt, und alle indizierten Werte werden aneinandergereiht, um den zufälligen Dateinamen zu bilden, z. B. 1wnRvB6teT. Anschließend wird die Erweiterung ".BiBi" (Bibi ist ein Spitzname für Israels Premierminister Benjamin Netanjahu) zusammen mit der Rundennummer am Ende auf folgende Weise hinzugefügt: <rand_filename>.BiBi

Auf diese Weise würde der BiBi-Windows-Wiper also alle Dateien in den Zielverzeichnissen zerstören, indem er die Daten in den Dateien mit Zufallsbytes überschreibt. Da die Schleife, d. h. die Runden, bis ins Unendliche läuft, wird der Wiper die Dateien immer wieder rekursiv mit Zufallsbytes überschreiben und nicht aufhören, wodurch die Dateien auf dem Rechner vollständig zerstört werden!
Ausführung des BiBi-Windows-Wipers mit Darstellung des Zielverzeichnisses, der CPU-Kerne, der Threads, der Rundennummer, der Statistiken und der zerstörten Datei mit der Erweiterung .BiBi

Danke fürs Lesen! – knight0x07