В рамках одного из расследований, национальная команда реагирования на компьютерные инциденты выявила уникальное ВПО, которое можно отнести к классу SpyWare с возможностью предоставления удалённого доступа к атакованной инфраструктуре. Обнаружить зараженную систему непросто — программа использует легитимный ресурс, для получения нагрузки и отправки результата, а саму основную нагрузку выполняет в памяти, что позволяет затруднить механизм нахождения и получения модулей расширения функционала.
Список признаков заражения
Сервера управления:
login.live.com*
graph.microsoft.com*
Имена процессов:
wscript.exe*
*Данные признаки являются слабыми, и требуют дополнительной проверки, по другим признакам.
Имена файлов:
— %systemroot%\CustomTelemetryUpdater.dll
— %systemroot%\NetworkProtectionEx.vbs
— %systemroot%\System32\ldr_error.txt
Ветки реестра:
— HKEY_CLASSES_ROOT\NetInformationService.Disclosure
— HKEY_CLASSES_ROOT\{1FA9A8BA-3F30-3909-BE2A-EF25EC4C9733}
— HKEY_USERS\.DEFAULT\Software\Microsoft\Spelling с ключами
SpellingEngine
SpellingToken
Задача:
-Microsoft\Windows\NetworkAccessProtection\NetworkAccessProtectionEx
md5 655c9592bca3edf13ce4ec0a195f5a86
sha1 182347d581526b26d3a066a13e85a18677f5df66
sha256 ae90b28cac733d01b2c11c6c29db280789682c0edb50a9c9e49a854f50bee8eb
ssddeep 96:C4yTf2OrFbiM0btBgRSGdlFNRe9qtOw2:P0ZPogxXG
Подробности расследования и детектирования ВПО
Изначально в ходе нашего анализа в системной директории были зафиксированы подозрительные файлы «CustomTelemetryUpdater.dll» и «NetworkProtectionEx.vbs». Точный способ добавления файлов в систему установить не удалось. Согласно логам файловой системы, объекты были добавлены не позднее 2023-04-24.
Файл с расширением .vbs содержал код:
«CreateObject(«NetInformationService.Disclosure»).Collect «HKEY_USERS\.DEFAULT\Software\Microsoft\Spelling», «SpellingEngine», «18362a49-34c7-4ddd-902a-b2d6fca45410», «e260b05e-af4b-4282-8b13-0637f9c4f2a5″»
Что явно указывает на создание системного объекта типа «NetInformationService.Disclosure», и вызов метода Collect с передачей ряда аргументов.
Указанная ветка реестра присутствует в некоторых версиях ОС. В исследуемом образце туда было добавлено два ключа: «SpellingEngine» и «SpellingToken».
Поиск по пути реестра HKEY_CLASSES_ROOT объекта NetInformationService.Disclosure, находит системный объект с UID {1FA9A8BA-3F30-3909-BE2A-EF25EC4C9733}.
Код файла реализован в библиотеке CustomTelemetryUpdater.dll
Библиотека разработана под .net платформу версии v4.0.30319.
Аргументы функции:
— путь к модулю (модуль может быть получен и через диск);
— имя модуля;
— ключ, для расшифровки данных;
— имя мютекса.
Первым делом библиотека проверяет, запущен ли ещё один экземпляр, с помощью запроса глобального системного объекта — мютекса.
Если путь к модулю (первый аргумент функции), начинается с «HK» при указании куста реестра, то первый аргумент функции указывает на ветку реестра, второй на ключ реестра. В противном случае, путь к модулю считывается как путь к файлу на диске. Содержимое по указанному пути считывается в память. В исследуемом образце:
— HKEY_USERS\.DEFAULT\Software\Microsoft\Spelling — SpellingEngine
Для восстановления основной нагрузки используется операция xor в режиме плавающего окна, ключ передаётся как 3-й аргумент функции. Данный алгоритм шифрования используется далее по всему коду.
Основная нагрузка загружается в память через встроенные методы рефлексии платформы .net. Функция для запуска — первая функция из первого модуля в коде. В текущем примере такой функцией является Main. Сборка не имеет явного имени и в память загружается под именем Program. Библиотека же названа SpellingEngine.dll.
Одна из интересных особенностей платформы — ведение лога, с записью информации обо всех исключениях, которые произошли в результате работы программы. Лог, сохраняющий время, функцию в которой произошла ошибка, путь выполнения функции и сообщение об ошибке, записывается в файл C:\\Windows\\System32\\ldr_error.txt.
Анализ модуля SpellingEngine.dll
Имена функции в библиотеке обфусцированы и представляют собой UNICODE строки. Библиотека статически собрана с библиотекой обработки структурированных данных Newtonsoft.
После запуска модуль уходит в сон от 10 минут до 1 часа.
Для проверки доступности глобальной сети модуль отправляет dns запрос на доменное имя microsoft.com. Если функция завершилась без исключений, то программа считает, что сеть доступна. Если было сделано более 5 не удачных попыток резолва доменого имени, то модуль завершает работу с записью в лог «No internet».
После предварительных проверок, вызывается основная функция модуля — получение основной нагрузки и загрузка ее в память.
Аргументы функции, прописаные в коде, следующие:
- Идентификатор пользователя;
- Стандартный токен пользователя , указано значение: «M.C106_BL2.-CQlVWpmmnpBiWuz2FgQb06!esU8WQB!»;
- User-Agent http, указано значение: «Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.131 Safari/537.36 Edg/92.0.902.67»;
- Уникальная строка, для первой попытки: kjashdbciawyebckagevcuatwevca, для второй попытки: mdxnfbvksdhfbvoayerbcaubciawe;
- Ветвь реестра, указано значение: «HKEY_USERS\\.DEFAULT\\Software\\Microsoft\\Spelling»;
- Ключ реестра, указано значение: «SpellingToken».
Основная функция модуля получает значение записанное в ключе SpellingToken, если информация в данном ключе отсутствует, ПО создаёт его и записывает стандартное значение, переданное в 3-м аргументе.
Следующий этап — получение токена аутификации OAuth2.0, для доступа к ресурсам Microsoft, происходит по средству отправки POST-запроса на https://login.live.com/oauth20_desktop.srf.
Новый токен аутификации помещается в реестр, а ключ SpellingToken используется далее, для отправки запросов на ресурсы Microsoft, а именно на https://graph.microsoft.com/v1.0/me/calendars.
Согласно официальной документации Microsoft, данная технология используется в платформе Microsoft 365, для синхронизации общих событий в группе пользователей. API Graph предоставляет методы для доступа к данным и управления ими в экосистеме Microsoft и используется для отправки запросов на сайт graph.microsoft.com. Сюда входят такие сервисы, как сообщения Microsoft Teams, файлы SharePoint и OneDrive, электронные письма Outlook, а также данные Azure о пользователях, группах и приложениях.
Модуль проверяет тему событий, по уникальным строкам, записанным в коде, и передает их в основную функцию четвертым аргументом.
Если все проверки пройдены успешно, то модуль забирает прикреплённые данные.
Если попытка скачать новый код успешна, то следующим этапом происходит удаление вложения с ресурса graph.microsoft.com, а также удаление события, совместно с новым модулем.
Надо отметить, что подобный метод впервые был обнаружен в блоге RedSiege в январе 2024 года.
Новый код расшифровывается по указанному выше алгоритму, а в качестве ключа используется идентификатор события. Основная функция загрузчика завершает свою работу, и возвращает код дополнительного модуля.
Библиотека SpellingEngine находит первый метод, из первого класса внутри нового исполняемого кода, и запускает эту функцию.
В ходе исследования удалось получить и проанализировать 3 дополнительных модуля для SpellingEngine:
- Модуль сбора данных из прикладного приложения организации;
- Модуль Сurl — отправка http запроса на указанный веб-ресурс, конечная точка, указана прописана в код.
- Модуль TcpPortScan — проверка доступности подсети по группе портов, подсети и список портов указан в коде модуля.
Результат работы модуля так же отправляется на ресурс graph.microsoft.com в виде зашифрованного zip архива. Информация о результате работы вспомогательного модуля делится по трем категориям:
- Информация об ошибках;
- Информация об аргументах, с которым запускались вспомогательные модули;
- Информация о результатах работы вспомогательных модулей.
Стоит отметить, что в функции отправки данных, предусмотрена отправка больших файлов.
Вывод
Используемые техники и тактики, согласно матрице Mitre, по основному коду и полученным модулям:
— Выполнения:
Использование Visual Basic https://attack.mitre.org/techniques/T1059/005/
— Закрепление:
Создание плановой задачи https://attack.mitre.org/techniques/T1053/005/
— Обход методов защиты:
Рефлексивная загрузка кода https://attack.mitre.org/techniques/T1620/
— Сбор данных:
Использование уязвимости в приложении https://attack.mitre.org/techniques/T1212/
— Получение информации о связных хостах:
Сетевое сканирование https://attack.mitre.org/techniques/T1046/
— Методы управления
Использование веб-протокола https://attack.mitre.org/techniques/T1071/001/
— Методы сокрытия трафика
Использование легитимного веб-ресурса для обмена текстовыми сообщениями https://attack.mitre.org/techniques/T1567/003/
В связи со всем вышеперечисленным CERT.BY рекомендует придерживаться следующих правил:
- Остерегайтесь любых электронных писем, пытающихся заставить Вас открывать вложения или переходить по ссылкам.
- Обращайте внимание на письма, отправителями которых являются лица или организации, от которых Вы обычно не получаете письма.
- Будьте осторожны с электронными письмами организаций, с которыми вы регулярно общаетесь.
Также рекомендуем провести проверку информационных систем и персональных компьютеров на наличие вышеуказанных признаков. А также следовать за нашими рекомендациями и обновлениями.
При обнаружении, просим сообщить на support@cert.by.
Для удобства и своевременного оповещения о новостях подписывайтесь на нас в социальных сетях: