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

05 Dec 2025 14:36 UTC

Шкідливе ПЗ CoinMiner продовжує поширюватися через USB-накопичувачі

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Стежити
Шкідливе ПЗ CoinMiner продовжує поширюватися через USB-накопичувачі
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

РЕЗЮМЕ

Шкідливе програмне забезпечення CoinMiner продовжує розповсюджуватися через USB-накопичувачі в Південній Кореї, використовуючи прихований ярлик, який запускає скрипти VBS та BAT, що, у свою чергу, встановлюють кілька компонентів, які зрештою доставляють шкідливу програму для майнінгу криптовалюти.

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

Звіт описує структуру каталогів на зараженому USB, ланцюг виконання від ярлика через кілька стадій дроппера, реєстрацію під службою DcomLaunch та розгорнення криптомайнерів PrintMiner і XMRig.

Пом’якшення

Користувачі повинні тримати ОС і програмне забезпечення в актуальному стані, блокувати виконання ненадійних файлів ярликів, використовувати антивірусні засоби з оновленими базами та забороняти доступ до відомої шкідливої інфраструктури.

Реакція

Виявляйте шкідливий ярлик та пов’язані з ним скрипти, здійснюйте моніторинг створення файлів-дропперів та DCOM реєстрацій, блокуйте мережевий трафік до виявлених доменів і IP-адрес командування та контролю майнінгу.

Потік Атаки

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

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

Обґрунтування: У цьому розділі детально описується точне виконання техніки противника (TTP), розробленої для спрацьовування правила виявлення. Команди та наратив ПОВИННІ безпосередньо відображати ідентифіковані TTP та мають генерувати точну телеметрію, яку очікує логіка виявлення. Абстрактні або не пов’язані приклади призведуть до неправильного діагностування.

  • Наратив атаки та команди:

    1. Етап 1 – Скидання шкідливої DLL: Зловмисник копіює створений printui.dll в ту ж каталог, що і printui.exe (імітує доставку драйвера через USB-пристрій).
    2. Етап 2 – Виконання printui.exe: Викликом printui.exe з ключем /ml (шкідливе завантаження), шкідлива DLL завантажується, генеруючи подію створення процесу, що відповідає вибору (Image endswith printui.exe), одночасно задовольняючи фільтр умови (Image contains printui.dll). Правило виключає цей випадок, тому зловмисник додає другий крок, щоб його обійти.
    3. Етап 3 – Виконання svcinsty64.exe: Зловмисник реєструє нову службу, що вказує на двійковий файл навантаження (payload.exe), що зберігається на USB-накопичувачі. Ця дія викликає подію створення процесу для svcinsty64.exe, що відповідає вибору правила без спрацювання фільтра, що призводить до генерації сповіщення.
  • Скрипт регресійного тесту: Наведений нижче сценарій автоматизує три етапи, забезпечуючи відтворюваність.

    # -------------------------------------------------
    # Регресійний тест – Спрацювання Sigma правила для printui.exe / svcinsty64.exe
    # -------------------------------------------------
    $dllPath = "$env:TEMPprintui.dll"
    $exePath = "$env:SystemRootSystem32printui.exe"
    $svcInstPath = "$env:SystemRootSystem32svcinsty64.exe"
    $payloadPath = "$env:TEMPpayload.exe"
    
    # 1️⃣ Скидання фіктивної шкідливої DLL (бінарний вміст не важливий для виявлення)
    Write-Host "[*] Створення фіктивної шкідливої DLL у $dllPath"
    Set-Content -Path $dllPath -Value ([byte[]](0..255)) -Encoding Byte
    
    # 2️⃣ Виконання printui.exe (безпечне завантаження) – не повинно спрацьовувати через фільтр
    Write-Host "[*] Запуск безпечного printui.exe (буде відфільтровано)"
    Start-Process -FilePath $exePath -ArgumentList "/p" -Wait
    
    # 3️⃣ Виконання printui.exe з шкідливим DLL –  відфільтровано (очікуване)
    Write-Host "[*] Запуск printui.exe з шкідливим DLL (відфільтровано)"
    Start-Process -FilePath $exePath -ArgumentList "/ml `$dllPath`" -Wait
    
    # 4️⃣ Підготовка фіктивного виконуваного файлу навантаження (простий CMD скрипт, перекомпільований в exe)
    Write-Host "[*] Створення фіктивного виконуваного файлу навантаження"
    $payloadSource = @"
    @echo off
    echo Payload виконано > $env:TEMPpayload_output.txt
    "@
    $payloadScript = "$env:TEMPpayload.bat"
    $payloadSource | Set-Content -Path $payloadScript -Encoding ASCII
    # Конвертація .bat в .exe з використанням iexpress (вбудований)
    $iexpress = "$env:SystemRootSystem32iexpress.exe"
    $config = "$env:TEMPiexpress.sed"
    @"
    [Version]
    Version=3.0
    [Options]
    ExtractTitle=Payload
    ExtractLocation=%TEMP%
    ShowProgress=0
    HideExtractWindow=1
    [SourceFiles]
    SourceFiles=0
    %TEMP%payload.bat
    [Run]
    RunCommand="%TEMP%payload.bat"
    "@ | Set-Content -Path $config -Encoding ASCII
    & $iexpress /N /Q /M $config
    Move-Item -Path "$env:TEMPPayload.exe" -Destination $payloadPath -Force
    
    # 5️⃣ Реєстрація шкідливої служби з використанням svcinsty64.exe – ПОВИННО SPAATYUVATY
    Write-Host "[*] Реєстрація шкідливої служби через svcinsty64.exe"
    $svcName = "ШкідливаСлужба"
    $svcDisplay = "Шкідлива служба"
    $svcCmd = "`"$payloadPath`""
    $svcArgs = "/install `$svcName` `$svcDisplay` `$svcCmd`"
    Start-Process -FilePath $svcInstPath -ArgumentList $svcArgs -Wait
    
    # 6️⃣ Видалення служби
    Write-Host "[*] Видалення шкідливої служби"
    $removeArgs = "/uninstall `$svcName`"
    Start-Process -FilePath $svcInstPath -ArgumentList $removeArgs -Wait
    
    # 7️⃣ Видалення тимчасових артефактів
    Write-Host "[*] Видалення тимчасових файлів"
    Remove-Item -Path $dllPath -Force -ErrorAction SilentlyContinue
    Remove-Item -Path $payloadPath -Force -ErrorAction SilentlyContinue
    Remove-Item -Path $payloadScript -Force -ErrorAction SilentlyContinue
    Write-Host "[+] Тест завершено"
  • Команди очищення: (Якщо вище наведений сценарій не вдалося виконати або ви віддаєте перевагу ручному очищенню)

    # Видалення шкідливої служби, якщо ще існує
    $svcName = "MaliciousSvc"
    $svcInstPath = "$env:SystemRootSystem32svcinsty64.exe"
    & $svcInstPath /uninstall $svcName
    
    # Видалення тимчасової DLL та навантаження
    Remove-Item -Path "$env:TEMPprintui.dll" -Force -ErrorAction SilentlyContinue
    Remove-Item -Path "$env:TEMPpayload.exe" -Force -ErrorAction SilentlyContinue
    Remove-Item -Path "$env:TEMPpayload.bat" -Force -ErrorAction SilentlyContinue
    
    # (Необов'язково) Перевірте відсутність залишкових служб
    Get-Service -Name $svcName -ErrorAction SilentlyContinue