Tutorials

Establishing Persistence

Mantenere l'accesso continuativo a un sistema compromesso, anche dopo reboot o disconnessione della sessione iniziale. ---

#exploitation#post-exploitation#linux

🎯 Establishing Persistence on Linux

Obiettivo

Mantenere l'accesso continuativo a un sistema compromesso, anche dopo reboot o disconnessione della sessione iniziale.


🧪 Metodo 1: Creazione di un Utente con Privilegi Elevati

#### 🧾 Comandi principali:

bash
useradd -m nome_utente -s /bin/bash       # Crea un nuovo utente con shell bash
passwd nome_utente                        # Imposta la password per il nuovo utente
usermod -aG root nome_utente              # Aggiunge l'utente al gruppo root
usermod -u 15 nome_utente                 # Modifica l'UID per mimetizzarsi

#### 🔍 Verifica:

bash
groups nome_utente                        # Verifica i gruppi dell'utente
📌 Aggiungere l'utente al gruppo root equivale a concedere privilegi amministrativi, quindi è un'operazione estremamente sensibile e deve essere occultata.

🧪 Metodo 2: Persistenza tramite Chiavi SSH (Stealthy)

#### 📦 Modulo Metasploit:

post/linux/manage/sshkey_persistence

#### ✅ Configurazione consigliata:

bash
set SESSION <id_sessione>
set CREATESSHKEY true
set CREATESSH_FOLDER true
set USER nome_utente
run
  • Crea una coppia di chiavi SSH e le inserisce in ~/.ssh/authorized_keys
  • La chiave privata viene salvata nel loot di Metasploit.

#### 🛠️ Accesso successivo:

1. Copia la chiave privata in un file locale: id_rsa_backdoor 2. Imposta i permessi corretti:

bash
chmod 600 id_rsa_backdoor

3. Connettiti al target:

bash
ssh -i id_rsa_backdoor nome_utente@<target_ip>
✅ Alta stealthiness: difficilmente rilevabile dagli admin se mimetizzato bene.

🧪 Metodo 3: Persistenza via Cron Jobs

#### 📦 Modulo Metasploit:

post/linux/manage/cron_persistence

  • Inserisce comandi malevoli o payload in cronjob persistenti.
  • Può essere rilevato facilmente esaminando:
bash
crontab -l
cat /etc/crontab
ls /etc/cron.
⚠️ Rischio elevato di detection in ambienti monitorati.

🧪 Metodo 4: Persistenza via Systemd Services

#### 📦 Modulo Metasploit:

post/linux/manage/service_persistence

  • Crea un servizio di sistema che esegue un payload ad ogni avvio.
  • Meno rilevabile dei cron jobs, ma comunque monitorabile via:
bash
systemctl list-units --type=service
🧩 Può essere combinato con tecniche di masquerading (es. nomi simili a servizi di sistema legittimi).

🧪 Metodo 5: Persistenza tramite APT Package Manager

#### 📦 Modulo Metasploit:

exploit/linux/local/apt_package_manager_persistence

  • Installa un payload che si attiva ogni volta che viene utilizzato il package manager (apt).
💡 Efficace in ambienti dove il package manager è utilizzato regolarmente.

🛡️ Difese & Contromisure

  • Audit su /etc/passwd, /etc/shadow e /etc/group
  • Monitoraggio di file come authorized_keys, crontab, /etc/systemd/system/.service
  • Impiego di strumenti EDR e HIDS (es. OSSEC, Wazuh)
  • Logging & Alerting sugli accessi SSH (e.g. auth.log)

✅ Checklist Operativa

TecnicaStealthRilevabilitàNote
User creation + root groupMediaAltaRapida ma rumorosa
SSH Key PersistenceAltaBassaMetodo preferito
Cron JobBassaAltaFacile da rilevare
Systemd ServiceMediaMediaBuon compromesso
APT Package HookAltaBassaRaro, ma efficace

📚 Riferimenti Utili

  • man useradd, man usermod
  • Offensive Security Metasploit Unleashed

Questa guida è pensata per consolidare le competenze richieste in ambito eJPT, ma è pienamente applicabile anche in scenari reali di post-exploitation durante penetration test controllati.