ADG Оставить заявку
Блог Информационная безопасность 5 мин чтения

NotPetya 27 июня: post-mortem - вектор через M.E.Doc, EternalBlue, Mimikatz и MBR-вайп

Итоговый разбор NotPetya: цепочка заражения через M.E.Doc, распространение через EternalBlue и Mimikatz, деструктивный MBR-wipe. Что сработало у клиентов и где пробелы.

Контекст момента

NotPetya 27 июня 2017 - атака через обновление M.E.Doc, распространение EternalBlue + Mimikatz, MBR-wipe вместо шифрования, ущерб у Maersk, Merck, Mondelez на миллиарды долларов

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

Вектор первичного заражения: M.E.Doc

Главное отличие NotPetya от WannaCry - способ попасть в первый хост. WannaCry ломился напрямую в интернет через открытый 445 порт. NotPetya вошёл через цепочку поставок: украинское бухгалтерское ПО M.E.Doc получило троянизированное обновление, которое установили легитимные пользователи. Десятки тысяч компаний в Украине используют этот продукт для отчётности в налоговую - отсюда географическая концентрация первой волны.

Это не баг в Windows и не отсутствующий патч. Это компрометация механизма обновления стороннего ПО. Антивирус не поможет, если установщик подписан валидным сертификатом и приходит с официального сервера обновлений. Именно поэтому крупные западные компании - Maersk, Merck, Mondelez - пострадали не напрямую через эксплойт, а через украинские дочки или VPN-подключения к украинским партнёрам.

Урок неудобный: контролировать патч-менеджмент Windows умеют уже многие. Контролировать автообновления стороннего бизнес-ПО - почти никто.

Распространение: EternalBlue + Mimikatz

После попадания на первый хост NotPetya работал двумя параллельными каналами.

EternalBlue (MS17-010) - тот же эксплойт АНБ, что использовал WannaCry в мае. Сканирование подсети, атака на открытый 445, заражение без аутентификации. Закрывается патчем и отключением SMBv1. После WannaCry большинство успело закрыть этот вектор - и это заметно по тому, как атака распространялась там, где патч был.

Mimikatz + PsExec/WMI - и вот здесь NotPetya оказался хитрее. Встроенный Mimikatz-модуль читал из памяти lsass хэши NTLM и, на непропатченных системах, plaintext-пароли через WDigest. Дальше захваченные учётные данные использовались для lateral movement через PsExec и WMI - легитимные инструменты, которые ни IDS, ни SIEM не отличают от обычного администрирования. Пропатченная машина с закрытым SMBv1 заражалась, если рядом горел хост и у него были действующие хэши с правами на неё.

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

Деструктивный MBR-wipe

NotPetya перезаписывал MBR и шифровал MFT. После перезагрузки система не загружалась - вместо Windows появлялась заглушка с требованием выкупа. Но ключ выкупа был фиктивным. Платить было некому и незачем - дешифрования не существовало в принципе. Это вайпер, замаскированный под ransomware.

Восстановление - только из резервных копий. Никаких переговоров, никакого «заплатить и разблокировать». Именно поэтому ущерб у Maersk измеряется сотнями миллионов: несколько тысяч серверов и десятки тысяч рабочих станций нужно было восстанавливать вручную. Без действующей резервной копии Active Directory восстановление было бы принципиально невозможным - именно поэтому AD входит в критическую инфраструктуру для бекапа в первую очередь.

Что сработало у наших клиентов

Мы проверили состояние всех клиентов на аудите после 27 июня. Картина неоднородная, но несколько мер реально показали себя.

SMBv1 отключён у большинства ещё после WannaCry в мае - это сработало против EternalBlue-канала. Те, кто тянул с этим, оказались под угрозой с обоих векторов сразу.

Tier Model для учётных записей - там, где мы начали внедрять её после прошлых постов, lateral movement через Mimikatz натыкался на стену: domain admin не кешировался на рабочих станциях, LAPS обеспечивал уникальные пароли локального администратора. Хэш с одной машины не открывал соседние.

Офлайн-бекапы - несколько клиентов имели копии на ZFS с immutable-снапшотами или на ленте, отключённой от сети. MBR-wipe их не затронул. Те, у кого бекап был на постоянно примонтированной шаре - в теории рисковали потерять и его.

Где ещё есть пробелы

Честно, без прикрас.

Сторонний софт с автообновлением - никто из клиентов не имеет реестра всего ПО с механизмами автообновления и политики контроля этих механизмов. M.E.Doc конкретно не актуален для большинства наших клиентов, но аналогичный вектор через любое другое корпоративное ПО - вполне.

WDigest - на нескольких средах мы нашли хосты с включённым WDigest (UseLogonCredential = 1 или без патча KB2871997 на Win7/Server 2008 R2). Это означает plaintext в памяти. Mimikatz это читает без усилий.

Мониторинг WMI и PsExec - аномальные WMI-вызовы между рабочими станциями никто не ловил. Без этого Mimikatz-вектор работает в полной тишине.

Сегментация - в нескольких сетях рабочие станции ходят друг к другу напрямую. Flat network - идеальная среда для lateral movement. NotPetya там прошёл бы без задержек.

Где мы сейчас

Атака произошла сегодня. Детали ещё уточняются, атрибуция неясна, украинские CERT и международные исследователи продолжают разбор. Но механика на уровне техники уже понятна достаточно хорошо: M.E.Doc как точка входа, EternalBlue + Mimikatz как движок распространения, MBR-wipe как деструктивная полезная нагрузка.

Для практических выводов ждать финального отчёта не нужно. SMBv1, WDigest, LAPS, Tier Model, офлайн-бекап - это не новые идеи, всё это обсуждалось после WannaCry. NotPetya просто показал, что кто не успел сделать выводы в мае - заплатил в июне.

Контакт

Нужна такая же инженерная работа?

Опишите задачу и контекст. Ответим в течение рабочего дня, при необходимости подпишем NDA.