Linux Active Directory
Theory
A linux machine can also be present inside an Active Directory environment.
A linux machine in an AD might be storing different CCACHE tickets inside files. This tickets can be used and abused as any other kerberos ticket. In order to read this tickets you will need to be the user owner of the ticket or root inside the machine.
Practice
Tip: convert ticket to UNIX <-> Windows format
To convert tickets between UNIX/Windows format with ticketConverter.py.
Tools
linikatz is a tool to attack AD on UNIX. It allow you to dump credentials and kerberos cached tickets.
CCACHE ticket reuse from /tmp
When tickets are set to be stored as a file on disk, the standard format and type is a CCACHE file. This is a simple binary file format to store Kerberos credentials. These files are typically stored in /tmp and scoped with 600 permissions
List the current ticket used for authentication with env | grep KRB5CCNAME
. The format is portable and the ticket can be reused by setting the environment variable with export KRB5CCNAME=/tmp/ticket.ccache
. Kerberos ticket name format is krb5cc_%{uid}
where uid is the user UID.
You may use this ticket using Pass The Ticket techniques
CCACHE ticket reuse from keyring
Processes may store kerberos tickets inside their memory, the tickey tool can be useful to extract those tickets
ptrace protection should be disabled in the machine /proc/sys/kernel/yama/ptrace_scope = 0
CCACHE ticket reuse from SSSD KCM (Kerberos Cache Manager)
SSSD maintains a copy of the database at the path /var/lib/sss/secrets/secrets.ldb
. The corresponding key is stored as a hidden file at the path /var/lib/sss/secrets/.secrets.mkey
. By default, the key is only readable if you have root permissions.
Invoking SSSDKCMExtractor with the --database and --key parameters will parse the database and decrypt the secrets.
Extract Accounts From Keytab Files
The service keys used by services that run as root are usually stored in the keytab file /etc/krb5.keytab
. This service key is the equivalent of the service's password, and must be kept secure.
On Linux you can use KeyTabExtract to extracts Key values from .keytab files
You can also use the .keytab file to request a TGT directly.
References
Last updated