SOC Prime Bias: Високий

29 Jun 2026 06:42 UTC

Фотокампанія ZIP, націлена на індустрію гостинності, доставляє вбудовування Node.js для постійного доступу

Author Photo
SOC Prime Team linkedin icon Стежити
Фотокампанія ZIP, націлена на індустрію гостинності, доставляє вбудовування Node.js для постійного доступу
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Резюме

Активна багатоступенева кампанія вторгнення спрямована на сектор гостинності через ZIP-архіви з темою фото, що містять шкідливі LNK-файли. Ланцюг інфекції використовує зашифровані декодери PowerShell, компіляцію DLL для .NET на льоту, та імплант на базі Node.js для стійкості та комунікації команди і контролю. Зловмисник також використовує легітимні сервіси, такі як Calendly та Google, для зниження ймовірності виявлення на основі електронної пошти.

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

Microsoft ідентифікувала дві окремі хвилі кампанії та спостерігала прогресію від простих завантажувачів PowerShell до більш складних етапів компіляції .NET. Розслідування також розкрило стратегію подвійної стійкості, яка базувалася на використанні як HKCURun and HKCURunOnce ключі реєстру. Дослідники також відзначили використання доменів з Cloudflare-фронтами та нетипових портів команди і контролю для ускладнення приховування інфраструктури.

Пом’якшення

Організації повинні зосередити першочергову увагу на багатошарових виявленнях запуску ярликів, несподіваної компіляції .NET та процесів Node.js, які запускалися з каталогів, доступних для запису користувачем. Дуже рекомендовано включити правила зменшення атакуючої поверхні та моніторити несанкціоновані зміни винятків захисника Microsoft. Блокування підозрілих .cfd шаблонів доменів і спостереження за вихідним трафіком через нетипові порти також можуть допомогти зменшити вплив.

Відповідь

Якщо цю активність виявлено, заходи усунення повинні включати видалення як ProgramData RunOnce входу, так і ключа Node.js Run щоб зупинити імплант від самовідновлення. Командам безпеки слід також видалити Node.js і пов’язані .js навантаження з AppDataLocalNodejs каталогу. Для повного очищення необхідно усунути як активне навантаження, так і будь-які механізми стійкості, залишені позаду.

"flowchart TD step_phishing["T1566.002 – Фішинг: Цільовий фішинг-посилання: Використовує перенаправлення автенттифікації через Calendly і Google для доставки фототематичного ZIP-архіву."] step_user_execution["T1204.002 – Виконання користувачем: Шкідливий файл: Жертва відкриває фальшивий ярлик образу (.lnk), що запускає зашифрований завантажувач PowerShell."] rules_for_user_execution("<b>Назва правила</b>: Можливий шкідливий LNK файл з подвійним розширенням<br/><b>ID правила</b>: 13f9a3c1-b2fe-4268-8052-bf6fe353e952") step_obfuscation["T1027 – Зашифровані файли або інформація: PowerShell використовує арифметичне декодування (XOR, модуль) для отримання наступних етапів."] rules_for_obfuscation("<b>Назва правила</b>: Можливі індикатори зашифровання PowerShell<br/><b>ID правила</b>: a11f179d-8248-4d34-905c-e61735a72688") step_compilation["T1027.004 – Компіляція після доставки: PowerShell запускає компіляцію .NET з використанням csc.exe та cvtres.exe для створення DLL."] step_implant_execution["Виконання імпланта на базі Node.js: Розгортання шкідливих .js навантажень через node.exe."] rules_for_implant_execution("<b>Назва правила</b>: Можливе породження Node від відомого зловжитого процесу<br/><b>ID правила</b>: b36fbdaf-1bab-45c2-a15b-f0c25c696d72") step_persistence["T1547.014 – Автозапуск при завантаженні або вході: Активне налаштування: Подвійна модель з використанням ключів реєстру ‘Run’ та ‘RunOnce’ для компонента Node.js та виконуваного файлу ProgramData."] rules_for_persistence("<b>Назва правила</b>: Можливі точки стійкості [ASEPs – Software/NTUSER Hive]<br/><b>ID правила</b>: 4cb3ac97-0fab-4447-9054-6f2d6ca102a1") step_command_and_control["TA0011 – Команда та контроль: Орієнтування на фіксовану IP-інфраструктуру через нетипові порти (8443, 56001) та автоматизацію безголових браузерів."] rules_for_c2("<b>Назва правила</b>: Підозрілі командні та контрольні запити через нетиповий домен верхнього рівня (TLD) DNS (через dns)<br/><b>ID правила</b>: 63f3e8bc-0241-4f00-b9db-d4c309e61036") rules_for_c2_network("<b>Назва правила</b>: Ініціалізація TLS-з’єднань скриптовими середовищами виконання (через мережеве підключення)<br/><b>ID правила</b>: 1ac66e9b-fd10-4c8c-af41-8c3d901ba03d") step_phishing –>|приводить до| step_user_execution step_user_execution –>|запускає| step_obfuscation step_user_execution -.->|виявляється по| rules_for_user_execution step_obfuscation –>|приводить до| step_compilation step_obfuscation -.->|виявляється по| rules_for_obfuscation step_compilation –>|дозволяє| step_implant_execution step_implant_execution –>|встановлює| step_persistence step_implant_execution -.->|виявляється по| rules_for_implant_execution step_persistence –>|приводить до| step_command_and_control step_persistence -.->|виявляється по| rules_for_persistence step_command_and_control -.->|виявляється по| rules_for_c2 step_command_and_control -.->|виявляється по| rules_for_c2_network "

