Persistenza via Servizi di Sistema: Create or Modify System Process (T1543)
La tecnica T1543 — Create or Modify System Process descrive l'abuso dei meccanismi che ogni sistema operativo espone per eseguire processi in background all'avvio o su base ricorrente. Su Windows si parla di services gestiti dal Service Control Manager, su Linux di daemons orchestrati da systemd, SysV o Upstart, su macOS dei Launch Daemon e Launch Agent invocati da launchd. Manipolare questi meccanismi permette a un attaccante di sopravvivere ai reboot, ai cambi di credenziali e alle sessioni utente.
La tecnica copre due tattiche complementari. In ottica Persistence (TA0003) garantisce un foothold stabile: il payload viene rieseguito automaticamente senza necessità di re-infezione. In ottica Privilege Escalation (TA0004) sfrutta il fatto che servizi e demoni possono essere creati con privilegi amministrativi ma eseguiti con contesto SYSTEM o root, consentendo un salto di privilegio spesso silenzioso.
Il framework MITRE mappa 6 famiglie malware che implementano varianti della tecnica, tra cui Exaramel for Linux, LITTLELAMB.WOOLTEA, IMAPLoader e la variante Akira _v2, e propone 9 mitigazioni che spaziano dal code signing dei driver alla gestione degli account privilegiati. L'ampiezza della copertura — Windows, Linux, macOS e container — la rende una delle tecniche di persistenza più trasversali dell'intera matrice ATT&CK.
In un ingaggio red team la creazione di un servizio è spesso la prima scelta per ottenere persistenza dopo aver ottenuto privilegi elevati. Su Windows, la via classica passa per il Service Control Manager. Con credenziali SYSTEM o admin locale è possibile registrare un servizio persistente con sc.exe create SvcName binPath= "C:\Windows\Temp\payload.exe" start= auto e avviarlo con sc.exe start SvcName. In alternativa, il modulo PowerShell nativo New-Service offre lo stesso risultato senza spawnare sc.exe, riducendo la superficie di detection.
Per scenari post-exploitation più realistici, strumenti come Metasploit Framework (open source) tramite il modulo exploit/windows/local/persistence_service o Impacket (open source) con services.py permettono di creare servizi remoti passando per SMB e MS-SCMR. Su ambienti C2, Cobalt Strike (a pagamento) e Sliver (open source) espongono comandi elevate svc-exe o service create che gestiscono il payload, il binario intermedio e la pulizia.
Su Linux la persistenza tramite systemd è banale: si scrive un file .service in /etc/systemd/system/ con direttiva ExecStart verso il payload, si abilita con systemctl enable evilservice.service e si avvia con systemctl start. Come mostrato dal malware Exaramel for Linux, sistemi legacy con Upstart o SysV richiedono invece drop in /etc/init.d/ con permessi chmod +x e link simbolici nei runlevel appropriati. Cron rimane una via alternativa per esecuzione ricorrente.
Su macOS la persistenza passa dalla scrittura di un plist. Un Launch Daemon in /Library/LaunchDaemons/com.attacker.helper.plist con chiavi RunAtLoad e KeepAlive impostate a true viene caricato all'avvio con privilegi root. Il caricamento manuale avviene con launchctl load /Library/LaunchDaemons/com.attacker.helper.plist. I Launch Agent in ~/Library/LaunchAgents/ girano invece nel contesto utente.
In ambienti containerizzati la persistenza può essere ottenuta con docker run --restart=always o modificando l'entrypoint dell'immagine, mentre in Kubernetes tramite init containers o DaemonSet. Per la fase di validazione, framework come Atomic Red Team (open source) espongono test pronti per T1543 su tutte le piattaforme, utili per misurare la telemetria difensiva senza scrivere codice offensivo da zero.
Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?
Accedi alle lezioni gratuite e segui il percorso corretto fin dal primo passo