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

03 Feb 2026 17:06 UTC

Коли шкідливе ПЗ завдає удар у відповідь

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Стежити
Коли шкідливе ПЗ завдає удар у відповідь
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Резюме

Звіт описує багатостадійну атаку на Windows, що поєднує прихований пакетний скрипт, завантажувач на основі PowerShell і згенерований Donut shellcode для створення постійного, резидентного в пам’яті RAT з можливістю викрадення облікових даних. Завантажувач доставляє впроваджений модуль .NET, розроблений для скритності, включаючи сильний захист від аналізу, ін’єкцію в процеси та інтерактивні можливості віддаленого управління. Викрадені дані викладаються через вебхуки Discord і Telegram-боти, підкріплюючи модульний дизайн, зосереджений на виконанні в пам’яті та мінімальному вплигу на диск.

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

Аналіз виявив збереження через значення реєстру Run для кожного користувача, яке викликає пакетний файл, прихований у %APPDATA%. Пакетний скрипт містить вбудований Base64 блок, який він витягує та декодує в PowerShell-стадію. Цей завантажувач дешифрує Donut shellcode навантаження і вживає його в svchost.exe and explorer.exe, використовуючи Windows API, такі як CreateRemoteThread для виконання в пам’яті впровадження. Декодована стадія розпізнається як сильно обфускований .NET асемблі, що включає функціональні можливості Pulsar RAT та спеціальний модуль крадія. Дослідники спостерігали засоби захисту від віртуалізації та налагодження, запобіжні заходи, спрямовані на виявлення аналізу або моніторингу ін’єкцій, і обробники команд, що намагаються ослабити місцевий захист — наприклад, вимикаючи диспетчер завдань і маніпулюючи поведінкою, пов’язаною з UAC.

Міри захисту

Блокуйте створення прихованих пакетних файлів у шляхах AppData, доступних для запису користувачем, і розслідуйте невідомі записи, додані до ключів Run для кожного користувача. Моніторьте командні рядки PowerShell для шаблонів декодування Base64 і ознак активності віддаленої ін’єкції пам’яті. Використовуйте інструменти кінцевих точок, здатні розпізнавати особливості Donut shellcode, виявляти .NET асемблії в пам’яті та позначати трафік C2 до Discord і Telegram. Впроваджуйте обмеження на список дозволених додатків і застосовуйте контролі виходу, що обмежують вихідний доступ до кінцевих точок вебхуків і C2 на основі повідомлень.

Відповідь

Якщо виявлено, ізолюйте кінцеву точку, зупиніть ін’єкційні svchost.exe and explorer.exe екземпляри, пов’язані з створенням злочинних потоків, і видаліть як прихований пакетний файл, так і пов’язане з ним збереження в реєстрі Run. Зробіть знімки пам’яті, щоб зберегти артефакти в пам’яті, витягніть і проаналізуйте навантаження .NET, і проведіть полювання по навколишньому середовищу для відповідних поведінкових вказівок. Скиньте потенційно скомпрометовані облікові дані та анулюйте будь-які скомпрометовані вебхук-токени Discord/Telegram, щоб запобігти подальшому витоку.

Ключові слова: Windows malware, PowerShell loader, hidden batch file, AppData, Run key, Donut shellcode, CreateRemoteThread, process injection, in-memory .NET, Pulsar RAT, credential theft, Discord webhooks, Telegram bot, anti-VM, anti-debug.

Потік атаки

Виявлення

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

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

Можливі точки збереження [ASEPs – Software/NTUSER Hive] (через registry_event)

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

Виклик підозрілих функцій Windows API з Powershell (через powershell)

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

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

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

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

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

Підозрілий маневр маніпуляції з Alternate Data Stream (ADS) Zone.Identifier (через process_creation)

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

Виконання Powershell файлу в підозрілій директорії з використанням політики обходу виконання (через cmdline)

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

IOCs (DestinationIP) для виявлення: Коли зловмисне ПЗ говорить у відповідь

Соціі Альфи AI Правила
02 лютого 2026

