
Algoritmo di decrittazione file Hive v5
Il lavoro svolto negli ultimi mesi è stato necessario per rivelare il meccanismo di cifratura dei file dannoso di Hive v5-5.2. Il lavoro è stato suddiviso in due parti
Vorrei ringraziare il grande @rivitna per il supporto, il dialogo e i consigli di questi mesi di lavoro! Fate riferimento alla github di rivitna piena di informazioni utili sul ransomware Hive e altro ancora.
In questo readme troverete alcune informazioni sull'algoritmo di decrittazione dei file, rimandandovi al PoC per un quadro più completo del suo funzionamento. Un keystream è un cleartext cifrato. Un cleartext è un insieme di 0xA00000 byte a cui sono stati aggiunti i primi 0x2FFF00 byte, per un totale di 0xCFFF00 byte. Questi byte sono stati creati con l'algoritmo debole già discusso nella prima parte rilasciata a luglio 2022. Qui sotto è riportato un esempio di cleartext:

Il campione di Hive analizzato e citato in questo documento è stato scelto da questa lista creata da @rivitna a cui vanno i miei più sentiti ringraziamenti. Per avere un'idea della complessità del ransomware, date un'occhiata a questa analisi pubblicata da Microsoft Threat Intelligence Center (MSTIC).
Il cleartext (un keystream decrittato) viene utilizzato dal ransomware Hive durante la cifratura di ogni file. Quando cifra un file, il ransomware Hive calcola due interi riferiti a posizioni precise nel cleartext (offset) da utilizzare per cifrare il file secondo la seguente formula:

dove c = i % 0x2FFF00 e d = i % 0x2FFD00, con i come contatore di byte.
Le operazioni preliminari prima di scrivere un file sono:

Anche in questo caso il cleartext svolge un ruolo fondamentale. Infatti viene utilizzato per:

Oppure in questo caso 0x7539D:

Ma nell'evidenza successiva il ciclo for è leggermente diverso ed è stato scritto in modo da non esplicitare il valore magico che dobbiamo identificare. Questo riguarda un artefatto appartenente a Hive 5.2:

In questo caso è possibile usare la funzione di brute force degli offset presente nello strumento rilasciato, usando un file con estensione nota e il relativo keystream decrittato. Usando l'header del file cifrato e l'header del file non cifrato è possibile capire qual è l'offset dal quale il decrittatore deve iniziare a decrittare il file.
La modalità di cifratura dei file può avere due valori: 0xFB o 0xFF
Il programma offre due opzioni:

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