Порой так хочется заглянуть какому-нибудь вирусописателю в глаза и спросить: зачем и почему? С ответом на вопрос «как» мы справимся сами, а вот узнать, чем думал руководствовался тот или иной создатель вредоносного ПО, было бы очень интересно. Тем более, когда нам попадаются такие «жемчужины».

Герой сегодняшней статьи – интересный экземпляр шифровальщика. Задумывался он, по всей видимости, как очередной «вымогатель», но его техническая реализация больше похожа на чью-то злую шутку. Об этой реализации сегодня и поговорим.

К сожалению, проследить жизненный цикл этого энкодера практически невозможно – слишком уже мало статистики по нему, так как распространения он, к счастью, не получил. Поэтому оставим за скобками происхождение, методы заражения и прочие упоминания. Расскажем лишь о нашем случае знакомства с Wulfric Ransomware и о том, как мы помогли пользователю спасти его файлы.

I. Как все начиналось


В нашу антивирусную лабораторию часто обращаются люди, пострадавшие от шифровальщиков. Мы оказываем помощь вне зависимости от того, какие антивирусные продукты у них установлены. В этот раз к нам обратился человек, чьи файлы оказались поражены неизвестным энкодером.
Добрый день! Были зашифрованы файлы на файловом хранилище (samba4) с беспарольным входом. Подозреваю, что зараза пошла с компьютера дочери (Windows 10 со штатной защитой Windows Defender). Компьютер дочери не включали после этого. Файлы зашифрованы в основном .jpg и .cr2. Расширение файлов после шифрования: .aef.


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

Вот и все наши зацепки:

  • 01c.aef (4481K)
  • hacked.jpg (254K)
  • hacked.txt (0K)
  • 04c.aef (6540K)
  • pass.key (0K)

Давайте взглянем на записку. Сколько биткоинов на этот раз?

Перевод:
Внимание, ваши файлы зашифрованы!
пароль уникален для вашего ПК.

Заплатите сумму 0.05 BTC на биткоин-адрес: 1ERtRjWAKyG2Edm9nKLLCzd8p1CjjdTiF
После оплаты отправьте мне письмо, прикрепив файл pass.key на Wulfric@gmx.com с уведомлением об оплате.

После подтверждения я вышлю вам расшифровщик для файлов.

Вы можете оплатить биткоины онлайн разными способами:
buy.blockexplorer.com — оплата банковской картой
www.buybitcoinworldwide.com
localbitcoins.net

О биткоинах:
en.wikipedia.org/wiki/Bitcoin
Если у вас есть какие-то вопросы, пишите мне на Wulfric@gmx.com
В качестве бонуса я расскажу, как взломан ваш компьютер и как его защитить в будущем.

Пафосный волк, призванный показать жертве серьезность ситуации. Впрочем, могло быть и хуже.


Рис. 1. -As a bonus, I will tell you how to protect your computer in the future. –Seems legit.

II. Приступаем к работе


Первым делом мы взглянули на структуру присланного образца. Как ни странно, он не был похож на файл, пострадавший от шифровальщика. Открываем шестнадцатеричный редактор и смотрим. В первых 4 байтах содержится оригинальный размер файла, следующие 60 байт заполнены нулями. Но самое интересное находится в конце:


Рис. 2 Анализируем поврежденный файл. Что сразу бросается в глаза?

Все оказалось до обидного просто: 0х40 байт из заголовка были перенесены в конец файла. Для восстановления данных достаточно просто вернуть их в начало. Доступ к файлу восстановлен, но зашифрованным осталось название, и с ним все сложнее.


Рис. 3. Зашифрованное название в Base64 выглядит как бессвязный набор символов.

Попробуем разобрать pass.key, отправленный пользователем. В нем мы видим 162-байтную последовательность символов в ASCII.


Рис. 4. 162 символа, оставленные на ПК жертвы.

Если приглядеться, то можно заметить, что символы повторяются с определенной периодичностью. Это может свидетельствовать об использовании XOR, где свойственны повторения, частота которых зависит от длины ключа. Разбив строку по 6 символов и проXORив некоторыми вариантами XOR-последовательностей, какого-либо осмысленного результата мы не добились.


