Исследователи 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), чтобы установить интерактивную обратную оболочку. Если данные соответствуют Exit\r\n, порожденная оболочка завершается. |
Другое | Перезапускает цикл бэкдора. |
Заключение
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. |
Поделиться статьей