首页 / 资讯中心 / 文章详情

AD Kerberos委派加固实战测评:4大加固+4类攻击完整避坑手册

AD Kerberos委派加固实战测评:4大加固+4类攻击完整避坑手册 ★ FEATURED ARTICLE
前言做域安全运维、红队渗透的人几乎天天和Kerberos委派打交道。圈内绝大多数资料都停留在“攻击利用演示通用加固清单”的固定套路里没人真正落地验证微软官方给出的四条AD委派加固策略到底能挡住什么攻击、拦不住什么、防护边界在哪里、有没有大量无效配置。网上流传着大量错误认知域管账户默认自带不可委派保护、Protected Users组可以替代账户委派标记、RBCD加固能顺带防御影子凭据、委派加固可以缓解Kerberoasting爆破。这些说法没有任何实测依据却被反复转发导致大量企业域环境加固流于形式看似配置齐全高危攻击链路依旧畅通。本次我基于 Windows Server 2019 域控、Windows 2016 域功能级别搭建纯净隔离靶场搭建 4×4 对照实验矩阵用约束委派、RBCD、影子凭据、Kerberoasting 四类主流高危攻击逐一测试微软官方四项委派加固策略的真实防护效果。所有结论均来自变量唯一的对照测试推翻多个行业流传已久的错误结论同时整理出可直接落地的优先级加固清单、环境回滚方案与避坑准则。一、实验前置理清Kerberos委派攻击与加固底层逻辑所有AD委派攻击的核心都依托Kerberos协议的S4U协议扩展包括S4U2Self和S4U2Proxy两个核心能力。S4U2Self 允许服务账户以自身身份向KDC申请任意用户的本地票据S4U2Proxy 则可以将该票据转发到目标服务实现身份冒用。微软设计四项委派加固的初衷是从主体、权限、身份三个维度限制S4U协议的滥用但官方文档从未明确标注每一项加固的作用层级、覆盖范围和失效场景这也是企业加固普遍踩坑的核心原因。1.1 四类核心攻击链底层原理本次实测覆盖域环境中最常被利用的四条Kerberos攻击链路全部为红队实战高频利用路径无小众场景。约束委派攻击核心前置条件为目标账户/机器配置了指定服务的约束委派权限。攻击者利用被信任的委派主体通过S4U协议模拟高权用户获取目标服务票据进而横向移动、权限提升。攻击全程依托已授权的委派关系传统权限监控很难溯源。RBCD攻击基于资源的约束委派核心前置条件为低权限用户拥有机器账户创建权限、可修改目标机器的msDS-AllowedToActOnBehalfOfOtherIdentity属性。普通域用户默认拥有创建10个机器账户的权限这是绝大多数域环境的默认漏洞攻击者无需高权初始权限即可从零搭建委派攻击链路。影子凭据攻击核心前置条件为攻击者拥有目标对象的属性写入权限可修改msDS-KeyCredentialLink属性。写入恶意凭据后通过PKINIT协议申请TGT票据直接导出目标机器/用户的NT哈希权限危害等同于直接拿下目标对象控制权。Kerberoasting攻击核心前置条件为域内存在绑定SPN的服务账户。攻击者无需特殊权限普通域用户即可枚举所有SPN账户申请RC4加密服务票据离线暴力破解获取服务账户明文密码是域内最易触发、最容易被忽视的高危攻击。1.2 微软四项官方加固策略定义本次实测的四项加固均为微软官方公开的AD委派安全加固方案也是企业域安全基线的标配内容。D1 账户敏感不可委派通过设置用户UAC位 AccountNotDelegated1048576标记账户为敏感身份禁止被S4U协议模拟冒用保护对象为高权限用户账户。D2 不信任账户委派权限清空账户/机器的msDS-AllowedToDelegateTo属性撤销TRUSTED_FOR_DELEGATION标志直接回收主体的委派信任资格保护对象为所有具备委派能力的主体。D3 加入Protected Users组AD内置高安全保护组默认禁止组成员被委派冒用、限制票据缓存、屏蔽多种凭证窃取行为是通用高权账户保护方案。D4 收紧对象敏感属性ACL权限通过修改AD对象ACL禁止普通用户写入msDS-AllowedToActOnBehalfOfOtherIdentity、msDS-KeyCredentialLink两大敏感属性从权限源头阻断属性篡改类攻击。1.3 攻击链路流程图二、实验环境与标准化测试方案本次实验全程采用纯净基线环境无任何额外加固、无第三方安全软件干扰所有实验对象统一前缀测试完成后完整回滚保证每一组测试变量唯一结论真实可复现。2.1 靶场环境参数域控系统Windows Server 2019 Datacenter 10.0.17763域/林功能级别Windows2016Domain、Windows2016Forest辅助主机Windows Server 2019 已入域主机诱饵测试机机器账户配额默认10域环境原生配置未修改测试基线实验前域内约束委派、RBCD配置为0仅域控默认自带无约束委派配置环境干净无残留风险。2.2 测试工具版本全程使用稳定版渗透工具避免版本漏洞导致测试误差impacket 0.13.1委派枚举、票据申请、横向利用核心工具Certipy 5.1.0影子凭据专属利用工具WinRM/PowerShell远程配置、属性修改、权限校验2.3 实验对象角色划分所有对象以D13_为前缀方便批量回滚清理覆盖低权用户、高权域管、服务账户、机器账户全场景D13_svc_web带SPN服务账户Kerberoasting核心测试目标、委派主体D13_alice普通低权域用户模拟内网初始沦陷用户D13_admin域管理员账户高权保护测试对象D13_svc_adminServer/Backup Operators高权账户非域管核心对照测试对象D13EVIL/D13TARGET测试机器账户承担委派发起、受害角色D13ATTACK$低权用户创建的攻击机器账户RBCD专属测试对象2.4 4×4完整测试矩阵设计本次测试严格遵循单一变量原则每一组测试仅启用一项加固其余配置保持基线状态完整覆盖16组组合场景9组有效实测、6组机制不生效、1组未复现所有结果均留存日志证据。测试矩阵核心逻辑以四项攻击为被测对象四项加固为变量逐一验证防护有效性、防护层级、失效场景。三、实测核心结果推翻大量通用错误认知所有结论均经过“加固生效-撤销加固-复测”三次对照验证排除工具bug、配置静默失败、环境残留干扰杜绝单一观测误差。3.1 四项加固分属三个完全不同的防护层级这是本次实验最核心的结论也是绝大多数企业加固出错的根源。四项加固并非同级防护不存在互相替代关系防护链路完全不同。断主体层级D2直接清除委派主体的信任权限从源头切断委派攻击能力。约束委派攻击在该加固下全程无法启动整条链路直接失效是彻底的链路级防护。断写权限层级D4管控AD对象敏感属性写入权限阻断攻击者篡改RBCD、影子凭据核心属性的行为。RBCD、影子凭据两类攻击全部依赖属性写入D4可以同时防护这两类攻击属于底层权限防护。断身份层级D1、D3不修改任何委派配置、不限制任何攻击操作仅在攻击者最后一步冒用高权身份时被KDC拒绝票据签发。攻击者可以完整走完攻击流程仅特定受保护账户无法被冒用未保护账户依旧可以正常利用。3.2 证伪域管账户无自动委派保护机制全网流传最广的错误认知域管理员加入Domain Admins组后系统会自动开启不可委派保护。本次实测彻底推翻该结论。新建账户加入Domain Admins组后即时查询UAC值为66048AccountNotDelegated 固定为 False无任何自动标记行为。系统内置Administrator账户adminCount1、归属域管组依旧默认未开启不可委派标记。AD的AdminSDHolder机制仅每小时重写高权对象的ACL权限完全不干预userAccountControl属性不会自动配置不可委派标记。所有高权账户包括域管、服务器操作员、备份操作员、业务服务账户全部需要手工批量打标无任何系统兜底机制。未打标的高权账户可直接被S4U协议冒用身份攻击者无需突破任何权限即可完成委派提权。3.3 D1与D3防护范围不重叠、不可替代多数运维默认将“加入Protected Users组”和“设置账户不可委派标记”视为等效操作实测两者防护边界存在明显差异。针对Administrator内置账户测试开启D1不可委派标记后KDC直接拒绝身份冒用攻击失败将账户加入Protected Users组D3后攻击者依旧可以成功冒用身份、获取服务票据。核心差异D1针对账户委派冒用行为做精准拦截D3是通用凭证保护无法覆盖所有委派攻击场景。企业仅配置Protected Users组加固不配置不可委派标记域管账户依旧存在被委派提权的风险。3.4 RBCD与影子凭据共享同一防护点圈内普遍将RBCD和影子凭据分为两类独立攻击加固时单独配置RBCD权限忽略影子凭据防护。实测证明两者底层依赖同一漏洞AD对象敏感属性写入权限。RBCD攻击依赖修改 msDS-AllowedToActOnBehalfOfOtherIdentity 属性影子凭据攻击依赖修改 msDS-KeyCredentialLink 属性。收紧这两个属性的ACL写入权限D4可以同时阻断两类攻击攻击者直接卡在属性写入阶段报错 INSUFF_ACCESS_RIGHTS整条攻击链路报废。只加固RBCD不防护KeyCredentialLink等于完全暴露影子凭据高危攻击面这是绝大多数企业域环境的加固盲区。3.5 四项委派加固对Kerberoasting全部无效这是本次实验最颠覆认知的结论。所有委派类加固策略完全无法防护Kerberoasting攻击。Kerberoasting的核心原理是枚举SPN账户、申请服务票据、离线爆破全程不依赖任何委派机制。无论是否开启账户不可委派、是否撤销委派信任、是否加入保护组、是否收紧属性权限攻击者都可以正常申请RC4加密票据离线爆破不受任何影响。唯一能有效抬高Kerberoasting攻击成本的方式是强制服务账户启用AES256加密。设置 msDS-SupportedEncryptionTypes24 后票据加密类型从etype23RC4变为etype18AES256爆破成本从分钟级提升至几乎不可行。该配置不属于委派加固是独立的票据加密加固策略。3.6 无约束委派攻击的真实前置条件本次实验完整配置无约束委派环境但三次不同方式尝试均无法复现TGT票据截获最终定位真实攻击前置条件。计划任务密码登录、PSSession远程登录、服务账户登录三种场景测试证明网络类型登录不会在本地缓存TGT票据仅交互式登录Type2、服务登录Type5会缓存TGT。无约束委派不等于直接沦陷必须同时满足三个条件目标主机开启无约束委派、高权用户在主机完成交互式/服务登录、攻击者获取主机本地管理员权限。单纯配置无约束委派无法直接触发提权攻击。四、逐类攻击加固效果详细复盘4.1 约束委派攻击A2基线状态下攻击百分百成功可正常模拟各类用户获取服务票据。D2加固效果最优清空委派主体信任权限后整条攻击链路直接阻断无任何利用可能。D1、D3仅针对特定受保护账户生效未打标普通用户、低权账户依旧可以被正常模拟攻击链路未被切断仅缩小攻击范围无法彻底防护。4.2 RBCD攻击A3D4加固从权限源头阻断攻击攻击者无法写入RBCD核心属性攻击直接失效。D1加固仅拦截最后一步身份冒用攻击者可以正常创建机器账户、写入RBCD属性攻击前置操作全部完成仅高权受保护账户无法利用其余账户依旧存在风险。4.3 影子凭据攻击A4仅D4加固有效收紧KeyCredentialLink属性写入权限后无法植入恶意凭据不能申请TGT、导出NT哈希。D1、D2、D3三项加固对影子凭据完全无效攻击者可正常完成全套攻击流程。4.4 Kerberoasting攻击A5所有委派加固均无防护效果票据签发、RC4加密、离线爆破全程不受影响。仅强制AES加密可有效防护无其他替代方案。五、可直接落地的优先级加固清单附完整脚本根据实测防护收益、阻断层级、落地难度整理从高到低的加固顺序优先配置链路级阻断策略再补充账户级防护最后优化加密策略。所有脚本可直接复制批量执行。5.1 一级加固收紧敏感属性ACL阻断RBCD影子凭据最高优先级加固一次性阻断两类高危攻击从底层权限封堵漏洞。# 批量收紧机器账户敏感属性写入权限$domain(Get-ADDomain).DNSRoot$aclNew-ObjectSystem.DirectoryServices.ActiveDirectoryAccessRule((Get-ADGroupDomain Users).SID,WriteProperty,Deny,None,$true,(msDS-AllowedToActOnBehalfOfOtherIdentity,msDS-KeyCredentialLink))Get-ADComputer-Filter*|ForEach-Object{$adobjGet-ADObject$_.DistinguishedName-Properties nTSecurityDescriptor$adobj.nTSecurityDescriptor.AddAccessRule($acl)Set-ADObject-Instance$adobj}# 批量收紧用户账户敏感属性写入权限Get-ADUser-Filter*|ForEach-Object{$adobjGet-ADObject$_.DistinguishedName-Properties nTSecurityDescriptor$adobj.nTSecurityDescriptor.AddAccessRule($acl)Set-ADObject-Instance$adobj}5.2 二级加固清理域内无效委派信任阻断约束委派# 清空所有账户约束委派配置Get-ADUser-Filter{msDS-AllowedToDelegateTo-ne$null}|Set-ADUser-AllowedToDelegateTo ()# 清空所有机器账户约束委派配置Get-ADComputer-Filter{msDS-AllowedToDelegateTo-ne$null}|Set-ADComputer-AllowedToDelegateTo ()# 撤销服务账户委派信任位Get-ADUser-Filter*|Set-ADUser-TrustedForDelegation$false5.3 三级加固批量清点高权未打标账户# 批量查询所有未开启不可委派的高权账户$highGroups (Domain Admins,Enterprise Admins,Schema Admins,Server Operators,Backup Operators)$highUsers ()foreach($groupin$highGroups){$highUsersGet-ADGroupMember$group-Recursive|Get-ADUser-Properties AccountNotDelegated}$highUsers|Where-Object{$_.AccountNotDelegated-eq$false}|Select-ObjectName,SamAccountName,DistinguishedName|Export-CsvC:\AD_Untagged_User.csv-NoTypeInformation-Encoding UTF85.4 四级加固批量给高权账户开启不可委派标记# 批量开启高权账户敏感不可委派Import-CsvC:\AD_Untagged_User.csv|ForEach-Object{Set-ADUser-Identity$_.SamAccountName-AccountNotDelegated$true}5.5 五级加固服务账户强制AES加密防护Kerberoasting# 批量设置服务账户仅AES256加密Get-ADUser-Filter{SPN-ne$null}|Set-ADUser-SupportedEncryptionTypes 24六、实验避坑准则纠正加固常见错误操作本次实验两次推翻自身初始结论核心问题都是依赖命令执行结果未校验配置实际生效状态这是运维加固的高频误区。第一PowerShell修改AD权限、属性时命令无报错不代表配置生效。ACL删除规则需要字段完全匹配规则细微差异会导致静默失败必须修改后读取属性校验。第二不能通过“加固后攻击失败”判定加固有效必须做撤销加固对照测试。很多攻击失败是环境bug、参数缺失导致和加固策略无关单一观测结果完全不可信。第三高权账户清理时adminCount1的对象会被AdminSDHolder保护无法直接删除修改必须先退出特权组、清空adminCount属性再执行操作。第四Protected Users组不能替代不可委派标记两类配置必须同时落地缺一不可。第五Kerberoasting防护不要浪费资源在委派加固上所有委派配置对爆破无效必须依赖加密算法升级和SPN精简。七、实验边界与适用范围本次所有结论仅适用于 Windows Server 2019 域控、Windows 2016 域功能级别暂不适配2022/2025新版系统新版系统存在权限机制微调。未覆盖跨域、跨林委派场景该场景攻击链路和防护逻辑与单域环境存在差异。未做真实Kerberoasting离线爆破测试AES加密防护结论基于加密强度推导符合行业安全共识。所有测试基于默认机器账户配额10配额为0的受限域环境RBCD攻击初始条件不满足防护逻辑无需调整。八、互动提问1、你的域环境中是否还在单纯依靠Protected Users组保护高权账户2、你以往加固时是否误将委派加固用于防护Kerberoasting攻击
阅读完成 · 觉得有帮助?
咨询建站