在企业的Active Directory域环境中,Kerberos认证协议作为主流的身份验证方案,支撑着数千台主机与用户的权限交互。为了简化跨服务的授权流程,委派机制被广泛应用,但其中非约束委派因设计上的天然缺陷,成为域渗透中极具威胁的攻击向量之一。本文将从基础概念出发,拆解非约束委派的运行逻辑,讲解攻击原理与TGT票据捕获的完整流程,同时给出对应的防御建议,帮助企业安全人员识别与防范这类高危攻击。
一、AD域与Kerberos认证基础
AD域是微软推出的集中式目录服务,用于统一管理域内的用户、计算机、组等资源,而Kerberos是AD域默认的身份验证协议,其关键流程依赖四个角色:客户端、密钥分发中心(KDC,包含认证服务AS和票据授予服务TGS)、资源服务器,以及KRBTGT账户(KDC的内置服务账户,负责签名所有的Kerberos票据)。
Kerberos的完整验证流程分为五个步骤:
1、客户端向AS发起认证请求,提交自己的用户名,AS通过域控制器的用户数据库验证用户身份后,生成会话密钥与TGT,将其加密后返回给客户端;
2、客户端收到加密的TGT与会话密钥后,解密得到会话密钥,随后向TGS请求服务票据(ST),提交要访问的资源名称与TGT;
3、TGS验证TGT的有效性后,生成对应资源的服务票据与新的会话密钥,加密后返回给客户端;
4、客户端携带服务票据访问资源服务器,服务器验证票据的签名与有效性后,允许客户端访问对应资源;
5、双方完成数据交互后,会话密钥会被销毁,避免被窃取。
其中TGT也就是票据授予票据,是Kerberos认证中的核心凭证,默认有效期为10小时,可更新周期最长为7天,其内部包含客户端身份信息、会话密钥与过期时间,由KRBTGT账户的加密密钥签名,一旦获取到合法的TGT,攻击者就能伪造对应用户的身份发起任意域内操作。
二、非约束委派的运行逻辑
委派机制的本质是允许服务模拟客户端的身份,访问其他受保护的资源,比如一台WEB服务器需要调用后端的数据库服务,就需要通过委派将客户端的身份传递给数据库服务。根据配置方式的不同,委派分为约束委派与非约束委派两类:
1、约束委派:服务只能模拟预先指定的用户,访问预先配置的资源,需要在AD中显式设置允许的用户与资源列表,安全性相对较高;
2、非约束委派:服务可以模拟任意访问它的客户端,访问任意域内资源,无需预先配置允许的用户与资源,只要开启该功能,就能直接获取到客户端的完整TGT。
当客户端访问开启了非约束委派的主机时,KDC会将客户端的TGT与服务票据一同返回给该主机,而非约束委派的服务会将TGT保存在本地的LSASS进程内存中,以便后续模拟客户端身份访问其他资源。这就为攻击者留下了可乘之机:只要攻击者获取到开启非约束委派主机的本地管理员权限,就能导出内存中保存的所有TGT票据。
三、非约束委派攻击的完整流程
1、确认域内存在开启非约束委派的主机:可以通过PowerShell命令快速查询,命令如下:
Get-ADComputer -Filter {UserAccountControl -band 0x100000} -Properties UserAccountControl, Name, DNSHostName
该命令会筛选出所有开启了非约束委派的计算机账户,同时输出主机名称与DNS地址,方便后续定位目标。
2、获取普通域用户权限:攻击者可以通过钓鱼邮件、未修补的系统漏洞、弱口令爆破等方式,获取一台普通域成员主机的本地管理员权限,或者直接拿到一个普通域用户的账号密码。
3、诱导高权限用户访问目标主机:攻击者需要诱导域管理员或其他高权限用户访问开启了非约束委派的主机,比如通过共享文件夹、内部通知等方式,让高权限用户登录该主机或访问其共享资源。当高权限用户完成访问后,其TGT就会被保存在该主机的LSASS内存中。
4、导出内存中的TGT票据:攻击者在获取目标主机的本地管理员权限后,可以使用Mimikatz工具导出内存中的Kerberos票据,具体命令如下:
mimikatz.exe "privilege::debug" "sekurlsa::tickets" exit
运行该命令后,工具会列出当前LSASS进程中保存的所有Kerberos票据,其中就包含高权限用户的TGT,攻击者可以将其导出为文件或提取Base64编码的票据内容。
5、利用TGT发起后续攻击:攻击者可以使用Rubeus工具将导出的TGT注入到当前进程中,实现身份伪造,命令示例如下:
Rubeus.exe ptt /ticket:base64编码的TGT票据
注入成功后,攻击者就能以高权限用户的身份请求任意域内资源的服务票据,比如访问域控制器的LDAP服务,修改域内权限,甚至获取KRBTGT账户的相关信息,完全接管整个域环境。
四、域内TGT票据的检测与防御
针对非约束委派攻击与TGT票据捕获,企业可以通过以下方式进行检测与防御:
1、定期扫描域内的非约束委派主机:除了使用PowerShell命令外,还可以通过ADSI编辑工具,查看计算机账户的userAccountControl属性,确认是否包含0x100000的标志位,定期清理不必要的非约束委派配置。
2、监控Kerberos票据的异常行为:开启Windows事件日志的相关审核策略,监控LSASS进程的访问事件(事件ID 4663)、TGS请求事件(事件ID 4769)与票据更新事件(事件ID 4770),当发现大量异常的票据请求或内存访问行为时,及时触发告警。
3、限制高权限用户的登录范围:请不要让域管理员登录普通的成员主机或未受保护的服务器,仅允许域管理员登录域控制器与指定的管理主机,避免高权限用户的TGT被保存在非授权的主机内存中。
4、启用安全防护措施:启用Windows Defender Credential Guard,该功能会将LSASS进程的内存隔离在受保护的区域中,阻止恶意工具读取内存中的票据;同时禁用WDigest认证,避免攻击者通过该协议获取明文密码;使用AES-256加密替代弱加密算法,提升Kerberos票据的安全性。
5、优先使用更安全的委派方式:将非约束委派替换为约束委派或基于资源的约束委派,这两种委派方式都需要显式配置允许的用户与资源,大幅缩小攻击面,降低安全风险。
五、实战中的注意事项
在进行安全测试或应急响应时,需要注意以下细节:
1、诱导用户访问的场景需要贴合日常业务,比如共享文件夹中放置看似有价值的内部文档,避免引起用户的怀疑;
2、如果域内启用了Kerberos强加密策略,导出的TGT需要使用对应的加密密钥才能正常使用,攻击者需要提前获取相关密钥信息;
3、部分企业会部署SIEM工具或EDR产品,会拦截Mimikatz等恶意工具的运行,攻击者需要提前绕过这些防护措施;
4、所有的渗透测试操作都需要获得企业的书面授权,未经授权的攻击行为可能触犯法律法规,带来严重的法律后果。
非约束委派攻击是AD域环境中常见的高危攻击向量,其典型危害在于可以通过捕获TGT票据,快速实现域权限的横向移动与完全接管。企业安全人员需要重视域内的委派配置管理,定期开展安全扫描与审计,同时加强员工的安全培训,避免被攻击者诱导访问非授权主机,从多个维度提升域环境的整体安全性。















