Кибергруппировка LuckyMouse подписала вредоносный драйвер сертификатом китайской IT-компании

Что произошло?

За последние полгода мы обнаружили несколько случаев заражения, в ходе которых в память системного процесса lsass.exe был внедрен ранее неизвестный троянец. Импланты были внедрены посредством 32- и 64-битных версий драйвера, которому атакующие дали название NDISProxy, и который также отвечает за фильтрацию сетевого трафика. Интересно, что этот драйвер был подписан цифровым сертификатом, принадлежащим китайской компании LeagSoft, занимающейся разработкой ПО для обеспечения информационной безопасности. Мы сообщили компании о случившемся через китайскую группу реагирования на инциденты CN-CERT.

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

Какие вредоносные модули используются?

Зловред состоит из трех разных модулей:

  • Кастомный инсталлятор, написанный на C++, который расшифровывает и записывает файл драйвера в соответствующую системную директорию. Установщик добавляет драйвер в автозапуск Windows, а зашифрованное тело троянца — в системный реестр.
  • Драйвер (NDISProxy), который помимо фильтрации сетевого трафика на 3389 порту (Remote Desktop Protocol, RDP) отвечает еще и за расшифровку троянца и его внедрение в память.
  • Написанный также на С++ троянец для удаленного управления зараженными машинами. Запускает HTTP-сервер и работает вместе с драйвером: пассивно ждет сообщений со своего C&C по двум возможными каналам коммуникации — через порты 3389 (RDP) и 443 (HTTPS).

После установки модулей драйвер NDISProxy и RAT в памяти работают совместно

Перечисленные модули позволяют злоумышленникам незаметно перемещаться по зараженной инфраструктуре, но работа троянца в качестве HTTP-сервера имеет для них один недостаток. Если у вновь зараженного хоста есть только локальный IP-адрес, а выход во внешнюю сеть организован, например, через NAT, то командный сервер не сможет обратить к нему.

Чтобы решить эту проблему операторы использовали известный инструмент SOCKS-туннелирования Earthworm для обеспечения связи между зараженным хостом в LAN и C&C. Они также использовали сетевой сканер Scanline для нахождения общих файловых ресурсов (порт 135, блок серверных сообщений (SMB)). Для доступа к общим папкам и распространения через них вредоносного ПО использовались в том числе и клавиатурные шпионы.

Что касается авторов вредоносов, то мы практически уверены, что NDISProxy — новый инструмент группы LuckyMouse. Описанные находки детектируются продуктами «Лаборатории Касперского». Чтобы получить подробную информацию, обращайтесь по адресу intelreports@kaspersky.com.

Как распространяется угроза?

По состоянию на конец марта 2018 г., мы наблюдали распространение 32-битного дроппера, используемого в этой кампании, среди различных целей. При этом мы не видели никакой спирфишинговой и watering-hole активности. Поэтому полагаем, что операторы кампании на этот раз обошлись без социальной инженерии и скорее всего находили использовали уязвимости, обнаруженные в сетевой инфраструктуре жертв.

Как работает зловред

Кастомный инсталлятор

MD5-хэш инсталлятора Временная метка (GMT) Размер Битность
dacedff98035f80711c61bc47e83b61d 2018.03.29 07:35:55 572 244 32
9dc209f66da77858e362e624d0be86b3 2018.03.26 04:16:00 572 244 32
3cbeda2c5ac41cca0b0d60376a2b2511 2018.03.26 04:16:00 307 200 32

Начальные «инфекторы» — это 32-битные исполняемые файлы формата Portable Executable (PE), способные устанавливать 32- или 64-битные драйверы, в зависимости от битности заражаемой системы. Инсталлятор ведет журнал всех шагов процесса инсталляции в файле load.log в той же директории. Он проверяет ОС на заражаемой системе: если это Windows Vista или выше, то он расшифровывает свою начальную конфигурацию при помощи алгоритма Data Encryption Standard (DES).

В конфигурации упоминается, но в дальнейшем не используется набор широко известных номеров портов (HTTP, HTTPS, SMB, POP3S, MSSQL, PPTP и RDP). Кроме того, в отладочных сообщениях попадается строка «[test]». Исходя из этого можно предположить, что зловред еще находится в разработке.

