Исследователи ESET обнаружили новую группу кибершпионажа, имеющую своей целью отели, правительства и частные компании по всему миру. Мы назвали ее FamousSparrow и полагаем, что она ведет свою активность по крайней мере с 2019 года.

Изучая данные телеметрии в ходе нашего расследования, мы обнаружили, что FamousSparrow использовал уязвимости Microsoft Exchange, известные как ProxyLogon, которые мы подробно описали в марте 2021 г. Напоминаем, что эта уязвимость удаленного выполнения кода использовалась более чем 10 группами ППУ для захвата почтовых серверов Exchange по всему миру. По данным телеметрии ESET, FamousSparrow начал использовать уязвимости 3 марта 2021 г., на следующий день после выпуска патча, так что это еще одна группа ППУ, которая имела доступ к уязвимости удаленного выполнения кода ProxyLogon в марте 2021 года.

В этом посте мы обсудим атрибуцию группе FamousSparrow и ее виктимологию. Затем последует подробный технический анализ основного бэкдора группы, который мы назвали SparrowDoor.

Примечание об атрибуции

FamousSparrow — группа, которую мы рассматриваем как единственного текущего пользователя настраиваемого бэкдора SparrowDoor (о котором мы подробно расскажем в следующих разделах поста). Она также использует две пользовательские версии Mimikatz (см. раздел Индикаторы угрозы), который можно использовать для установления связи инцидентов с данной группой.

Хотя мы считаем FamousSparrow отдельной сущностью, мы обнаружили связи с другими известными группами ППУ. В одном случае злоумышленники использовали вариант Motnug, который представляет собой загрузчик, используемый в SparklingGoblin. В другом случае на машине, взломанной FamousSparrow, мы обнаружили работающий Metasploit с cdn.kkxx888666[.]com в качестве C&C сервера. Этот домен относится к группе, известной как DRDControl.

Виктимология

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

  • Бразилия
  • Буркина-Фасо
  • Южная Африка
  • Канада
  • Израиль
  • Франция
  • Гватемала
  • Литва
  • Саудовская Аравия
  • Тайвань
  • Таиланд
  • Великобритания

Рис. 1. Географическое распределение целей FamousSparrow

Вектор угроз

В некоторых случаях нам удалось найти исходный вектор компрометации, используемый FamousSparrow, и эти системы стали доступны через уязвимые веб-приложения, подключенные к интернету. Мы полагаем, что FamousSparrow использовал знакомые уязвимости удаленного выполнения кода в Microsoft Exchange (включая ProxyLogon в марте 2021 года), Microsoft SharePoint и Oracle Opera (бизнес-программное обеспечение для управления отелями), которые использовались для скидывания различных вредоносных образцов.

После взлома сервера злоумышленники развертывают несколько настраиваемых инструментов:

  • A Mimikatz variant

  • Вариант Mimikatz
  • Небольшая утилита, которая скидывает ProcDump на диск и использует его для дампа процесса lsass, вероятно, для сбора секретных сведений на памяти, таких как учетные данные
  • Nbtscan, сканер NetBIOS
  • Загрузчик для бэкдора SparrowDoor

С помощью нашей телеметрии мы смогли восстановить только компонент загрузчика (SHA-1: E2B0851E2E281CC7BCA3D6D9B2FA0C4B7AC5A02B). Мы также нашли очень похожий загрузчик на VirusTotal (SHA-1: BB2F5B573AC7A761015DAAD0B7FF03B294DC60F6), который позволил нам найти недостающие компоненты, включая SparrowDoor.

SparrowDoor

Загрузчик

Первоначально SparrowDoor загружается посредством перехвата порядка поиска DLL с использованием трех элементов — легитимного исполняемого файла K7 Computing (Indexer.exe), используемого в качестве хоста для перехвата DLL, вредоносной DLL (K7UI.dll) и зашифрованного шелл-кода (MpSvc.dll) — все из них сброшены в %PROGRAMDATA%Software. Можно предположить, что аргумент командной строки, использованный при первоначальном выполнении SparrowDoor для настройки постоянства, является либо ничем, либо чем-то кроме -i, -k или -d (функции этих трех аргументов будут объяснены ниже). Как только постоянство настроено, SparrowDoor запускается с аргументом командной строки -i. Ознакомьтесь с Рисунком 2 для краткого обзора процесса начальной загрузки. Продолжайте читать, если вы желаете подробно изучить данный процесс!

Рисунок 2. Развертка SparrowDoor

