
Hive v5 file decryption algorithm
El trabajo realizado en los últimos meses ha sido necesario para revelar el mecanismo de cifrado malicioso de archivos de Hive v5-5.2. El trabajo se dividió en dos partes:
¡Me gustaría agradecer al gran @rivitna por el apoyo, el diálogo y los consejos de estos meses de trabajo! Por favor, tenga en cuenta el github de rivitna, lleno de información útil sobre el ransomware Hive y más.
En este readme encontrará información sobre el algoritmo de descifrado de archivos, remitiéndole al PoC para una visión más completa de su funcionamiento. Un flujo de claves es un texto claro cifrado. Un texto claro es un conjunto de 0xA00000 bytes al que se le han añadido los primeros 0x2FFF00 bytes, para un total de 0xCFFF00 bytes. Estos bytes se crearon con el algoritmo débil ya discutido en la primera parte publicada en julio de 2022. A continuación se muestra un ejemplo de texto claro:

La muestra de Hive analizada y referenciada en este documento fue elegida de esta lista creada por @rivitna, a quien van mis más cálidos agradecimientos. Para hacerse una idea de la complejidad del ransomware, por favor eche un vistazo a este análisis publicado por el Microsoft Threat Intelligence Center (MSTIC).
El texto claro (un flujo de claves descifrado) es utilizado por el ransomware Hive al cifrar cada archivo. Al cifrar un archivo, el ransomware Hive calcula dos enteros que se refieren a posiciones precisas en el texto claro (offsets) que se utilizan para cifrar el archivo de acuerdo con la siguiente fórmula:

donde c = i % 0x2FFF00 y d = i % 0x2FFD00, siendo i un contador de bytes.
Las operaciones preliminares antes de escribir un archivo son:

También en este caso el texto claro juega un papel fundamental. De hecho, se utiliza para:

O este caso 0x7539D:

Pero en la siguiente evidencia el bucle for es ligeramente diferente y ha sido escrito de tal manera que no se explicite el valor mágico que necesitamos identificar. Esto se refiere a un artefacto perteneciente a Hive 5.2:

En este caso es posible usar la función de fuerza bruta de offset presente en la herramienta publicada, usando un archivo con una extensión conocida y el flujo de claves descifrado correspondiente. Usando la cabecera del archivo cifrado y la cabecera del archivo sin cifrar es posible entender cuál es el offset desde el que el descifrador debe comenzar a descifrar el archivo.
El modo de cifrado de archivos puede tener dos valores: 0xFB o 0xFF
El programa ofrece dos opciones:

https://github.com/rivitna/Malware/blob/main/Hive/Hive_samples.txt