。
点击上方蓝字关注我们
**建议大家把公众号“TeamSecret安全团队”设为星标,否则可能就看不到啦!**因为公众号现在只对常读和星标的公众号才能展示大图推送。操作方法:点击右上角的【...】,然后点击【设为星标】即可。
免责申明
"本文档所提供的信息旨在帮助网络安全专业人员更好地理解并维护他们负责的网站和服务器等系统。我们鼓励在获得适当授权的情况下使用这些信息。请注意,任何未经授权的使用或由此产生的直接或间接后果和损失,均由使用者自行承担。我们提供的资源和工具仅供学习和研究之用,我们不鼓励也不支持任何非法活动。"
"我们创建这个社区是为了促进技术交流和知识分享。我们希望每位成员都能在遵守法律法规的前提下参与讨论和学习。如果使用本文档中的信息导致任何直接或间接的后果和损失,我们提醒您,这将由您个人承担。我们不承担由此产生的任何责任。如果有任何内容侵犯了您的权益,请随时告知我们,我们将立即采取行动并表示诚挚的歉意。我们感谢您的理解和支持。"
非约束委派
通俗来讲就是 :
在域中如果出现A使用Kerberos身份验证访问域中的服务B,而B再利用A的身份去请求域中的服务C,这个过程就可以理解为委派
一个经典例子:参考Y4er
jack需要登陆到后台文件服务器,经过Kerberos认证的过程如下:
1. jack以Kerberos协议认证登录,将凭证发送给websvc
2. websvc使用jack的凭证向KDC发起Kerberos申请TGT。
3. KDC检查websvc的委派属性,如果websvc可以委派,则返回可转发的jack的TGT。
4. websvc收到可转发TGT之后,使用该TGT向KDC申请可以访问后台文件服务器的TGS票据。
5. KDC检查websvc的委派属性,如果可以委派,并且权限允许,那么返回jack访问服务的TGS票据。
6. websvc使用jack的服务TGS票据请求后台文件服务器。
这里就相当于说 jack 登录到web服务器后 访问后台文件服务器 是没有权限的 后台服务器以为是websvc在访问它,但如果websvc设置了委派 就可以以jack的身份去访问后台这样 就有权限访问 这个时候websvc也可以使用jack的身份访问其他jack有权限访问的服务。
非约束委派攻击原理及利用
当前域环境
域控:redteam\administrator(10.10.10.10) 域内主机(配置了非约束性委派):redteam\saulGoodman(10.10.10.8)
非约束委派 首先创建一个非约束委派账户,注册 SPN:
setspn -U -A MSSQLSvc/mssql.redteam.com:1433 saulgoodman
然后需要把委派属性打开:
当服务账号或者主机被设置为非约束性委派时,其 userAccountControl
属性会包含 TRUSTED_FOR_DELEGATION
:
查找域内非约束委派用户和计算机
发现域内主机主机我一般是使用 LDAP,可以使用如下方式:
Adfind 下载地址:
https://www.softpedia.com/get/Programming/Other-Programming-Files/AdFind.shtml
Adfind 使用参数:
AdFind [switches] [-b basedn] [-f filter] [attr list]
-b:指定要查询的根节点
-f:LDAP过滤条件
attr list:需要显示的属性
例如需要查询当前域内的非约束委派用户:
AdFind.exe -b "DC=redteam,DC=com" -f "(&(samAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=524288))" cn distinguishedName
可以看到 saulgoodman 这个用户就是域内非约束委派用户!
查找非约束委派用户的工具还有很多!例如 Adfind、ldapdomaindump、PowerView … 等等,我最常用的还是 Adfind。
非约束委派攻击利用
非约束委派:当 user
访问 service1
时,如果 service1
的服务账号开启了 unconstrained delegation(非约束委派)
,则当 user
访问 service1
时会将 user
的 TGT
发送给 service1
并保存在内存中以备下次重用,然后 service1
就可以利用这张TGT
以 user
的身份去访问域内的任何服务(任何服务是指user
能访问的服务) 流程如下:
1. 用户向KDC请求可转发TGT,记为TGT1
2. KDC返回TGT1
3. 用户通过TGT1向KDC请求转发TGT2
4. KDC返回TGT2
5. 用户通过TGT1向KDC申请访问服务1的RST
6. KDC返回RST
7. 用户发送RST、TGT1、TGT2和TGT2的SessionKey给服务1
8. 服务1通过用户的TGT2请求KDC,以用户名义请求服务2的RST(服务访问票据)
9. KDC给服务1返回服务2的RST
10. 服务1以用户名义向服务2发出请求
11. 服务2响应服务1的请求
12. 服务1响应用户第7步骤的请求
这个流程有一个问题:TGT2是不被限制的,服务1完全可以用它来请求访问任何想访问的服务。攻击其实就是利用的这点,使用从高权限账户处得到的TGT去获取权限。
当前域:redteam.com
域控主机名:AD-2016(IP:10.10.10.10)、用户 redteam\administrator (win2016)
域内主机名:web-2008(IP:10.10.10.8)、用户 redteam\saulGoodman (win2008)
在 Windows 系统中,只有服务账号和主机账号的属性才有委派功能,普通用户默认是没有的!
现在我们将 web-2008
这个主机用户设置为非约束委派(注意是:主机用户而不是服务用户)
当 web-2008
机器上设置了非约束委派。使用 dc
或者域管,去登录 web-2008
,可在 web-2008
上留存票据凭证,然后需要让域控模拟访问被设置了非约束委派的机器:
Enter-PSSession -ComputerName web-2008
注意:如果遇到这种情况需要开启 wmirm
端口:(原因是 wmi
版本太老了,需要加 -Port
指定端口,老版本的 wmi
端口是 80
)
使用命令行打开 wmi 服务:(需要管理员权限):
WinRM QuickConfig (y)
配置好后查看是否有回显,如果有就说明开启成功了:
域控模拟访问被设置了约束委派的机器后,这个时候其实域管理员的 TGT
已经缓存在 web-2008
机器上了。
此时域管的凭证已缓存于目标机器,使用域内机器登录本地****管理员,导出相关凭证、清除一下当前票据缓存:
mimikatz "privilege::debug" "kerberos::purge" "exit"
然后我们就可以使用 mimikatz
即 dump
所有票据出来:
privilege::debug
sekurlsa::tickets /export
这个时候 [0;7a2f78]-2-0-60a10000-Administrator@krbtgt-REDTEAM.COM.kirbi
就是域管理 administrator
的 TGT
!我们现在访问域控肯定是访问不了的:
这个时候就就需要通过 ptt
将 TGT
注入到当前会话中:
kerberos::ptt [0;7a2f78]-2-0-60a10000-Administrator@krbtgt-REDTEAM.COM.kirbi
这个时候就能访问到域控了:(用本地管理员才可以,所以需要提权到本地 administrator 权限)
加入纷传
掌握免杀艺术,深入内网核心。
我们是您网络安全技能提升的加速器,专注于免杀技术和内网渗透的深度培训。在这里,您将学习如何无声无息地穿透防御,掌握网络安全的高级技巧。
免杀专精:学会如何在不触发警报的情况下进行有效渗透。
内网精通:深入网络的心脏地带,学习如何识别和利用关键漏洞。
实战演练:通过模拟真实攻击场景,提升您的应对策略。
加入我们,让免杀和内网渗透成为您网络安全职业生涯的利器。
Tips:
每周不定时纷传小圈子都会开启公开课!
TeamSecret安全团队初衷
我们的目标是:
知识普及:让更多人了解网络安全的基础知识和最新动态。
技能提升:为网络安全从业者和爱好者提供实战技能的提升。
案例分析:深入剖析国内外网络安全事件,提炼经验教训。
攻防演练:模拟攻击与防御场景,提高应对网络威胁的能力。
我们的内容涵盖:
攻击队常用的网络攻击技术与工具。
网络攻防演练的策略与实战案例。
系统漏洞分析与防御措施。
网络安全法律法规与伦理道德。
网络安全行业动态与未来趋势。
加入我们,您将获得:
专业的网络安全知识分享。
与行业专家的互动交流机会。
网络安全防护的实用技巧。
网络安全事件的深度解析。
安全第一,技术先行。 我们相信,通过不断的学习和实践,我们能够共同构建一个更加安全、稳定的网络环境。
关注我们,一起探索网络安全的奥秘,成为网络世界的守护者!
添加作者微信发送:进群,邀请你加入学习交流群