Специалисты по кибербезопасности обнаружили целенаправленную кампанию социальной инженерии, в рамках которой злоумышленники используют популярное приложение для ведения заметок Obsidian в качестве плацдарма для внедрения сложной программы-шпиона. Атака, получившая обозначение REF6598, нацелена на сотрудников финансового и криптовалютного секторов. Уникальность атаки заключается в том, что вместо эксплуатации уязвимостей в коде, злоумышленники злоупотребляют штатными функциями легитимного программного обеспечения, что делает её малозаметной для традиционных средств защиты. В случае успеха на компьютер жертвы устанавливается ранее неизвестный троян с удалённым доступом, использующий блокчейн для управления инфраструктурой.
Описание
Кампания начинается с тщательно продуманного социального инжиниринга в LinkedIn и Telegram. Злоумышленники представляются сотрудниками венчурного фонда, предлагая потенциальным жертвам обсудить вопросы ликвидности криптовалют. Для "удобства совместной работы" они предлагают использовать Obsidian, позиционируя его как внутреннюю "базу данных управления". Жертве предоставляют учётные данные для доступа к облачному хранилищу (vault) приложения, которое контролируется атакующими. Именно это хранилище становится точкой входа.
Ключевой элемент атаки - злоупотребление системой плагинов Obsidian. После того как жертва подключается к вредоносному хранилищу, её просят включить синхронизацию сообщества плагинов. Это действие, которое выглядит как обычная настройка, позволяет скачать на компьютер жертвы предустановленные злоумышленником плагины. В данном случае использовались два плагина: "Shell Commands" (для выполнения команд) и "Hider" (для скрытия элементов интерфейса и маскировки активности). Конфигурационный файл плагина Shell Commands содержит команды, которые автоматически выполняются при открытии хранилища, запуская вредоносную цепочку.
Исследователи из Elastic Security Labs сообщили, что в обнаруженном инциденте их система защиты Elastic Defend сработала на ранней стадии, заблокировав подозрительный запуск PowerShell от родительского процесса Obsidian. Это предотвратило выполнение основной полезной нагрузки. Однако технический анализ всей цепочки позволил раскрыть её сложную структуру, которая адаптирована для операционных систем Windows и macOS.
На платформе Windows атака разворачивается в несколько этапов. Первоначальная команда из плагина загружает и запускает PowerShell-скрипт. Тот, в свою очередь, скачивает исполняемый файл-загрузчик, названный аналитиками PHANTOMPULL. Этот загрузчик использует несколько техник против анализа, включая "мёртвый код" - фрагменты, которые никогда не выполняются, но призваны затруднить работу исследователей. Его основная функция - извлечь из своих ресурсов и расшифровать с помощью AES-256-CBC следующую стадию, которую он затем отражательно загружает в память, минуя запись на диск. Этот модуль отвечает за связь с командным сервером (C2, Command and Control) и загрузку финальной полезной нагрузки.
Финальным этапом становится внедрение трояна PHANTOMPULSE - многофункционального бэкдора, при создании которого, судя по стилю кода и строкам отладки, активно использовался искусственный интеллект. Его наиболее примечательная особенность - децентрализованный механизм получения адреса командного сервера через блокчейн Ethereum. Вместо хранения статичного URL, троян запрашивает через публичные обозреватели блоков (Blockscout) последнюю транзакцию с заданного кошелька. Адрес C2 извлекается из данных транзакции путём их расшифровки. Это позволяет операторам гибко менять инфраструктуру, просто отправляя новую транзакцию. Однако в данной схеме исследователи обнаружили критический недостаток: поскольку троян выбирает самую последнюю транзакцию, любой, кто знает алгоритм, может отправить на целевой кошелёк свою транзакцию с подконтрольным URL, перехватив таким образом управление всеми заражёнными системами.
PHANTOMPULSE обладает широким набором возможностей: сбор детальной телеметрии системы, внедрение кода в другие процессы (техника module stomping), съём скриншотов, ведение кейлоггинга, эскалация привилегий и самоудаление. Команды с сервера получаются и выполняются через набор HTTP-эндпоинтов.
На macOS цепочка атаки также начинается с выполнения команды через плагин Obsidian, но использует AppleScript для обеспечения постоянства (persistence) через LaunchAgent. Второй этап представляет собой обфусцированный скрипт, который пытается связаться с одним из доменов в жёстком списке. В случае недоступности основного C2, скрипт использует резервный механизм: он обращается к публичному каналу в Telegram, чтобы извлечь оттуда актуальный адрес для связи. Это обеспечивает злоумышленникам дополнительную гибкость и устойчивость инфраструктуры.
Анализ инфраструктуры показал, что начальный сервер доставки расположен в Польше, а основной панель управления скрыта за прокси Cloudflare. Исследование активности блокчейн-кошелька подтвердило механизм ротации C2 и выявило историю смены доменов, включая использование туннелей trycloudflare.com для маскировки.
Данная кампания наглядно демонстрирует тренд, когда злоумышленники всё чаще атакуют не через уязвимости, а через злоупотребление легитимными возможностями доверенных приложений. В данном случае таким приложением стал инструмент для повышения продуктивности. Защита от подобных атак требует смещения фокуса с поиска известных вредоносных файлов на мониторинг аномального поведения приложений. Критически важно отслеживать запуск нехарактерных дочерних процессов, таких как PowerShell или командная строка, от программ вроде текстовых редакторов или средств для заметок. Организациям, особенно в финансовой сфере, следует пересматривать политики использования сторонних плагинов и расширений для бизнес-приложений, ограничивая их установку только из доверенных источников. Обнаружение на ранней стадии, как это произошло в описанном случае, является ключом к предотвращению серьёзного инцидента.
Индикаторы компрометации
IPv4
- 195.3.222.251
Domains
- 0x666.info
- panel.fefea22134.net
- thoroughly-publisher-troy-clara.trycloudflare.com
SHA256
- 33dacf9f854f636216e5062ca252df8e5bed652efd78b86512f5b868b11ee70f
- 70bbb38b70fd836d66e8166ec27be9aa8535b3876596fc80c45e3de4ce327980
YARA
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | rule Windows_Trojan_PhantomPull { meta: author = "Elastic Security" os = "Windows" category_type = "Trojan" family = "PhantomPull" threat_name = "Windows.Trojan.PhantomPull" reference_sample = "70bbb38b70fd836d66e8166ec27be9aa8535b3876596fc80c45e3de4ce327980" strings: $GetTickCount = { 48 83 C4 80 FF 15 ?? ?? ?? ?? 83 F8 FE 75 } $djb2 = { 45 8B 0C 83 41 BA A7 C6 67 4E 49 01 C9 45 8A 01 } $mutex = { 48 89 EB 83 E3 ?? 45 8A 2C 1C 45 32 2C 2E 45 0F B6 FD } $str_decrypt = { 39 C2 7E ?? 49 89 C1 41 83 E1 ?? 47 8A 1C 0A 44 32 1C 01 45 88 1C 00 48 FF C0 } $payload_decrypt = { 4C 89 C8 83 E0 0F 41 8A 14 02 43 30 14 0F 49 FF C1 44 39 CB } $url = "/v1/updates/check?build=payloads" ascii fullword condition: 3 of them } |
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | rule Windows_Trojan_PhantomPulse { meta: author = "Elastic Security" os = "Windows" category_type = "Trojan" family = "PhantomPulse" threat_name = "Windows.Trojan.PhantomPulse" reference_sample = "9e3890d43366faec26523edaf91712640056ea2481cdefe2f5dfa6b2b642085d" strings: $a = "[UNINSTALL 2/6] Removing Scheduled Task..." fullword $b = "PhantomInject: host PID=%lu" fullword $c = "inject: shellcode detected -> InjectShellcodePhantom" fullword $d = "inject: shellcode detected, using phantom section hijack" fullword condition: all of them } |