Неизвестный программист был решен «Petya Ransomware»

Petya отличается от других популярных в наши дни программ-вымогателей. Вместо того, чтобы шифровать файлы один за другим, он запрещает доступ ко всей системе, атакуя низкоуровневые структуры на диске. Авторы этого шифровальщика создали не только собственный загрузчик, но и крохотное ядро ​​длиной 32 сектора.

Дроппер Пети записывает вредоносный код в начало диска. Основная загрузочная запись (MBR) пораженной системы перезаписывается специальным загрузчиком, который загружает крошечное вредоносное ядро. Затем это ядро ​​приступает к дальнейшему шифрованию. В записке Пети о выкупе указано, что он шифрует весь диск, но это неправда. Вместо этого он шифрует основную таблицу файлов (MFT), чтобы файловая система была недоступна для чтения.

Псевдонимы: GoldenEye, NotPetya

Классификация: Троянский конь ‹Главная загрузочная запись›

Как работает программа-вымогатель Petya?

Полезная нагрузка Petya заражает основную загрузочную запись (MBR) компьютера, перезаписывает загрузчик Windows и запускает перезагрузку. При запуске полезная нагрузка шифрует Основную таблицу файлов файловой системы NTFS, а затем отображает сообщение о выкупе с требованием оплаты в Биткойнах. [22][3][23 ] Тем временем на экране компьютера отображается текст, предположительно выведенный chkdsk, сканером файловой системы Windows, что предполагает восстановление секторов жесткого диска. [1]

Первоначальная полезная нагрузка требовала от пользователя предоставления ей административных привилегий; один вариант Petya был связан со второй полезной нагрузкой, Mischa, которая активировалась, если Petya не удалось установить. Mischa — это более обычная полезная нагрузка программы-вымогателя, которая шифрует пользовательские документы, а также исполняемые файлы и не требует прав администратора для выполнения. [3] Ранние версии Petya маскировали свою полезную нагрузку под файл PDF, прикрепленный к электронная почта. [3] Группа реагирования на компьютерные чрезвычайные ситуации США (US-CERT) и Национальный центр интеграции кибербезопасности и связи (NCCIC) опубликовали отчет о первоначальных результатах поиска вредоносных программ (MIFR) о Petya 30 июня 2017 года. [24]

Вариант NotPetya, использованный в атаке 2017 года, использует EternalBlue, эксплойт, использующий уязвимость в протоколе Windows Server Message Block (SMB). Считается, что EternalBlue был разработан американским Агентством национальной безопасности (АНБ); [23] он просочился в апреле 2017 года и также использовался WannaCry. [25][23] Вредоносная программа собирает пароли и использует другие методы для распространения на другие компьютеры в той же сети, а также использует эти пароли в сочетании с PSExec для запуска кода на других локальных компьютерах. [26][27][28] Кроме того, несмотря на то, что он по-прежнему претендует на роль программы-вымогателя, процедура шифрования была изменена таким образом, чтобы вредоносное ПО не могло технически отменить свои изменения.[29] Эта характеристика, наряду с другими необычными признаками по сравнению с WannaCry (включая относительно низкую разблокировку сбор в размере 300 долларов США и использование единого фиксированного биткойн-кошелька для сбора платежей в качестве выкупа вместо создания уникального идентификатора для каждой конкретной инфекции в целях отслеживания), [30] побудило исследователей предположить, что эта атака не предназначалась для предприятие, приносящее прибыль, но быстро повредить устройства и уехать внимание средств массовой информации привлекло WannaCry, заявив, что это программа-вымогатель.[31][32]

Но неизвестный программист под названием «NCodeHack / NandasmartS3» решил эту проблему с помощью PetyaDecryptor для расшифровки MFT.

Как я могу расшифровать MFT?

Чтобы восстановить MFT, сначала его необходимо извлечь с зараженного жесткого диска. Это можно сделать либо с помощью криминалистического образа диска, подключив зараженный жесткий диск к незараженной системе, либо загрузив зараженный компьютер с живого компакт-диска[1].

Предполагая первый случай, т. е. был получен криминалистический образ диска с именем disk.dd, следующий набор команд извлечет MFT в файл mft.raw:

# mmls disk.ddDOS Таблица разделов

Сектор смещения: 0

Единицы находятся в секторах по 512 байт.

Слот Начало Конец Длина Описание

000: Мета 0000000000000000000000000000001Основная таблица (#0)

001:-------000000000000000020470000002048Нераспределено

002:000:000000000204802029588470202956800NTFS / exFAT (0x07)

# icat -o 2048 disk.dd 0 › mft.raw

Первая команда, mmls, возвращает структуру раздела. Обычно начальный сектор основного раздела NTFS имеет значение 63 или 2048. Следующая команда, icat, выводит MFT раздела NTFS в файл mft.raw.

После извлечения зашифрованного MFT его можно расшифровать с помощью инструмента decryptPetya.py из репозитория CrowdStrike.

Python decryptPetya.py --mft mft.raw

В зависимости от размера MFT и количества зашифрованных записей расшифровка занимает от 2 до 30 минут.

Параметры командной строки для decryptPetya.py:

-h, --help показать это справочное сообщение и выйти --mft MFT, -m MFT имя файла MFT

--strict, -s Строгая расшифровка: выводить только те записи MFT, которые

могут быть расшифрованы с высокой степенью достоверности. Другие помечены
как плохие.

Сценарий выводит расшифрованную MFT под именем файла [mft].decrypted_strict или [mft].decrypted_relaxed, в зависимости от предоставленной опции. По умолчанию выбрано расслабленное расшифрование. Он пытается расшифровать данный зашифрованный текст, даже если достоверность относительно низкая. Для криминалистически обоснованного анализа пороговое значение выбирается таким образом, чтобы обеспечить максимальную достоверность результатов. Это можно сделать, выбрав опцию «–strict».

Ручной анализ расшифрованных записей MFT

В редких случаях может потребоваться восстановить несколько первых или последних записей MFT. Это можно сделать с помощью лог-файла decryptPetya.log. С этой целью файл журнала выводит наиболее вероятный открытый текст для данного зашифрованного текста. Следующий отрывок из журнала дает пример:

индекс данных 1020 (индекс ключевого потока 56986) не решен потенциальные значения:

открытый текстовый ключ

0x002050.9876

0x8279 0.0124

[…]

догадался при расшифровке записи 27983 в секторе 55966 (смещение 0x1b54000)

В случае использования по умолчанию decryptPetya.py уже заполняет наиболее вероятный байт. При этом в расшифрованную запись автоматически записывается наиболее вероятный байт 0x00 с достоверностью 0,9876.

Дальнейший анализ MFT

Удовлетворившись результатом MFT, его можно проанализировать, например, с помощью таких инструментов, как analyzeMFT.py, или установить патч на жесткий диск.

Итак, это PetyaDecryptor › PetyaDecryptor.exe