
Análisis técnico del wiper Bibi-Windows dirigido a organizaciones israelíes
El 30 de octubre, el equipo de Respuesta a Incidentes de Security Joes descubrió un nuevo Wiper para Linux llamado "BiBi-Linux", implementado por un grupo hacktivista pro-Hamás para destruir su infraestructura. Y luego, el 1 de noviembre de 2023, la investigación de ESET tuiteó sobre una versión para Windows del Wiper Bibi implementada por BiBiGun, un grupo hacktivista respaldado por Hamás que debutó inicialmente durante el conflicto entre Israel y Hamás de 2023.
En esta publicación, veremos la versión para Windows del BiBi Wiper conocida como "BiBi-Windows Wiper".
Tras su ejecución, el BiBi-Windows Wiper comprueba si se han pasado argumentos al BiBi Wiper. Los argumentos aquí son el directorio a destruir: bibi.exe <directorio_a_destruir>. Si no se proporciona ningún argumento, realiza la siguiente rutina para obtener las unidades de destino:
Lee la ruta hardcodeada: "C:\Users"
Obtiene las unidades de disco actualmente disponibles mediante GetLogicalDrives(), donde el valor de retorno es el bitmask; luego itera a través de las 26 unidades (A-Z). A continuación, realiza un bittest con el bitmask recuperado para determinar las unidades accesibles en el sistema y añade ":\" al nombre de la unidad.
Aquí excluye la unidad C comprobando i != 2, donde 2 es la posición del bitmask para la unidad C.
Luego, para las unidades disponibles excepto la unidad C, ejecuta GetDriveTypeA(), que recupera el tipo de unidad. El BiBi-Windows Wiper aquí solo apunta a los siguientes tipos de unidad:

Por lo tanto, el BiBi-Windows Wiper apunta a:
Además, imprime los directorios objetivo en la consola y recupera NumberOfProcessors de GetNativeSystemInfo(). Según el numberofprocessors, calcula los hilos (threads) y luego los imprime en la consola.

Además, crea un nuevo hilo que lee los comandos almacenados en orden inverso y luego crea un nuevo proceso usando CreateProcessA para ejecutar esos comandos. Los siguientes son los comandos:

Además, crea otro hilo que ejecuta las rutinas principales del Wiper. Las rutinas del Wiper realizan las siguientes acciones:

Ahora entendamos cómo el BiBi-Windows Wiper destruye los datos en la máquina.
Algoritmo Mersenne Twister de Generador de Números Pseudoaleatorios que genera números aleatorios como se muestra a continuación.
sub_140008BF0() luego realiza un módulo (%) con el valor "0xFF + 1 = 100" y la salida (resto) de la operación de módulo es el byte con el que se sobrescribe el archivo objetivo byte a byte.
Ejemplo a continuación contra un archivo que consiste en los datos "hello" y que es sobrescrito por estos 5 bytes aleatorios en un bucle.
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
Archivo sobrescrito con bytes aleatorios - ¡Destruido!

Ahora, una vez que los datos del archivo han sido sobrescritos con bytes aleatorios y el archivo ha sido destruido, el BiBi Wiper cambia el nombre del archivo de la siguiente manera:
rand_no = twisterfunc()
remainder_output = rand_no % (0x3D + 1)
wide_string = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
filename_byte = wide_string[remainder_output * 2]
Así,
si el número aleatorio = 0xC6D15D79
mod_out = 0xC6D15D79 % 0x3E => 0x31
offset = 0x31 × 0x2 = 0x62
entonces el valor indexado 62 en la cadena ancha se convierte en uno de los caracteres para el nombre del archivo. En este caso, el valor es "n"
La misma rutina se ejecuta 0xA (10) veces y todos los valores indexados se concatenan formando el nombre de archivo aleatorio, p. ej. 1wnRvB6teT, y luego se añade la extensión ".BiBi" (BiBi es un apodo utilizado para el Primer Ministro de Israel, Benjamin Netanyahu) junto con el número de ronda al final de la siguiente manera: <rand_filename>.BiBi

Por lo tanto, de la siguiente manera, el BiBi-Windows Wiper destruiría todos los archivos en los directorios objetivo sobrescribiendo los datos de los archivos con bytes aleatorios. Ahora, como el bucle, es decir, las rondas, son hasta el infinito, el Wiper seguirá sobrescribiendo los archivos múltiples veces de forma recursiva con bytes aleatorios hasta el infinito y no se detendrá, ¡destruyendo así los archivos en la máquina por completo!
Ejecución del BiBi-Windows Wiper mostrando el directorio objetivo, núcleos de CPU, hilos, número de ronda, estadísticas y archivo destruido con extensión .BiBi

¡Gracias por leer! - knight0x07