Рис. 5. Видите повторяющиеся константы в середине?

Решили погуглить константы, потому что да, так тоже можно! И все они в итоге привели к одному алгоритму ? Batch Encryption. После изучения скрипта стало понятно, что наша строка – это не что иное, как результат его работы. Следует упомянуть, что это вовсе не шифровальщик, а всего-навсего кодировщик, заменяющий символы на 6-байтные последовательности. Никаких тебе ключей или других секретов :(


Рис. 6. Кусок оригинального алгоритма неизвестного авторства.

Алгоритм не работал бы как надо, если бы не одна деталь:


Рис. 7. Morpheus approved.

С помощью обратной подстановки превращаем строку из pass.key в текст из 27 символов. Особого внимания заслуживает человеческий (скорее всего) текст ‘asmodat’.


Рис.8. USGFDG=7.

Нам снова поможет Google. После небольшого поиска находим интересный проект на GitHub – Folder Locker, написанный на .Net и использующий библиотеку ‘asmodat’ с другого аккаунта на «Гите».


Рис. 9. Интерфейс Folder Locker. Обязательно проверили на вредоносность.

Утилита представляет собой шифратор для Windows 7 и выше, который распространяется с открытым исходным кодом. При шифровке используется пароль, необходимый для последующей дешифровки. Позволяет работать как с отдельными файлами, так и с целыми директориями.

Ее библиотека использует симметричный алгоритм шифрования Rijndael в режиме CBC. Примечательно, что размер блока был выбран равным 256 бит – в отличие от принятого в стандарте AES. В последнем размер ограничивается 128 битами.

Наш ключ формируется по стандарту PBKDF2. При этом паролем выступает SHA-256 от введенной в утилите строки. Остается лишь найти эту строку, чтобы сформировать ключ дешифровки.

Что ж, вернемся к нашему уже раскодированному pass.key. Помните ту строчку с набором цифр и текстом ‘asmodat’? Пробуем использовать первые 20 байт строки в качестве пароля для Folder Locker.

Гляди-ка, работает! Кодовое слово подошло, и все прекрасно расшифровалось. Судя по символам пароля – это HEX-представление определенного слова в ASCII. Попробуем отобразить кодовое слово в текстовом виде. Получаем ‘shadowwolf’. Уже чувствуете симптомы ликантропии?

Давайте еще раз взглянем на структуру пораженного файла, теперь уже зная механизм работы локера:

  • 02 00 00 00 – режим шифрования имен;
  • 58 00 00 00 – длина зашифрованного и закодированного в base64 имени файла;
  • 40 00 00 00 – размер перенесенного заголовка.

Красным и желтым выделены само зашифрованное имя и перенесенный заголовок соответственно.


Рис. 10. Красным выделено зашифрованное имя, желтым – перенесенный заголовок.

А теперь сравним зашифрованное и расшифрованное имена в шестнадцатеричном представлении.

Структура расшифрованных данных:

  • 78 B9 B8 2E – мусор, созданный утилитой (4 байта);
  • 0С 00 00 00 – длина расшифрованного имени (12 байт);
  • далее идет, собственно, имя файла и дополнение нулями до нужной длины блока (паддинг).


Рис. 11. IMG_4114 выглядит куда лучше.

III. Выводы и заключение


Возвращаясь к началу. Мы не знаем, чем руководствовался автор Wulfric.Ransomware и какую цель он преследовал. Безусловно, для рядового пользователя результат работы даже такого шифровальщика покажется большой бедой. Файлы не открываются. Все названия пропали. Вместо привычной картинки – волк на экране. Заставляют читать про биткоины.

Правда, в этот раз под личиной «страшного энкодера» скрывалась такая вот нелепая и бестолковая попытка вымогательства, где злоумышленник использует готовые программы и оставляет ключи прямо на месте преступления.

Кстати, о ключах. У нас не было вредоносного скрипта или трояна, по которому можно было бы понять, как возник этот pass.key – механизм появления файла на зараженном ПК остается неизвестным. Но, помнится, в своей записке автор упоминал об уникальности пароля. Так вот, кодовое слово для расшифровки настолько же уникально, насколько уникальным является юзернейм shadow wolf :)

И все же, теневой волк, зачем и почему?