Недостатки xor-шифрования

Сегодня у нас срыв покровов с некачественного шифрования полезной нагрузки. 

Шифрование с использованием операции xor довольно популярная процедура, в силу простоты исполнения:

Проблемы

Короткий ключик

В 32-битном ассемеблере проще всего манипулировать размером в 4 байта, поэтому чаще всего xor-ключ имеет длину 4.

В целом, перебрать все ключи на 4 байта не составляет особого труда, но есть и более оригинальные алгоритмы:

Поиск pe32

Что бы найти ключ надо знать хотя бы часть открытого текста, и в вирусах она известна  – PE, MZh
Ксорим первые байты на MZh и пробуем полученный ключ на следующих структурах. Подобрать ключ от 1 до 4 байт очень быстро.

Поиск ссылок

Есть не так много вариантов шифрования строки “https://”, имея все варианты с ключом от 1 до 4 можно очень быстро найти совпадения и проверить синтаксис расшифрованной части.

Инструменты

XORSearch

xorsearch

Существует готовая утилита для подобных задач, от некого Didier Stevens. Она перебирает свой внутренний список подозрительных строк с разными вариантами шифрования.

Поддерживает не только Xor но и ROL, ROT, SHIFT и даже ADD. Недавно вышла python-версия!

Balbuzard

balba

Ещё одна утилита для извлечения скрытых данных, использует YARA и поддерживает плагины.

Also

  • https://github.com/hellman/xortool
  • https://github.com/fireeye/flare-floss

Стандартные алгоритмы

Можно использовать что-то проверенное в бою, вроде RC4, но у часто используемых алгоритмов есть свой недостаток – существует утилиты, которые сигнализируют об использовании того или иного метода, например использование md5 легко отличить по сигнатурам :

Что же делать?

  1. Использовать нестандартные алгоритмы шифрования
  2. Использовать длинные ключи (исходник в начале статьи это позволяет)
  3. Ключ желательно не держать в открытом виде, а вычислять динамически

Добавить комментарий