Iscriviti al webinar gratuito del 12 Maggio per diventare Forensic Analyst! Scopri di più
Corso Ethical Hacker: accedi alla promozione fino al 30 Arile! Scopri di più
La tecnica Service Execution consente a un avversario di abusare del Service Control Manager (SCM) di Windows — il processo services.exe — per eseguire comandi o payload malevoli attraverso la creazione o la manipolazione di servizi di sistema. Si colloca nella tattica Execution (TA0002), quella fase della kill chain in cui l'attaccante cerca di far girare il proprio codice su un sistema locale o remoto.
Il meccanismo è tanto potente quanto legittimo: strumenti di amministrazione come sc.exe, il comando net start/stop e l'utility Sysinternals PsExec interagiscono quotidianamente con lo SCM. Proprio questa dualità rende la tecnica insidiosa — il confine tra attività amministrativa e azione offensiva è sottile e spesso invisibile ai controlli basati su firme statiche.
I numeri confermano la centralità di questa tecnica nel panorama delle minacce: 16 gruppi APT la impiegano attivamente, 51 software la implementano e 4 campagne documentate ne fanno uso. Dalla distribuzione di ransomware al movimento laterale, dal cryptomining alla cyber-espionage, T1569.002 è uno dei pilastri operativi più trasversali. Quando un attaccante ha bisogno di persistenza elevata o di esecuzione con privilegi SYSTEM, lo SCM è spesso la scelta più rapida e meno rumorosa — almeno fino a quando le difese non vengono calibrate per intercettarla.
Il modo più diretto per simulare questa tecnica in laboratorio è creare un servizio Windows che esegua un payload controllato, osservando come lo SCM avvia il processo figlio sotto services.exe. L'obiettivo non è solo l'esecuzione, ma generare la telemetria che il blue team dovrà poi rilevare.
Scenario 1 — Servizio locale con sc.exe. Partiamo dal classico. Da un prompt con privilegi amministrativi:
sc create EvilSvc binPath= "cmd.exe /c whoami > C:\Windows\Temp\proof.txt" start= demand
sc start EvilSvc
Il servizio fallirà dopo l'esecuzione (non è un vero servizio Windows), ma il comando verrà eseguito. Questo genera un evento EventCode 7045 nel log System e un processo figlio sotto services.exe visibile in Sysmon EventCode 1. Per la pulizia: sc delete EvilSvc.
Scenario 2 — Esecuzione remota con PsExec. PsExec (open source, Sysinternals) crea un servizio temporaneo chiamato PSEXESVC sul target remoto:
PsExec.exe \TARGET -accepteula -s -d cmd.exe /c "net user"
Il flag -s forza l'esecuzione come SYSTEM, -d sgancia il processo dalla sessione interattiva. L'artefatto chiave è la copia di PSEXESVC.exe in C:\Windows sul target e la creazione/distruzione rapida del servizio associato.
Scenario 3 — Impacket psexec.py. Per chi opera da Linux, Impacket (open source) offre un modulo equivalente:
impacket-psexec DOMINIO/utente:password@TARGET
Il modulo carica un eseguibile randomizzato nella share ADMIN$, crea un servizio remoto, lo avvia e poi rimuove le tracce. L'output è una shell interattiva SYSTEM.
Scenario 4 — Cobalt Strike service execution. In un engagement con Cobalt Strike (a pagamento), il comando psexec dal beacon esegue la stessa catena: upload dell'artifact, creazione del servizio via SCM API, esecuzione e cleanup. Il comando psexec_psh usa invece PowerShell come binario di servizio, lasciando artefatti diversi nei log.
Scenario 5 — PoshC2 e Empire. Sia PoshC2 (open source) che Empire (open source) implementano moduli PsExec-like. In PoshC2, il modulo di lateral movement crea un servizio remoto con payload embedded. Empire espone il modulo lateral_movement/invoke_psexec con parametri per listener, target e credenziali.
Un consiglio operativo: durante il test, attivate Sysmon con una configurazione che catturi EventCode 1 (Process Create), EventCode 13 (Registry Value Set) e EventCode 17/18 (Pipe Created/Connected). Questo vi permette di validare in tempo reale la copertura difensiva del cliente.
Scarica la guida gratuita e segui il percorso corretto fin dal primo passo