Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
Kerbeus-BOF — 针对Kerberos滥用的BOF(实现了Rubeus的一些重要功能)。 | Kitploit
工具/GitHubGitHub/ralfhacker/kerbeus-bof
权限提升密码攻击漏洞利用横向移动后渗透利用渗透测试命令与控制身份验证红队
GitHubralfhacker/kerbeus-bof

Kerbeus-BOF

针对Kerberos滥用的BOF(实现了Rubeus的一些重要功能)。

查看仓库
6037749个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Kerbeus-BOF


用于 Kerberos 滥用的 Beacon 对象文件。这是 Rubeus 项目一些重要功能的实现,使用 C 语言编写。该项目集成了 C2 框架 Cobalt Strike、Havoc、AdaptixC2 和 Outflank C2。

票据请求与续订

asktgt

asktgt 操作将为指定的用户和加密密钥(/rc4 或 /aes256)构建原始的 AS-REQ(TGT 请求)流量。也可以使用 /password 标志代替哈希 - 在这种情况下,/enctype:X 将默认为 RC4。如果未指定 /domain,则提取计算机的当前域;如果未指定 /dc,则同样提取系统的当前域控制器。如果身份验证成功,则解析生成的 AS-REP,并将 KRB-CRED(.kirbi 文件,包含用户的 TGT)输出为 base64 编码的 blob。/ptt 标志将“传递票据”并将生成的 Kerberos 凭据应用于当前登录会话。另外,另一个操作安全说明: 一次只能将一个 TGT 应用于当前登录会话,因此使用 /ptt 选项应用新票据时,之前的 TGT 将被清除。

为了形成更符合真实请求的 AS-REQ,可以使用 /opsec 标志,这将首先发送一个没有预身份验证的初始 AS-REQ;如果成功,则解密生成的 AS-REP 并返回 TGT,否则发送带有预身份验证的 AS-REQ。

使用 /nopac 开关可以请求没有 PAC 的 TGT。/nopreauth 标志可用于发送没有预身份验证的 AS-REQ。

root@kitploit:~
krb_asktgt /user:USER /password:PASSWORD [/domain:DOMAIN] [/dc:DC] [/enctype:{rc4|aes256}] [/ptt] [/nopac] [/opsec]
krb_asktgt /user:USER /aes256:HASH [/domain:DOMAIN] [/dc:DC] [/ptt] [/nopac] [/opsec]
krb_asktgt /user:USER /rc4:HASH [/domain:DOMAIN] [/dc:DC] [/ptt] [/nopac]
krb_asktgt /user:USER /nopreauth [/domain:DOMAIN] [/dc:DC] [/ptt]

asktgs

asktgs 操作将使用提供的 /ticket:X TGT 构建/解析原始的 TGS-REQ/TGS-REP 服务票据请求。该值必须是 .kirbi 文件的 base64 编码。如果未指定 /dc,则提取计算机的当前域控制器并将其用作请求流量的目的地。/ptt 标志将“传递票据”并将生成的服务票据应用于当前登录会话。必须指定一个或多个 /service:X SPN,用逗号分隔。

构建的 TGS-REQ 中支持的加密类型为 RC4_HMAC 和 AES256_CTS_HMAC_SHA1。在这种情况下,KDC 将使用最高共同支持的加密来构建返回的服务票据。如果要强制使用 RC4 或 AES256 密钥,请使用 /enctype:[rc4 or aes256]。

为了形成更符合真实请求的 TGS-REQ,可以使用 /opsec 标志,这还会在请求为配置了无约束委派的账户请求服务票据时自动发送额外的 TGS-REQ。

/u2u 标志用于请求用户到用户票据。结合 /tgs:X 参数(用于提供目标账户的 TGT),/service:X 参数可以是提供的 TGT 所针对的账户的用户名(使用 /tgs:X 参数)。/targetuser:X 参数将通过插入包含目标用户用户名的 PA-FOR-USER PA 数据段来请求任何其他账户的 PAC。

/keyList 标志用于 Kerberos 密钥列表请求。这些请求必须利用来自只读域控制器的伪造部分 TGT,放在 /ticket:BASE64 参数中。此外,/spn:x 字段必须设置为域内的 KRBTGT SPN,例如 KRBTBT/domain.local。

root@kitploit:~
krb_asktgs /ticket:BASE64 /service:SPN1,SPN2,... [/domain:DOMAIN] [/dc:DC] [/tgs:BASE64] [/targetdomain:DOMAIN] [/targetuser:USER] [/enctype:{rc4|aes256}] [/ptt] [/keylist] [/u2u] [/opsec]

renew

renew 操作将使用提供的 /ticket:X 构建/解析原始的 TGS-REQ/TGS-REP TGT 续订交换。该值必须是 .kirbi 文件的 base64 编码。如果未指定 /dc,则提取计算机的当前域控制器并将其用作续订流量的目的地。/ptt 标志将“传递票据”并将生成的 Kerberos 凭据应用于当前登录会话。

root@kitploit:~
krb_renew /ticket:BASE64 [/dc:DC] [/ptt]

约束委派滥用

如果用户(或计算机)账户配置了约束委派(即其 msds-allowedtodelegateto 字段中有 SPN 值),则此操作可用于滥用对目标 SPN/服务器的访问权限。

简而言之 的解释是:启用了约束委派的账户被允许以任何用户的身份为自己请求票据,这个过程称为 S4U2self。要允许账户执行此操作,其 useraccountcontrol 属性必须启用 TrustedToAuthForDelegation,默认情况下只有高级用户才能修改此属性。此票据默认设置了 FORWARDABLE 标志。然后,服务可以使用这个特殊请求的票据,为账户的 msds-allowedtodelegateto 字段中指定的任何服务主体名称 (SPN) 请求服务票据。简而言之,如果你控制了一个设置了 TrustedToAuthForDelegation 且 msds-allowedtodelegateto 中有值的账户,你就可以伪装成域中的任何用户来访问该账户 msds-allowedtodelegateto 字段中设置的 SPN。

然后,S4U2self 票据可以用作 /tgs:Y 参数(base64 blob)来执行 S4U2proxy 过程。必须提供账户的有效 msds-allowedtodelegateto 值(/service:X)。

/altservice 参数允许我们在生成的 KRB-CRED 文件中替换任何我们想要的服务名称。可以提供一个或多个替代服务名称,用逗号分隔(/altservice:cifs,HOST,...)。

为了形成更符合真实请求的 TGS-REQ,可以使用 /opsec 标志。

在某些情况下,可以使用 S4U2Self 票据模拟受保护用户,以提升请求系统上的权限,如此处所讨论。为此,可以使用 /self 标志和 /altservice:X 参数来生成可用的服务票据。

要伪造 S4U2Self 引用,仅需要信任密钥。通过将 /targetdomain:X 参数与 /self 标志一起使用,而不使用 /targetdc 参数,它会将 /ticket:X 提供的票据视为 S4U2Self 引用,并且只请求最终的 S4U2Self 服务票据。还可以使用 /altservice:X 来重写结果票据中的 sname。

root@kitploit:~
krb_s4u /ticket:BASE64 /service:SPN {/impersonateuser:USER | /tgs:BASE64} [/domain:DOMAIN] [/dc:DC] [/altservice:SERVICE] [/ptt] [/nopac] [/opsec] [/self]
krb_cross_s4u /ticket:BASE64 /service:SPN /targetdomain:DOMAIN /targetdc:DC {/impersonateuser:USER | /tgs:BASE64} [/domain:DOMAIN] [/dc:DC] [/altservice:SERVICE] [/nopac] [/self]

票据管理

ptt

ptt 操作将通过 LsaCallAuthenticationPackage() API 以 KERB_SUBMIT_TKT_REQUEST 消息提交一个 /ticket:X(TGT 或服务票据)给当前登录会话,或者(如果提升权限)提交给 /luid:ea4.. 指定的登录会话。与其他 /ticket:X 参数一样,该值可以是 .kirbi 文件的 base64 编码。

root@kitploit:~
krb_ptt /ticket:BASE64 [/luid:LOGONID]

purge

purge 操作将清除当前登录会话中的所有 Kerberos 票据,或者(如果提升权限)清除 /luid:0xA.. 指定的登录会话中的所有票据。

root@kitploit:~
krb_purge [/luid:LOGONID]

describe

describe 操作接受一个 /ticket:X 值(TGT 或服务票据),解析它,并描述票据的值。与其他 /ticket:X 参数一样,该值可以是 .kirbi 文件的 base64 编码。

root@kitploit:~
krb_describe /ticket:BASE64

klist

klist 将列出当前用户登录会话和 Kerberos 票据的详细信息(如果未提升权限)。如果从提升的上下文(SYSTEM)运行,将显示所有登录会话及相关 Kerberos 票据的信息。可以使用 /luid:3ea..(如果提升权限)显示特定 LogonID 的登录和票据信息。

