Масштабна атака на ланцюг постачання PyPI збирає хмарні облікові дані через Python Startup Hooks
Detection stack
- AIDR
- Alert
- ETL
- Query
Резюме
Координована операція в ланцюгу поставок під назвою Hades Campaign скомпрометувала 26 пакетів PyPI для викрадення хмарних облікових даних. Атака зловживає Python .pth файлами, щоб ініціювати шкідливий код під час запуску інтерпретатора, використовуючи середовище виконання Bun JavaScript для виконання корисного навантаження. Вона призначена для збирання секретів, пов’язаних з AWS, GCP, Azure, Kubernetes і GitHub на різних операційних системах.
Розслідування
Orca Security виявила 37 шкідливих wheel файлів, розповсюджених в екосистемах біоінформатики та розробки інструментів. Їх аналіз показав техніку міжплатформного виконання, в якій шкідливе програмне забезпечення завантажує Bun для запуску маскованих JavaScript-скриптів. Кампанія також генерує оманливий трафік до сервісів Anthropic AI та використовує техніки ін’єкції для зменшення ефективності безпеки на основі обробки природної мови (LLM).
Пом’якшення
Організації повинні негайно вилучити уражені пакети або зафіксуватися на безпечних версіях і змінити всі ймовірно скомпрометовані облікові дані. Це включає токени доступу до хмари, персональні токени доступу GitHub, ключі SSH і облікові дані реєстру Docker. Команди безпеки також повинні шукати відомі артефакти стійкості на хостах Linux, macOS та Windows.
Відповідь
Коли є підозра на компрометацію, ізолюйте уражену систему перед зміною облікових даних, щоб зменшити ризик здирства через демон gh-token-monitor . Відновіть будь-які розробницькі робочі станції та CI/CD-агенти, які виконували заражені пакети. Перевірте сховища GitHub на несанкціоновані зміни та новостворені сховища, що відповідають шаблонам назв атакуючих.
Потік атаки
Виявлення
Підозріла створення Plist файлу в LaunchAgents чи LaunchDaemons (через file_event)
Переглянути
Підозрілі дочірні процеси NodeJS [Linux] (через cmdline)
Переглянути
Створення файлу служби в папці systemd (через file_event)
Переглянути
Було створено можливий файл індивідуального конфігураційного гачка (через file_event)
Переглянути
Скрипт Linux був створений у тимчасових папках (через file_event)
Переглянути
Індикатори компрометації шкідливих пакетів Python (через cmdline)
Переглянути
Виявлення зняття GCP-токену аутентифікації кампанією Hades [Google Cloud Platform]
Переглянути
Кампанія Hades – Викрадення токенів аутентифікації Azure [Журнали активності Azure]
Переглянути
Збір облікових даних AWS через атаку ланцюга поставок PyPI [AWS Cloudtrail]
Переглянути
Імітація виконання
Передумови: Тест телеметрії та базового рівня повинен бути успішний.
Обґрунтування: Цей розділ детально описує точне виконання технік супротивника (TTP), призначених для спрацювання правила виявлення. Команди та наративи МУСЯТЬ безпосередньо відображати ідентифіковані TTP і спрямовані на генерування точно тієї телеметрії, яку очікують правила виявлення. Абстрактні чи не пов’язані приклади можуть призвести до діагностичних помилок.
-
Опис атаки та команди: Супротивник успішно зламав робоче місце розробника через шкідливий пакет PyPI (кампанія Hades). Запустився Python-гачок при запуску, успішно зчитаний токен аутентифікації Azure з локальної пам’яті/кешу. Щоб імітувати виявлення цієї активності у журналах аудиту Azure, ми зімітуємо створення записи журналу аудиту, що містить певний рядок “токени аутентифікації Azure” у полі опису, імітуючи телеметрію події, яку може повідомити автоматизована система, коли вона виявить таку ексфільтрацію.
-
Скрипт регресійного тестування: Оскільки ми не можемо легко примусити реальний бекенд Azure згенерувати певний зловмисний рядок опису без реального порушення, ми імітуємо наявність журналу в потоці телеметрії (зазвичай в BAS шляхом введення синтетичного журналу в простір робочої області).
# Введення синтетичного журналу для імітації виявлення ексфільтрації токену # Це імітує поле 'Опис', заповнене цільовим рядком. $LogEntry = @{ TimeGenerated = (Get-Date).ToString("yyyy-MM-ddTHH:mm:ssZ") OperationName = "TokenExfiltrationDetected" Result = "Success" Description = "Виявлено активність шкідливого ПЗ: токени аутентифікації Azure були вивантажені з локального процесу." Identity = "malicious-python-hook@attacker.com" } Write-Host "Впровадження синтетичної телеметрії для перевірки правила виявлення..." # У реальному BAS це викликало б API збирання даних аналітики журналів. # Для цілей симуляції ми представляємо результат запису журналу: $LogEntry | ConvertTo-Json -
Команди для очищення:
# Якщо синтетичні журнали були впроваджені через API, видаліть конкретний ID кореляції # Для цієї симуляції ніяких постійних змін в клієнті Azure не було зроблено. Write-Host "Очищення завершено. Ніяких постійних артефактів противника не залишилося."