Потік атак

Виявлення

Підозрілі командні та контрольні запити через нетиповий домен верхнього рівня (TLD) DNS (через dns)

Команда SOC Prime
26 червня 2026

Можливі точки стійкості [ASEPs – Software/NTUSER Hive] (через подію реєстру)

Команда SOC Prime
26 червня 2026

Можливий шкідливий LNK файл з подвійним розширенням (через cmdline)

Команда SOC Prime
26 червня 2026

Можливе породження Node від відомого зловжитого процесу (через cmdline)

Команда SOC Prime
26 червня 2026

Підозрілі зміни в налаштуваннях Windows Defender (через powershell)

Команда SOC Prime
26 червня 2026

Можливі індикатори зашифровання PowerShell (через powershell)

Команда SOC Prime
26 червня 2026

Ініціалізація TLS-з’єднань скриптовими середовищами виконання (через мережеве підключення)

Команда SOC Prime
26 червня 2026

Виявлення нетипових C2 портів та трафіку доменів .cfd [Мережеве підключення Windows]

Правила SOC Prime AI
26 червня 2026

Виявлення зашифрованого декодера PowerShell BigInt з униканням виявлення захисником [Windows Powershell]

Правила SOC Prime AI
26 червня 2026

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

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

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

  • Опис атаки та команди: Супротивник отримав початковий доступ через цільовий фішинг-посилання (T1566.002). Щоб встановити стійкість та команду і контроль (C2), супротивник розгортає легкий імплант на базі PowerShell. Щоб уникнути виявлення базовими правилами фаєрвола, які лише стежать за стандартними портами, зловмисник вирішує використовувати нестандартний порт (8443) для основного імпульсу. Додатково імплант налаштовано для «вхідного дзвінка» на резервний домен, розміщений на .cfd TLD, щоб забезпечити стійкість, якщо основний IP буде заблоковано. Це імітує поведінку кампанії Photo-Zip, згаданої у посиланнях правила.

  • Сценарій регресійного тестування:

    # Сценарій симуляції: Емуляція C2 для валідації правила
    # Цей скрипт симулює мережеві з'єднання з нетиповими портами та доменами .cfd.
    
    Write-Host "[+] Запуск симуляції C2..." -ForegroundColor Cyan
    
    # 1. Імітація з'єднання з нетиповим C2 портом (8443)
    # Ми використовуємо публічний IP, який слухає на 8443 (або локальний слухач, якщо доступний)
    Write-Host "[+] Спроба з'єднання з нестандартним портом 8443..." -ForegroundColor Yellow
    try {
        $tcpClient = New-Object System.Net.Sockets.TcpClient
        $tcpClient.Connect("8.8.8.8", 8443) # Використовуємо Google DNS як фіктивну ціль для тестування порту
    } catch {
        Write-Host "[!] Підключення до порту 8443 не вдалось (Очікувано, якщо порт закрито), але телеметрія повинна бути створена." -ForegroundColor Gray
    } finally {
        $tcpClient.Close()
    }
    
    # 2. Імітація з'єднання з доменом .cfd
    # Ми намагаємося вирішити та підключитися до фіктивного .cfd домену
    Write-Host "[+] Спроба з'єднання з доменом .cfd..." -ForegroundColor Yellow
    $cfdDomain = "malicious-c2-test.cfd"
    try {
        # Використання Resolve-DnsName для активації телеметрії DNS, а потім веб-запит
        Resolve-DnsName -Name $cfdDomain -ErrorAction SilentlyContinue
        Invoke-WebRequest -Uri "http://$cfdDomain" -TimeoutSec 2 -ErrorAction SilentlyContinue
    } catch {
        Write-Host "[!] Підключення до домену .cfd не вдалося (Очікувано для фіктивного домену), але телеметрія повинна бути згенерована." -ForegroundColor Gray
    }
    
    Write-Host "[+] Симуляція завершена." -ForegroundColor Cyan
  • Команди очищення:

    # Очищення: Цей конкретний скрипт не створив стійких артефактів.
    # Якщо слухач був запущений, він повинен бути зупинений.
    Write-Host "[+] Очищення не потрібно для цієї безстатусної симуляції." -ForegroundColor Green