root@kitploit:~
krb_klist [/luid:LOGINID] [/user:USER] [/service:SERVICE] [/client:CLIENT]

dump

dump 操作将在提升的上下文(SYSTEM)中提取当前的 TGT 和服务票据。如果未提升权限,则提取当前用户的服务票据。

root@kitploit:~
krb_dump [/luid:LOGINID] [/user:USER] [/service:SERVICE] [/client:CLIENT]

triage

triage 操作将输出当前用户 Kerberos 票据的表格(如果未提升权限)。如果从提升的上下文(SYSTEM)运行,将显示描述系统上所有 Kerberos 票据的表格。

root@kitploit:~
krb_triage [/luid:LOGINID] [/user:USER] [/service:SERVICE] [/client:CLIENT]

过滤器

对于 klist、triage 和 dump,可以通过 /luid、/service 和 /client 过滤票据。

需要 SYSTEM 上下文。

tgtdeleg

tgtdeleg 滥用 Kerberos GSS-API 来检索当前用户的可使用 TGT,无需在主机上提升权限。使用 AcquireCredentialsHandle() 获取当前用户 Kerberos 安全凭据的句柄,使用带有 ISC_REQ_DELEGATE 标志和目标 SPN(CIFS/DC.domain.com)的 InitializeSecurityContext() 来准备一个伪委派上下文发送到 DC。这会在 GSS-API 输出中生成一个 AP-REQ,其中包含认证者校验和中的 KRB_CRED。从本地 Kerberos 缓存中提取服务票据会话密钥,用于解密认证者中的 KRB_CRED,从而生成可用的 TGT .kirbi。

如果自动目标/域提取失败,可以使用 /target:SPN 指定一个配置了无约束委派的服务的已知 SPN。

root@kitploit:~
krb_tgtdeleg [/target:SPN]

哈希喷射(Roasting)

kerberoasting

kerberoasting 用于请求适当的服务票据。/ticket:X 参数指定域用户的 TGT 票据。/spn:X 参数指定目标 SPN。/domain 和 /dc 参数是可选的,与其他操作一样会检索系统默认值。

/nopreauth:USER 参数将尝试向传递给 /spn:Y 的服务发送一个 AS-REQ 来请求服务票据。

root@kitploit:~
krb_kerberoasting /spn:SPN [/nopreauth:USER] [/dc:DC] [/domain:DOMAIN]
krb_kerberoasting /spn:SPN /ticket:BASE64 [/dc:DC]

asreproasting

如果域用户未启用 Kerberos 预身份验证,则可以成功请求该用户的 AS-REP,并且可以像 kerberoasting 一样离线破解结构的一个组件。/user:X 参数指定目标用户。/domain 和 /dc 参数是可选的,与其他操作一样会拉取系统默认值。

root@kitploit:~
krb_asreproasting /user:USER [/dc:DC] [/domain:DOMAIN]

其他

hash

hash 操作将接受一个 /password:X 和可选的 /user:USER 和/或 /domain:DOMAIN。它将生成密码的 rc4_hmac (NTLM) 表示形式。如果指定了用户名和域名,则会生成 aes128_cts_hmac_sha1 和 aes256_cts_hmac_sha1 哈希形式。用户名和域名用作 AES 实现的盐值。

root@kitploit:~
krb_hash /password:PASSWORD [/user:USER] [/domain:DOMAIN]

changepw

changepw 操作将接受用户的 TGT .kirbi blob,并使用指定的 /new:PASSWORD 值执行 MS kpasswd 密码更改。如果未指定 /dc,则提取计算机的当前域控制器并将其用作密码重置流量的目的地。

/targetuser 和 /targetdomain 参数可用于更改其他用户的密码,前提是提供 TGT 的用户具有足够的权限。

注意,可以使用用户的 TGT 或 kadmin/changepw 的服务票据来更改密码

root@kitploit:~
krb_changepw /ticket:BASE64 /new:PASSWORD [/dc:DC] [/targetuser:USER] [/targetdomain:DOMAIN]

TODO

  • 实现 asktgt /cert:...
  • 重构代码以减小 BOF 体积
  • 扩展 describe 的输出
  • 如果你需要什么,请通过 X 或 TG 私信我 :)

致谢

  • Rubeus - https://github.com/GhostPack/Rubeus
  • CS-Situational-Awareness-BOF - https://github.com/trustedsec/CS-Situational-Awareness-BOF
  • nanorobeus - https://github.com/wavvs/nanorobeus
下载工具