Хабрахабр

Winnti: атака на цепочки поставок – под прицелом азиатские разработчики игр

Не впервые злоумышленники атакуют игровую индустрию, компрометируют разработчиков, добавляют бэкдоры в среду сборки игр, а затем распространяют вредоносное ПО под видом легитимного. В апреле 2013 года «Лаборатория Касперского» сообщала о подобном инциденте. Эта атака приписана кибергруппе, названной Winnti.

Две игры и одна игровая платформа были скомпрометированы для внедрения бэкдора. Недавно внимание специалистов ESET привлекли новые атаки на цепочки поставок. Эти атаки нацелены на Азию и игровую индустрию, за ними снова стоит группа Winnti.

Три кейса, один бэкдор

Несмотря на разные конфигурации вредоносного ПО, три скомпрометированных программных продукта включали один и тот же код бэкдора и запускались с использованием идентичного механизма. Сейчас в двух продуктах бэкдоров нет, но один все еще распространяется в троянизированной версии – по иронии, эта игра называется Infestation («заражение»), ее выпускает тайская компания Electronics Extreme. Мы пытаемся связаться с разработчиком с начала февраля, но пока безрезультатно.

Разберем, как внедряется вредоносная полезная нагрузка, а затем рассмотрим детально бэкдор.

Внедрение полезной нагрузки

Код полезной нагрузки запускается во время выполнения троянизированного исполняемого файла. Сразу после РЕ entry point стандартный вызов инициализации C Runtime (__scrt_common_main_seh на рисунке ниже) перехватывается для запуска вредоносной полезной нагрузки раньше чего-либо еще (рисунок 2). Это может указывать на то, что злоумышленники изменили конфигурацию сборки, а не сам исходный код.

Чистая точка входа в исполняемый файл Рисунок 1.

Точка входа скомпрометированного исполняемого файла Рисунок 2.

Встроенная полезная нагрузка имеет особую структуру, показанную на рисунке ниже, которую интерпретирует добавленный код распаковки. Код, добавленный к исполняемому файлу, расшифровывает и запускает бэкдор в оперативной памяти, прежде чем возобновить нормальное выполнение кода инициализации C Runtime и последующего кода хост-приложения.

Структура встроенной полезной нагрузки Рисунок 3.

В ее составе ключ RC4 (зашифрованный XOR с 0x37), который используется для расшифровки имени файла и встроенного файла DLL.

Вредоносная полезная нагрузка

Фактическая вредоносная полезная нагрузка содержит всего 17 Кбайт кода и данных.

Конфигурация

Данные конфигурации, представленные на рисунке ниже, представляют собой список строк, разделенных пробелами.

Данные конфигурации полезной нагрузки Рисунок 4.

Конфигурация состоит из четырех полей:

  1. URL управляющего C&C-сервера.
  2. Переменная (t), используемая для определения времени ожидания в миллисекундах перед продолжением выполнения. Время ожидания выбирается в диапазоне от 2/3 до 5/3 t случайным образом.
  3. Строка, идентифицирующая кампанию.
  4. Список имен исполняемых файлов, разделенный точкой с запятой. Если какой-либо из них работает, бэкдор останавливает его выполнение.

Мы идентифицировали пять версий полезной нагрузки:

Остальная часть содержимого является побайтовой копией. В первых трех вариантах код не перекомпилирован, но данные конфигурации были отредактированы в самом DLL-файле.

Инфраструктура C&C

Имена доменов выбраны таким образом, чтобы иметь сходство с сайтами разработчиков скомпрометированных приложений. Домен верхнего уровня настроен на перенаправление на соответствующий легитимный сайт с помощью сервиса Namecheap, в то время как субдомен указывает на вредоносный C&C-сервер.

На момент написания поста ни один из доменов не доступен, C&C-серверы не отвечают.

Отчет об исследовании

Идентификатор бота генерируется из МАС-адреса машины. Бэкдор передает на C&C-сервер информацию о машине, включая имя пользователя, имя компьютера, версию Windows и язык системы, а затем ожидает команды. Данные шифруются XOR с помощью ключа “*&b0i0rong2Y7un1” и кодируются base64. Данные, полученные с C&C-сервера, шифруются с использованием того же ключа.

Команды

Простой бэкдор поддерживает только четыре команды, которые могут использоваться атакующими:

