Не все так просто із Petya
Це переклад досить застарілої статті від 2017 року з ресурсу http://blog.talosintelligence.com.Але вважаю, що ті, хто це пропустив буде корисно ознайомитись, а хто читав, нагадати про події недалекого минулого, на які сьогодні можна подивитись зовсім з іншого боку.
Поїхали.
27 червня 2017 року нова кібератака вразила безліч комп’ютерних систем в Україні та деяких інших сусідніх країнах. Атака була викликана зловредом, який ESET визначав як Diskcoder.C (aka ExPetr, PetrWrap, Petya, або NotPetya).
Ця атака маскувалася під епідемію звичайного шифрувальника — з тих, що просто шифрують дані на диску і потім вимагають гроші. Цей вимагав 300$ в біткоін для відновлення даних. Але насправді план був набагато складніший та потужніший, тому автора зробили все, що могли, щоб ускладнити розшифровку даних.
У нашому блозі, ми вже віднесли цю атаку до групи TeleBots і розкрили деталі іншого схожого ланцюга. Ця стаття розкриває деталі для первинного вектора поширення, який був використаний для DiskCoder.C.
Отже, розповідь про підроблене оновлення.
На своїй сторінці у фейсбук, Департамент кіберполіції в Україні, повідомив, що на початковій фазі поширення зловреда DiskCoder.C, було використано популярне програмне забезпечення M.E.Doc — на той момент практично монополіст в Україні в галузі передачі звітності до фіскальних служб. Але досі не було деталей, як саме було зроблена втілення в M.E.Doc.
Під час нашого дослідження, ми виявили дуже хитро прихований бекдор, який був упроваджений в один із офіційних модулів M.E.Doc. А технічне виконання виглядає так, що без доступу до сорсів M.E.Doc це було б зробити дуже важко.
Файл із зараженим модулем ZvitPublishedObjects.dll, написаний на .NET Framework. Він розміром 5 мегабайт, і містить велику кількість функцій легального коду, які використовуються компонентами ПЗ, включаючи основний файл ezvit.exe
Ми вивчили всі оновлення M.E.Doc, які були випущені в 2017 році, і виявили щонайменше три оновлення, що містять заражений модуль:
Розповсюдження Win32/Filecoder.AESNI.C розпочалося через три дні після оновлення
Що цікаво, так це те, що чотири оновлення з 24 квітня 2017 року по 10 травня 2017 року, та сім оновлень з 17 травня до 21 червня, НЕ містили троянський модуль.
В оновленнях з 15 травня по 17 травня, троянський модуль є, але після 17 травня їх немає, і це ймовірно одна з причин, через яку поширення першого шкідника, а саме Win32/Filecoder.AESNI.C було не таким масштабним.
Можливо, оновлення від 17 травня було несподіваним чи нескоордінованим для самих атакуючих. Але вони знову завантажили вразливість оновлення від
Метадані файлу показують, що бібліотека була скомпільована швидше за все прямо в день оновлення, або можливо на день раніше, залежно від часового поясу.
Timestamp показує, що троянський модуль було створено 15 травня.
Тут ми бачимо різницю у класах між зараженим та легальним модулем (ми використовували .NET декомпілятор the ILSpy). Класи зараженого модуля на малюнку зліва.
Основний клас бекдора — MeCom, який розташований у просторі імен ZvitPublishedObjects.Server, як це вказано на малюнку 3.
А це клас MeCom з троянським кодом в ILSpy .NET Decompiler.
Методи класу MeCom викликаються з методу IsNewUpdate у просторі імен UpdaterUtils та ZvitPublishedObjects.Server. Сам метод IsNewUpdate періодично викликається для перевірки нових оновлень. Заражений модуль від 15 травня працює трохи по-іншому і містить менше функцій, ніж модуль від 22 червня.
Кожна зареєстрована організація в Україні має унікальний код ЄДРПОУ. І це дуже важливо, оскільки використовуючи бекдор для зазначеного ЄДРПОУ (а у функцій є можливість триггеритись на конкретний номер), можна проводити цілеспрямовану атаку проти конкретної компанії чи організації. Працюючи зсередини, з комп’ютера, де встановлено троянський модуль, можна використовувати різну тактику, залежно від намірів атакуючих.
З того часу, як M.E.Doc отримав велику популярність, його можна знайти на комп’ютері практично кожного бухгалтера. Один M.E.Doc може обслуговувати одразу кілька організацій, і одного разу встановлений троян знатиме про всі ЄДРПОУ на цій машині для відправлення їх зловмисникам.
Код, який збирає ЄДРПОУ.
Крім ЄДРПОУ, троян також автоматично збирає налаштування проксі, пошти, включаючи логіни та паролі зараженої програми M.E.Doc.
Увага! Рекомендується змінити паролі для всіх проксі та поштових користувачів, які користувалися M.E.Doc!!
Також шкідливий код записує зібрану інформацію в реєстрі Windows за адресою HKEY_CURRENT_USER\SOFTWARE\WC, використовуючи імена ключів Cred та Prx. Якщо на вашому комп’ютері ви знайдете подібну інформацію реєстру, значить на вашому комп’ютері як мінімум одного разу троянський код вже виконувався, і можливо ваші дані (включно з паролями) вже є у зловмисників.
І нарешті найхитріша частина. Троянський модуль не використовував жодних зовнішніх керуючих серверів чи центрів. Він користувався стандартними оновленнями програми від M.E.Doc із офіційного сервера upd.me-doc.com[.]ua. Єдина відмінність від легальних запитів у тому, що троянський код надсилав зібрану інформацію назад на сервер через cookies.
HTTP-запит від троянського модуля, який містить ЄДРПОУ в cookie.
Ми не проводили судового аналізу M.E.Doc сервера і наразі це вже неможливо. Але ми вже писали у нашому блозі, що є ознаки того, що сервер оновлень був скомпроментований. Тому ми можемо лише підозрювати, що атакуючі змогли підпатчити сервер оновлень, щоб розрізняти запити від заражених і не заражених машин та користуватися цим.
Код бекдору, який додає cookie на запит.
І звичайно, атакуючий мав додати спосіб контролю зараженої машини. Цей код отримував бінарні дані з офіційного сервера оновлення M.E.Doc, розшифровував їх алгоритмом Triple Des, розпаковував із GZip, у результаті виходив XML файл із набором інструкцій. Таким чином, цей троян перетворювався на повномасштабну платформу для кібершпигунства та кіберсаботажу і міг виконати як одну з підготовлених функцій так і взагалі будь яку переслану команду.
Код трояна, який розшифровує список інструкцій для виконання на зараженій машині.
Таблиця можливих команд:
Команда та призначення
0 — RunCmd Виконати shell команду (тобто будь-яку команду на віддаленому комп’ютері)
1 — DumpData декодувати Base64 дані та зберегти їх у файл (так можна надіслати на комп’ютер будь-який інший файл, скрипт чи бінарний виконавчий файл з будь яким функціоналом)
2 — MinInfo Зібрати інформацію про комп’ютер — версія ОС, розрядність, поточні привілеї, налаштування UAC, налаштування проксі та пошти (включаючи логіни та паролі)
3 — GetFile Отримати якийсь файл із зараженого комп’ютера
4 — Payload Декодувати Base64 дані, зберегти їх у виконавчий файл і запустити його.
5 — AutoPayload теж, що й попереднє, але файл має бути збережений у вигляді бібліотеки і передбачався виконуватись через rundll32.exe. Також він повинен спробувати перезаписати конкретну DLL.
Можна відзначити, що команда номер 5, названа автором зловреда як «AutoPayload», скоріше за все відповідає за те, як поширювався DiskCoder.C на зеро-пацієнтах (перших заражених машинах).
Метод AutoPayload, який використовувався для виконання шифрувальника DiskCoder.C.
Висновки
Як показує наш аналіз, це була дуже ретельно спланована та добре виконана операція. Ми припускаємо, що атакуючі мали доступ до сорців M.E.Doc. Що в них було достатньо часу, щоб вивчити його код і впровадити приховану вразливість. Повний розмір інсталяційного пакета M.E.Doc — близько 1.5 гігабайта, і немає жодної можливості оперативно перевірити його на інші закладки та вразливості.
Досі залишаються питання. Як довго цей троян використовувався? Які інші команди, окрім відправки зловредів DiskCoder.C та Win32/Filecoder.AESNI.C, були запущені через цей канал? Які інші атаки могли пройти задовго до поточної ситуації, але залишилися непоміченими? Скільки комерційних і приватних даних могли потягнути зловмисники, і ці дані все ще можуть бути використані.
Окрема подяка моїм колегам Frédéric Vachon та Thomas Dupuy за їхню допомогу у розслідуванні.
Indicators of Compromise (IoC) ESET detection names: MSIL/TeleDoor.A Legitimate servers abused by malware authors: upd.me-doc.com[.]ua SHA-1 hashes: 7B051E7E7A82F07873FA360958ACC6492E4385DD 7F3B1C56C180369AE7891483675BEC61F3182F27 3567434E2E49358E8210674641A20B147E0BD23C
P.S.
Від перекладача:
Ця ситуація показує, наскільки погано держава усвідомлює небезпеку кіберзлочинів, наскільки погано те, що методи боротьби з кіберзлочинцями не обговорюються з фахівцями, і в результаті приймаються абсолютно марні, неефективні і навіть шкідливі рішення у вигляді непродуманих блокувань та заборон.
У країні сотні великих і десятки найбільших ІТ компаній, які пишуть відмінне програмне забезпечення світового рівня.
Навіть з огляду на питання корупції тендер може бути організований таким чином, щоб для виконання було обрано кілька великих компаній, чиї імена вже мають міжнародну репутацію і в створенні та аудіту програмного забезпечення.
І цілком очевидно, що подібний діалог потрібен, введення адекватних стандартів та їх моніторингу для подібного ПЗ. І ПЗ, яке використовується настільки поширено, на державному рівні, і вже тим більше, яке є практично обов’язковим і має настільки критичне значення для бізнесу практично кожної компанії, має проходити адекватну, а не фуфлижну сертифікацію як ПЗ національного значення, оскільки корупція і відкати в цьому питанні мають прямі наслідки для державної і комерційної безпеки на всіх рівнях.
Update:
www.securitylab.ru/news/487160.php — файли справді можна розшифрувати. Хтось із авторів NoPetya розшифрували надісланий їм файл для демонстрації.
www.securitylab.ru/news/487159.php — З bitcoin гаманця авторів NoPetya були зняті гроші.
Update2:
blog.talosintelligence.com/...the-medoc-connection.html
Ще одна дуже корисна стаття англійською, де проводили дослідження з підтвердженнями про те, що сервер оновлень M.E.Doc. справді був зламаний, і швидше за все зараза поширювалася не з його офісу, а з підробленого сервера оновлень. Пруфи у вигляді скріншотів ліг додаються.
Коментарій від перекладача вже від 2025 року.
Наразі картина виглядає ще більш страшною.
Я не буду дивуватись, якщо це було виконано спеціалістами держави-ворога, і активно використовувалось для фінансових та політичних махінацій.
Майже впевнений, що окрім сорців, зловмисники чи мали доступ чи могли ретельно вивчити внутрішню інфраструктуру де робився інсталяційний пакет та викладались оновлення, щоб потім зробити підставний сервер оновлень та скомпрометувати легальний.
Маю надію, що всі повинні розуміти що кожен масовий продукт і особливо ПЗ державного рівня повинні плануватись не тільки на рівні коду, але і на рівні інфраструктури та моніторингу, щоб протистояти не просто спробам взлому від хакерів-ентузіастів, а хакерів, в яких можуть бути конкретні завдання та ресурси на державному рівні, і оглядуючись на цей випадок який було частково розкрито в 2017, це не теоретичні викладки а реальність.
49 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів