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

18 May 2026 18:43 UTC

PureLogs доставляються через стеґанографію PawsRunner

Author Photo
SOC Prime Team linkedin icon Стежити
PureLogs доставляються через стеґанографію PawsRunner
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Резюме

Кампанія покладається на фішинговий електронний лист з вкладенням TXZ, яке доставляє завантажувач JavaScript, що встановлює змінні середовища та запускає conhost.exe у безголовому режимі. Завантажувач потім розшифровує збірку .NET, відому як PawsRunner, яка отримує зображення PNG, що мають прихований зашифрований вміст за допомогою стеганографічних технік. З цих зображень шкідливе ПО вилучає остаточне навантаження: інфостілер PureLogs .NET. Коли PureLogs активний, він підключається до віддаленого сервера командування та контролю через HTTPS і ексфільтрує облікові дані браузера разом із інформацією про систему.

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

Аналіз показав, що завантажувач JavaScript отримує команди зі змінних середовища процесу, запускає PowerShell з прапорцем прихованого вікна і розшифровує AES-зашифроване навантаження, яке виконується через .NET-рефлексію. PawsRunner обертається між трьома API мережі і трьома різними рядками користувача агента, під час отримання PNG файлів, потім парсить iTXt and IEND фрагменти, щоб знайти приховані дані, і розшифровує наступний етап за допомогою RC4. PureLogs, у свою чергу, використовує TripleDES та Gzip для завантаження бібліотеки DLL, робить захищені TLS запити HTTP до певних кінцевих точок і збирає широкий набір даних, пов’язаних зі браузером, з системи жертви.

Запобігання

Організації повинні блокувати вкладення TXZ на шлюзі електронної пошти, моніторити з conhost.exe випадки запуску без видимого вікна і виявляти запуск PowerShell із -w hidden прапорцем. Команди безпеки також повинні розгорнути сигнатури для обох: PawsRunner та PureLogs, обмежити вихідний трафік на визначений домен та IP-адресу командування та контролю, а також обмежити виконання непідписаних .NET-збірок. Де можливо, слід застосувати виявлення стеганографії до підозрілих вхідних файлів зображень.

Відповідь

Якщо ця діяльність виявлена, ізолюйте уражений кінцевий пристрій, завершіть підозрілі conhost.exe та процеси PowerShell, і видаліть будь-які скинуті .NET бінарії з системи. Підроблені облікові дані слід анулювати, ввести багатофакторну аутентифікацію і скинути збережені паролі браузера. Детективи також мають проводити аналіз мережі, щоб підтвердити відсутність додаткової комунікації командування та контролю, і застосувати кроки реабілітації для запобігання повторного зараження.

