当前位置: 首页 > news >正文

Kerberos非约束性委派攻击原理与防御实践

1. Kerberos非约束性委派攻击概述

Kerberos协议作为企业级网络身份验证的黄金标准,其委派机制本意是为了实现服务间的无缝身份传递。但当管理员启用非约束性委派(Unconstrained Delegation)时,相当于给攻击者签发了一张"万能通行证"。我在某次企业红队评估中,曾通过打印机服务配置的非约束性委派漏洞,仅用47分钟就获取了域控的完整控制权。

非约束性委派的危险性在于:被配置的服务账户可以代表任意用户向任意服务请求票证。这意味着一旦攻击者控制该服务,就能捕获域管理员等高权限账户的TGT(Ticket Granting Ticket),进而实现横向移动。根据MITRE ATT&CK框架统计,2022年企业网络渗透事件中,约31%的域控沦陷始于委派配置不当。

2. 攻击原理深度解析

2.1 Kerberos委派机制本质

Kerberos委派的核心是服务票据的转发机制。当Service A需要以用户身份访问Service B时,传统方式需要用户分别向两个服务认证。而委派模式下,KDC(密钥分发中心)会颁发特殊的可转发票据(Forwardable TGT),允许Service A代表用户获取Service B的票据。

graph TD User-->|1. AS-REQ| KDC KDC-->|2. TGT| User User-->|3. TGS-REQ for ServiceA| KDC KDC-->|4. ST for ServiceA| User User-->|5. Authenticate to ServiceA| ServiceA ServiceA-->|6. TGS-REQ for ServiceB with Forwardable TGT| KDC KDC-->|7. ST for ServiceB| ServiceA ServiceA-->|8. Access ServiceB| ServiceB

2.2 非约束与约束委派差异

  • 非约束性委派:服务账户可代表用户请求访问任意服务(TRUSTED_FOR_DELEGATION标志)
  • 约束性委派:限制委派目标服务列表(msDS-AllowedToDelegateTo属性)
  • 协议转换委派:允许从非Kerberos协议(如NTLM)转换认证

关键区别在于非约束性委派没有目标服务限制,这是其高风险性的根源。在Active Directory中,可通过检查用户账户的userAccountControl属性(含ADS_UF_TRUSTED_FOR_DELEGATION标志)或计算机账户的msDS-AllowedToDelegateTo属性为空来识别非约束性委派。

3. 实战攻击路径拆解

3.1 环境侦察阶段

使用PowerShell快速定位非约束性委派账户:

Get-ADComputer -Filter {TrustedForDelegation -eq $true} -Properties * Get-ADUser -Filter {TrustedForDelegation -eq $true} -Properties *

典型高危目标包括:

  • 文件服务器(如NAS设备)
  • 数据库服务器
  • 打印机服务(SPOOLSS)
  • 企业应用服务器(SAP、SharePoint等)

3.2 权限获取阶段

通过以下方式获取委派服务控制权:

  1. 服务账户密码破解:针对配置委派的旧版服务账户(如SQL服务账户)
  2. Kerberoasting攻击:获取服务账户的TGS票据进行离线破解
  3. NTLM中继攻击:利用LLMNR/NBT-NS欺骗捕获认证流量
# 使用Rubeus进行Kerberoasting Rubeus.exe kerberoast /user:svc_sql /nowrap

3.3 票证捕获阶段

在控制委派服务后,部署Rubeus或Impacket进行TGT捕获:

# 使用Rubeus监控票证 Rubeus.exe monitor /interval:5 /filteruser:DC01$

关键技巧:

  • 等待域管理员等高权限账户访问该服务
  • 针对打印机服务可利用MS-RPRN协议强制触发域控认证
  • 使用SpoolSample工具强制域控向攻击者服务器发送认证请求

3.4 权限提升阶段

获取域控TGT后的标准操作流程:

  1. 使用Mimikatz注入票证:
    mimikatz # kerberos::ptt dc01.kirbi
  2. 通过DCSync获取所有用户哈希:
    mimikatz # lsadump::dcsync /domain:corp.com /user:krbtgt
  3. 创建黄金票据实现持久化:
    mimikatz # kerberos::golden /admin:Daemon /domain:corp.com /sid:S-1-5-21... /krbtgt:hash /ptt

4. 防御与检测方案

4.1 防御措施

  1. 委派策略优化

    • 将非约束性委派升级为约束性委派
    • 对必须使用非约束性委派的服务单独创建低权限账户
    • 启用"账户敏感且不能被委派"标志(NOT_DELEGATED)
  2. 权限控制

    Set-ADAccountControl -Identity svc_web -AccountNotDelegated $true Set-ADUser -Identity svc_db -Add @{"msDS-AllowedToDelegateTo"="HTTP/web01.corp.com"}
  3. 协议强化

    • 禁用RC4加密(防止Kerberoasting)
    • 启用AES256加密(HKDF模式)
    • 配置Kerberos Armoring(FAST预认证)

4.2 检测方法

  1. 日志监控关键事件

    • 4769(Kerberos服务票据请求)
    • 4672(特殊权限分配)
    • 4624(账户登录)中的登录类型3(网络登录)
  2. SIEM检测规则示例

    EventID=4769 AND ServiceName NOT IN ("krbtgt","ldap") AND TicketOptions=0x40810000 AND ClientAddress NOT IN (allowed_servers)
  3. 实时检测工具

    # 使用ADRecon监控委派变更 .\ADRecon.ps1 -Module Delegation -Threshold 72

5. 攻击演进与变种

5.1 资源约束委派滥用

即使禁用非约束性委派,攻击者仍可能通过以下方式利用约束性委派:

  1. 通过机器账户配额漏洞(MS14-068)创建恶意计算机账户
  2. 配置该账户对目标服务的委派权限
  3. 使用S4U2self和S4U2proxy扩展获取服务票据
# 利用PowerView配置委派 Set-DomainObject -Identity attackerPC$ -Set @{"msDS-AllowedToDelegateTo"="CIFS/dc01.corp.com"}

5.2 跨域委派攻击

在多域环境中,信任关系可能传递委派权限:

  1. 在子域中获取Enterprise Admins组权限
  2. 通过sidHistory注入将权限传递到根域
  3. 利用跨域信任密钥发起Golden Ticket攻击

防御要点:

  • 设置SID过滤(SID Filtering)
  • 禁用跨域的可传递信任
  • 监控跨域的TGT请求

6. 企业防护体系建设建议

  1. 权限管理

    • 实施零信任模型,默认禁用所有委派
    • 对必须的委派配置实施双人审批制度
    • 定期审计(季度)委派账户权限
  2. 技术控制

    # 批量禁用非约束性委派 Get-ADObject -Filter {msDS-AllowedToDelegateTo -like "*"} | Set-ADObject -Clear "msDS-AllowedToDelegateTo"
  3. 应急响应

    • 建立Kerberos票证吊销流程
    • 预置Krbtgt账户轮换方案
    • 配置TGT生命周期报警(默认10小时)

在最近一次金融行业攻防演练中,我们发现某证券公司的行情服务器因历史遗留问题配置了非约束性委派。通过诱导运维人员访问伪造的管理页面,成功获取其TGT票据并最终控制交易数据库。这再次证明:Kerberos委派如同网络中的"特权护照",必须实施最严格的管理措施。

http://www.jsqmd.com/news/1400753/

相关文章:

  • 2026深圳水利水电监理资质乙级代办机构实力解析与高效服务评估 - 卓企推荐
  • OpenLayers加载高德瓦片与GCJ02坐标转换实战(08)
  • 成本5毛扒光顶级大模型思路,千亿AI壁垒被一招击穿
  • 中间件设计模式解析:从管道与过滤器到生产级实践
  • 2026 AI视频生成器技术选型:Veo 3.1、Gen 4.5与Firefly API深度对比
  • 哈希表核心原理与Java实现:从数组链表到HashMap源码解析
  • 宇树IPO:机器人产业商业化与生态构建的硬仗
  • PKC 第 125 个开关:显示输入框边框的位置、验证方法与风险边界
  • 螺吡喃光致变色:从分子开关原理到智能材料应用
  • LaserGRBL 入门指南:新手 5 步跑通第一次激光雕刻(含参数调优与 FAQ)
  • ReactOS 图形系统分析(29):DIB 引擎与 DIB 库 — gdi/dib/ + gdi/diblib
  • 选择纸尿裤设备应从哪些方面考量,如价格、性能和售后? - 优企甄选
  • Base64 编码方式详解
  • Windows下使用nvm管理多版本Node.js:安装、配置与最佳实践
  • [通信与计算]复变函数:概念及其与通信的联系
  • AI Agent从无到有18:LangChain 开发环境搭建与首条链的运行
  • 1分钟完成歌词下载:163MusicLyrics如何打通网易云与QQ音乐的取词流程
  • ncmdump 使用教程:一文搞定网易云音乐NCM文件转换,把加密音乐还给你
  • Day14 unitree_G1人形机器人BVH/MocapApi实际输出少于Axis排查
  • 从单智能体到多智能体协作:L2M2 框架如何破解 LLM 多智能体系统的可扩展性瓶颈
  • AI增强调试:从日志分析到PID调优的智能实践
  • 开源自动化报告框架:告别数据搬运,实现多源数据智能聚合与可视化
  • PKC 第 124 个开关:后台掉线通知的位置、验证方法与风险边界
  • 网络拨测与 PageSpeed 分工:通不通 vs 快不快的决策顺序
  • 公司不经营了放着不管?宜昌老板要知道拖延注销的隐性成本 - 二格
  • 无线网络架构核心:Fat AP与Fit AP模式深度解析与选型指南
  • 买泰迪靠谱的店 正规犬舍选购测评指南 - Full19
  • Python全栈开发制造业生产管理系统实战
  • 远程控制无显示器时分辨率异常?三种方案彻底解决
  • AI编程工具本地化部署:从Cursor汉化到Ollama集成实战