Введение
В августе 2024 года наша команда обнаружила новый образец crimeware, который мы назвали SteelFox. В этих атаках задействуется сложная цепочка, включающая использование шелл-кода, а также злоупотребление службами и драйверами Windows. Троянец распространяется через форумы, торрент-трекеры и блоги, маскируясь под такие популярные программы, как Foxit PDF Editor и AutoCAD, и с помощью стилера собирает данные о банковских картах жертв, а также информацию о зараженном устройстве.
Краткое содержание отчета:
- SteelFox распространяется через сообщения на форумах и вредоносные торренты.
- Связь с командным сервером осуществляется с использованием механизма закрепления сертификатов SSL (SSL pinning) и TLS 1.3, при этом используется домен с динамическим IP-адресом и библиотека Boost.Asio.
- SteelFox умеет повышать привилегии за счет использования уязвимости в драйвере.
Продукты «Лаборатории Касперского» определяют эту угрозу как HEUR:Trojan.Win64.SteelFox.gen, Trojan.Win64.SteelFox.*.
Техническая информация
Предыстория
В августе 2024 года мы обнаружили массовое заражение неизвестным пакетом, состоящим из майнера и стилера. В ходе расследования мы выяснили, что кампания была начата в феврале 2023 года. С тех пор стилер не претерпел значительных изменений, однако злоумышленники продолжают его модифицировать, чтобы избежать обнаружения. Новые функции не добавляются, но автор обновляет все необходимые зависимости.
Первичное заражение
В результате расследования мы пришли к выводу, что первоначальным вектором атаки SteelFox являются несколько публикаций на форумах и торрент-трекерах. В этих постах дроппер SteelFox описывается как эффективный способ бесплатной активации легитимного программного продукта. Мы обнаружили дроппер, выдающий себя за активатор для Foxit PDF Editor, продуктов JetBrains и AutoCAD. Несмотря на то что эти дропперы действительно выполняют заявленные функции, они также доставляют сложное вредоносное ПО на компьютер пользователя.
Дроппер SteelFox
В этом исследовании мы рассмотрим образец, маскирующийся под активатор для Foxit PDF Editor. Начальным этапом кампании SteelFox является исполняемый файл AMD64 под названием foxitcrack.exe, содержащий большую секцию .rdata. Значительная энтропия файла указывает на то, что он упакован. При запуске программы появляется графический интерфейс, предлагающий указать путь до установочного каталога Foxit PDF Editor.
Поскольку установочный каталог Foxit находится в папке Program Files, FoxitCrack запрашивает права администратора, которые впоследствии будут использованы во вредоносных целях.
Цепочка выполнения выглядит легитимной до момента распаковки файлов. Перед легитимной функцией вставляется вредоносная, которая отвечает за доставку вредоносного кода в систему целевого пользователя:
Сначала второй этап (доставленный вредоносный код) расшифровывается с помощью алгоритма AES-128. Его параметры также зашифрованы — они расшифровываются лишь после доставки первым этапом. Схема шифрования выглядит следующим образом:
1 2 3 4 5 6 7 8 9 |
// Sbox decryption for (int i = 0; i < 256; i++) { SBox[i] = enc_Sbox[i + 16] ^ enc_SBox[i % 16]; } for (int i = 0 i < 8; i++) { key[i] = enc_key[i + 8] ^ enc_key[i % 8]; iv[i] = enc_iv[i + 8] ^ enc_iv[i % 8]; } |
Алгоритм AES-128 реализован с использованием векторных инструкций SIMD, поэтому полезная нагрузка должна разбиваться на блоки по 16 байт.
В более поздних версиях дроппера авторы реализовали этот же алгоритм, но с использованием расширения набора инструкций AES-NI. Поскольку используются блоки по 16 байт, это означает, что требование к выравниванию размера полезной нагрузки остается в силе.
После этого встроенная полезная нагрузка, являющаяся исполняемым файлом PE64, модифицируется во избежание обнаружения. Временные метки компоновки перезаписываются случайной датой в диапазоне между маем и декабрем 2022 года, а также перезаписывается версия компоновщика. Кроме того, в секцию .rdata вставляются случайные мусорные данные, позволяющие избежать обнаружения хэша. Для этого используется встроенный PE-парсер.
Доставленный PE записывается по одному из трех путей. Точный путь зависит от образца дроппера:
- C:\Program Files\Foxit Software\Foxit PDF Editor\plugins\FoxitPDFEditorUpdateService.exe
- C:\Program Files (x86)\Common Files\Adobe\AdobeGCClient\AGSService.exe
- C:\Program Files\Autodesk\AdODIS\V1\Setup\lpsad.exe
Параметры вредоносной службы инициализируются следующим образом:
После этого загрузчик второго этапа создает службу, которая добавляет себя в автозагрузку, что позволяет ей закрепиться в системе и оставаться активной даже после перезагрузки.
Загрузчик SteelFox
Эта служба запускается из svchost.exe как обычная служба Windows. Сначала она определяет полное имя текущего исполняемого файла и сравнивает его с именами бинарных файлов служб, чтобы убедиться, что загрузчик был действительно запущен как служба. Если проверка успешно пройдена, то выводится список всех запущенных служб (с состоянием SERVICE_ACTIVE) с указанием пути к исполняемому файлу и описанием. Это довольно необычный способ проверки на использование отладчика — если бинарный файл не будет запущен как служба, загрузчик выдаст исключение и завершит работу. Этот алгоритм обфусцирован в коде загрузчика, но после деобфускации он выглядит следующим образом:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
vector<QUERY_SERVICE_INFOW> vec; get_services_list(vec); std::wstring serv_name; GetModuleFileNameW(0, exec_name, 256); for (auto service : vec) { SC_HANDLE hService = open_service(service.lpServiceName); LPCWSTR *bin_name = get_service_bin_path(hService, service.lpServiceName); if (!wstrcmp(exec_name, bin_name) { serv_name = service.lpServiceName; break; } } if (serv_name.empty()) { throw std::system_error; } |
Если эти проверки пройдены, зловред создает таблицу функций, которая позволяет злоумышленнику выполнить расшифровку и создать шелл-код. Загрузчик также содержит генератор случайных чисел и заполнители.
Теперь поток выполнения переходит к функции StartServiceCtrlDispatcherW. Она регистрирует диспетчер с функцией, отвечающей за расшифровку и внедрение вредоносного кода. Эта функция контролирует состояние службы, обрабатывает команды на перезапуск и выключение службы и т. д.
Перед тем как выполнить полезную нагрузку, вредоносная программа задействует необычный механизм закрепления в системе — небольшой, но крайне важный шаг. Этот этап запускает службу AppInfo, а затем загружается внутрь нее. В результате пользователь не может выполнить никаких действий над этим загрузчиком, поскольку даже для копирования этого образца требуются привилегии NT\SYSTEM.
Целевая DLL загружается с помощью вредоносного шелл-кода и шифруется с помощью AES-128 тем же способом, что применялся на начальном этапе. Расшифровка более поздних версий также реализована с помощью инструкций AES-NI.
Вредоносный шелл-код загружается в 3 основных этапа. Сначала он создает массив адресов функций WinAPI, которые будут выполняться внутри шелл-кода.
Затем полезная нагрузка расшифровывается с помощью довольно простого XOR-алгоритма. После расшифровки выполняется шелл-код с заданными параметрами.
Шелл-код представляет собой простейший загрузчик — он использует импортированные функции WinAPI, чтобы выделить память для загрузки последнего этапа и для доступа к функциям библиотеки. Этот шелл-код не реализует никаких механизмов защиты от отладки, являясь просто базовым PE-загрузчиком последнего этапа.
Последний этап SteelFox
Вначале этот этап (DLL) создает мьютекс со случайно сгенерированным именем, поскольку его сетевая работа в значительной степени опирается на многопоточность и асинхронный сетевой ввод-вывод. После этого он выполняет важную задачу — создает службу с запущенным в ней драйвером WinRing0.sys. К этой службе добавляется канал с именем \\\.\WinRing0_1_2_0, позволяющий процессу взаимодействовать с драйвером. Это довольно старый драйвер, содержащий уязвимости CVE-2020-14979 и CVE-2021-41285, позволяющие злоумышленнику повысить привилегии до NT\SYSTEM, как только будет разрешено прямое непроверяемое взаимодействие с драйвером и злоумышленник сможет управлять данными, передаваемыми драйверу. Этот драйвер также является компонентом майнера XMRig. Коммуникация с драйвером происходит в отдельном потоке.
После инициализации драйвера образец запускает майнер. Тот представляет собой модифицированный исполняемый файл XMRig с мусорным кодом. Он подключается к майнинговому пулу, используя заданные учетные данные.
Компонент XMRig загружается из одного из репозиториев hxxps://github[.]com/cppdev-123. Судя по всему, он обновляется время от времени — мы предполагаем, что это делается для того, чтобы избежать обнаружения старых версий:
После этого вредоносная программа разрешает IP-адрес в домен ankjdans[.]xyz, который выступает в роли командного сервера. Хотя домен задан в коде, смена IP-адресов помогает злоумышленнику остаться незамеченным. SteelFox осуществляет разрешение с помощью Google Public DNS и DNS over HTTPS (DoH). Это позволяет атакующему скрыть факт разрешения домена.
После успешного разрешения IP-адреса вредоносная программа подключается к своему командному серверу с помощью TLS 1.3. Эта модель ввода-вывода использует такие библиотеки, как Boost.Asio и wolfSSL, что позволяет злоумышленнику реализовать полноценное взаимодействие по TLS 1.3.
В отличие от версии 1.2, TLS 1.3 генерирует секретный ключ сессии на основе предварительно выбранного закрытого ключа на этапе установления соединения. В этом случае общий секретный ключ генерируется с помощью криптографически защищенного генератора случайных чисел Windows. Более того, в SteelFox полностью реализована функция закрепления сертификата SSL, исключающая возможность перехвата данных, передаваемых по SSL. Примечательно, что закрепление сертификата SSL включено только для связи с командным сервером.
После установки соединения в дело вступает стилер. Этот компонент способен собирать большой список параметров конечных пользователей. Он ищет все браузеры на устройстве жертвы, а затем сравнивает их со следующим списком:
- chrome;
- opera;
- opera_gx;
- brave;
- firefox;
- yandex;
- wave;
- avg;
- avast;
- vivaldi;
- dragon;
- chedot;
- coccoc.
Он извлекает файлы cookie, данные банковских карт, историю поиска и список посещенных мест — последнее извлекается только из браузеров Mozilla Firefox. Для этого используется встроенная копия SQLite3. Поскольку служба запускается под пользователем NT\SYSTEM, для получения контекста безопасности для последующего создания дампа SQL вызывается функция API ImpersonateLoggedOnUser.
Полный список извлеченных данных представлен ниже.
Тип данных | Подробности |
Данные браузера | Файлы cookie, банковские карты, местоположение, история поиска |
Программное обеспечение | Установленное программное обеспечение, антивирусные решения, запущенные службы, установленные дополнения |
Сведения о системе | Дата сборки (если возможно), версия, редакция, дата установки |
Сведения о сети | Беспроводные интерфейсы, сети и пароли (извлекаются в виде простого текста) |
SIM | Данные SIM-карты (если применимо) |
Диски | Названия и типы дисков (внешние, съемные и т. д.), свободное пространство на диске |
Окружение | Дамп переменных окружения |
Время | Местное время, часовой пояс |
Сведения о пользователе | Имя пользователя, информация о параметрах запуска, пароль, языковые настройки, информация об учетных записях удаленного рабочего стола (через WinAPI NetUserEnum) |
RDP | Сессии и информация о сессиях (через WinAPI WTSQuerySessionInformationW) |
Рабочий стол | Значки установленных и запущенных программ |
Процессы | Использование памяти и диапазон страниц |
Затем данные объединяются в один большой JSON и отправляются на командный сервер. Схема связи выглядит следующим образом:
Жертвы
Эта кампания не направлена на отдельных лиц или конкретные организации. Троянец действует с большим размахом, массово заражая всех, кто сталкивается со скомпрометированным ПО, — на момент проведения исследования наши защитные решения обнаружили эту угрозу более 11 000 раз. Целью атаки являются пользователи различных популярных программ, таких как AutoCAD, продукты JetBrains и Foxit. Жертвами этой кампании стали пользователи со всего мира: большинство из них находятся в Бразилии, Китае, России, Мексике, ОАЭ, Египте, Алжире, Вьетнаме, Индии и Шри-Ланке.
TOP 10 стран, атакованных SteelFox, август–сентябрь 2024 года (скачать)
Атрибуция
Для этой конкретной кампании невозможно произвести атрибуцию. Посты со ссылками на активаторы были размещены либо со взломанных аккаунтов, либо неопытными пользователями, которые не догадывались о распространяемых ими угрозах. Эта кампания активно проводилась на китайской платформе Baidu и российских торрент-трекерах.
Выводы
SteelFox появился недавно и представляет собой полнофункциональный пакет crimeware. Троянец написан на C++ с использованием сторонних библиотек и способен похищать различные пользовательские данные, которые могут заинтересовать организаторов этой кампании. Использование TLS 1.3 и механизма закрепления сертификата SSL обеспечивает безопасную связь и получение конфиденциальных данных.
SteelFox не нацелен на конкретные организации или физических лиц. Троянец действует масштабно, извлекая любую информацию, которую можно обработать в дальнейшем. Чтобы защититься от таких угроз, устанавливайте приложения из официальных источников и используйте надежное защитное решение, предотвращающее загрузку зараженных программ.
Индикаторы компрометации
Обратите внимание: Индикаторы, приведенные в этом разделе, действительны на момент публикации.
Хеш-суммы файлов
Полезная нагрузка
fb94950342360aa1656805f6dc23a1a0
Загрузчик
Дроппер
9dff2cdb371334619b15372aa3f6085c | jetbrains-activator.exe |
c20e1226782abdb120e814ee592bff1a | autocad-patch.exe |
c6e7c8c76c7fb05776a0b64699cdf6e7 | FoxitPatch.exe |
Пути к файлам
C:\Program Files (x86)\Foxit Software\Foxit PDF Editor\plugins\FoxitPDFEditorUpdateService.exe
C:\Program Files (x86)\Common Files\Adobe\AdobeGCClient\AGSService.exe
C:\Program Files\Autodesk\AdODIS\V1\Setup\lpsad.exe
Пути к файлам PDB
d:\hotproject\winring0\source\dll\sys\lib\amd64\WinRing0.pdb
Домены и IP-адреса
hxxps://ankjdans[.]xyz
205.185.115[.]5
Вредоносные URL-адреса
hxxps://github[.]com/DavidNguyen67/CrackJetbrains
hxxps://github[.]com/TrungGa123/Active-all-app-Jetbrains/
hxxps://github[.]com/tranquanghuy-09/activate-intellij-idea-ultimate/
hxxps://github[.]com/TaronSargsyan123/ScaraSimulation
hxxps://raw.githubusercontent[.]com/tranquanghuy-09/activate-intellij-idea-ultimate/main/jetbrains-activator.exe
hxxps://raw.githubusercontent[.]com/TaronSargsyan123/ScaraSimulation/main/jetbrains-activator.exe
hxxps://raw.githubusercontent[.]com/TrungGa123/Active-all-app-Jetbrains/main/jetbrains-activator.exe
hxxps://raw.githubusercontent[.]com/DavidNguyen67/CrackJetbrains/main/jetbrains-activator.exe
hxxps://www.cloudstaymoon[.]com/2024/05/06/tools-1
hxxps://squarecircle[.]ru/Intelij/jetbrains-activator.exe
hxxps://drive.google[.]com/file/d/1bhDBVMywFg2551oMmPO3_5VaeYnj7pe5/view?usp=sharing
hxxps://github[.]com/cppdev-123
Новый троянец SteelFox крадет конфиденциальные данные и криптовалюту