Найти в Дзене

Охота за «Золотым ключом»: Криптография шифровальщиков и извлечение ключей дешифровки из оперативной памяти

Вы обнаружили ransomware. Компьютер изолирован. Дамп памяти лежит на чистой машине. Резервные копии скомпрометированы или недоступны. Впереди единственное, что осталось: поиск симметричного ключа, который был использован для шифрования ваших файлов. Если вы найдёте его — данные восстановлены. Если нет — остаётся только выплата выкупа или полная потеря. Эта статья — для форензиков, специалистов по инцидентам (Incident Responders) и технических экспертов, которые хотят понять, почему извлечение ключа является одновременно возможным и чрезвычайно сложным техническим процессом. Когда разработчик malware строит систему для шифрования данных без интернета на скомпрометированной машине, он сталкивается с инженерной трилеммой. Необходимо выбрать баланс между скоростью, безопасностью и автономностью. Рассмотрим три основных архитектурных подхода: Все современные семейства ransomware (LockBit, Conti, BlackCat) используют Вариант 3. Мы разберем, почему это дает нам шанс. Чтобы понять механику ата
Оглавление
Охота за «Золотым ключом»: Криптография шифровальщиков и извлечение ключей дешифровки из оперативной памяти
Охота за «Золотым ключом»: Криптография шифровальщиков и извлечение ключей дешифровки из оперативной памяти

Почему это последняя линия защиты

Вы обнаружили ransomware. Компьютер изолирован. Дамп памяти лежит на чистой машине. Резервные копии скомпрометированы или недоступны.

Впереди единственное, что осталось: поиск симметричного ключа, который был использован для шифрования ваших файлов. Если вы найдёте его — данные восстановлены. Если нет — остаётся только выплата выкупа или полная потеря.

Эта статья — для форензиков, специалистов по инцидентам (Incident Responders) и технических экспертов, которые хотят понять, почему извлечение ключа является одновременно возможным и чрезвычайно сложным техническим процессом.

Часть I: Архитектура шифрования современного ransomware

Парадокс эффективности и безопасности

Когда разработчик malware строит систему для шифрования данных без интернета на скомпрометированной машине, он сталкивается с инженерной трилеммой. Необходимо выбрать баланс между скоростью, безопасностью и автономностью.

Рассмотрим три основных архитектурных подхода:

Вариант 1: Только симметричное шифрование (AES)

  • Быстро: Скорость шифрования достигает 5 GB за 30 секунд (при использовании AES-NI).
  • Проблема ключа: Ключ должен находиться где-то на диске или в памяти в открытом виде, чтобы процесс мог работать.
  • Результат: Форензики легко находят ключ на диске → все файлы восстанавливаются бесплатно.
  • История: Старые семейства ransomware использовали этот подход, что позволило антивирусным компаниям быстро выпустить декрипторы.

Вариант 2: Только асимметричное шифрование (RSA)

  • Безопасно: Публичный ключ шифрует, приватный (для расшифровки) никогда не передается жертве.
  • Медленно: Одна операция RSA-2048 занимает ~100 ms. На диске с 100,000 файлов это займет 2.7 часа чистого времени процессора.
  • Зависимость: Требует интернет для скачивания уникального публичного ключа или генерации пар.
  • Результат: Если компьютер offline → ransomware зависает или не может работать.

Вариант 3: Гибридное шифрование (HYBRID)

  • Быстро: Для шифрования тела файлов используется AES.
  • Безопасно: AES-ключ шифруется асимметричным алгоритмом (RSA/ECC), приватный ключ находится у атакующего.
  • Автономно: Работает offline, так как ключи генерируются локально.
  • Риск: Уязвимость существует только в момент генерации ключа в оперативной памяти (ОЗУ).

Все современные семейства ransomware (LockBit, Conti, BlackCat) используют Вариант 3. Мы разберем, почему это дает нам шанс.

Часть II: Гибридное шифрование — простым языком

Упрощённая аналогия с почтовым ящиком

Чтобы понять механику атаки, представим следующую ситуацию:

  • Ваш дом = Компьютер жертвы.
  • Ваши письма = Файлы (документы, фото, базы данных).
  • Золотой ключ от ящика = AES-256 (симметричный ключ).
  • Публичный почтовый замок = RSA Public Key (вшит в код malware).
  • Приватный мастер-ключ = RSA Private Key (находится только у хакера).