DownUrlFile
DownRunUrlFile
RunUrlBinInMem
UnInstall

Они позволяют атакующим запускать дополнительные исполняемые файлы с заданного URL. Названия команд говорят сами за себя.

UnInstall не удаляет вредоносную программу из системы. Возможно, последняя команда менее очевидна. Вместо удаления чего-либо, команда отключает вредоносный код, задавая значение 1 для ключа реестра: В конце концов, она встроена в легитимный исполняемый файл, который еще будет запускаться.

HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\ImageFlag

Возможно, атакующие пытаются снизить нагрузку на свои C&C-серверы, избегая обратных вызовов от жертв, не представляющих интереса. После запуска полезной нагрузки запрашивается значение из реестра и, если оно задано, выполнение отменяется.

Второй этап

По данным телеметрии, одна из полезных нагрузок второго этапа, отправляемых жертвам, Win64/Winnti.BN. Насколько мы можем судить, дроппер этой вредоносной программы загружается через НТТРS с api.goallbandungtravel[.]com. Мы видели, что он устанавливался как служба Windows и как DLL в C:\Windows\System32, используя следующие имена файла:

— cscsrv.dll
— dwmsvc.dll
— iassrv.dll
— mprsvc.dll
— nlasrv.dll
— powfsvc.dll
— racsvc.dll
— slcsvc.dll
— snmpsvc.dll
— sspisvc.dll

Однако это только видимость, поскольку реальный размер или РЕ файл – от 63 до 72 Кбайт, в зависимости от версии. Образцы, которые мы проанализировали, были достаточно большими – около 60 Мбайт. Вероятно, это делает компонент, сбрасывающий и устанавливающий вредоносную службу. К вредоносным файлам просто добавляется множество чистых.

Расшифрованный файл MUI содержит независимый от позиции код со смещением 0. После запуска службы она добавляет к своему пути DLL расширение .mui и расшифровывает его с помощью RC5. Мы не смогли получить ни файлы MUI, ни код, который их устанавливает в первую очередь. Ключ RC5 получен из серийного номера жесткого диска и строки “f@Ukd!rCto R$.”. Таким образом, точное назначение вредоносного сервиса нам неизвестно.

Этот сервер обслуживал последнюю версию файлов MUI, зашифрованных статическим ключом RC5. Последние версии вредоносного ПО включают механизм автообновления с использованием C&C-сервера http://checkin.travelsanignacio[.]com. В ходе нашего исследования этот C&C-сервер не отвечал.

Цели

Начнем с тех, на кого точно не нацелена кампания. В начале полезной нагрузки вредоносная программа проверяет, является ли язык системы русским или китайским (см. на рисунке ниже). В случае положительного ответа программа прекращает работу. Обойти это исключение невозможно – атакующим принципиально не интересны компьютеры с этими языковыми настройками.

Проверка языка до запуска полезной нагрузки Рисунок 5.

Статистика распространения

Согласно телеметрии, большинство заражений пришлось на Азию, прежде всего, Таиланд. С учетом популярности скомпрометированного приложения, которое все еще распространяется разработчиком, неудивительно, если число жертв исчисляется десятками и сотнями тысяч.

Вывод

Атаки на цепочки поставок сложно обнаружить на стороне пользователя. Невозможно проанализировать весь запускаемый софт, а также все рекомендуемые обновления. Пользователь по умолчанию доверяет разработчикам и предполагает, что их файлы не содержат вредоносного кода. Вероятно, именно поэтому несколько кибергрупп нацеливают атаки на поставщиков ПО – компрометация позволит создать ботнет, размер которого сопоставим с популярностью троянизированного софта. У этой тактики есть и обратная сторона – когда схема будет раскрыта, атакующие потеряют контроль над ботнетом, и пользователи смогут очистить систему, установив очередное обновление.

Возможно, атакующие ищут финансовую выгоду или же планируют использовать ботнет как часть более масштабной операции. Мотивы кибергруппы Winnti в настоящий момент неизвестны.

Winnti. Продукты ESET детектируют угрозу как Win32/HackedApp. Winnti. A, Win32/HackedApp. AG, второй этап – как Win64/Winnti. B, полезную нагрузку – как Win32/Winnti. BN.

Индикаторы компрометации доступны по ссылке.

Теги
Показать больше

Похожие статьи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Кнопка «Наверх»
Закрыть