30 de octubre, Equipo de respuesta a incidentes de Security Joes Descubrir Un nuevo limpiador de Linux llamado «BiBi-Linux» Los grupos de piratas informáticos que apoyaban a Hamás desplegaron Wiper para alterar su infraestructura.
Luego, el 1 de noviembre de 2023, ESET Research Pío Acerca de la versión para Windows de Bibi Wiper implementada por BiBiGun, un grupo de hackers respaldado por Hamás que debutó originalmente en 2023 durante el conflicto entre Israel y Hamás.
En este artículo, veremos la versión para Windows de BiBi Wiper, llamada «Limpiadores BiBi-Windows»
Cuando se ejecuta, BiBi-Windows Wiper comprueba si se ha pasado algún parámetro a BiBi Wiper. El parámetro aquí es el directorio que se destruirá: bibi.exe
.
Si no se proporcionan parámetros, ejecutará la siguiente rutina para obtener el disco de destino
- Leer la ruta codificada: «C:\Users»
- Úselo para obtener unidades disponibles actualmente
GetLogicalDrives()
Cuando el valor de retorno es una máscara de bits, se itera sobre las unidades AZ (26). A continuación, utiliza la máscara de bits recuperada para realizar una prueba de bits para determinar a qué unidades se puede acceder en el sistema, agregando «:\» al nombre de la unidad. - Aquí, excluya la unidad C marcando
i != 2
donde 2 es la posición de la máscara de bits de la unidad C - Luego, para las unidades disponibles distintas a la unidad C, no
GetDriveTypeA()
Recuperará el tipo de unidad; aquí BiBi-Windows Wiper solo apunta a los siguientes tipos de unidades:- Unidad fija
- unidad_extraíble
- DRIVE_RAMDISK
Por lo tanto, el objetivo de BiBi-Windows Wiper
- Directorio codificado: “C:\Usuarios”
- y todas las unidades disponibles excepto la unidad «C:»
Además, imprime el directorio de destino en la consola y recupera el NumberOfProcessors de él. GetNativeSystemInfo()
Y cuente los subprocesos según la cantidad de procesadores e imprímalo en la consola.
Además, crea un nuevo hilo que lee el comando almacenado inverso y luego crea un nuevo proceso usando CreateProcessA
Ejecute estos comandos.El siguiente es el comando
- cmd.exe /c bcdedit /set {default} recoveryenabled no – Deshabilitar el entorno de recuperación de Windows
- cmd.exe /c bcdedit /set {default} bootstatuspolicyignoreallfailures: obliga al sistema a iniciarse normalmente en lugar de ingresar al entorno de recuperación de Windows
- cmd.exe /c wmic Eliminación de instantáneas: use WMIC para eliminar instantáneas
- cmd.exe /c vssadmin deleteshadows /quiet /all: use VssAdmin para eliminar una copia del álbum
Además, crea otro hilo que ejecuta la rutina de limpieza principal.La rutina de limpieza hace lo siguiente
- Los parámetros de la función de limpieza son:
- Arg1: ruta al directorio que se destruirá (puede ser proporcionada por el operador o recuperada según las instrucciones anteriores)
- Arg2 – Número de hilos
- Luego comienza un bucle infinito donde el contador es la ronda»[+] Redondeando los valores %d\n», de modo que una vez que se ejecute Wiper, ¡destruirá los datos indefinidamente!
- Además, dependiendo de la cantidad de subprocesos, crea múltiples subprocesos en el bucle para realizar la función principal de Wiper.
- BiBi-Windows Eraser excluye archivos con extensiones «.exe», «.dll» y «.sys»
Ahora comprendamos cómo BiBi-Windows Wiper destruye los datos de la máquina.
- Wiper primero recorre recursivamente el directorio que se va a cifrar y luego recupera el tamaño del archivo del archivo de destino.
- Luego ejecute la función de limpieza cíclicamente en el archivo de destino de acuerdo con el tamaño del archivo, donde el segundo parámetro de la función de limpieza es «0xFF»
- Función de limpiaparabrisas implementada
Mersenne Twister PseudoRandom Number Generator Algorithm
Genera números aleatorios como se muestra a continuación.
- Números aleatorios generados por una función.
sub_140008BF0()
Entonces, el valor «0xFF + 1 = 100» es módulo (%), y la salida de la operación de módulo (resto) es la cobertura byte por byte en el archivo de destino.
El siguiente ejemplo toma un archivo que contiene los datos «hola» y se sobrescribe con 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
El archivo fue sobrescrito con bytes aleatorios – ¡destruido!
Ahora, una vez que los datos del archivo se sobrescriben con bytes aleatorios y el archivo está dañado, BiBi Wiper cambiará el nombre del archivo de las siguientes maneras:
- Vuelve a llamar a la función Mersenne Twister anterior, esta vez con el parámetro codificado «0x3D». Por lo tanto, una vez que se genera un número aleatorio, se calcula en módulo con «0x3E» y el valor de salida (resto) se almacena de manera similar.
- Además, el valor restante de salida se multiplica por 2 y luego se indexa con la cadena ancha de la siguiente manera
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"
La misma rutina se ejecuta 0xA (10) veces y todos los valores de índice se agregan para formar un nombre de archivo aleatorio, por ejemplo. 1wnRvB6teT entonces la extensión «.BiBi» (Bibi es el apodo del Primer Ministro israelí Netanyahu) agregar entero al final Proceder de la siguiente –
Por lo tanto, BiBi-Windows Wiper destruirá todos los archivos en el directorio de destino sobrescribiendo los datos de los archivos con bytes aleatorios, ahora como un bucle.
es decir, el número de rondas aumenta hasta el infinito y el limpiador continuará sobrescribiendo recursivamente el archivo con bytes aleatorios varias veces hasta el infinito y no se detendrá, ¡destruyendo completamente el archivo en la máquina!
La ejecución de BiBi-Windows Wiper muestra el directorio de destino, los núcleos de CPU, los subprocesos, el recuento de rondas, las estadísticas y los archivos destruidos con la extensión .BiBi