Процесс атаки выглядит так:

  • Вторжение: Ransomware приходит в ваш дом (компьютер).
  • Генерация: Создает «Золотой ключ», уникальный именно для вашего дома (AES-256).
  • Шифрование данных: Запирает все письма «Золотым ключом». Это происходит быстро.
  • Защита ключа: Берёт «Золотой ключ» и кладёт его в специальный контейнер, запирая его Публичным почтовым замком (RSA). Это медленная операция, но так как ключ маленький (32 байта), это не тормозит процесс.
  • Доставка требования: Оставляет запечатанный контейнер (зашифрованный ключ) в вашем почтовом ящике — технически это метаданные в конце зашифрованного файла.
  • Уничтожение улик: Сжигает оригинальный «Золотой ключ» — удаляет plaintext-ключ из памяти и с диска.
  • Отход: Уходит. У атакующего есть только мастер-ключ.

Текущая ситуация:

  • Вы видите запечатанный ключ, но не можете его открыть (нет приватного RSA).
  • Письма запечатаны, и вы не можете их прочитать без «Золотого ключа».
  • Attacker имеет мастер-ключ и может открыть замок, достать «Золотой ключ» и расшифровать всё.

Наша работа как форензика: Найти копию или обгоревшего остатка этого «Золотого ключа» в мусоре (памяти) ДО того, как он был окончательно уничтожен.

Часть III: Симметричный ключ — «Золотой ключ»

AES-256: Главное оружие

AES (Advanced Encryption Standard) — это стандарт, используемый военными, банками и криптовалютами. Теперь это стандарт и для киберпреступников.
256 бит означают 256 нулей и единиц, случайно выбранных компьютером. Данные проходят 14 раундов трансформации.

Почему именно AES?

ПараметрAESChaCha20TwofishСкорость3–5 GB/s (аппаратное ускорение AES-NI)1.3 GB/s (всегда программно)0.3 GB/sБезопасностьСтандарт NISTБоков-безопасенРедко используетсяПопулярность в Ransomware80% семейств15% (BlueSky, Babuk)<5% (устаревший)Уязвимость (Брутфорс)2^256
попыток (невозможно)2^256
попыток (невозможно)2^128
(медленнее)

Как ключ генерируется в памяти

В момент инфекции происходит следующий процесс на низком уровне:

  • Компьютер вызывает криптографически стойкий генератор: CryptGenRandom() (Windows) или /dev/urandom (Linux).
  • Система выдаёт 32 байта (256 бит) полностью случайных данных.
  • Эти 32 байта становятся Master AES Key.
  • Процессор берёт этот ключ и производит процедуру Key Schedule Expansion:Из 32 байт создаёт массив размером 176 байт (44 раундовых ключа).
    Каждый раундовый ключ используется в одном из раундов шифрования.
  • Процессор использует этот расширенный ключ для шифрования КАЖДОГО ФАЙЛА.
  • После окончания работы (обычно через 5–30 минут) ключ должен быть стёрт.

Где находится ключ в памяти?

Типичное расположение в Heap (куче) памяти процесса Windows:

[Heap memory процесса ransomware]
├─ Original AES key (32 байта) - ЕСЛИ генерируется на лету
│ Offset: 0x12345678
│ Content: 6A9B3F2D...E8C7B9A3

├─ Expanded AES keys (176 байт = 44 round keys * 4 bytes)
│ Offset: 0x123456A0 (обычно рядом с оригиналом)
│ Content: сложная структура с раундовыми ключами

└─ Временные буферы для шифрования
Offset: различные
Content: plaintext файлов перед шифрованием

Временное окно возможности (Time of Opportunity)

Почему форензики могут найти ключ:

  • 0 минут: Процесс запущен, генерирует первый ключ → ключ в памяти
  • 5 минут: Генерирует 5-й файл, ключ процесса всё ещё в памяти
  • 15 минут: Генерирует 15-й файл → ключ ещё в памяти
  • 30 минут: Шифрование завершено → ключ ДОЛЖЕН быть удалён (но часто остаются остатки/артефакты).
  • 60 минут: Процесс завершён → память помечена как свободная, может быть перезаписана
  • 120 минут / Перезагрузка: Питание отключено, ВСЯ ОЗУ стёрта

