Что произошло?
За последние полгода мы обнаружили несколько случаев заражения, в ходе которых в память системного процесса lsass.exe был внедрен ранее неизвестный троянец. Импланты были внедрены посредством 32- и 64-битных версий драйвера, которому атакующие дали название NDISProxy, и который также отвечает за фильтрацию сетевого трафика. Интересно, что этот драйвер был подписан цифровым сертификатом, принадлежащим китайской компании LeagSoft, занимающейся разработкой ПО для обеспечения информационной безопасности. Мы сообщили компании о случившемся через китайскую группу реагирования на инциденты CN-CERT.
Описываемая вредоносная кампания была активна непосредственно перед встречей центральноазиатских политиков на высоком уровне, и мы полагаем, что злоумышленники следовали политической повестке.
Какие вредоносные модули используются?
Зловред состоит из трех разных модулей:
- Кастомный инсталлятор, написанный на C++, который расшифровывает и записывает файл драйвера в соответствующую системную директорию. Установщик добавляет драйвер в автозапуск Windows, а зашифрованное тело троянца — в системный реестр.
- Драйвер (NDISProxy), который помимо фильтрации сетевого трафика на 3389 порту (Remote Desktop Protocol, RDP) отвечает еще и за расшифровку троянца и его внедрение в память.
- Написанный также на С++ троянец для удаленного управления зараженными машинами. Запускает HTTP-сервер и работает вместе с драйвером: пассивно ждет сообщений со своего C&C по двум возможными каналам коммуникации — через порты 3389 (RDP) и 443 (HTTPS).
Перечисленные модули позволяют злоумышленникам незаметно перемещаться по зараженной инфраструктуре, но работа троянца в качестве 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\.
Инсталлятор создает соответствующую службу автозапуска и ключи реестра.
Драйвер фильтрации сетевого трафика 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, и парсинга команд.
Этот троянец используется злоумышленниками для сбора данных жертвы, распространения по локальной сети и создания 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 |
Кибергруппировка LuckyMouse подписала вредоносный драйвер сертификатом китайской IT-компании