FamousSparrow: подозрительный гостиничный гость

Еще одна ППУ-группа, использовавшая уязвимость ProxyLogon в марте 2021 года.

Исследователи 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

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

Примечание:

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

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

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

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

1234567891011struct 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. Пары «ключ-значение» конфигурации вместе с описанием их назначения.

КлючЗначениеНазначение
domaincredits.offices-analytics[.]comДомен C&C сервера
userпользовательНастройки прокси, используемые для подключения к C&C серверу
passпароль
ip127.1.1.1
port8080
serviceNameWSearchIndexИнформация, используемая для создания службы для настройки постоянства. Также обратите внимание, что 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), чтобы установить интерактивную обратную оболочку. Если данные соответствуют Exit\r\n, порожденная оболочка завершается.
ДругоеПерезапускает цикл бэкдора.

Заключение

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

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

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

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

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

SHA-1Имя файлаИмя обнаружения ESETОписание
B9601E60F87545441BF8579B2F62668C56507F4Ap64.exe
debug.log
Win64/Riskware.Mimikatz.HMimikatz
4DF896624695EA2780552E9EA3C40661DC84EFC8p64.exe
debug.log
Win64/Riskware.Mimikatz.HMimikatz
76C430B55F180A85F4E1A1E40E4A2EA37DB97599dump.exeWin64/Kryptik.BSQДампер Lsass
873F98CAF234C3A8A9DB18343DAD7B42117E85D4nbtscan.exeWin32/NetTool.Nbtscan.ANbtscan
FDC44057E87D7C350E6DF84BB72541236A770BA21.cabWin32/FamousSparrow.AДроппер
C36ECD2E0F38294E1290F4B9B36F602167E33614Indexer.exeНастоящий двоичный код K7 Computing
BB2F5B573AC7A761015DAAD0B7FF03B294DC60F6K7UI.dllWin32/FamousSparrow.AЗагрузчик
23E228D5603B4802398B2E7419187AEF71FF9DD5MpSvc.dllЗашифрованный шелл-код
2560B7E28B322BB7A56D0B1DA1B2652E1EFE76EAРазшифрованный шелл-код
E2B0851E2E281CC7BCA3D6D9B2FA0C4B7AC5A02BK7UI.dllWin32/FamousSparrow.BЗагрузчик
ДоменIP-адресКомментарий
credits.offices-analytics[.]com45.192.178[.]206SparrowDoor 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Интерпретатор команд и сценариев: командная оболочка WindowsFamousSparrow использовал cmd.exe для запуска команд загрузки и установки SparrowDoor.
T1203Эксплуатация для клиентского исполненияFamousSparrow использовал уязвимости RCE в Microsoft Exchange, SharePoint и Oracle Opera для установки SparrowDoor.
ПостоянствоT1547.001Выполнение автозапуска при загрузке или входе в систему: Ключи запуска реестра / Папка запускаSparrowDoor обеспечивает постоянство с помощью параметра запуска реестра HKCU WSearchIndex = \Indexer.exe -i записи реестра.
T1543.003Создание или изменение системного процесса: Служба WindowsFamousSparrow устанавливает SparrowDoor как службу с именем WSearchIndex.
T1574.001Поток выполнения взлома: перехват порядка поиска DLLFamousSparrow загружает вредоносный 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Эксфильтрация по каналу C2SparrowDoor эксфильтрует данные по своему каналу C&C.