Настоящий исполняемый файл Indexer.exe требует для работы библиотеку K7UI.dll. Поэтому ОС ищет файл DLL в каталогах в заданном порядке загрузки. Поскольку каталог, в котором хранится файл Indexer.exe, имеет наивысший приоритет в порядке загрузки, он может быть перехвачен порядком поиска DLL. Именно так и загружается вредоносное ПО. Indexer.exe загружает вредоносный K7UI.dll, который, в свою очередь, патчит код в Indexer.exe (с call WinMain на jmp K7UI.0x100010D0), а затем возвращается в Indexer.exe. В результате Indexer.exe завершает выполнение подпрограммы в K7UI.dll (расположенной в разделе .text) вместо вызова WinMain. Мы будем называть эту подпрограмму средством запуска. Функционал средства запуска заключается в загрузке MpSvc.dll (зашифрованный шелл-код) в память из каталога, в котором также хранится Indexer.exe, расшифровать содержимое и затем выполнить шелл-код.

Шелл-код (MpSvc.dll) зашифрован с использованием четырехбайтовой операции XOR с ключом, являющимся первыми четырьмя байтами файла.

Шелл-код MpSvc.dll загружает различные библиотеки, отвечающие за построение структуры PE, и определяет адреса используемых функций. После этого он выделяет RWX-память и копирует в нее различные места шелл-кода (для построения PE-структуры). Он также решает импорт нескольких функций из разных библиотек. И наконец, он запускает из точки входа созданный бэкдор PE. Примечательно, что данный восстановленный исполняемый образ не имеет заголовков PE, что показано на Рисунке 2, поэтому загрузчик выполняет бэкдор, перескакивая к точке входа с жестко заданным смещением в выделенной памяти.

Рисунок 3. Заголовок PE отсутствует во вновь созданном бэкдоре из шелл-кода MpSvc.dll.

Бэкдор

Аргументы, передаваемые в бэкдор, наследуются от аргументов, переданных в Indexer.exe или в любой другой двоичный файл, который получает введенный шелл-код/бэкдор. Задачи, выполняемые бэкдором после указания аргумента, отражены в Таблице 1.

Таблица 1. Действия, выполняемые на основе аргументов командной строки, предоставленных SparrowDoor

Argument Action
Нет аргумента или он не соответствует следующему Постоянство устанавливается с помощью ключа запуска реестра и службы, которая создается и запускается с использованием данных конфигурации (описанных в следующем разделе), жестко закодированных в двоичном файле. Наконец, бэкдор перезапускается с помощью ключа -i.
-i Бэкдор перезапускается ключом -k.
-k Интерпретатор бэкдора (описанный ниже) вызывается с помощью аварийного выключателя.
-d Интерпретатор бэкдора вызывается без аварийного выключателя.

Примечание:

1) Переключатель уничтожения дает бэкдору право удалить или перезапустить SparrowDoor.

2) Интерпретатор бэкдора вызывается независимо от используемого аргумента, т. к. он всегда в конечном итоге будет иметь аргумент -k или -d.

Данные конфигурации

Конфигурация находится в двоичном файле и расшифровывается с помощью многобайтового XOR-ключа ^&32yUgf. Конфигурация имеет следующий формат:

1234567891011 struct config{char domain[64]; char user [64]; char pass[64]; char ip[64]; char port[2]; char serviceName[64]; char serviceDisplayName[128]; char serviceDescription[128];};

Расшифрованные значения приведены в Таблице 2.

Таблица 2. Пары «ключ-значение» конфигурации вместе с описанием их назначения.

Ключ Значение Назначение
domain credits.offices-analytics[.]com Домен C&C сервера
user пользователь Настройки прокси, используемые для подключения к C&C серверу
pass пароль
ip 127.1.1.1
port 8080
serviceName WSearchIndex Информация, используемая для создания службы для настройки постоянства. Также обратите внимание, что serviceName используется в качестве имени значения в разделе ключа запуска реестра.
serviceDisplayName Индекс поиска Windows
serviceDescription Обеспечивает индексацию содержимого, кэширование свойств и результаты поиска файлов, электронной почты и другого содержимого.

Соединения могут быть либо через прокси, либо нет, и подключаются к серверу C&C через порт 443 (HTTPS). Поэтому связь должна быть зашифрована с использованием TLS. Во время первой попытки связаться с C&C сервером SparrowDoor проверяет, можно ли установить соединение без использования прокси, и если нет, то данные отправляются через прокси. Все исходящие данные шифруются с помощью XOR-ключа hH7@83#mi, а все входящие данные дешифруются с помощью XOR-ключа h*^4hFa. Данные имеют структуру, которая начинается с Идентификатора команды, после чего следует длина последующих зашифрованных данных, а затем — зашифрованные данные.

Рисунок 4 отображает пример того, как данные отправляются на C&C сервер (в данном случае он отправляет системную информацию), а Рисунок 5 — форму открытого текста той же полезной нагрузки данных.

Рисунок 4. Скриншот Wireshark, показывающий данные, отправленные бэкдором.

