Kerberos无约束委派的攻击和防御
0x00 前言简介
当Active Directory首次与Windows 2000 Server一起发布时,Microsoft就提供了一种简单的机制来支持用户通过Kerberos对Web服务器进行身份验证并需要授权用户更新后端数据库服务器上的记录的方案。这通常被称为Kerberos double-hop issue(双跃点问题),需要委派才能使Web服务器在修改数据库记录时模拟用户操作。
0x01 Kerberos Unconstrained Delegation(Kerberos无约束委派)
Microsoft在Windows 2000中已添加了Kerberos“无约束委派”功能。域管理员可以通过勾选第二个复选框来启用此委派级别。第三个复选框用于“约束委派”,它要求在启用了委派的计算机上列出特定的Kerberos服务。
PowerShell查找Kerberos无约束委派:
使用Active Directory PowerShell模块的Get-ADComputer发现Kerberos无约束委派的计算机是比较容易。
无约束的委托:TrustedForDelegation = True
约束委派:TrustedToAuthForDelegation = True
0x02 Kerberos通信流程
让我们遵循标准的Kerberos通信流程,这是一个描述Kerberos如何工作的快速示例:
用户使用用户名和密码登录
1A.密码转换为NTLM哈希且时间戳用哈希加密,并把它作为身份验证票证(TGT)请求(AS-REQ)的身份验证者发送到KDC(密钥分配中心)
1B.域控制器(KDC)检查用户信息(登录限制,组成员等)并创建票据授予票证(TGT)
2. TGT经过加密和签名并发送给用户(AS-REP)。只有域中的Kerberos服务(KRBTGT)才能打开和读取TGT数据
3.当请求票证授予服务(TGS)票证(TGS-REQ)时,用户将TGT发送给DC。DC打开TGT并验证PAC校验----如果DC可以打开票证并校验和检出,则TGT 是有效的,TGT中的数据被有效地复制来创建TGS票证
4.使用目标服务帐户的NTLM密码哈希对TGS进行加密并发送给用户(TGS-REP)
5. 用户连接到服务器托管服务的适当的端口并发送给TGS(AP-REQ)。
该服务使用其NTLM密码哈希打开TGS票证。
当托管在TGS-REQ中引用的服务主体名称中指定的服务的服务器上启用Kerberos无约束委派时(步骤3),DC控制器的域控制器将用户的TGT副本存放到服务票证中。当用户的服务票证(TGS)被提供给服务器以进行服务访问时,服务器打开TGS并将用户的TGT放入LSASS以方便以后使用。Application Server现在可以无限制地模拟该用户操作!
注意:为了使应用程序服务器配置“Kerberos Unconstrained
Delegation”,域管理员或企业管理员需要在域中的计算机帐户上配置此设置。此权限可以委派给其他组,因此请谨慎在Active Directory中授权用户权限。
0x03 无约束委派盗取凭证
作为攻击者,一旦找到具有Kerberos无约束委派的服务器,那么下一步可以如下:
1.通过管理员或服务帐户攻击服务器。
2.通过社会工程学使用Domain Admin连接到服务器上的任何服务,并且具有无约束委派权限。
3.当管理员连接到此服务时,管理员的TGS服务票证(使用TGT)将发送到服务器并存入LSASS中,以方便以后使用。
4.可以提取并重新使用域管理员身份验证(TGT)票证(直到票有效期为止)。
5.可以立即使用该票证以获取域KRBTGT帐户密码哈希(当域管理员被泄露时),在这种情况下,我们使用PowerShell远程操作作为域管理员连接到域控制器。
0x04 防御措施
1.不要使用Kerberos无约束委派权限 -----配置需要使用约束委派进行委派的服务器
2.将所有高权限的管理员帐户配置为“帐户敏感且无法委派”
3.从Windows Server 2012 R2域功能级别开始提供的“受保护用户”组也可以缓解此问题,因为此组中的帐户不允许委派。
注意:
当受保护用户的组帐户升级到Windows
Server 2012 R2域功能级别时,将自动应用基于域控制器的保护。对Windows Server
2012 R2域进行身份验证的受保护用户组的成员无法再使用以下身份进行身份验证:Windows 8.1设备连接到Windows Server 2012 R2主机时.
默认凭据委派(CredSSP):即使启用了“ 允许委派默认凭据组策略”设置,也不会缓存纯文本密码凭据。
Windows摘要(Windows Digest):即使启用了Windows摘要,也不会缓存纯文本密码凭据。
NTLM:NT单向函数NTOWF的结果不会被缓存
Kerberos长期密钥:来自Kerberos初始TGT请求的密钥通常被缓存,因此不会中断身份验证请求。对于此组中的帐户,Kerberos协议会在每个请求中验证身份验证。
离线登录:登录时不会创建缓存的验证程序
Kerberos无约束委派的攻击和防御的更多相关文章
- 滥用基于资源约束委派来攻击Active Directory
0x00 前言 早在2018年3月前,我就开始了一场毫无意义的争论,以证明TrustedToAuthForDelegation属性是无意义的,并且可以在没有该属性的情况下实现“协议转换”.我相信,只要 ...
- C#-黑客-数据库访问-字符串的攻击和防御
C#中用基本的方法对数据库进行增删改查,会被黑客利用,写入其他的代码以实现对数据库的数据进行其他的操作.例如: 对下列数据库的某个信息进行修改操作 修改代码: using System; using ...
- 安全性测试入门:DVWA系列研究(一):Brute Force暴力破解攻击和防御
写在篇头: 随着国内的互联网产业日臻成熟,软件质量的要求越来越高,对测试团队和测试工程师提出了种种新的挑战. 传统的行业现象是90%的测试工程师被堆积在基本的功能.系统.黑盒测试,但是随着软件测试整体 ...
- XXE注入攻击与防御
在研究XXE注入攻击之前先了解一下什么是XXE 定义 XML用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言.XML文档结构包括 ...
- Mac地址泛洪攻击的防御措施和具体配置
Mac地址泛洪攻击指的是:利用交换机的mac地址学习机制,攻击者不断地刷新mac地址,填满交换机的mac地址表,以致崩溃,使交换机不得不使用广播发包,从而获取其他人的报文信息. mac地址泛洪攻击的防 ...
- ARP缓存表的构成ARP协议全面实战协议详解、攻击与防御
ARP缓存表的构成ARP协议全面实战协议详解.攻击与防御 1.4.3 ARP缓存表的构成 在局域网的任何一台主机中,都有一个ARP缓存表.该缓存表中保存中多个ARP条目.每个ARP条目都是由一个IP ...
- 浅谈Ddos攻击攻击与防御
EMail: jianxin#80sec.comSite: http://www.80sec.comDate: 2011-2-10From: http://www.80sec.com/ [ 目录 ]一 ...
- 通过DDOS攻击流程图来浅谈如何预防Ddos攻击与防御
DDOS攻击流程图 站长之家配图(来源:ppkj.net) 一 背景 在前几天,我们运营的某网站遭受了一次ddos攻击,我们的网站是一个公益性质的网站,为各个厂商和白帽子之间搭建一个平台以传递安全问题 ...
- 《sql注入攻击与防御 第2版》的总结 之 如何确定有sql注入漏洞
看完<sql注入攻击与防御 第2版>后,发现原来自己也能黑网站了,就一个字:太爽了. 简单总结一下入侵步骤: 1.确定是否有sql注入漏洞 2.确定数据库类型 3.组合sql语句,实施渗透 ...
随机推荐
- SQL知识点脑图(一张图总结SQL)
sql语言的分类DDL:create drop alter DML:insert delete update DCL:rollback grant revoke commit 概要,主外键,视图,索引 ...
- Python处理PDF和Word文档常用的方法(二)
Python处理word时,需要安装和导入python-docx模块. 安装命令:pip install python-docx 导入命令:import docx 编码编写顺序:用docx.Docum ...
- Linux虚拟机安装教程
必备组件: vmware(程序主题) 链接:https://pan.baidu.com/s/14OplOGOQTVAnf0iDqgDhDQ 提取码:jape centos(Linux系统) 链接:ht ...
- Centos7.4简单安装使用gitlab+maven+jenkins实现java代码的持续集成部署
1.工具的简单介绍 gitlab--源代码版本管理控制工具 maven--java代码编译构建工具 jenkins--基于java开发的自动化持续集成部署工具 sonar--代码质量管理工具 2.gi ...
- easyui panel异步获取后台数据在前台显示
我在使用easyui的时候,想做一个向下图所示的效果,这个panel的样式已经做好了,想从后台异步获取json数据,然后填入到文本框中,不知道哪位大神能给点指导?万分感谢! 放入表单中,使用form对 ...
- Vue 列表渲染及条件渲染实战
条件渲染 有时候我们要根据数据的情况,决定标签是否进行显示或者有其他动作.最常见的就是,表格渲染的时候,如果表格没有数据,就显示无数据.如果有数据就显示表格数据. Vue 帮我们提供了一个v-if的指 ...
- mybatis批量插入oracle
<insert id="batchInsert" parameterType="java.util.List"> INSERT INTO TEST( ...
- Daily Scrumming* 2015.10.31(Day 12)
一.今明两天任务表 Member Today’s Task Tomorrow’s Task 江昊 学习rails的HTTP控制 继续学习rails等项目工具 杨墨犁 学习semanticUI的用法,配 ...
- 假如 GFW 遇上 ML
我稍微试了一下梯子 我稍微试了一下梯子,在有梯子的情况下进行google搜索,然后wireshark 抓包.所有问题跃然纸上 当前我认为:> 只要你和一个非国内的服务器长时高频交换数据,基本上就 ...
- 软工实践-Beta 冲刺 (7/7)
队名:起床一起肝活队 组长博客:博客链接 作业博客:班级博客本次作业的链接 组员情况 组员1(队长):白晨曦 过去两天完成了哪些任务 描述: 1.界面的修改与完善 展示GitHub当日代码/文档签入记 ...