
Análise Técnica do Wiper Bibi-Windows Direcionado a Organizações Israelenses
Em 30 de outubro, a equipe de Resposta a Incidentes da Security Joes descobriu um novo Wiper Linux chamado "BiBi-Linux", que estava sendo implantado por um grupo hacktivista pró-Hamas para destruir sua infraestrutura. E então, em 1º de novembro de 2023, a ESET Research tuitou sobre uma versão para Windows do BiBi Wiper implantada pelo BiBiGun, um grupo hacktivista apoiado pelo Hamas que estreou inicialmente durante o conflito Israel-Hamas de 2023.
Neste post, veremos a versão para Windows do BiBi Wiper, conhecida como "BiBi-Windows Wiper".
Após a execução, o BiBi-Windows Wiper verifica se algum argumento foi passado para o BiBi Wiper. O argumento aqui é o diretório a ser destruído - bibi.exe <directory_to_destroyed>. Se nenhum argumento for fornecido, ele executa a seguinte rotina para obter as unidades de destino:
Lê o caminho hardcoded: "C:\Users"
Obtém as unidades de disco atualmente disponíveis usando GetLogicalDrives(), onde o valor de retorno é o bitmask. Em seguida, itera pelas 26 unidades (A-Z). Depois, realiza um teste de bit com o bitmask recuperado para determinar as unidades acessíveis no sistema e anexa ":\" ao nome da unidade.
Aqui, ele exclui a unidade C verificando i != 2, onde 2 é a posição do bitmask para a unidade C.
Então, para as unidades disponíveis, exceto a unidade C, ele executa GetDriveTypeA(), que recupera o tipo de unidade. O BiBi-Windows Wiper aqui tem como alvo apenas os seguintes tipos de unidade:

Portanto, o BiBi-Windows Wiper tem como alvo:
Além disso, ele imprime os diretórios de destino no console e recupera o NumberOfProcessors de GetNativeSystemInfo(); com base no número de processadores, calcula as threads e as imprime no console.

Em seguida, cria uma nova thread que lê os comandos armazenados de trás para frente e cria um novo processo usando CreateProcessA para executar esses comandos. Os comandos são:

Além disso, ele cria outra thread que executa as rotinas principais do Wiper. As rotinas do Wiper realizam as seguintes ações:

Agora vamos entender como o BiBi-Windows Wiper destrói os dados na máquina.
Mersenne Twister PseudoRandom Number Generator Algorithm, que gera números aleatórios como mostrado abaixo.
sub_140008BF0() então realiza o módulo (%) com o valor "0xFF + 1 = 100" e a saída (resto) da operação de módulo é o byte que é sobrescrito no arquivo de destino, byte a byte.
Exemplo abaixo contra um arquivo contendo os dados "hello" e que está sendo sobrescrito por esses 5 bytes aleatórios em um loop.
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
Arquivo sobrescrito com bytes aleatórios - Destruído!

Agora, uma vez que os dados no arquivo são sobrescritos com bytes aleatórios e o arquivo é destruído, o BiBi Wiper altera o nome do arquivo da seguinte maneira:
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"
A mesma rotina é executada 0xA (10) vezes e todos os valores indexados são concatenados, formando o nome de arquivo aleatório, ex. 1wnRvB6teT; em seguida, a extensão ".BiBi" (BiBi é um apelido usado para o Primeiro-Ministro de Israel, Benjamin Netanyahu) é adicionada juntamente com o número da rodada no final, da seguinte maneira - <rand_filename>.BiBi

Portanto, dessa forma, o BiBi-Windows Wiper destruirá todos os arquivos nos diretórios de destino, sobrescrevendo os dados dos arquivos com bytes aleatórios. Como o loop, ou seja, as rodadas, vai até o infinito, o Wiper continuará sobrescrevendo recursivamente os arquivos várias vezes com bytes aleatórios até o infinito e não vai parar, destruindo completamente os arquivos na máquina!
Execução do BiBi-Windows Wiper mostrando o diretório alvo, núcleos da CPU, threads, número da rodada, estatísticas e arquivo destruído com a extensão .BiBi

Obrigado por ler! - knight0x07