graph TB %% Визначення класів classDef action fill:#99ccff classDef tool fill:#cccccc classDef process fill:#ffdd99 classDef malware fill:#ff9999 %% Вузли initial_phishing[“<b>Дія</b> – <b>T1566.001 Цільовий фішинговий вкладений файл</b><br/>Зловмисник надсилає фішинговий лист із вкладеним TXZ-архівом, що містить шкідливе навантаження.”] class initial_phishing action malicious_archive[“<b>Шкідливе ПЗ</b> – <b>Назва</b>: Шкідливий TXZ-архів<br/><b>Опис</b>: Архів, що використовується для доставки початкового JavaScript-навантаження.”] class malicious_archive malware user_execution[“<b>Дія</b> – <b>T1204.004 Виконання Користувачем</b><br/>Жертва розпаковує архів, після чого JavaScript запускає PowerShell у прихованому режимі та читає команди зі змінних середовища.”] class user_execution action powershell_loader[“<b>Процес</b> – <b>Назва</b>: PowerShell-завантажувач<br/><b>Опис</b>: Виконує розшифровану .NET-збірку через reflection без запису на диск.”] class powershell_loader process defense_compile[“<b>Дія</b> – <b>T1027.004 Компіляція Після Доставки</b><br/>Розшифрована .NET-збірка завантажується в пам’ять через reflection.”] class defense_compile action defense_compress[“<b>Дія</b> – <b>T1027.015 Стиснення</b><br/>Навантаження розшифровується за допомогою AES, а потім розпаковується через Gzip.”] class defense_compress action defense_stego[“<b>Дія</b> – <b>T1027.003 Стеганографія</b><br/>Завантажувач завантажує PNG-зображення та витягує приховані зашифровані дані з блоків iTXt/IEND.”] class defense_stego action masquerade_icon[“<b>Дія</b> – <b>T1036.008 Маскування</b><br/>Бінарний файл використовує зображення котів як іконку застосунку, щоб виглядати безпечним.”] class masquerade_icon action c2_encrypted[“<b>Дія</b> – <b>T1573 Зашифрований Канал</b><br/>Подальша C2-комунікація відбувається через HTTPS із навантаженнями, зашифрованими AES-256.”] class c2_encrypted action credential_access[“<b>Дія</b> – <b>T1555.003 Облікові Дані з Веббраузерів</b><br/>PureLogs перераховує браузери та витягує збережені паролі, cookie та файли криптогаманців.”] class credential_access action purelogs_tool[“<b>Інструмент</b> – <b>Назва</b>: PureLogs<br/><b>Опис</b>: Утиліта викрадення облікових даних, що збирає дані браузерів.”] class purelogs_tool tool collection_archive[“<b>Дія</b> – <b>T1560.003 Архівування Зібраних Даних</b><br/>Зібрані дані стискаються за допомогою Gzip та шифруються AES перед ексфільтрацією.”] class collection_archive action exfiltration_http[“<b>Дія</b> – <b>T1048.003 Ексфільтрація Через Незашифрований Не-C2 Протокол</b><br/>Дані надсилаються через HTTP POST-запити до кількох зовнішніх кінцевих точок.”] class exfiltration_http action %% Зв’язки initial_phishing –>|доставляє| malicious_archive malicious_archive –>|ініціює| user_execution user_execution –>|виконує| powershell_loader powershell_loader –>|виконує| defense_compile defense_compile –>|використовує| defense_compress defense_compress –>|використовує| defense_stego defense_stego –>|активує| masquerade_icon masquerade_icon –>|встановлює| c2_encrypted c2_encrypted –>|активує| credential_access credential_access –>|використовує| purelogs_tool credential_access –>|збирає| collection_archive collection_archive –>|ексфільтрує через| exfiltration_http

Потік атаки

Виявлення

Можливість виконання прихованих команд PowerShell (через cmdline)

Команда SOC Prime
18 травня 2026

LOLBAS WScript / CScript (через створення процесу)

Команда SOC Prime
18 травня 2026

Виклик підозрілих методів .NET з Powershell (через powershell)

Команда SOC Prime
18 травня 2026

Можливі індикатори обфускації PowerShell (через powershell)

Команда SOC Prime
18 травня 2026

LOLBAS Conhost (через cmdline)

Команда SOC Prime
18 травня 2026

IOC-об’єкти (HashSha256) для виявлення: PureLogs: Доставка через PawsRunner стеганографію

Правила SOC Prime AI
18 травня 2026

IOC-об’єкти (SourceIP) для виявлення: PureLogs: Доставка через PawsRunner стеганографію

Правила SOC Prime AI
18 травня 2026

IOC-об’єкти (DestinationIP) для виявлення: PureLogs: Доставка через PawsRunner стеганографію

Правила SOC Prime AI
18 травня 2026

PowerShell AES розшифровка зі змінних середовища [Windows PowerShell]

Правила SOC Prime AI
18 травня 2026

Виявлення виконання шкідливого процесу через приховані Conhost і PowerShell [Windows Process Creation]

Правила SOC Prime AI
18 травня 2026

