
Algoritmo de descriptografia de arquivos Hive v5
O trabalho realizado nos últimos meses foi necessário para revelar o mecanismo de criptografia maliciosa de arquivos do Hive v5-5.2. O trabalho foi dividido em duas partes
Gostaria de agradecer ao grande @rivitna pelo apoio, diálogo e conselhos destes meses de trabalho! Por favor, anote o github do rivitna, cheio de informações úteis sobre o ransomware Hive e muito mais.
Neste readme você encontrará algumas informações sobre o algoritmo de decriptação de arquivos, encaminhando você ao PoC para uma visão mais completa de como ele funciona. Um keystream é um cleartext criptografado. Um cleartext é um conjunto de 0xA00000 bytes aos quais os primeiros 0x2FFF00 bytes foram anexados, totalizando 0xCFFF00 bytes. Esses bytes foram criados com o algoritmo fraco já discutido na primeira parte lançada em julho de 2022. Abaixo está um exemplo de cleartext:

A amostra do Hive analisada e referenciada neste documento foi escolhida a partir desta lista criada por @rivitna, a quem vão meus mais sinceros agradecimentos. Para ter uma ideia da complexidade do ransomware, dê uma olhada nesta análise publicada pelo Microsoft Threat Intelligence Center (MSTIC).
O cleartext (um keystream decriptado) é usado pelo ransomware Hive ao criptografar cada arquivo. Ao criptografar um arquivo, o ransomware Hive calcula dois inteiros referentes a posições precisas no cleartext (offsets) a serem usados para criptografar o arquivo de acordo com a seguinte fórmula:

onde c = i % 0x2FFF00 e d = i % 0x2FFD00, com i como contador de bytes.
As operações preliminares antes de escrever um arquivo são:

Também neste caso o cleartext desempenha um papel fundamental. Na verdade, ele é usado para:

Ou neste caso 0x7539D:

Mas na próxima evidência o loop for é ligeiramente diferente e foi escrito de forma a não explicitar o valor mágico que precisamos identificar. Isso diz respeito a um artefato pertencente ao Hive 5.2:

Neste caso, é possível usar a função de bruteforce de offset presente na ferramenta disponibilizada, usando um arquivo com extensão conhecida e o respectivo keystream decriptado. Usando o cabeçalho do arquivo criptografado e o cabeçalho do arquivo não criptografado, é possível entender qual é o offset a partir do qual o decryptor deve começar a decriptar o arquivo.
O modo de criptografia do arquivo pode ter dois valores: 0xFB ou 0xFF
O programa oferece duas opções:

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