Harvesting Tickets from Linux

Tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks

Credential Storage in Linux

Linux sistemi čuvaju kredencijale u tri tipa keševa, naime Fajlovi (u direktorijumu /tmp), Kernel Keyrings (poseban segment u Linux kernelu), i Memorija procesa (za upotrebu od strane jednog procesa). Promenljiva default_ccache_name u /etc/krb5.conf otkriva koji tip skladišta se koristi, i podrazumevano je FILE:/tmp/krb5cc_%{uid} ako nije drugačije navedeno.

MIT/Heimdal takođe podržavaju dodatne backend-e koje treba potražiti tokom post-exploitation:

  • DIR:/run/user/%{uid}/krb5cc for directory-backed multi-ticket caches (systemd-logind default on modern distros).
  • KEYRING:persistent:%{uid} or KEYRING:session to stash ccaches inside the kernel keyring (KEY_SPEC_SESSION_KEYRING, KEY_SPEC_USER_KEYRING, etc.).
  • KCM:%{uid} when SSSD’s Kerberos Cache Manager daemon (kcm) fronts ticket storage.
  • MEMORY:unique_id for process-local caches created by libraries (gssproxy, sshd, etc.).

Kad dobijete shell, izvucite promenljivu KRB5CCNAME iz /proc/<pid>/environ interesantnih daemona (npr. Apache, sshd, gssproxy) da biste znali koji cache backend se koristi pre nego što počnete da kopirate fajlove.

Enumerating Active Caches

Enumerišite keševe pre ekstrakcije kako ne biste propustili visokovredne tikete:

$ klist -l            # list caches registered in the local keyring/KCM
$ klist -A            # show all ticket-granting tickets in the current cache
$ sudo keyctl get_persistent @u
$ sudo keyctl show `keyctl get_persistent @u`
$ sudo ls -al /tmp/krb5cc_* /run/user/*/krb5cc*
$ sudo find /proc -maxdepth 2 -name environ -exec sh -c 'tr "\0" "\n" < {} | grep -H KRB5' \;

Kombinacija klist, keyctl i inspekcije /proc brzo otkriva da li kredencijali postoje u fajlovima, keyrings ili KCM, tako da možete izabrati odgovarajuću tehniku dumpovanja.

Ekstrakcija kredencijala

The 2017 paper, Kerberos Credential Thievery (GNU/Linux), outlines methods for extracting credentials from keyrings and processes, emphasizing the Linux kernel’s keyring mechanism for managing and storing keys.

Pregled ekstrakcije iz keyring-a

The keyctl system call, introduced in kernel version 2.6.10, allows user space applications to interact with kernel keyrings. Credentials in keyrings are stored as components (default principal and credentials), distinct from file ccaches which also include a header. The hercules.sh script from the paper demonstrates extracting and reconstructing these components into a usable file ccache for credential theft. Remember that keyring-stored ccaches may live under KEYRING:persistent:%{uid} (permanent across logins), KEYRING:session (cleared on logout), or even KEY_SPEC_THREAD_KEYRING for services spawning helper threads—so always enumerate all keyring types for the compromised UID.

Ručni KEYRING workflow

Možete ručno prikupiti tikete bez pomoćnih skripti kad god je default_ccache_name postavljen na KEYRING::

$ KRING=$(keyctl get_persistent @u)
$ keyctl show $KRING                       # note the key serial of each ccache blob
$ keyctl pipe <serial> > /tmp/ccache_dump  # write raw blob to disk
$ KRB5CCNAME=/tmp/ccache_dump klist        # validate the stolen cache

Ako je sačuvano više principals, ponovite korak keyctl pipe za svaki serial, zatim konvertujte izvučeni ccache u Windows-prijateljski .kirbi/.ccache koristeći alate kao što su kerbtool (vidi dole) ili ticketConverter.py pre nego što ga replay-ujete sa drugih mašina.

Brze metode za krađu FILE/DIR cache-a

Kada su kredencijali sačuvani kao FILE: ili DIR: caches, jednostavne operacije sa fajlovima obično su dovoljne:

$ sudo cp /tmp/krb5cc_1000 /tmp/websvc.ccache
$ sudo cp -r /run/user/1000/krb5cc /tmp/user1000_dircc
$ chmod 600 /tmp/*.ccache && chown attacker /tmp/*.ccache

Direktorijumski keševi sadrže po jednu datoteku po service ticket-u, pa kompresujte i exfiltrate ceo direktorijum da biste sačuvali TGT + TGS parove netaknute. Takođe možete usmeriti svoje alate direktno na direktorijum: KRB5CCNAME=DIR:/tmp/user1000_dircc impacket-psexec ....

Izdvajanje KCM-u upravljanih keševa

SSSD-ov Kerberos Cache Manager (kcm) preusmerava skladištenje kredencijala preko /var/run/kcm/kcmsock (ili /run/.heim_org.h5l.kcm-socket) i čuva enkriptovane blob-ove u /var/lib/sss/secrets/ zajedno sa .secrets.mkey. Tok napada:

  1. Identifikujte upotrebu KCM-a preko /etc/krb5.conf (default_ccache_name = KCM:) ili izlaza klist -l.
  2. Ako imate UID 0 ili ste deo kcm SELinux domena, enumerišite keševe putem alata za upravljanje:
$ sudo kcm_ctl list                 # lists UID + cache IDs handled by kcm
$ sudo kcm_ctl get 1000 0 > /tmp/1000.kcm.ccache
$ KRB5CCNAME=/tmp/1000.kcm.ccache klist
  1. Offline pristup: kopirajte /var/lib/sss/secrets/secrets.ldb i /var/lib/sss/secrets/.secrets.mkey, zatim pokrenite SSSDKCMExtractor (ili slične PoC-e) da dešifrujete i ponovo sastavite ccaches bez pristupa aktivnom socketu. Ovo je posebno korisno u forenzici ili kada vam socket ACLs blokiraju pristup, ali je pristup disku moguć.

Pošto kcm daemon poštuje UID-based ACLs koje nameće SSSD, obično je potrebna eskalacija privilegija na root (ili kompromitovanje sssd_kcm), ali kada se to postigne možete da izvučete TGT svakog korisnika za nekoliko sekundi.

Ticket Extraction Tooling

Automatizacija gore navedenih koraka smanjuje greške i obezbeđuje vam cross-platform materijal sa tiketima koji možete ponovo iskoristiti iz Windows alata.

Tickey

Vezujući se za principe hercules.sh script, alat tickey je posebno dizajniran za ekstrakciju tiketa iz keyrings-a, izvršavan preko /tmp/tickey -i. On enumeriše kernel keyrings, rekonstruiše serijalizovane ccaches i zapisuje MIT-kompatibilne cache fajlove koje odmah možete proslediti klist, impacket-*, ili kerberoast alatima.

Kerbtool

kerbtool je moderan Go utility koji radi nativno na Linuxu i može parsirati, konvertovati i request-ovati Kerberos tikete. Dva praktična slučaja upotrebe pri prikupljanju sa Linux sistema:

# Convert a stolen MIT ccache into a .kirbi usable by Windows tooling
$ ./kerbtool --convert --in /tmp/websvc.ccache --out websvc.kirbi

# Use an extracted cache to request additional TGS tickets without touching the victim again
$ KRB5CCNAME=/tmp/websvc.ccache ./kerbtool --ask --spn cifs/fileserver.lab.local

Ako na implant hostu imate i tickey i kerbtool, možete se neometano kretati između Linux, Windows i cross-platform Kerberos attack chains.

Reference

Tip

Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE) Učite i vežbajte Azure Hacking: HackTricks Training Azure Red Team Expert (AzRTE)

Podržite HackTricks