Iscriviti al webinar gratuito del 12 Maggio per diventare Forensic Analyst! Scopri di più
Corso Ethical Hacker: accedi alla promozione fino al 30 Aprile! Scopri di più
La Windows Command Shell — cmd.exe — è il prompt dei comandi nativo di ogni sistema Windows, capace di controllare praticamente qualsiasi aspetto del sistema operativo: dal file system ai servizi, dalle connessioni di rete alla gestione utenti. Questa tecnica si colloca nella fase di Execution (TA0002), il momento in cui l'avversario passa dall'aver ottenuto un punto d'appoggio all'eseguire effettivamente codice malevolo sul sistema compromesso.
I numeri confermano quanto cmd.exe sia il coltellino svizzero degli attaccanti: 71 gruppi APT, 286 software malevoli, 15 campagne documentate e una sola mitigazione ufficiale. L'uso spazia dall'esecuzione di un singolo comando di ricognizione (whoami, ipconfig) all'orchestrazione di intere catene d'attacco tramite file batch (.bat, .cmd) che automatizzano persistence, lateral movement e cleanup. Un avversario può invocare cmd.exe localmente, attraverso macro Office, web shell, SQL injection (xp_cmdshell), oppure remotamente via SSH o canali C2, rendendola una tecnica trasversale a quasi tutte le fasi successive della kill chain.
La mitigazione primaria è Execution Prevention (M1038), centrata su application control e script blocking, ma la vera sfida è distinguere l'uso legittimo — pervasivo in qualsiasi ambiente enterprise — dall'abuso malevolo. Ogni professionista della sicurezza, dal red teamer al forensic analyst, deve confrontarsi quotidianamente con questa tecnica.
L'obiettivo in un engagement red team è dimostrare quanto sia semplice abusare di cmd.exe per ottenere esecuzione, persistence e movimento laterale — tutto senza introdurre binari sospetti sul disco. La prima cosa da testare è la catena parent-child: molti EDR generano alert quando cmd.exe viene lanciato da processi inattesi. In laboratorio, simula lo scenario più comune — una macro Office che spawna una shell.
Crea un documento Word con una macro che esegua:
Shell "cmd.exe /c whoami > %TEMP%\out.txt", vbHide
Questo replica il pattern usato da gruppi come APT3, che hanno impiegato esattamente la catena cmd.exe /C whoami come primo comando post-exploitation. Verifica se il tuo EDR intercetta la relazione WINWORD.EXE → cmd.exe.
Per simulare l'esecuzione batch, prepara uno script che replichi le operazioni di cleanup osservate in campagne reali. Play e FIN8 hanno usato batch file per rimuovere tracce e disabilitare servizi di sicurezza:
cmd.exe /c "sc stop WinDefend && sc config WinDefend start=disabled"
Un test particolarmente rilevante riguarda l'abuso di xp_cmdshell, tecnica impiegata da FIN13 per eseguire comandi su server MS-SQL interni. Se l'ambiente include istanze SQL Server, verifica la possibilità di attivare e sfruttare questa stored procedure:
EXEC sp_configure 'xp_cmdshell', 1; RECONFIGURE; EXEC xp_cmdshell 'whoami';
Per il lateral movement, Cobalt Strike (a pagamento) e Brute Ratel C4 (a pagamento) offrono moduli dedicati per l'esecuzione remota via cmd.exe. L'alternativa open source è Impacket (open source), il cui modulo wmiexec.py genera una semi-interactive shell che esegue comandi attraverso WMI incapsulati in cmd.exe:
python3 wmiexec.py dominio/utente:password@target
Per testare la detection degli script batch che operano da percorsi sospetti, copia un file .bat benigno in %TEMP% o C:\Users\Public e lancialo — questi sono esattamente i path monitorati dalle analytic di detection. Infine, Koadic (open source) è un framework C2 post-exploitation che sfrutta Windows Script Host per l'esecuzione di comandi, riproducendo il pattern di diversi malware documentati. Verifica che gli alert scattino anche quando cmd.exe viene rinominato, come fa il malware Kevin che utilizza una copia rinominata dell'eseguibile.
Scarica la guida gratuita e segui il percorso corretto fin dal primo passo