Вывод: Если вы создадите дамп памяти в течение первых 30–60 минут после начала инцидента, вероятность найти ключ составляет > 80%. Если дамп сделан через 2+ часа: вероятность падает ниже 5%.

Часть IV: Асимметричный шифровальщик — Мастер-ключи

RSA-2048: Публичный + Приватный

Концепция асимметрии в ransomware:

  • Attacker генерирует пару ключей.
  • Публичный ключ (PUBLIC KEY):Можно отдавать кому угодно.
    Вшивается в исполняемый файл malware.
    Используется ТОЛЬКО для шифрования AES-ключа.
    Зашифровать данные может кто угодно (сам вирус).
  • Приватный ключ (PRIVATE KEY):Держится в секрете у attacker.
    Никогда не покидает C2-сервер.
    Используется ТОЛЬКО для расшифровки.

Сравнение алгоритмов:

РазмерДлина ключаВремя на операциюБрутфорс (сложность)RSA-10241024 бита10 ms2^512
операций (Считается взломанной!)RSA-20482048 бит100 ms2^1024
операций (Безопасна)RSA-40964096 бит500 ms2^2048
операций (Очень безопасна)Curve25519256 бит50 ms2^128
операций (Быстрее RSA, надежно)

Почему Curve25519 лучше?

Эллиптическая криптография (ECC) использует математику кривых, а не факторизацию больших чисел. 256-битная кривая эквивалентна 3072-битной RSA по безопасности, но:

  • Быстрее (50 ms против 100 ms).
  • Ключи меньше (32 байта против 256 байт).
  • Меньше векторов атак (side-channels).

Использование в семействах Ransomware:

СемействоАсимметричный алгоритмПримечаниеLockBit 3.0RSA-2048Per-victim pair (пара ключей на жертву)ContiRSA-4096Повышенная безопасностьWannaCryRSA-2048Реализация была уязвима (взломано)NotPetyaRSA-1024УЯЗВИМ! (1024 бита можно факторизовать)BlueSky/BabukCurve25519Современный подход (ECC)Ragnar LockerRSA-2048Per-victim pair

Часть V: Процесс гибридного шифрования в деталях

Разберем пошаговую схему на примере реального поведения LockBit 3.0.

ИНИЦИАЛИЗАЦИЯ

Шаг 1: Генерируется симметричный ключ

  • Вызов: CryptGenRandom(32 bytes)
  • Результат: AES_MASTER_KEY[256 bits] = "6A9B3F2D...E8C7B9A3"
  • Хранилище: heap память процесса (адрес 0x12345678)

Шаг 2: Загружается публичный ключ RSA (встроен в malware)

  • Из resource раздела: .rsrc section
  • Декодируется из Base64
  • Импортируется: CryptImportPublicKeyInfo()

ШИФРОВАНИЕ ФАЙЛА (повторяется для каждого файла)

Шаг 3: Открыть файл на чтение

  • Файл: "document.docx" (10 MB)
  • Режим: read entire file into buffer

Шаг 4: Зашифровать файл с AES

  • Режим: CBC (Cipher Block Chaining)
  • IV (Initialization Vector): 16 random bytes
  • Алгоритм: AES-256-CBC с AES_MASTER_KEY
  • Время: ~3 секунды (на современном CPU)
  • Результат: encrypted_data[10 MB]

Шаг 5: Шифровать сам AES ключ

  • Берём: AES_MASTER_KEY[32 bytes]
  • Шифруем: CryptEncrypt(AES_MASTER_KEY, RSA_PUBLIC_KEY)
  • Время: ~100 ms (медленно!)
  • Результат: encrypted_aes_key[256 bytes] (выход RSA-2048 всегда 256 байт)

Шаг 6: Записать шифрованный файл + ключ

  • Файл: "document.docx.locked"
  • Содержимое:encrypted_data[10 MB]
    encrypted_aes_key[256 bytes] ← зашифрованный ключ
    footer with metadata
  • Оригинальный файл: удалён SecureDeleteFile()

Шаг 7: Удалить оригинальный AES ключ из памяти

  • Если хороший malware: memset_s(AES_MASTER_KEY, 0, 32)
  • Если плохой malware: просто «забыл» о переменной (утечка памяти)
  • Результат: память может быть перезаписана ОС

Продолжение на сайте redsec.by >>>