La gran diferencia con Bad Rabbit
Bad Rabbit ha atraído todas las miradas dentro del panorama del ransomware. Mientras la comunidad de la ciberseguridad se ha concentrado principalmente en las semejanzas entre Bad Rabbit y EternalPetya, existe una notable diferencia que ha pasado desapercibida: el cifrado de disco de Bad Rabbit funciona.
EternalPetya reutilizó el cifrado de disco desarrollado por el Petya original, aunque sin ejecutar el mecanismo de servicio clave ECDH. En su lugar instaló el gestor de arranque de Petya, algo inútil para la máquina.
El cifrado de disco de Petya tenía una debilidad muy específica: solo cifraba pare de la estructura del sistema de archivo clave, no todo el disco. Por descontado, este diseño provocó especulaciones sobre la posibilidad de recuperar el disco usando un ataque de texto ya conocido, de hecho, los investigadores han hecho progresos significativos en su búsqueda de una técnica de recuperación.
Al menos en apariencia, las cosas parecen bastante distintas con Bad Rabbit. En lugar de usar un mecanismo de cifrado tradicional, utiliza las herramientas legales conocidas de moda en la actualidad en el mundo del ransomware.
Bad Rabbit utiliza DiskCryptor, un software de cifrado completo del disco para bloquear el disco del usuario. El ransomware trabaja con un driver DiskCryptor sin modificar, que toma prestado de ReactOS, y lo implementa con partes relevantes del código en modo usuario para comunicarse con el driver. El driver ReactOS es un driver válido y autorizado, así que es descargado por Windows limpiamente con los privilegios elevados requeridos por el instalador falso de Flash de Bad Rabbit.
Creación de claves
Bad Rabbit utiliza la API criptográfica de Windows para generar información clave aleatoria para la encriptación del disco. Esta información clave es convertida en una clave de cifrado legible para los humanos, lo que supone una cadena de codificación ASCII de 32 bytes de longitud, lo que muestra unos 165 bits de entropía para el cifrado de flujo utilizado por DiskCryptor.
Las siguientes capturas de pantalla representan la clave de cifrado de disco aleatoria como si estuviera siendo generada por el malware:
Ejecutando dispci.exe con un depurador de espacio de usuario
Junto con la clave aleatoria, Bad Rabbit encierra otros datos como el nombre y dominio del ordenador de la víctima, entonces crea la llamada clave de instalación que aparecerá tras el reinicio. En Petya, este código era relativamente corto que estaba protegido por la clave pública EC. En Bad Rabbit, es un montón de datos mucho mayor que está protegido por la clave pública RSA, enviada con el instalador de malware.
Tras empaquetar la clave de instalación, la información clave aleatoria es descartada. La clave de instalación se escribe en el disco para que el gestor de arranque Bad Rabbit pueda presentarla en la pantalla de inicio:
Gestor de arranque de Bad Rabbit
Se supone que el usuario va a recibir la clave de instalación del gestor de arranque y pegarlo en la página de TOR del atacante, que entonces usurá su propia clave privada RSA para obtener la contraseña de 32 bytes (tecleada en la captura anterior).
Tras la pantalla de arranque
Ya que el software de cifrado del disco utilizado es muy parecido a cualquier otro empleado en cualquier empresa en todo el mundo, como TrueCrypt o Microsoft BitLocker, el disco está ‘todavía’ cifrado, aunque haya sido instalado por el driver de DiskCryptor de manera transparente.
Ya que el software de cifrado del disco utilizado es muy parecido a cualquier otro empleado en cualquier empresa en todo el mundo, como TrueCrypt o Microsoft BitLocker, el disco está ‘todavía’ cifrado, aunque haya sido instalado por el driver de DiskCryptor de manera transparente.
Así que, si el usuario reinicia ahora la máquina, la misma contraseña aparecerá tan pronto como la rutina de cifrado del disco comience. La herramienta DECRYPT mencionada por el gestor de arranque es tan solo un atajo hacia la herramienta dispci.exe instalada por el malware. Esta herramienta toma prestado el código legítimamente de fuentes DiskCryptor para implementar las partes relevantes del código y comunicarse con el driver de cifrado del disco.
Aunque todo esto es bastante aparente con tan solo mira el código, queríamos demostrar el esquema de cifrado capturando la contraseña en línea, al tiempo que era generada por Bad Rabbit. Cuando esta contraseña es usada para desbloquear la máquina, es posible instalar la verdadera herramienta DiskCryptor GUI e iniciar el proceso de cifrado del disco.
Utilizando DiskCryptor para verificar el volúmen cifrado
Ahora funciona
Antes especulamos con que el cifrado de disco erróneo en EternalPetya era debido a problemas en el proceso de desarrollo en el malware. O quizá es que ni siquiera les importaba, la gente pagaría igualmente, ¿no?
Cualquiera que fuera el motivo, ese fallo está ahora resuelto (si son el mismo grupo de desarrolladores de malware, algo que la comunidad investigadora parece afirmar por consenso).
Al menos, los desarrolladores de Bad Rabbit han observado los recientes avances en investigación sobre las debilidades del cifrado del disco de Petya y decidieron usar algo distinto.
A tener en cuenta para la recuperación
Como hemos demostrado en este artículo, Bad Rabbit parece usar un sistema común de cifrado de disco.
Aún no tenemos todos los detalles, así que podría haber bugs en la aplicación. Pero al menos su diseño permite un mecanismo fuerte para bloquear la máquina hasta que la contraseña correcta sea introducida en la pantalla de arranque.
Aviso legal
Para conseguir las capturas usadas en este artículo, NO visitamos la página TOR del atacante y NO pagamos por la clave de recuperación.
Los procedimientos presentados en este texto NO significan que haya un manera fácil de desbloquear el disco protegido por Bad Rabbit. Tan solo los hemos presentado para probar el esquema de cifrado. Capturar la contraseña en línea no es práctico en sentido general porque requiere un software que es consciente del mecanismo generador de contraseñas antes de la infección. Lo usamos aquí como prueba de concepto relativamente sencilla de reproducir.
Categorías