Wulfric Ransomware – шифровальщик, которого нет
Порой так хочется заглянуть какому-нибудь вирусописателю в глаза и спросить: зачем и почему? С ответом на вопрос «как» мы справимся сами, а вот узнать, чем думал руководствовался тот или иной создатель вредоносного ПО, было бы очень интересно. Тем более, когда нам попадаются такие «жемчужины».
Герой сегодняшней статьи — интересный экземпляр шифровальщика. Задумывался он, по всей видимости, как очередной «вымогатель», но его техническая реализация больше похожа на чью-то злую шутку. Об этой реализации сегодня и поговорим.
К сожалению, проследить жизненный цикл этого энкодера практически невозможно — слишком уже мало статистики по нему, так как распространения он, к счастью, не получил. Поэтому оставим за скобками происхождение, методы заражения и прочие упоминания. Расскажем лишь о нашем случае знакомства с 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:)
И все же, теневой волк, зачем и почему?