Void Dokkaebi використовує скомпільований за допомогою Cython InvisibleFerret шкідливе ПЗ
Detection stack
- AIDR
- Alert
- ETL
- Query
Резюме
Void Dokkaebi, кіберзлочинець, пов’язаний із Північною Кореєю, удосконалив свій шкідливий софт InvisibleFerret, скомпілювавши його з допомогою Cython у рідні .pyd and .so бінарні файли. Цей крок допомагає малварі уникати виявлень, що сфокусовані лише на Python-скриптах, зберігаючи при цьому основні функції, включно з крадіжкою облікових даних, кейлогінгом, перехопленням буфера обміну та викраденням криптовалютних гаманців. BeaverTail виконує роль багатоступеневої завантажувальної програми, яка отримує та запускає скомпільовані модулі. Кампанія націлена на розробників програмного забезпечення та користувачів криптовалют, які можуть мати облікові дані гаманця, ключі підпису або інші цінні секрети.
Розслідування
Дослідники проаналізували повну інфекційну ланцюг і виявили чіткий відхід від доступних для читання скриптів Python у бік скомпільованих розширень Cython. Вони також задокументували кілька методів обфускації, включно з кодуванням Base64, шифруванням XOR і маніпуляціями зі строками ‘розділити та змінити місцями’. Під час розслідування вони витягли жорстко закодовані IP-адреси, порти та імена файлів, а також спостерігали створення тимчасових Python .mod скриптів, що використовуються для завантаження шкідливих бінарників. Аналіз строкового вмісту показав додаткові посилання на розширення браузера для криптовалютних гаманців.
Пом’якшення
Захисники мають розширити межі детектування, які фокусуються на скриптах, і моніторити підозрілі .pyd and .so файли, що з’являються в незвичних місцях, а також тимчасові .mod завантажувальні скрипти. Додаткові можливості виявлення включають спостережувані імена файлів, вихідні запити до ip-api.com, і завантаження, пов’язані з розширеннями криптовалютних гаманців. Видалення або ізоляція тимчасових завантажувальних скриптів після виконання може також допомогти зменшити можливості для збереження.
Відповідь
Якщо виявлено пов’язані індикатори, негайно ізолюйте заражений кінцевий пункт, заблокуйте вихідний трафік до виявленої IP-адреси командного центру і знайдіть перелічені бінарники та артефакти запланованих завдань. Слідчі повинні проаналізувати будь-які відновлені .mod скрипти, щоб витягнути вбудовані корисні навантаження і краще зрозуміти виконавчий ланцюг. Будь-які виявлені облікові дані криптовалют, секрети гаманців або ключі підпису повинні бути одразу змінені.
Потік Атаки
Ми все ще оновлюємо цю частину. Підпишіться, щоб отримати повідомлення
Повідомте МенеВиявлення
Можливі C2-комунікації через HTTP на пряму IP з незвичним портом (через проксі)
Переглянути
Спроба комунікацій із доменом для перевірки IP (через DNS)
Переглянути
Створено прихований файл на хості Linux (через file_event)
Переглянути
Виявлення InvisibleFerret-модулів, скомпільованих за допомогою Cython [Подія файлу Windows]
Переглянути
Виконання симуляції
Необхідна умова: телеметрія та базова перевірка повинні бути успішними.
Мотив: Цей розділ детально описує точне виконання техніки (TTP) супротивника, яке призначене для тригеру правила виявлення. Команди та наратив ПОВИННІ безпосередньо відображати ідентифіковані TTP та прагнути генерувати ту саму телеметрію, що очікується логікою виявлення. Абстрактні чи нерелевантні приклади приведуть до неправильного діагнозу.
-
Наратив атаки & Команди:
Зловмисник отримав набір модулів, скомпільованих за допомогою Cython (mod.pyd,pad.pyd,brw.pyd), які реалізують збір облікових даних та C2-комунікації. Для досягнення сталості зловмисник копіює ці модулі в каталог конфігурації користувача VS Code (%USERPROFILE%.vscode). VS Code періодично сканує цю папку на наявність розширень, що призводить до завантаження шкідливих модулів пізнішим шкідливим Python-скриптом. Операція копіювання генерує подію Sysmon FileCreate, що відповідає правилу Sigma. -
Скрипт перевірки регресії:
# ------------------------------------------------- # Симуляція скидання модуля InvisibleFerret Cython # ------------------------------------------------- $vscodePath = "$env:USERPROFILE.vscode" # Переконайтеся, що цільова папка існує if (-not (Test-Path -Path $vscodePath)) { New-Item -ItemType Directory -Path $vscodePath | Out-Null } # Симульовані шкідливі бінарники (випадковий вміст сміття) $modules = @("mod.pyd","pad.pyd","brw.pyd") foreach ($mod in $modules) { $dest = Join-Path -Path $vscodePath -ChildPath $mod # Запис 1 КБ випадкових байтів для імітації скомпільованого розширення $bytes = New-Object byte[] 1024 (New-Object System.Random).NextBytes($bytes) [System.IO.File]::WriteAllBytes($dest, $bytes) Write-Host "Created $dest" } -
Команди очищення:
# ------------------------------------------------- # Очищення симульованих шкідливих файлів # ------------------------------------------------- $vscodePath = "$env:USERPROFILE.vscode" $modules = @("mod.pyd","pad.pyd","brw.pyd") foreach ($mod in $modules) { $file = Join-Path -Path $vscodePath -ChildPath $mod if (Test-Path $file) { Remove-Item -Path $file -Force Write-Host "Removed $file" } }