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.
Файл зараженного модуля ZvitPublishedObjects.dll, написан на .NET Framework, он размером в 5 мегабайт, и содержит большое количество легального кода, который может быть вызван другими компонентами ПО, включая основной файл ezvit.exe
Мы изучили все обновления M.E.Doc, которые были выпущены в 2017 году, и обнаружили как минимум три обновления, содержащих зараженный модуль:
01.175-10.01.176, от 14 апреля 2017
01.180-10.01.181, от 15 мая 2017
01.188-10.01.189, от 22 июня 2017
Распространение Win32/Filecoder.AESNI.C началось через три дня после обновления 10.01.180-10.01.181, а распространение DiskCoder.C началось через 5 дней после обновления 10.01.188-10.01.189.
Что интересно, так это то, что четыре обновления с 24 апреля 2017 по 10 мая 2017 года, и семь обновлений с 17 мая по 21 июня, НЕ содержали троянский модуль.
В обновлениях с 15 мая по 17 мая, троянский модуль есть, но после 17 мая их нет, и это вероятно одна из причин, по которой распространение первого зловреда, а именно Win32/Filecoder.AESNI.C было не таким масштабным.
Возможно, обновление от 17-го мая было неожиданным для атакующих. Но они снова загрузили уязвимость в обновление от 18-го мая, тем не менее большинство пользователей M.E.Doc уже обновились «вчерашним» патчем, и первая атака прошла не особо заметно.
Метаданные файла показывают, что библиотека была скомпилирована скорее всего прямо в день обновления, или возможно на день раньше, в зависимости от часового пояса.
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 файл с набором инструкций. Таким образом, этот троян превращался в полномасштабную платформу для кибершпионажа и киберсаботажа.
Код трояна, который расшифровывает список инструкций для выполнения на зараженной машине.
Таблица возможных команд:
Command назначение
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 кошелька авторов вредоноса были сняты деньги.
отсюда В тему:
Petya денег не получит: генерируем ключ сами