Рисунок 5. Расшифрованные данные, содержащие системную информацию

Victim’s local IP address in this case can be converted to decimal, giving 192.168.42.1.

Локальный IP-адрес жертвы в этом случае можно преобразовать в десятичное число, получив 192.168.42.1.

Идентификатор сессии — это идентификатор сеанса Службы удаленных рабочих столов, связанный с процессом бэкдора и найденный с помощью вызова ProcessIdToSessionId Windows API.

systemInfoHash вычисляется через алгоритм хеширования sdbm, используя имя пользователя, имя компьютера, адреса хоста и идентификатор сеанса.

Функция интерпретатора бэкдора

В этой функции повышение прав выполняется путем настройки токена доступа процесса SparrowDoor для включения SeDebugPrivilege. После этого делается патч функции выключения (Ws2_32.dll), чтобы предотвратить отключение отправки и получения на сокете, а функция closesocket (Ws2_32.dll) исправляется, чтобы сначала включить параметр DONT_LINGER для закрытия сокета, прежде чем появятся данные, ожидающие отправления или получения. Наконец, системная информация отправляется на C&C сервер (как показано на Рисунках 4 и 5 выше) для получения данных обратно.

На основе поля Идентификатор команды в данных, полученных от C&C сервера, бэкдор может выполнять различные вредоносные действия, которые показаны подробно в Таблице 3.

Таблица 3. Действия, выполняемые SparrowDoor при получении соответствующих Идентификаторов команд

ID команды Действие
0x1C615632 Текущий процесс закрыт.
0x1DE15F35 Дочерний процесс svchost.exe порождается с помощью информации processToken процесса (идентификатора процесса), указанного C&C сервером, с аргументом -d, а затем в процесс вводится шелл-код.
0x1A6B561A Каталог создается с использованием имени, предоставленного C&C сервером.
0x18695638 Переименование файла. И файл, который нужно переименовать, и новое имя предоставляются C&C сервером.
0x196A5629 Удаление файла в соответствии с входящими данными.
0x17685647 Если длина данных равна 1 и данные соответствуют $, то отправляется длина systemInfoHash вместе с массивом типов дисков.

Если длина данных больше 2 и первые 2 байта данных совпадают с $, то отправляется информация о файлах в указанном каталоге. Включая следующую информацию: атрибуты файла, размер файла и время записи файла.

0x15665665 Создается новый поток для эксфильтрации содержимого указанного файла.
0x16675656 Если активирован аварийный выключатель, то текущие параметры постоянства (реестр и служба) удаляются и выполняется файл Indexer.exe (для перезапуска дроппера). Если нет, перезапускается цикл бэкдора.
0x14655674 Создается новый поток для записи данных в указанный файл.
0x12635692 Если активирован аварийный выключатель, параметры постоянства удаляются, а все файлы, используемые SparrowDoor (Indexer.exe, K7UI.dll и MpSvc.dll), удаляются. Если нет, цикл бэкдора перезапускается.
0x13645683 Если данные соответствуют “switch ”, то бэкдор перезапускается с переключателем -d.

В противном случае он порождает оболочку cmd.exe и настраивает именованные каналы для ввода и вывода (используемые сервером C&C), чтобы установить интерактивную обратную оболочку.

Если данные соответствуют Exitrn, порожденная оболочка завершается.

Другое Перезапускает цикл бэкдора.

Заключение

FamousSparrow — еще одна группа ППУ, которой была доступна уязвимость удаленного выполнения кода ProxyLogon в начале марта 2021 года. Она имеет историю использования известных брешей в серверных приложениях, таких как SharePoint и Oracle Opera. Это еще одно напоминание о том, что очень важно быстро исправлять приложения, подключенные к интернету, или, если быстрое исправление невозможно, вообще не подключать их к интернету.

Выбор мишеней, в число который входят правительства по всему миру, приводит к выводу, что целью FamousSparrow является шпионаж. Мы выделили некоторые ссылки на SparklingGoblin и DRBControl, но мы не считаем, что эти группы одинаковы.

Полный список индикаторов взлома (IoC) и образцы можно найти в нашем репозитории GitHub.

По любым вопросам, а также для отправки образцов материалов по теме, вы можете связаться с нами по адресу threatintel@eset.com.

Индикаторы угрозы

