Кибератака TeleBots: Как был запущен Diskcoder

793

6c0a916267df4d84a78be0a7ecd6114a27-го июня, 2017 года новая кибератака поразила множество компьютерных систем в Украине и других странах. Атака была вызвана зловредом, который ESET определял как Diskcoder.C (aka ExPetr, PetrWrap, Petya, или NotPetya). Эта атака маскировалась под эпидемию обычного шифровальщика — который шифровал данные на диске и требовал 300$ в биткоинах для восстановления данных.
Специалисты антивирусной компании ESET подготовили анализ, содержащий подробности масштабной атаки программы-вымогателя Diskcoder.C известной как Petya, направленной на украинских пользователей. В ходе исследования было выявлено сходство между несколькими кампаниями киберпреступных группы TeleBots, которые в последнее время организует атаки на компьютерные системы объектов критической инфраструктуры Украины.
Так, в декабре 2016 году TeleBots осуществила ряд кибератак , жертвами которых стали цели имеющие особое значение. Тогда главной целью хакеров было планомерное осуществление диверсий в украинском киберпространстве. Во время первой волны атак киберпреступники использовали вредоносное программное обеспечение KillDisk , которое просто переписывало определенные файлы и демонстрировало изображения из телевизионного сериала «Мистер Робот» ( «Mr. Robot»).

В 2017 году атаки преступной группы TeleBots стали более изощренными. За период с января по март TeleBots атаковала программное обеспечение (не связанное с MEDoc) и, используя туннели VPN, получила доступ к внутренним сетям нескольких финансовых учреждений. Во время этой атаки группа TeleBots расширила свой арсенал обновленными инструментами и бэкдоров, что позволило ей распространять программу-вымогатель Win32 / Filecoder.NKH для осуществления шифрования файлов (кроме файлов, расположенных в каталоге C: \ Windows). В дополнение к вредоносным программам для Windows, группа TeleBots использовала также программу-вымогатель Python / Filecoder.R для атаки на серверы Linux.

В мая 2017 года специалисты ESET заметили активность другого семейства вредоносных программ, известного как Win32 / Filecoder.AESNI.C (или XData) . В большинстве случаев этот вымогатель распространялся в Украине, поскольку именно она была начальным вектором атаки.

А уже 27 июня 2017 украинских пользователей массово атаковала новая программа-вымогатель - Diskcoder.C . Данная вредоносная программа имеет возможность шифровать основной загрузочный сектор (MBR) с помощью кода, который был позаимствован у подобного шифровальщика Win32 / Diskcoder.Petya. Вот почему некоторые исследователи могут относить эту угрозу к ExPetr / PetrWrap / Petya / NotPetya. Однако, в отличие от оригинального шифровальщика Petya, авторы Diskcoder.C меняют MBR-код таким образом, чтобы восстановление было невозможным. В частности, злоумышленники не смогут предоставить ключ для дешифровки и он не сможет быть набран на экране жертвы, поскольку сгенерированный ключ содержит недопустимые символы.
На самом деле, план атакующих и заключался в нанесении максимального ущерба, поэтому авторы вируса сделали все что могли, чтобы усложнить расшифровку данных.

Ранее компания ESET в своем блоге, уже относила похожую атаку к хакерской группе TeleBots и раскрыла детали другой похожей цепочки атак против Украины. Эта статья раскрывает детали про первичный вектор распространения, который был использован для эпидемии вируса DiskCoder.C.

На своей страничке в фейсбук, Департамент киберполиции Украины, сообщил, что на начальной фазе распространения зловреда DiskCoder.C, было использовано популярное программное обеспечение бухгалтерского учета M.E.Doc — практически монополиста в этой области в Украине. Но до сих пор не было никаких деталей как именно это было проделано.

Во время исследования, аналитики ESET обнаружили весьма хитро скрытый бэкдор, который был внедрен в один из программных модулей ПО M.E.Doc. Инъекцию вредоносного модуля, в том виде как это было сделано, сложно сделать без доступа к исходным кодам M.E.Doc. В следствии чего возникают доаолнительные вопросы - каким образом исходные коды могли попасть в руки кибертеррористов?

Имя зараженного модуля ZvitPublishedObjects.dll, код его написан на .NET Framework, файл размером в 5 мегабайт, и содержит, кроме вредоносных функций, большое количество вполне легального кода, который может быть вызван другими компонентами ПО M.E.Doc, включая основной файл программы - ezvit.exe

Эксперты ESET изучили все обновления 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 (известного как XData) было не таким масштабным. Вероятно, обновление от 17-го мая было неожиданностью для атакующих. Они снова внедрили зараженный модуль 18-го мая, тем не менее большинство пользователей M.E.Doc уже обновились 17-го, и первая атака прошла не нанесла существенного ущерба.

Метаданные проанализированных файлов показывают, что библиотека была скомпилирована скорее всего в день обновления, или днем раньше.
1
На скриншоте ниже показана разница в списке классов между зараженным и легитимным модулем, используется .NET декомпилятор the ILSpy.
2
Основной класс бэкдора носит имя MeCom, он расположен в пространстве имен ZvitPublishedObjects.Server.
3
Класс MeCom с вредоносным кодом в ILSpy .NET Decompiler.

Методы класса MeCom вызываются из IsNewUpdate в методом UpdaterUtils и ZvitPublishedObjects.Server. Сам метод IsNewUpdate вызывается периодически, чтобы проверять доступны ли новые обновления. Зараженный модуль от 15 мая работает немного иначе и содержит меньше функций, чем модуль от 22 июня.

Каждая организация занимающаяся бизнесом в Украине имеет уникальный код ЕДРПОУ. И это очень важно, так как получив код ЕДРПОУ, можно проводить целенаправленную атаку против конкретной компании или организации. Атакуя изнутри, с компьютера где установлен вредоносный модуль, можно использовать различную тактику нанесения ударов, в зависимости от намерений атакующих.

Поскольку M.E.Doc - это бухгалтерское программное обеспечение, обычно используемое в Украине, можно ожидать, что на компьютерах бухгалтеров, можно без труда обнаружить и коды ЕДРПОУ, даже сразу несколько организаций, так как иногда одна бухгалтерия обслуживает сразу несколько предприятий, и однажды установленный вирус будет знать о всех кодах ЕДРПОУ на этой машине для отправки их злоумышленникам. Следовательно, код, который был введен в метод IsNewUpdate, собирает все значения EDRPOU из данных приложения.
4
Функция, которая собирает коды ЕДРПОУ

Кроме ЕДРПОУ, зловред также собирает настройки прокси-серверов и учетных записей электронной почты, включая логины и пароли зараженного приложения M.E.Doc.

Внимание! Рекомендуется сменить пароли для всех прокси-серверов и учетных записей электронной почты, для всех пользователй программы M.E.Doc!!

Вредоносный код записывает собранную информацию в реестре Windows по адресу HKEY_CURRENT_USER\SOFTWARE\WC, используя имена ключей Cred и Prx. Поэтому, если на вашем компьютере вы найдете подобные ключи в реестре, это может говорить о том, что вашем компьютере произошел запуск вредоносного кода.

И наконец наиболее хитроумная часть. Вредоносный модуль не использовал никаких внешних серверов в качестве управляющих центров. Он пользовался стандартными автоматическими обновлениями приложения от M.E.Doc с официального сервера upd.me-doc.com[.]ua. Единственное отличие от легальных запросов в том, что троянский код отправлял собранную информацию назад на сервер через cookies.
5
HTTP-запрос от зараженного модуля, который содержит ЕДРПОУ в файле cookie.
6
Код бэкдора, который добавляет файлы cookie к запросу.

Эксперты ESET не проводили судебный анализ M.E.Doc сервера. Но есть признаки того, что сервер обновлений был скомпроментирован. Поэтому возникают подозрения, что атакующие смогли подменять сервер обновлений, чтобы различать запросы от зараженных и не зараженных машин и пользоваться этим.

Кроме того злоумышленники добавили способ контроля зараженной машины. Этот код получал бинарные данные с официального сервера обновления M.E.Doc, расшифровывал их алгоритмом Triple Des, распаковывал из GZip, в результате получался XML файл с набором инструкций. Таким образом, этот вредонос превращался в полномасштабную платформу для кибершпионажа и киберсаботажа одновременно.
7
Код бэкдора, который расшифровывает команды входящих вредоносных программ

Таблица возможных команд:
Следует отметить , что именно команда номер 5, названная автором зловреда как «AutoPayload», полностью подходит под то, каким образом изначально распространялся DiskCoder.C на первых зараженных машинах.
8
Метод AutoPayload, который использовался для выполнения шифровальщика DiskCoder.C.

Выводы
Как показывает анализ ESET, это была очень тщательно спланированная и хорошо выполненная операция. Предполагается, что атакующие имели доступ к исходным кодам M.E.Doc. Что у них было достаточно времени чтобы изучить его код и внедрить скрытую уязвимость. Полный размер установочного пакета M.E.Doc — около 1.5 гигабайта, и нет никакой возможности оперативно проверить его на другие закладки и уязвимости.

Все еще остаются вопросы. Как долго этот троян использовался? Какие другие команды, кроме отправки зловредов DiskCoder.C и Win32/Filecoder.AESNI.C были запущены через этот канал? Какие другие атаки могли пройти задолго до текущей ситуации, но остались незамеченными?

Индикаторы угрозы (IoC)
Имена обнаружения ESET:
MSIL / TeleDoor.A

Легитимные серверы, используемые авторами вредоносных программ:
upd.me-doc.com[.]ua

Хеши SHA-1:
7B051E7E7A82F07873FA360958ACC6492E4385DD
7F3B1C56C180369AE7891483675BEC61F3182F27
3567434E2E49358E8210674641A20B147E0BD23C

По материалам: cripo.com.ua