GlassWorm освоює Mac: Нова інфраструктура, нові хитрощі
Detection stack
- AIDR
- Alert
- ETL
- Query
Резюме
Загроза, що стоїть за GlassWorm, змінила фокус з активності, орієнтованої на Windows, на macOS, поширюючи зловмисні розширення VS Code, які отримують зашифровані JavaScript-платформи за допомогою вказівників C2, похідних від блокчейна Solana. Ця хвиля розширює можливості, додаючи троянізацію апаратних гаманців, продовжуючи розповсюджене викрадення облікових даних через браузери, інструменти розробників і Keychain macOS. Інфраструктура включає адресу гаманця Solana та IP-адресу, повторно використану з попередніх операцій GlassWorm, що свідчить про безперервність інструментів і хостингу оператора. Дослідники зауважили понад 50 000 завантажень до того, як розширення були видалені, вказуючи на значний вплив на середовища розробників.
Розслідування
Koi Security ідентифікувала три зловмисних розширення VS Code на ринку Open VSX і пов’язала їхній робочий процес командування та контролю з гаманцем Solana та спільною IP-адресою, раніше пов’язаною з GlassWorm. Вставки мають 15-хвилинну затримку виконання, потім розшифровують і запускають JavaScript-платформу AES-256-CBC. На macOS стійкість встановлюється через LaunchAgents. Цілі збору включають гаманці браузера та дані гаманця на робочому столі, токени доступу розробника, ключі SSH та матеріали Keychain macOS. Зловмисні дані зберігаються у /tmp/ijewf/ перед ексфільтрацією на серверний шлях подібний до /p2p. Вона також прагне замінити законні додатки супроводу апаратних гаманців на ще троянізовані, такі як Ledger Live та Trezor Suite, щоб захопити цінні секрети та транзакції.
Пом’якшення
Посилення контролю за інструментами розробників шляхом забезпечення дозволу на розширення та вимоги перевірки безпеки для розширень VS Code, особливо тих, що походять від відкритих ринків. Розгортання виявлення оброблених зразків та підозрілих створень або модифікацій LaunchAgents. Моніторинг та блокування підозрілої вихідної активності, пов’язаної з вказівниками Solana дериватами C2, а також додавання мережевих виявлень для незвичних з’єднань з ідентифікованим повторно використаним IP. Вимога MFA для облікових записів розробників і хмарних акаунтів, а також впровадження перевірок цілісності апаратного гаманця (перевірка видавця, нотарізація/перевірка підпису та контрольовані канали оновлення програмного забезпечення).
Реакція
Спрацьовуйте тривоги на нові або змінені LaunchAgents, аномальний доступ до сховищ Keychain, та спроби отримання Solana-посилань C2. Карантин і видалення зловмисних розширень VS Code, а потім знищення будь-якої зв’язаної LaunchAgent стійкості. Проведення цільових судово-експертних досліджень на /tmp/ijewf/ для визначення стадіювання облікових даних та підтвердження зібраних даних. Перевірити цілісність додатків апаратного гаманця (Ledger Live, Trezor Suite) та перевстановити з надійних джерел, якщо підозрюється підроблення. Скидання вражених облікових даних, ротація ключів SSH і токенів розробника, анулювання сесій, розширення полювання на кінцевих точках для однакових ID розширень, шляхів файлів та артефактів стійкості.
“graph TB %% Class Definitions classDef action fill:#99ccff classDef technique fill:#ffcc99 classDef operator fill:#ff9900 classDef tool fill:#cccccc %% Nodes action_initial_access[“<b>Дія</b> – Початковий Доступ”] class action_initial_access action technique_vs_code_ext[“<b>Техніка</b> – T1176.002: Шкідливе розширення для VS Code IDE<br /><b>Опис</b>: Супротивник надає шкідливе розширення для Visual Studio Code, яке виконує код на системи жертви.”] class technique_vs_code_ext technique technique_delay[“<b>Техніка</b> – T1497.003: Затримка Виконання<br /><b>Опис</b>: Шкідливе ПЗ очікує певний період часу (наприклад, 15 хвилин) перед виконанням свого навантаження для уникнення аналізу.”] class technique_delay technique technique_decrypt[“<b>Техніка</b> – T1027.009 / T1027.004: Дешифрування AES-256-CBC Навантаження<br /><b>Опис</b>: Зашифроване навантаження дешифрується в пам’яті з використанням AES-CBC зі 256-бітовим ключем.”] class technique_decrypt technique technique_c2_retrieve[“<b>Техніка</b> – T1573.001: Отримання Ендпоінту з Блокчейну Solana<br /><b>Опис</b>: Адреса C2 сервера зберігається на публічному блокчейні та отримується шкідливим ПЗ.”] class technique_c2_retrieve technique technique_c2_fetch[“<b>Техніка</b> – T1048.003: Передача Даних Нешифрованим Протоколом<br /><b>Опис</b>: Шкідливе ПЗ контактує з ендпоінтом C2 з використанням нешифрованого протоколу (e.g., HTTP).”] class technique_c2_fetch technique technique_persistence_agent[“<b>Техніка</b> – T1543.001: Встановлення LaunchAgent<br /><b>Опис</b>: Плеше для LaunchAgent знаходиться в директорії користувача LaunchAgents для забезпечення постійної присутності.”] class technique_persistence_agent technique technique_persistence_daemon[“<b>Техніка</b> – T1543.004: Встановлення LaunchDaemon<br /><b>Опис</b>: Плеш для LaunchDaemon знаходиться в системній директорії LaunchDaemons для забезпечення постійної присутності.”] class technique_persistence_daemon technique technique_modify_plist[“<b>Техніка</b> – T1647: Зміна PLIST файлу<br /><b>Опис</b>: Нападник модифікує plist, щоб змінити поведінку запуску або додати шкідливі команди.”] class technique_modify_plist technique technique_dump_keychain[“<b>Техніка</b> – T1555.001 / T1555.002: Вибірка Keychain<br /><b>Опис</b>: З macOS Keychain витягуються облікові дані.”] class technique_dump_keychain technique technique_steal_keys[“<b>Техніка</b> – T1552.001 / T1552.004: Викрадення Приватних Ключів та Токенів<br /><b>Опис</b>: Приватні криптовалютні ключі і токени для аутентифікації збираються.”] class technique_steal_keys technique technique_stage_data[“<b>Техніка</b> – T1074: Підготовка Даних<br /><b>Опис</b>: Зібрані файли копіюються в /tmp/ijewf для подальшого ексфілу.”] class technique_stage_data technique technique_archive[“<b>Техніка</b> – T1560.001 / T1560.003: Архівування Зібраних Даних<br /><b>Опис</b>: Дані стискаються у формат архіву (e.g., zip).”] class technique_archive technique technique_exfil[“<b>Техніка</b> – T1048.003: Ексфільтрація через Нешифрований Канал, що не є C2<br /><b>Опис</b>: Підготовлений архів відправляється через нешифрований канал, не прив’язаний до основного C2.”] class technique_exfil technique technique_priv_esc[“<b>Техніка</b> – T1548.006: Маніпуляція TCC<br /><b>Опис</b>: База даних macOS Transparency, Consent, and Control змінюється для отримання вищих привілеїв.”] class technique_priv_esc technique technique_impact[“<b>Техніка</b> – T1496.002: Замінити Ledger Live / Trezor Suite<br /><b>Опис</b>: Легітимні програми криптовалютних гаманців замінюються троянськими версіями для захоплення активів користувача.”] class technique_impact technique %% Connections action_initial_access u002du002d>|використовує| technique_vs_code_ext technique_vs_code_ext u002du002d>|спрацьовує| technique_delay technique_delay u002du002d>|веде до| technique_decrypt technique_decrypt u002du002d>|встановлює| technique_c2_retrieve technique_c2_retrieve u002du002d>|контакти| technique_c2_fetch technique_c2_fetch u002du002d>|встановлює| technique_persistence_agent technique_c2_fetch u002du002d>|встановлює| technique_persistence_daemon technique_persistence_agent u002du002d>|модифікує| technique_modify_plist technique_persistence_daemon u002du002d>|модифікує| technique_modify_plist technique_modify_plist u002du002d>|активує| technique_dump_keychain technique_dump_keychain u002du002d>|активує| technique_steal_keys technique_steal_keys u002du002d>|зберігає у| technique_stage_data technique_stage_data u002du002d>|архівує| technique_archive technique_archive u002du002d>|ексфільтрує через| technique_exfil technique_exfil u002du002d>|полегшує| technique_priv_esc technique_priv_esc u002du002d>|активує| technique_impact “
Потік атаки
Виявлення
Можлива спроба виявлення паролів браузера MacOS (через командний рядок)
Переглянути
Атоми IOC (SourceIP) для виявлення: GlassWorm переходить на Mac: Нова інфраструктура, нові трюки
Переглянути
Атоми IOC (DestinationIP) для виявлення: GlassWorm переходить на Mac: Нова інфраструктура, нові трюки
Переглянути
Атоми IOC (Електронні адреси) для виявлення: GlassWorm переходить на Mac: Нова інфраструктура, нові трюки
Переглянути
Виявлення доступу до Keychain macOS від GlassWorm [створення процесу Linux]
Переглянути
Можливе виконання AppleScript для доступу до Keychain на macOS [створення процесу Linux]
Переглянути
Виявлення комунікації C2 з блокчейном Solana за допомогою GlassWorm [проксі]
Переглянути
Виконання симуляції
Передумова: перевірка відео та базових налаштувань телеметрії повинна бути успішною.
Обґрунтування: Цей розділ деталізує точне виконання техніки супротивника (TTP), призначеної для спрацьовування правила виявлення. Команди та наратив повинні безпосередньо відображати визначені TTP та прагнути генерувати точну телеметрію, очікувану логікою виявлення. Абстрактні або не пов’язані приклади призведуть до неналежної діагностики.
-
Нападний нарис та команди:
Атака, що вже скомпрометувала обліковий запис користувача macOS з низькими привілеями, бажає здобути пароль облікового запису служби, збережений у Keychain під міткоюpass_users_for_script. Щоб уникнути розгортання окремого виконуваного файлу, нападник пише однорядковий AppleScript, який викликає вбудованийінструмент безпекичерезdo shell script. Скрипт виконується безпосередньо в сесії користувача, створюючи подію створення процесу з точною командною лінією, на яку реагує правило Sigma.# Створити тестовий елемент keychain (тільки для демонстрації; справжній нападник буде цілити на існуючий елемент) security add-generic-password -a attacker -s pass_users_for_script -w SuperSecret123 # Виконати AppleScript, що читає пароль osascript -e 'do shell script "security find-generic-password -s '''pass_users_for_script''' -w"' -
Скрипт тестування регресії:
#!/usr/bin/env bash set -euo pipefail # Крок 1: Переконайтеся, що цільовий запис keychain існує (ідемпотентний) if ! security find-generic-password -s pass_users_for_script -w >/dev/null 2>&1; then security add-generic-password -a attacker -s pass_users_for_script -w SuperSecret123 fi # Крок 2: Виконати AppleScript, що спрацьовує правило виявлення echo "[+] Виконання AppleScript для зчитування запису keychain..." osascript -e 'do shell script "security find-generic-password -s '''pass_users_for_script''' -w"' -
Команди очищення:
# Видалити тестовий елемент keychain, щоб залишити систему чистою security delete-generic-password -s pass_users_for_script echo "[+] Очищення завершено: запис тестового елемента keychain видалено."