Запуск імітації

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

  • Опис атаки та команди

    1. Етап 1 – Підготовка зашифрованого навантаження
      • Атакуючий створює невелике навчальне навантаження ("секрет"), зашифровує його з використанням AES‑256 за відомим ключем, кодує у Base64 шифровану текстову інформацію і зберігає її у змінній середовища ENC_PAYLOAD.
    2. Етап 2 – Виконання завантажувача PowerShell-розшифровки
      • Однорядковий скрипт зчитує ENC_PAYLOAD, декодує Base64 рядок, створює .NET AesCryptoServiceProvider, діє ключ/IV, розшифровує дані і, за бажанням, виконує звичайний текст.
    3. Етап 3 – Генерування телеметрії виявлення
      • Команда PowerShell містить буквально слово «AES» (наприклад, New-Object System.Security.Cryptography.AesCryptoServiceProvider) і логізується як EventID 4104, задовольняючи правило виявлення.
  • Скрипт регресійного тестування

    # -------------------------------------------------
    # Імітація розшифровки AES в PowerShell (Спрацьовує виявлення)
    # -------------------------------------------------
    # 1. Визначте статичний 256‑бітний ключ і IV (для демонстраційних цілей)
    $key = [byte[]](0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,
                       0x11,0x12,0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x1c,0x1d,0x1e,0x1f,0x20)
    $iv  = [byte[]](0xa1,0xa2,0xa3,0xa4,0xa5,0xa6,0xa7,0xa8,0xa9,0xaa,0xab,0xac,0xad,0xae,0xaf,0xb0)
    
    # 2. Навантаження в звичайному тексті (приклад)
    $plain = [System.Text.Encoding]::UTF8.GetBytes("секретні дані")
    
    # 3. Зашифруйте навантаження за допомогою AES (CBC, PKCS7)
    $aes = [System.Security.Cryptography.AesCryptoServiceProvider]::new()
    $aes.Key = $key
    $aes.IV  = $iv
    $aes.Mode = [System.Security.Cryptography.CipherMode]::CBC
    $aes.Padding = [System.Security.Cryptography.PaddingMode]::PKCS7
    $encryptor = $aes.CreateEncryptor()
    $cipherBytes = $encryptor.TransformFinalBlock($plain,0,$plain.Length)
    $cipherB64 = [Convert]::ToBase64String($cipherBytes)
    
    # 4. Зберегти зашифрований текст у змінну середовища
    
    # 5. Завантажувач розшифровки – точний рядок, який буде зареєстровано (містить "AES")
    $loader = @"
    `$enc = [System.Environment]::GetEnvironmentVariable('ENC_PAYLOAD')
    `$bytes = [Convert]::FromBase64String(`$enc)
    `$aes = New-Object System.Security.Cryptography.AesCryptoServiceProvider
    `$aes.Key = $($key -join ',')
    `$aes.IV  = $($iv -join ',')
    `$decryptor = `$aes.CreateDecryptor()
    `$plain = `$decryptor.TransformFinalBlock(`$bytes,0,`$bytes.Length)
    `$result = [System.Text.Encoding]::UTF8.GetString(`$plain)
    Write-Output `"Розшифровано: `$result`"
    "@
    
    # Виконайте завантажувач (буде зафіксовано як EventID 4104)
    Invoke-Expression $loader
  • Команди очищення

    # Вилучіть змінну середовища
    
    # Очистити будь-які тимчасові змінні з сесії
    Remove-Variable -Name key,iv,plain,cipherBytes,cipherB64,loader -ErrorAction SilentlyContinue

Перевірка після імітації

  1. Запустити запит перевірки (приклад KQL вище), але фільтрувати для ScriptBlockText містить "AES" щоб підтвердити, що виявлення спрацювало.
  2. Перегляньте деталі сповіщення в SIEM; переконайтеся, що назва сповіщення збігається з правилом (якщо визначено) і що рівень критичності зазначений як Високий.

Заключні зауваження

  • Правило успішно виявляє простий сценарій використання «AES».
  • Противники можуть уникнути, розділивши слово (наприклад, "AE"+"S"), завантаживши клас .NET через рефлексію або виконуючи розшифровку у скомпільованих бінарних файлах.
  • Покращення правила за допомогою поведінкових індикаторів (використання змінних середовища для шифрованого тексту, рядки з високою ентропією, створення AesCryptoServiceProvider об’єктів та наступні виклики TransformFinalBlock ) покращить стійкість до простої обфускації.