
イスラエルの組織を標的とした Bibi-Windows Wiper の技術的分析
10月30日、Security Joesのインシデントレスポンスチームは、Pro-Hamasハクティビストグループがインフラを破壊するために展開した新しいLinuxワイパー 「BiBi-Linux」 を発見しました。そして2023年11月1日、ESET Researchは、2023年のイスラエル・ハマス紛争中に最初に登場したハマス支援ハクティビストグループであるBiBiGunによって展開されたBiBiワイパーのWindows版についてツイートしました。
この投稿では、「BiBi-Windowsワイパー」 として知られるBiBiワイパーのWindows版について見ていきます。
実行時、BiBi-WindowsワイパーはBiBiワイパーに引数が渡されたかどうかを確認します。ここでの引数は破壊するディレクトリです - bibi.exe <directory_to_destroyed>。引数が提供されない場合、ターゲットドライブを取得するために以下のルーチンを実行します。
ハードコードされたパス「C:\Users」を読み取る
GetLogicalDrives() を使用して現在利用可能なディスクドライブを取得します。戻り値はビットマスクであり、A-Z(26)ドライブを反復処理します。次に、取得したビットマスクに対してビットテストを行い、システム上のアクセス可能なドライブを特定し、ドライブ名に「:\」を追加します。
ここでは、i != 2 をチェックしてCドライブを除外します。2はCドライブのビットマスク位置です
次に、Cドライブ以外の利用可能なドライブに対して、ドライブタイプを取得する GetDriveTypeA() を実行します。BiBi-Windowsワイパーはここでは以下のドライブタイプのみをターゲットにします:

したがって、BiBi-Windowsワイパーは以下をターゲットにします
さらに、ターゲットディレクトリをコンソールに出力し、GetNativeSystemInfo() から NumberOfProcessors を取得し、そのプロセッサ数に基づいてスレッド数を計算してコンソールに出力します。

さらに、逆順に格納されたコマンドを読み取る新しいスレッドを作成し、CreateProcessA を使用して新しいプロセスを作成し、それらのコマンドを実行します。以下がコマンドです。

さらに、メインワイパールーチンを実行する別のスレッドを作成します。ワイパールーチンは以下のアクションを実行します。

では、BiBi-Windowsワイパーがマシン上のデータをどのように破壊するのかを理解しましょう。
Mersenne Twister PseudoRandom Number Generator Algorithm を実装しています。
sub_140008BF0() 関数によって生成された乱数は、値「0xFF + 1 = 100」と剰余演算(%)を行い、剰余演算の出力(余り)がターゲットファイルに1バイトずつ上書きされるバイトになります。
以下の例は、"hello" というデータで構成されるファイルに対して、これら5つのランダムバイトがループで上書きされる場合です。
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
ファイルがランダムバイトで上書きされ - 破壊完了!

ファイル内のデータがランダムバイトで上書きされ、ファイルが破壊されると、BiBiワイパーは次の方法でファイル名を変更します:
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"
同じルーチンが0xA(10)回実行され、すべてのインデックス値が連結されてランダムなファイル名(例:1wnRvB6teT)が形成されます。その後、拡張子 「.BiBi」(Bibiはイスラエルの首相ベンヤミン・ネタニヤフのニックネームです) が、最後のラウンド番号 とともに次のように追加されます - <rand_filename>.BiBi

このようにして、BiBi-Windowsワイパーはファイル内のデータをランダムバイトで上書きすることにより、ターゲットディレクトリ内のすべてのファイルを破壊します。ループ、すなわちラウンドが無限に続くため、ワイパーはファイルを再帰的にランダムバイトで無限に複数回上書きし続け、止まることなくマシン上のファイルを完全に破壊します!
ターゲットディレクトリ、CPUコア、スレッド、ラウンド番号、統計、および.BiBi拡張子の破壊されたファイルを示すBiBi-Windowsワイパーの実行

読んでくれてありがとう! - knight0x07