Инсталлятор создает «семафор», имя которого задается в конфигурации, и проверяет, установлена ли уже служба (имя сервиса также зависит от конфигурации). Если это так, то дроппер записывает в файле load.log строку «door detected». Соответственно, в терминах разработчиков, «door» — это служба, установленная в режим автозапуска и запускающая NDISProxy.

Кроме того, инсталлятор расшифровывает (используя тот же DES) шелл-код троянца и сохраняет его тело в трех значениях реестра с названиями xxx0, xxx1, xxx2 в ключе ветки HKLM\SOFTWARE\Classes\. Зашифрованная же конфигурация сохраняется в ключе реестра HKCR\.


Начальный инсталлятор сохраняет в системный реестр шеллкод троянца, зашифрованный операцией XOR, и конфигурацию, зашифрованную алгоритмом DES

Инсталлятор создает соответствующую службу автозапуска и ключи реестра.

Драйвер фильтрации сетевого трафика NDISProxy

MD5-хэш драйвера Временная метка Размер Битность
8e6d87eadb27b74852bd5a19062e52ed 2018.03.29 07:33:58 40400 64
d21de00f981bb6b5094f9c3dfa0be533 2018.03.29 07:33:52 33744 32
a2eb59414823ae00d53ca05272168006 2018.03.26 04:15:28 40400 64
493167e85e45363d09495d0841c30648 2018.03.26 04:15:21 33744 32
ad07b44578fa47e7de0df42a8b7f8d2d 2017.11.08 08:04:50 241616 64

Драйвер с цифровой подписью — самый интересный артефакт этой кампании. Модули фильтрации трафика на 3389 порту выполняют и вторую цель: расшифровывают и производят инъекцию инструмента удаленного администрирования.

Драйверы подписаны цифровым сертификатом, выпущенным VeriSign для LeagSoft — это компания-разработчик ПО, в частности она разрабатывает решения для защиты от утечек данных. Это не первая компания-разработчик ПО, сертификаты которой оказались у LuckyMouse.

В драйвере широко используется сторонний общедоступный исходный код, написанный на С.

Функция Публичное хранилище
Внедрение драйвером кода в память Blackbone https://github.com/DarthTon/Blackbone
NDIS, драйвер фильтрации сетевого трафика Образец кода Microsoft Windows Driver Kit (WDK) «Windows Filtering Platform Stream Edit Sample/C++/sys/stream_callout.c»
Парсинг HTTP пакетов Http-parser https://github.com/nodejs/http-parser

Драйвер опять проверяет, что версия Windows не ниже, чем Vista, затем создает устройство с именем \\Device\\ndisproxy-%s (где слово после «-» может быть разным — см. все варианты в Приложении) и его соответствующую символическую ссылку \\DosDevices\\Global\\ndisproxy-%s.

Драйвер собирает все три значения из реестра, связанные с телом троянца, и расшифровывает их операцией XOR с жестко заданным шестибайтовым значением. Получившийся в результате исполняемый шеллкод троянца драйвер внедряет в память процесса lsass.exe с помощью функций библиотеки Blackbone.

NDISProxy работает как движок фильтрации сетевого трафика через RDP-порт. Коммуникация между троянцем, находящимся в оперативной памяти и исполняющимся в пользовательском режиме, и драйвером происходит через кастомные управляющие коды, используемые API-функцией Windows DeviceIoControl(). Кроме вспомогательных есть два кода, о которых следует упомянуть:

Управляющий код драйвера Значение
0x222400 Начать фильтрацию трафика через RDP-порт 3389.
0x22240C Внедрить предоставленные данные в фильтруемый TCP-поток. Используется для коммуникации троянца с командным сервером.

C++ троянец, находящийся в памяти

SHA256 c69121a994ea8ff188510f41890208625710870af9a06b005db817934b517bc1
MD5 6a352c3e55e8ae5ed39dc1be7fb964b1
Скомпилирован 2018.03.26 04:15:48 (GMT)
Тип I386 Windows GUI DLL
Размер 175 616

Обратите внимание: этот троянец существует только в памяти. Данные, приведенные выше, относятся к расшифрованному содержимому реестра Windows.

Инструмент удаленного администрирования расшифровывается драйвером NDISProxy из системного реестра и внедряется в память процесса lsass.exe. Троянец является полноценным инструментом удаленного администрирования, способным выполнять такие общие задачи, как выполнение команды и загрузка/обновление файлов. Это реализуется через пару десятков C++ классов, таких как CMFile, CMFile, CMProcess, TFileDownload, TDrive, TProcessInfo, TSock и т.д. Кастомный инсталлятор первого этапа использует те же классы. Троянец использует API-интерфейс HTTP-Server для фильтрации HTTPS-пакетов, проходящих через порт 443, и парсинга команд.

