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语句,实施渗透 ...
随机推荐
- hdfs命令大全
hdfs常用命令: 第一部分:hdfs文件系统命令 第一类:文件路径增删改查系列: hdfs dfs -mkdir dir 创建文件夹 hdfs dfs -rmr dir 删除文件夹dir hdf ...
- CHAPTER 24 History of Our Planet 第24章 我们行星的历史
CHAPTER 24 History of Our Planet 第24章 我们行星的历史 Uncovering the bones of ancient beasts is only part of ...
- NO.3_1:自学python之路------番外:第三方库安装、numpy
引言 Python因为pip的存在,使得第三方库的发布和获取都比较方便.并且Python对跨平台的支持,使得其相较于C++,Java更加方便使用.在本文中,将会介绍在Windows中安装第三方库的方法 ...
- ossec代理
代理端 OSSEC有两种代理端:可安装的代理端和哑代理端(免安装).可安装的代理端被安装在主机上,通过OSSEC的加密协议将主机的信息发送到OSSEC服务器.亚代理端则不需在远端主机进行安装.他作为O ...
- MariaDB远程连接问题
MariaDB在设置完通过Navicat Premium远程连接账号验证通过,但是无法正常使用工具的功能,只能使用sql语句查询,但是通过控制台命令功能正常. 经过修改账号权限,添加新用户等功能都无法 ...
- IE10不能显示JSON文件内容
IE7,8,9下Ajax返回后,再执行跳转,会弹出阻止提示框. 所以我采用WebForm 提交思想: //导出 jv.postOpen = jv.PostOpen = jv.Export = func ...
- 第十三次ScrumMeeting博客
第十三次ScrumMeeting博客 本次会议于12月3日(六)21时30分整在3公寓725房间召开,持续20分钟. 与会人员:刘畅.辛德泰.张安澜.赵奕. 1. 每个人的工作(有Issue的内容和链 ...
- 使用SSD目标检测c++接口编译问题解决记录
本来SSD做测试的Python接口用起来也是比较方便的,但是如果部署集成的话,肯定要用c++环境,于是动手鼓捣了一下. 编译用的cmake,写的CMakeList.txt,期间碰到一些小问题,简单记录 ...
- 用java构造一个带层次的文件目录遍历器
import java.util.List; import java.io.File; import java.util.ArrayList; public class IteratorUtil { ...
- 第二阶段Sprint冲刺会议3
进展:讨论视频录制的具体功能,查看有关资料,开始着手编写有关代码.