
Hive v5 алгоритм расшифровки файлов
Работа, проделанная за последние несколько месяцев, была необходима для раскрытия механизма вредоносного шифрования файлов Hive v5-5.2. Работа была разделена на две части:
Хочу поблагодарить замечательного @rivitna за поддержку, диалог и советы в течение этих месяцев работы! Обратите внимание на github ривитны, полный полезной информации о программе-вымогателе Hive и не только.
В этом readme вы найдёте некоторую информацию об алгоритме дешифрования файлов, а для более полного понимания его работы обращайтесь к PoC. Ключевой поток — это зашифрованный открытый текст. Открытый текст — это набор из 0xA00000 байт, к которому были добавлены первые 0x2FFF00 байт, всего 0xCFFF00 байт. Эти байты были созданы с помощью слабого алгоритма, уже рассмотренного в первой части, опубликованной в июле 2022 года. Ниже приведён пример открытого текста:

Образец Hive, проанализированный и упомянутый в этом документе, был выбран из этого списка, созданного @rivitna, которому я выражаю свою самую тёплую благодарность. Чтобы получить представление о сложности программы-вымогателя, пожалуйста, ознакомьтесь с этим анализом, опубликованным Центром анализа угроз Microsoft (MSTIC).
Открытый текст (расшифрованный ключевой поток) используется программой-вымогателем Hive при шифровании каждого файла. При шифровании файла программа-вымогатель Hive вычисляет два целых числа, относящихся к точным позициям в открытом тексте (смещениям), которые используются для шифрования файла по следующей формуле:

где c = i % 0x2FFF00 и d = i % 0x2FFD00, где i — счётчик байтов.
Предварительные операции перед записью файла:

И в этом случае открытый текст играет фундаментальную роль. Фактически он используется для:

Или в этом случае 0x7539D:

Но в следующем доказательстве цикл for немного отличается и написан таким образом, чтобы не раскрывать магическое значение, которое нам нужно идентифицировать. Это касается артефакта, принадлежащего Hive 5.2:

В этом случае можно использовать функцию брутфорса смещения, присутствующую в опубликованном инструменте, используя файл с известным расширением и соответствующий расшифрованный ключевой поток. Используя заголовок зашифрованного файла и заголовок незашифрованного файла, можно понять, с какого смещения дешифратор должен начать дешифрование файла.
Режим шифрования файла может принимать два значения: 0xFB или 0xFF
Программа предлагает два варианта:

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