Троянец выступает HTTP-сервером и ждет сообщений от C&C. Операторы также использовали SOCKS-туннели для коммуникаций с внешним C&C

Этот троянец используется злоумышленниками для сбора данных жертвы, распространения по локальной сети и создания SOCKS-туннелей к своим командным серверам при помощи инструмента туннелирования Earthworm (этот инструмент общедоступен и популярен среди китаеязычных хакеров. Учитывая, что троянец сам является HTTP-сервером, мы полагаем, что SOCKS-туннель используется для связи с жертвами без внешних IP-адресов.

Автор и цели вредоносной кампании

Мы обнаружили, что данная вредоносная кампания нацелена на государственные учреждения стран Средней Азии. Мы полагаем, что атака была узконаправленной и связана со встречей на высоком уровне. С высокой долей вероятности за этой новой вредоносной кампанией стоит китаеязычная группа LuckyMouse. В частности, для китаязычных хакеров типичен выбор инструмента туннелирования Earthworm. Также, одна из используемых злоумышленниками команд («-s rssocks -d 103.75.190[.]28 -e 443») создает туннель к уже известному командному серверу LuckyMouse. Выбор жертв в данной кампании также соотносится с интересами, которые ранее демонстрировала эта группа.

Общие выводы

В последнее время мы наблюдаем следующую тенденцию: китаеязычные хакерские группы постепенно переходят к использованию сочетания общедоступных инструментов (таких как Metasploit или CobaltStrike) и кастомных зловредов (типа описанного здесь C++-троянца последнего этапа — инструмента удаленного администрирования). Также мы заметили, что различные кибергруппировки на регулярной основе принимают на вооружение код с репозиториев GitHub). В совокупности все это усложняет атрибуцию.

По всей видимости, описанная кампания вновь демонстрирует интерес LuckyMouse к Центральной Азии и к политической повестке вокруг ШОС.

Индикаторы заражения

Примечание. Индикаторы, приведенные в данном разделе, действительны на момент публикации. Будущие изменения будут отражены непосредственно в соответствующем .ioc-файле.

Хэш-суммы файлов

Дропперы-инсталляторы
9dc209f66da77858e362e624d0be86b3
dacedff98035f80711c61bc47e83b61d

Драйверы
8e6d87eadb27b74852bd5a19062e52ed
d21de00f981bb6b5094f9c3dfa0be533
a2eb59414823ae00d53ca05272168006
493167e85e45363d09495d0841c30648
ad07b44578fa47e7de0df42a8b7f8d2d

Вспомогательные программы: инструмент SOCKS-туннелирования Earthworm и сетевой сканер Scanline

83c5ff660f2900677e537f9500579965
3a97d9b6f17754dcd38ca7fc89caab04

Домены и IP-адреса
103.75.190[.]28
213.109.87[.]58

Семафоры

Global\Door-ndisproxy-mn
Global\Door-ndisproxy-help
Global\Door-ndisproxy-notify

Сервисы

ndisproxy-mn
ndisproxy-help
ndisproxy-notify

Ключи и значения реестра

HKLM\SOFTWARE\Classes\32ndisproxy-mn
HKLM\SOFTWARE\Classes\64ndisproxy-mn
HKCR\ndisproxy-mn\filterpd-ndisproxy-mn
HKLM\SOFTWARE\Classes\32ndisproxy-help
HKLM\SOFTWARE\Classes\64ndisproxy-help
HKCR\ndisproxy-mn\filterpd-ndisproxy-help
HKLM\SOFTWARE\Classes\32ndisproxy-notify
HKLM\SOFTWARE\Classes\64ndisproxy-notify
HKCR\ndisproxy-mn\filterpd-ndisproxy-notify

Сертификат драйвера

Указанным ниже сертификатом подписано множество легитимных продуктов LeagSoft. Не следует считать все подписанные им файлы вредоносными.

Владелец ShenZhen LeagSoft Technology Co.,Ltd.
Серийный номер 78 62 07 2d dc 75 9e 5f 6a 61 4b e9 b9 3b d5 21
Издатель VeriSign Class 3 Code Signing 2010 CA
Годен до 2018-07-19

Публикации на схожие темы

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

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