Часом так хочеться зазирнути якомусь вірусописачеві у вічі і запитати: навіщо і чому? З відповіддю на питання «як» ми впораємося самі, а ось дізнатися, чим думав керувався той чи інший творець шкідливого ПЗ, було б дуже цікаво. Тим більше коли нам трапляються такі «перлини».
Герой сьогоднішньої статті – цікавий екземпляр шифрувальника. Замислювався він, мабуть, як черговий «вимагач», але його технічна реалізація більше схожа на чийсь злий жарт. Про цю реалізацію сьогодні і поговоримо.
На жаль, простежити життєвий цикл цього енкодера практично неможливо - занадто мало статистики по ньому, оскільки поширення він, на щастя, не отримав. Тому залишимо за дужками походження, методи зараження та інші згадки. Розкажемо лише про наш випадок знайомства з 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 на [захищено електронною поштою] із повідомленням про оплату.
Після підтвердження я надішлю вам розшифровувач для файлів.
Пафосний вовк, покликаний показати жертві серйозність ситуації. Втім, могло бути й гірше.
Мал. 1. -As a bonus, I буде tell you how to protect your computer in the future. -Seems legit.
ІІ. Приступаємо до роботи
Насамперед ми глянули на структуру надісланого зразка. Як не дивно, він не був схожий на файл, який постраждав від шифрувальника. Відкриваємо шістнадцятковий редактор і дивимося. У перших 4 байтах міститься оригінальний розмір файлу, наступні 60 байт заповнені нулями. Але найцікавіше знаходиться наприкінці:
Мал. 2 Аналізуємо пошкоджений файл. Що одразу впадає у вічі?
Все виявилося дуже прикро: 0х40 байт із заголовка були перенесені в кінець файлу. Для відновлення даних досить просто повернути їх у початок. Доступ до файлу відновлено, але зашифровано залишилася назва, і з ним все складніше.
Мал. 3. Зашифрована назва Base64 виглядає як безладний набір символів.
Спробуємо розібрати pass.key, надісланий користувачем. У ньому бачимо 162-байтную послідовність символів в ASCII.
Мал. 4. 162 символи, залишені на ПК жертви.
Якщо придивитися, можна помітити, що символи повторюються з певною періодичністю. Це може свідчити використання XOR, де властиві повторення, частота яких залежить від довжини ключа. Розбивши рядок по 6 символів і про XOR в деяких варіантах XOR-послідовностей, якого-небудь осмисленого результату ми не досягли.
Мал. 5. Бачите повторювані константи в середині?
Вирішили погуглити константи, бо так, так теж можна! І всі вони в результаті привели до одного алгоритму – Batch Encryption. Після вивчення скрипту стало зрозуміло, що наш рядок – це не що інше, як результат його роботи. Слід згадати, що це зовсім не шифрувальник, а всього лише кодувальник, який замінює символи на 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 - режим шифрування імен;
58 00 00 00 – довжина зашифрованого та закодованого у base64 імені файлу;
40 00 00 00 – розмір заголовка.
Червоним і жовтим виділено саме зашифроване ім'я та перенесений заголовок відповідно.
А тепер порівняємо зашифроване та розшифроване імена у шістнадцятковій виставі.
Структура розшифрованих даних:
78 B9 B8 2E – сміття, створене утилітою (4 байти);
0С 00 00 00 - Довжина розшифрованого імені (12 байт);
далі йде, власне, ім'я файлу та доповнення нулями до потрібної довжини блоку (паддинг).
Мал. 11. IMG_4114 виглядає набагато краще.
ІІІ. Висновки та висновок
Повертаючись на початок. Ми не знаємо, чим керувався автор Wulfric.Ransomware і яку мету він мав. Безумовно, для рядового користувача результат роботи навіть такого шифрувальника здасться великою бідою. Файли не відкриваються. Усі назви зникли. Замість звичної картинки – вовк на екрані. Примушують читати про біткоїни.
Щоправда, цього разу під масою «страшного енкодера» ховалася така ось безглузда спроба здирства, де зловмисник використовує готові програми і залишає ключі прямо на місці злочину.
До речі, про ключі. У нас не було шкідливого скрипта чи трояна, яким можна було б зрозуміти, як виник цей pass.key - Механізм появи файлу на зараженому ПК залишається невідомим. Але, пригадую, у своїй записці автор згадував про унікальність пароля. Так ось, кодове слово для розшифровки настільки ж унікальне, наскільки унікальним є юзернейм shadow wolf