Chiavi SSH Persistenti: SSH Authorized Keys (T1098.004)

La tecnica SSH Authorized Keys sfrutta un meccanismo fondamentale dell'autenticazione a chiave pubblica su sistemi Unix-like: il file authorized_keys. Questo file, presente nella home directory di ogni utente sotto il percorso ~/.ssh/authorized_keys, definisce quali chiavi pubbliche possono autenticarsi via SSH senza password. Sugli hypervisor ESXi, il percorso cambia in /etc/ssh/keys-<username>/authorized_keys, mentre sui dispositivi di rete il binding avviene tramite comandi CLI come ip ssh pubkey-chain.

La tecnica si colloca in due tattiche distinte. La prima è Persistence (TA0003): inserendo la propria chiave pubblica nel file, l'attaccante garantisce accesso remoto anche dopo cambio password, reboot o rotazione delle credenziali. La seconda è Privilege Escalation (TA0004): in ambienti cloud, modificare le authorized_keys di un utente con privilegi superiori — ad esempio tramite API REST di Azure o il comando add-metadata della Google Cloud CLI — consente di scalare i privilegi dalla propria identità a quella della VM target.

Il raggio d'azione è ampio: 3 gruppi APT documentati, 3 famiglie malware che automatizzano l'iniezione, e una superficie che copre Linux, macOS, ESXi, ambienti cloud IaaS e apparati di rete. La semplicità d'esecuzione — un singolo echo in append — contrasta con la difficoltà di rilevamento in ambienti dove l'autenticazione a chiave è prassi quotidiana.


L'iniezione di chiavi SSH è una delle tecniche di persistenza più silenziose e, in un engagement red team, merita di essere testata su ogni superficie disponibile: server Linux, macOS, hypervisor e ambienti cloud.

Preparazione della coppia di chiavi

Il primo passo è generare una coppia di chiavi dedicata all'operazione, separata da quelle personali. Il comando classico è sufficiente:

ssh-keygen -t ed25519 -f /tmp/rt_key -P "" -C "redteam-ops"

L'algoritmo Ed25519 è preferibile per la lunghezza ridotta della chiave pubblica, che rende meno evidente l'iniezione in un file con molte entry. Il commento (-C) va scelto in modo da non destare sospetti se qualcuno ispeziona il file — in un test reale si potrebbe usare un nome coerente con l'ambiente target.

Iniezione su Linux e macOS

Una volta ottenuta una shell sul target, l'inserimento è banale:

echo "<contenuto_chiave_pubblica>" >> /home/victim/.ssh/authorized_keys

Prima di procedere, verifica che la directory .ssh esista e che i permessi siano corretti — SSH rifiuta chiavi da file con permessi troppo aperti. Se necessario:

mkdir -p /home/victim/.ssh && chmod 700 /home/victim/.ssh && chmod 600 /home/victim/.ssh/authorized_keys

Per elevare i privilegi, il target ideale è l'utente root. Controlla che in /etc/ssh/sshd_config la direttiva PermitRootLogin sia impostata su yes o prohibit-password. Se hai accesso di scrittura alla configurazione, puoi modificarla e ricaricare il servizio con systemctl reload sshd.

Superficie ESXi

Sugli hypervisor VMware ESXi il percorso è diverso e va rispettato fedelmente:

echo "<contenuto_chiave_pubblica>" >> /etc/ssh/keys-root/authorized_keys

La shell ESXi è spesso disabilitata per default. Durante un assessment, se hai accesso al vCenter o alla DCUI, abilita SSH temporaneamente per testare questa persistenza. Ricorda che ESXi ricostruisce parte del filesystem al reboot, quindi verifica la persistenza effettiva riavviando l'host.

Ambienti cloud — GCP e Azure

In Google Cloud Platform, il comando gcloud permette l'iniezione tramite metadata:

gcloud compute instances add-metadata --metadata ssh-keys=":<contenuto_chiave_pubblica>"

Su Azure, l'equivalente passa per una PATCH request all'API di gestione della VM, aggiornando il campo osProfile.linuxConfiguration.ssh.publicKeys. Strumenti come az cli (open source) semplificano l'operazione. Il punto critico per il red team è dimostrare la privilege escalation: se il proprio account cloud può modificare le metadata di una VM che gira con un service account privilegiato, l'impatto è significativo.

Dispositivi di rete

Su router e switch Cisco IOS, la sintassi prevede l'uso della modalità di configurazione:

ip ssh pubkey-chain username admin key-string <contenuto_chiave_pubblica> exit

Questa persistenza è particolarmente insidiosa perché raramente i team di sicurezza monitorano le configurazioni SSH dei dispositivi di rete con la stessa attenzione dedicata ai server.


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.