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

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

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

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

    Цели


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



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

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


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



    Вывод


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

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

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

    Индикаторы компрометации доступны по ссылке.
    ESET NOD32
    135,00
    Компания
    Поделиться публикацией

    Похожие публикации

    Комментарии 0

    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

    Самое читаемое