SHA-1 Имя файла Имя обнаружения ESET Описание
B9601E60F87545441BF8579B2F62668C56507F4A p64.exe
debug.log
Win64/Riskware.Mimikatz.H Mimikatz
4DF896624695EA2780552E9EA3C40661DC84EFC8 p64.exe
debug.log
Win64/Riskware.Mimikatz.H Mimikatz
76C430B55F180A85F4E1A1E40E4A2EA37DB97599 dump.exe Win64/Kryptik.BSQ Дампер Lsass
873F98CAF234C3A8A9DB18343DAD7B42117E85D4 nbtscan.exe Win32/NetTool.Nbtscan.A Nbtscan
FDC44057E87D7C350E6DF84BB72541236A770BA2 1.cab Win32/FamousSparrow.A Дроппер
C36ECD2E0F38294E1290F4B9B36F602167E33614 Indexer.exe Настоящий двоичный код K7 Computing
BB2F5B573AC7A761015DAAD0B7FF03B294DC60F6 K7UI.dll Win32/FamousSparrow.A Загрузчик
23E228D5603B4802398B2E7419187AEF71FF9DD5 MpSvc.dll Зашифрованный шелл-код
2560B7E28B322BB7A56D0B1DA1B2652E1EFE76EA Разшифрованный шелл-код
E2B0851E2E281CC7BCA3D6D9B2FA0C4B7AC5A02B K7UI.dll Win32/FamousSparrow.B Загрузчик

Домен IP-адрес Комментарий
credits.offices-analytics[.]com 45.192.178[.]206 SparrowDoor C&C сервер
27.102.113[.]240 Домен доставки

Техники MITRE ATT&CK

Данная таблица построена с использованием версии 9 каркаса MITRE ATT&CK.

Тактика ID Имя Описание
Развитие ресурсов T1588.005 Получить возможности: эксплойты FamousSparrow использовал уязвимости RCE против Microsoft Exchange, SharePoint и Oracle Opera.
T1583.001 Приобрести инфраструктуру: домены FamousSparrow приобрел домен у Hosting Concepts.
T1583.004 Приобрести инфраструктуру: сервер FamousSparrow арендовала серверы у Shanghai Ruisu Network Technology и DAOU TECHNOLOGY.
Первоначальный доступ T1190 Использовать публичное приложение FamousSparrow использовал уязвимости RCE против Microsoft Exchange, SharePoint и Oracle Opera.
Исполнение T1059.003 Интерпретатор команд и сценариев: командная оболочка Windows FamousSparrow использовал cmd.exe для запуска команд загрузки и установки SparrowDoor.
T1203 Эксплуатация для клиентского исполнения FamousSparrow использовал уязвимости RCE в Microsoft Exchange, SharePoint и Oracle Opera для установки SparrowDoor.
Постоянство T1547.001 Выполнение автозапуска при загрузке или входе в систему: Ключи запуска реестра / Папка запуска SparrowDoor обеспечивает постоянство с помощью параметра запуска реестра HKCU WSearchIndex = Indexer.exe -i записи реестра.
T1543.003 Создание или изменение системного процесса: Служба Windows FamousSparrow устанавливает SparrowDoor как службу с именем WSearchIndex.
T1574.001 Поток выполнения взлома: перехват порядка поиска DLL FamousSparrow загружает вредоносный K7UI.dll с помощью перехвата порядка поиска DLL.
Уклонение от защиты T1055.001 Внедрение процесса: внедрение библиотеки с динамической компоновкой MpSvc.dll (шелл-код) внедряется в процессы с помощью SparrowDoor.
T1134.002 Манипуляция токеном доступа: создание процесса с токеном SparrowDoor создает процессы с токенами процессов, указанных C&C сервером, используя API CreateProcessAsUserA.
T1134 Манипуляции с токенами доступа SparrowDoor пытается настроить свои токен-привилегии для получения SeDebugPrivilege.
T1027 Запутанные файлы или информация Шелл-код MpSvc.dll зашифрован с использованием XOR вместе с конфигурацией, встроенной в SparrowDoor.
Доступ к учетным данным T1003 Дамп учетных данных ОС FamousSparrow использует специальную версию Mimikatz.
Обнаружение T1082 Обнаружение системной информации SparrowDoor собирает имя пользователя, имя компьютера, идентификатор сеанса RDP и типы дисков в системе и отправляет эти данные на C&C сервер.
T1083 Обнаружение файлов и каталогов SparrowDoor может исследовать файлы в указанном каталоге, получая их имена, атрибуты, размеры и время последнего изменения, и отправляет эти данные на C&C сервер.
Сбор T1005 Данные из локальной системы SparrowDoor имеет возможность читать содержимое файлов и передавать eго на C&C сервер.
Управление и контроль T1071.001 Протокол прикладного уровня: веб-протоколы SparrowDoor связывается с C&C сервером по протоколу HTTPS.
T1573.001 Зашифрованный канал: симметричная криптография SparrowDoor шифрует/дешифрует обмен данными со своим C&C сервером, используя различные многобайтовые ключи XOR.
Эксфильтрация T1041 Эксфильтрация по каналу C2 SparrowDoor эксфильтрует данные по своему каналу C&C.