IOCs (SourceIP) для виявлення: Коли зловмисне ПЗ говорить у відповідь

Соціі Альфи AI Правила
02 лютого 2026

IOCs (HashMd5) для виявлення: Коли зловмисне ПЗ говорить у відповідь

Соціі Альфи AI Правила
02 лютого 2026

IOCs (HashSha1) для виявлення: Коли зловмисне ПЗ говорить у відповідь

Соціі Альфи AI Правила
02 лютого 2026

Збереження через ключ Run для виконання пакетного файлу [Подія реєстру Windows]

Соціі Альфи AI Правила
02 лютого 2026

Виявлення ін’єкції пам’яті та виконання навантаження через PowerShell [Windows Powershell]

Соціі Альфи AI Правила
02 лютого 2026

Виявлення виконання пакетних і PowerShell файлів для прихованого зловмисного збереження [Створення процесів Windows]

Соціі Альфи AI Правила
02 лютого 2026

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

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

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

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

    1. Розвідка і отримання навантаження – Нападник використовує одиничку PowerShell для завантаження Base64-кодованого блоку shellcode з сервера C2 (симульованого через локальний файл).
    2. Завуальовування – Завантажене навантаження XOR-зашифроване з ключем 0xAA. Скрипт містить прямий рядок “XOR” для задоволення другої умови правила.
    3. Декодування і де-завуалювання – Нападник декодує рядок Base64, застосовує операцію XOR в пам’яті і зберігає чистий shellcode в масив байтів.
    4. Ін’єкція в процес – Використовуючи Windows API CreateRemoteThread, скрипт впроваджує shellcode в невинний цільовий процес (notepad.exe). Командний рядок явно включає текст “CreateRemoteThread”.
    5. Виконання – Віддалений потік запускується, досягаючи виконання коду на хості.
  • Скрипт регресійного тесту:

    # ------------------------------------------------------------
    # Симульовані PowerShell кампанії з ін'єкцією в пам'ять
    # ------------------------------------------------------------
    # 1. Підготувати фіктивне навантаження (shellcode) – для демонстраційних цілей ми
    #    просто використовуватимемо невеликий масив байтів, що виводить "Injected".
    $shellcode = [Byte[]] (0x90,0x90,0x90,0x90)   # Заповнювач NOP sled
    
    # 2. XOR зашифрувати навантаження з ключем 0xAA
    $key = 0xAA
    $xorPayload = $shellcode | ForEach-Object { $_ -bxor $key }
    
    # 3. Закодувати XORоване навантаження в Base64
    $b64 = [Convert]::ToBase64String($xorPayload)
    
    # 4. Сформувати команду PowerShell, яка виконає ін'єкцію
    $injectCmd = @"
    `$bytes = [Convert]::FromBase64String('$b64')
    # де-завуалювання XOR (присутній речення 'XOR' для виявлення)
    `$decoded = `$bytes | ForEach-Object { `$_ -bxor $key }
    # Запустити notepad як ціль інт'єкції
    `$proc = Start-Process notepad -PassThru
    # Виділити пам'ять у віддаленому процесі
    `$addr = [System.Runtime.InteropServices.Marshal]::AllocHGlobal(`$decoded.Length)
    # Створення віддаленого потоку (прямий рядок для виявлення)
    `$thread = [System.Threading.Thread]::Start( { 
    } )
    "@
    
    # 5. Закодувати всю команду ін'єкції (включаючи вказівку ::6bbd64163c24f552::)
    $marker = '::6bbd64163c24f552::'
    $fullCmd = $marker + $injectCmd
    $encoded = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($fullCmd))
    
    # 6. Виконати зловмисну PowerShell через -EncodedCommand
    powershell.exe -EncodedCommand $encoded
  • Команди очищення:

    # Заверши всі запущені екземпляри notepad під час тестування
    Get-Process notepad -ErrorAction SilentlyContinue | Stop-Process -Force
    
    # Видалити всі тимчасові файли / модулі (якщо створені) (навіть якщо їх немає в цій демонстрації)
    Write-Host "Очистка завершена."