Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
HiveV5_keystream_decryptor — Плохие вещи от плохих парней | Kitploit
Инструменты/GitHubGitHub/reecdeep/hivev5_keystream_decryptor
Инструменты шифрования/дешифрованияОбратная инженерияВосстановление ДанныхАнализ вредоносных программЦифровая криминалистикаКриптографияАнализ Бинарных Файлов
GitHubreecdeep/hivev5_keystream_decryptor

HiveV5_keystream_decryptor

Плохие вещи от плохих парней

Репозиторий
499164 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

HiveV5: PoC-расшифровщик keystream

Введение

Образец Hive, проанализированный и упомянутый в этом документе, был случайным образом выбран из этого списка, созданного @rivitna, которому я выражаю свою искреннюю благодарность. Артефакты доступны на платформе VirusTotal.

В этом документе в качестве эталона взят файл a0h2uih3d2.exe

MD5: 15CF5E0DA094ACDD751A513402A8C941
SHA-1: 72E15AC4473903C814E65E3C06F54EB0399580AA
SHA-256: 335D2E4A743D059955760ECF2EC25EE86D36AA60B096C9180E860C64EF78EE55

Чтобы получить представление о сложности этого вымогателя, пожалуйста, ознакомьтесь с этим анализом, опубликованным центром Microsoft Threat Intelligence Center (MSTIC).

Пожалуйста, внимательно прочитайте весь документ, прежде чем начинать экспериментировать с кодом!

Краткий обзор Hive v5

В последние месяцы я направил большую часть своих усилий на изучение и обратную разработку алгоритма шифрования Hive v5. У меня была возможность сотрудничать с выдающимся аналитиком вредоносного ПО и реверс-инженером @rivitna, который в прошлом анализировал предыдущие версии Hive и публиковал код и PoC, касающиеся их механизмов шифрования. Он внёс немалый вклад в выявление компонентов, участвующих в операциях шифрования Hive v5, который, будучи написанным на RUST, стал более сложным для анализа. Я нашёл нечто общее с Babuk, ещё одним очень важным вымогателем, исходные коды которого были раскрыты в июне 2021 года:

  • алгоритм обмена ключами;
  • список процессов, которые необходимо завершить перед запуском 1256 потоков шифрования.

Вымогатель Hive v5, работающий в системе жертвы, генерирует два cleartext-ключа, используя алгоритм, приведённый ниже, основанный на Windows API QueryPerformanceCounter и QueryPerformanceFrequency.

Пожалуйста, обратитесь к этой странице Microsoft для получения дополнительной информации об API QueryPerformanceCounter, а здесь — об API QueryPerformanceFrequency.

QueryPerformanceCounter — это очень точный счётчик времени. При вызове он возвращает время, прошедшее с момента последнего включения ПК.

QueryPerformanceFrequency возвращает значение (частоту) счётчика производительности. Оно имеет фиксированное значение 0x989680. Это означает, что значение QueryPerformanceCounter обновляется 0x989680 раз в секунду, то есть 10 000 000 раз.

Два cleartext-ключа имеют размер 0xCFFF00 байт и генерируются по одному, байт за байтом. Ниже приведён фрагмент, который позволяет создать массив размером 0xA00000 байт, составляющий наибольшую часть так называемого cleartext-ключа, которым Hive шифрует файлы на ПК жертвы.

snippetGenKeyCleartext

Каждый байт ключа получается путём взятия значения регистра AL. Регистр EAX содержит результат функции 0044ADE0, переименованной в createByte, которая вычисляет разницу между текущим моментом времени и начальным значением семени (seed), рассчитанным при первом вызове функции 0044A850, переименованной в call_to_QueryPerformanceCounter.

Ниже приведён код на C++ для генерации cleartext-ключа:

c++GenKeyCleartext

Алгоритм очень прост, хотя внутри функции 0044ADE0 были вставлены инструкции, выполняющие избыточные операции и различные условные переходы, чтобы попытаться замедлить время выполнения кода во время генерации cleartext-ключа:

useless-conditions

В папке HiveRansomwareV5_custom_keygen_PoC вы найдёте исходный код, восстановленный из проанализированного образца Hive v5. Это не оптимизированный код, подобный тому, что присутствует во вредоносном ПО, поскольку мне нужно было не упустить ни одной строки кода из скомпилированной версии.

В папке HiveRansomwareV5_custom_keygen_PoC-optimized вы найдёте оптимизированный код, полученный из вышеупомянутого исходного кода. В этой версии код читается гораздо легче, чем исходный, что позволяет понять реализуемую им функциональность.

Обе версии перед запуском необходимо настроить под вашего пользователя, чтобы сохранить сгенерированный cleartext-ключ на вашем рабочем столе.

Оба cleartext-ключа генерируются с использованием одного и того же алгоритма.
Cleartext-ключ состоит из 0xA00000 безопасно сгенерированных случайным образом байт. Затем первые 0x2FFF00 байт копируются в конец, создавая итоговый cleartext-ключ размером 0xCFFF00 байт.

memcpy2FFF00

Затем Hive использует два сгенерированных ключа для шифрования файлов, но прежде всего вымогатель Hive v5 шифрует сгенерированные ключи в собственную структуру (далее мы будем называть их keystream) и размещает их в корне каждого шифруемого диска с расширением .key. Например, если в вашей системе установлены оба диска C и D, зашифрованные keystream-файлы будут присутствовать в корне каждого диска.

keysAtRoot

Вымогатель Hive v5 использует сгенерированные cleartext-ключи для шифрования файлов с помощью инструкции XOR, так что мы имеем дело с очень быстрым симметричным шифрованием на современных процессорах x86/x64.

Как Hive v5 защищает себя: как cleartext-ключ становится keystream

Вымогателю Hive v5 необходимо защитить сгенерированный cleartext-ключ, зашифровав его два раза; далее мы будем называть эти шифрования раундами. Для получения итогового keystream требуется два раунда шифрования.

Для этого на каждом раунде выполняются следующие шаги:

  1. Генерация приватного ключа размером 32 байта с использованием того же алгоритма для создания каждого байта ключа;
  2. Используя алгоритм эллиптической кривой Curve25519 для обмена ключами Diffie-Hellman, Hive выводит публичный ключ из только что сгенерированного приватного ключа;
  3. Снова используя Curve25519, Hive генерирует общий ключ (shared key) из только что сгенерированного приватного ключа и публичного ключа партнёра Hive (affiliate) (меняется в каждом артефакте Hive v5);
  4. Генерация nonce размером 24 байта, своего рода IV, с использованием того же алгоритма, что и для приватного ключа и cleartext-ключа;
  5. С использованием алгоритма HChaCha20 выводится ключ для шифрования сгенерированного cleartext-ключа;
  6. Используя ключ, созданный на шаге 5, и nonce, созданный на шаге 4, Hive шифрует cleartext-ключ с помощью алгоритма XChaCha20. Эта операция также создаёт 16-байтовый MAC (Message Authentication Code) для обеспечения целостности процесса шифрования.

Шаг 3 гарантирует создание keystream, который может быть открыт двойной парой приватных ключей: теми, что Hive генерирует во время шифрования, и теми, что партнёр Hive сгенерировал, когда компилировал для нас вымогателя.

keystreamCreation

Идея, лежащая в основе брутфорса

Скачать инструмент