В тени Майкрасофт. Заметки о жизни SpellingSpy.

В тени Майкрасофт. Заметки о жизни SpellingSpy.

В рамках одного из расследований, национальная команда реагирования на компьютерные инциденты выявила уникальное ВПО, которое можно отнести к классу 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».

В тени Майкрасофт. Заметки о жизни SpellingSpy.

Рис.1 Ветвь реестра Spelling с ключами

Поиск по пути реестра HKEY_CLASSES_ROOT объекта NetInformationService.Disclosure, находит системный объект с UID {1FA9A8BA-3F30-3909-BE2A-EF25EC4C9733}.

В тени Майкрасофт. Заметки о жизни SpellingSpy.

Рис.2 Вредоносный COM объект

Код файла реализован в библиотеке CustomTelemetryUpdater.dll

В тени Майкрасофт. Заметки о жизни SpellingSpy.

Рис.3 Библиотека, реализующая вредоносный COM объект

Библиотека разработана под .net платформу версии v4.0.30319.

В тени Майкрасофт. Заметки о жизни SpellingSpy.

Рис.4 Функция Collect

Аргументы функции:

— путь к модулю (модуль может быть получен и через диск);

— имя модуля;

— ключ, для расшифровки данных;

— имя мютекса.

Первым делом библиотека проверяет, запущен ли ещё один экземпляр, с помощью запроса глобального системного объекта — мютекса.

В тени Майкрасофт. Заметки о жизни SpellingSpy.

Рис.5 Фукнция проверки isAlreadyRun

Если путь к модулю (первый аргумент функции), начинается с «HK» при указании куста реестра, то первый аргумент функции указывает на ветку реестра, второй на ключ реестра. В противном случае, путь к модулю считывается как путь к файлу на диске. Содержимое по указанному пути считывается в память. В исследуемом образце:

— HKEY_USERS\.DEFAULT\Software\Microsoft\Spelling — SpellingEngine

Для восстановления основной нагрузки используется операция xor в режиме плавающего окна, ключ передаётся как 3-й аргумент функции. Данный алгоритм шифрования используется далее по всему коду.

В тени Майкрасофт. Заметки о жизни SpellingSpy.

Рис.6 Вызов функции, для запуска основной нагрузки

Основная нагрузка загружается в память через встроенные методы рефлексии платформы .net. Функция для запуска — первая функция из первого модуля в коде. В текущем примере такой функцией является Main. Сборка не имеет явного имени и в память загружается под именем Program. Библиотека же названа SpellingEngine.dll.

Одна из интересных особенностей платформы — ведение лога, с записью информации обо всех исключениях, которые произошли в результате работы программы. Лог, сохраняющий время, функцию в которой произошла ошибка, путь выполнения функции и сообщение об ошибке, записывается в файл C:\\Windows\\System32\\ldr_error.txt.

В тени Майкрасофт. Заметки о жизни SpellingSpy.

Рис.7 Фукнция проверки isAlreadyRun

Анализ модуля SpellingEngine.dll

Имена функции в библиотеке обфусцированы и представляют собой UNICODE строки. Библиотека статически собрана с библиотекой обработки структурированных данных Newtonsoft.

В тени Майкрасофт. Заметки о жизни SpellingSpy.

Рис.8 Функции библиотеки SpellingEngine.

После запуска модуль уходит в сон от 10 минут до 1 часа.

В тени Майкрасофт. Заметки о жизни SpellingSpy.

Рис.9 Устанавливаемая пауза.

Для проверки доступности глобальной сети модуль отправляет dns запрос на доменное имя microsoft.com. Если функция завершилась без исключений, то программа считает, что сеть доступна. Если было сделано более 5 не удачных попыток резолва доменого имени, то модуль завершает работу с записью в лог «No internet».

В тени Майкрасофт. Заметки о жизни SpellingSpy.

Рис.10 Функция проверки сети.

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

В тени Майкрасофт. Заметки о жизни SpellingSpy.

Рис.11 Функция получения дополнительного модуля.

Аргументы функции, прописаные в коде, следующие:

  • Идентификатор пользователя;
  • Стандартный токен пользователя , указано значение: «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.

В тени Майкрасофт. Заметки о жизни SpellingSpy.

Рис.12 Функция получения токена аутификации.

Новый токен аутификации помещается в реестр, а ключ 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 о пользователях, группах и приложениях.

В тени Майкрасофт. Заметки о жизни SpellingSpy.

Рис.13 Функция отправки данных, на ресурсы microsoft

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

В тени Майкрасофт. Заметки о жизни SpellingSpy.

Рис.14 Проверка поле subject

Если все проверки пройдены успешно, то модуль забирает прикреплённые данные.

В тени Майкрасофт. Заметки о жизни SpellingSpy.

Рис.15 Получение нового модуля с graph.microsoft.com

Если попытка скачать новый код успешна, то следующим этапом происходит удаление вложения с ресурса graph.microsoft.com, а также удаление события, совместно с новым модулем.

В тени Майкрасофт. Заметки о жизни SpellingSpy.

Рис.16 Функция удаления события.

Надо отметить, что подобный метод впервые был обнаружен в блоге RedSiege в январе 2024 года.

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

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

В ходе исследования удалось получить и проанализировать 3 дополнительных модуля для SpellingEngine:

  • Модуль сбора данных из прикладного приложения организации;
  • Модуль Сurl — отправка http запроса на указанный веб-ресурс, конечная точка, указана прописана в код.
  • Модуль TcpPortScan — проверка доступности подсети по группе портов, подсети и список портов указан в коде модуля.

Результат работы модуля так же отправляется на ресурс graph.microsoft.com в виде зашифрованного zip архива. Информация о результате работы вспомогательного модуля делится по трем категориям:

  • Информация об ошибках;
  • Информация об аргументах, с которым запускались вспомогательные модули;
  • Информация о результатах работы вспомогательных модулей.
В тени Майкрасофт. Заметки о жизни SpellingSpy.

Рис.17 Функция удаления события.
В тени Майкрасофт. Заметки о жизни SpellingSpy.

Рис.18 Функция отправки результатов работы.

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

Вывод

Используемые техники и тактики, согласно матрице 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.

Для удобства и своевременного оповещения о новостях подписывайтесь на нас в социальных сетях: