Servizi Systemd Malevoli: Systemd Service (T1543.002)

Systemd è il sistema di init predefinito sulla stragrande maggioranza delle distribuzioni Linux moderne, avendo progressivamente sostituito SysVinit e Upstart. Gestisce servizi, mount point, timer e target attraverso file di configurazione chiamati unit file, identificati dall'estensione .service. Proprio questa centralità lo rende un bersaglio naturale per chi cerca persistenza e, in molti casi, escalation dei privilegi su un sistema compromesso.

La tecnica T1543.002 si colloca in due tattiche distinte della kill chain: Persistence (TA0003), poiché un servizio systemd sopravvive ai riavvii e si riattiva automaticamente, e Privilege Escalation (TA0004), perché la direttiva User all'interno di un unit file può forzare l'esecuzione del payload come root o come un utente con permessi elevati.

L'attaccante può creare un nuovo file .service, modificarne uno esistente, oppure piazzare symlink nelle directory di sistema per far caricare un payload da una posizione arbitraria del filesystem. Le direttive critiche — ExecStart, ExecStartPre, ExecStartPost, ExecReload, ExecStop e le relative varianti — offrono molteplici punti di iniezione, ciascuno attivato in una fase diversa del ciclo di vita del servizio. Un ulteriore vettore è rappresentato dai systemd generators, piccoli eseguibili che generano dinamicamente unit file durante il boot o il reload della configurazione.

I dati documentano 3 gruppi APT, 8 software e 1 campagna che hanno sfruttato questa tecnica, con 4 mitigazioni raccomandate.


Per simulare questa tecnica in un laboratorio red team è necessario un sistema Linux con systemd attivo — qualsiasi distribuzione recente va bene. L'obiettivo è dimostrare come un attaccante possa ottenere persistenza creando un servizio malevolo e, facoltativamente, scalare i privilegi attraverso la direttiva User.

Il primo scenario, il più diretto, replica il pattern usato da malware come Gomir, che crea un servizio denominato syslogd. Si crea un unit file nella directory di sistema e lo si abilita:

sudo tee /etc/systemd/system/syslogd.service <<EOF [Unit] Description=System Logger Daemon [Service] Type=simple ExecStart=/tmp/payload.sh Restart=on-failure [Install] WantedBy=multi-user.target EOF

sudo systemctl daemon-reload sudo systemctl enable --now syslogd.service

La clausola WantedBy=multi-user.target garantisce l'avvio automatico quando il sistema entra nel runlevel multiutente — lo stesso pattern usato durante la campagna 2022 Ukraine Electric Power Attack (C0034) per mantenere la persistenza di GOGETTER.

Il secondo scenario simula la privilege escalation attraverso la direttiva User. Se l'attaccante ha accesso in scrittura alla directory /etc/systemd/system/ ma opera come utente non privilegiato, può specificare User=root nel unit file, facendo eseguire il payload con permessi di root al prossimo avvio del servizio.

Il terzo scenario sfrutta i symlink, come documentato per SysUpdate: si posiziona il payload in una directory utente e si crea un link simbolico nella directory di sistema.

ln -s /home/user/.local/bin/implant /etc/systemd/system/update-helper.service

Per simulare la persistenza a livello utente — utile quando non si dispone di root — si opera nella directory $HOME/.config/systemd/user/ e si usa:

systemctl --user enable --now nome-servizio.service

Il tool Pupy (open source) include un modulo dedicato che automatizza la creazione del servizio systemd per la persistenza. In un esercizio red team, usare Pupy permette di verificare se le detection del blue team intercettano la catena completa: creazione file, daemon-reload, enable, start.

Per la fase di cleanup, rimuovere il servizio con:

sudo systemctl disable --now syslogd.service sudo rm /etc/systemd/system/syslogd.service sudo systemctl daemon-reload


Vuoi diventare un Ethical Hacker ma non sai da dove iniziare?

Scarica la guida gratuita e segui il percorso corretto fin dal primo passo

We use cookies

Utilizziamo i cookie sul nostro sito Web. Alcuni di essi sono essenziali per il funzionamento del sito, mentre altri ci aiutano a migliorare questo sito e l'esperienza dell'utente (cookie di tracciamento). Puoi decidere tu stesso se consentire o meno i cookie. Ti preghiamo di notare che se li rifiuti, potresti non essere in grado di utilizzare tutte le funzionalità del sito.