在Windows域环境中,服务账号因其与服务主体名称(Service Principal Name,SPN)的关联、高权限特性和在Kerberos认证中的关键作用,成为Active Directory(AD)渗透攻击的首要目标。服务账号通常用于运行关键服务(如SQL Server、Exchange、Web服务等),但其配置不当(如弱密码、不合理的委派设置)为攻击者提供了利用Kerberoasting、委派攻击(包括非约束委派、约束委派和基于资源的约束委派,RBCD)等技术实现权限提升或横向移动的机会。本文将全面探讨服务账号相关的攻击手法,旨在帮助读者深入理解攻击原理和机制。
一、服务账号与SPN的核心概念
1.1 服务账号的分类与特性
服务账号是为运行特定服务而创建的账号,在AD环境中分为以下类型:
账号类型 | 描述 | 特点 | SPN关联 | 攻击风险 | 典型场景 |
---|---|---|---|---|---|
域用户账号 | 如sqlsvc ,用于运行特定服务 |
本质是普通域用户,需手动配置密码 | 需注册SPN(如MSSQLSvc/sqlserver.corp.local:1433 ) |
易被Kerberoasting攻击,弱密码风险高 | SQL Server、IIS服务 |
机器账号 | 如WEB01$ ,代表加入域的计算机 |
系统生成128位随机密码,30天轮换 | 可注册SPN,密码难以破解 | 可被委派攻击利用 | 文件服务器、Web服务器 |
组托管服务账号(gMSA) | 由AD自动管理的账号 | 密码复杂,自动更新 | 可注册SPN,安全性高 | 攻击难度大 | 高安全需求的现代化服务 |
图表解读:
- 域用户账号:因手动配置密码,易因弱密码或长期不变被攻击。
- 机器账号:密码随机性强,Kerberoasting难以直接破解,但委派设置可能被利用。
- gMSA:通过AD管理密码,降低破解风险,适合高安全场景。
1.2 SPN与Kerberos认证的机制
SPN是Kerberos协议中用于标识服务实例的唯一标识符,格式为服务类型/主机名:端口
(如HTTP/webserver.corp.local:80
)。Kerberos认证流程如下:
认证阶段 | 流程 | 涉及组件 | 攻击点 |
---|---|---|---|
TGT请求 | 用户凭据向KDC请求TGT | 用户、KDC | 需有效域用户凭据 |
TGS请求 | 使用TGT请求SPN的TGS | 客户端、KDC、服务账号 | 可请求任意SPN的TGS |
服务认证 | TGS(加密部分使用服务账号NTLM哈希)发送到服务端 | 客户端、服务端 | TGS可被导出,离线破解 |
图表解读:
- TGS加密:TGS的加密部分使用服务账号的NTLM哈希,攻击者可通过Kerberoasting导出并破解。
- 低权限要求:任何域用户均可请求TGS,无需直接访问服务,降低攻击门槛。
- SPN的作用:SPN将服务账号与服务绑定,成为攻击者枚举和攻击的入口。
1.3 服务账号的典型应用场景
服务账号广泛应用于企业环境中,以下为常见场景:
服务类型 | 服务账号 | SPN示例 | 功能 | 潜在风险 |
---|---|---|---|---|
SQL Server | sqlsvc | MSSQLSvc/sqlserver.corp.local:1433 | 运行数据库服务 | Kerberoasting、横向移动 |
IIS | websvc | HTTP/webserver.corp.local | 运行Web服务 | 委派攻击、权限提升 |
文件共享 | filesvc | CIFS/fileserver.corp.local | 提供文件访问 | 数据泄露、委派攻击 |
Exchange | exsvc | exchangeMDB/exserver.corp.local | 运行邮件服务 | 邮件数据泄露、权限提升 |
图表解读:
- 多样性:服务账号覆盖多种关键服务,控制其等于控制相关资源。
- 高价值:服务账号常具有本地管理员权限或访问敏感数据的权限。
二、Kerberoasting攻击的原理和流程
2.1 攻击原理
Kerberoasting利用Kerberos协议允许域用户请求任意SPN的TGS的特性,攻击者可导出TGS并离线破解服务账号的密码。其核心特点如下:
特性 | 描述 | 攻击优势 | 限制 |
---|---|---|---|
TGS加密 | 使用服务账号的NTLM哈希加密 | 可离线破解,无需与服务交互 | 需弱密码 |
低权限要求 | 普通域用户即可请求TGS | 攻击门槛低 | 需有效域用户凭据 |
弱密码风险 | 服务账号密码常较弱 | 破解成功率高 | 强密码增加破解难度 |
图表解读:
- 攻击可行性:无需高权限,普通域用户即可发起。
- 目标选择 :优先攻击高权限服务账号(如
Domain Admins
成员)以快速提权。 - 加密算法:支持RC4(较弱,易破解)和AES(较强,破解耗时)。
2.2 攻击流程
Kerberoasting攻击流程简明高效,以下为各阶段说明:
阶段 | 动作 | 工具 | 输出 | 风险点 |
---|---|---|---|---|
枚举SPN | 扫描域内SPN账号 | GetUserSPNs.py, PowerView | SPN列表 | 暴露服务账号 |
请求TGS | 请求目标SPN的TGS | Impacket, Mimikatz | TGS文件 | 可被导出 |
离线破解 | 暴力破解NTLM哈希 | hashcat, John the Ripper | 明文密码 | 弱密码易破解 |
权限利用 | 使用密码登录服务 | PsExec, sqlcmd | 服务控制 | 权限提升 |
图表解读:
- 自动化程度:工具如Impacket支持批量枚举和请求TGS,效率高。
- 高回报:破解成功可直接控制关键服务,如数据库或Web服务器。
2.3 案例分析
场景 :域内服务账号sqlsvc
运行SQL Server,SPN为MSSQLSvc/sqlserver.corp.local:1433
,密码为Passw0rd!
。
攻击阶段 | 动作 | 结果 | 后续利用 |
---|---|---|---|
枚举 | 发现sqlsvc 的SPN |
锁定攻击目标 | 确定高价值服务 |
请求TGS | 获取TGS | 提取加密哈希 | 无需服务访问权限 |
破解 | 得到密码Passw0rd! |
控制sqlsvc |
登录SQL Server |
利用 | 登录SQL Server | 获取数据库权限 | 提取敏感数据,横向移动 |
图表解读:
- 攻击路径:从低权限用户到控制关键服务,仅需破解弱密码。
- 后续风险 :
sqlsvc
可能具有本地管理员权限,攻击者可提取其他凭据(如域管理员的NTLM哈希)。
2.4 优化攻击的策略
策略 | 描述 | 效果 |
---|---|---|
筛选高权限目标 | 优先攻击AdminCount=1 的SPN账号 |
快速提权至域管理员 |
强制弱加密 | 请求RC4加密的TGS | 提高破解速度 |
批量攻击 | 批量请求域内所有SPN的TGS | 覆盖更多目标 |
结合钓鱼 | 获取初始域用户凭据 | 降低攻击门槛 |
图表解读:
- 高效性:通过筛选和批量操作,攻击者可快速锁定高价值目标。
- 隐蔽性:结合社会工程学,获取初始凭据后即可发起攻击。
三、委派攻击的机制与类型
委派攻击利用Kerberos委派机制,允许服务账号以用户身份访问其他服务。以下通过图表解析三种委派类型及其攻击点。
3.1 委派账号的权限地图
账号类型 | 是否能委派别人 | 是否能被委派 | 备注 | 攻击场景 |
---|---|---|---|---|
域用户账号 (如sqlsvc ) |
✅(需SPN+委派权限) | ❌ | 服务账号,运行特定服务 | Kerberoasting、约束委派 |
机器账号 (如WEB01$ ) |
✅(需非约束/约束委派) | ✅ | 代表域内计算机 | 非约束委派、RBCD |
普通域用户 (如alice ) |
❌(除非特殊配置) | ✅ | 普通用户账号 | 被冒充的对象 |
图表解读:
- 委派者:域用户账号和机器账号可通过委派设置冒充其他用户。
- 被委派者:普通域用户和机器账号可被冒充,服务账号(域用户账号)不可被委派。
- 攻击焦点:服务账号因SPN和委派设置,成为攻击核心。
3.2 委派类型的权限与攻击点
委派类型 | 权限范围 | 攻击点 | 典型场景 | 风险级别 |
---|---|---|---|---|
非约束委派 | 最大:冒充用户访问任意服务 | 导出TGT,冒充高权限用户 | 控制启用了非约束委派的主机 | 高 |
约束委派 | 中等:仅限指定SPN | 伪造票据访问指定服务 | 控制服务账号,访问文件服务器 | 中 |
RBCD | 最小:目标资源控制委派 | 配置RBCD,伪造票据 | 控制机器账号,访问目标资源 | 中低 |
图表解读:
- 非约束委派:权限最大,攻击者可直接提权至域管理员。
- 约束委派:限制服务范围,但可冒充任意用户访问指定服务。
- RBCD:需控制资源或创建机器账号,适合横向移动。
3.3 非约束委派攻击
原理:服务账号可获取访问者的TGT,攻击者控制服务主机后导出TGT,冒充用户访问任意服务。
流程简述:
- 发现启用了非约束委派的账号。
- 诱导高权限用户(如域管理员)访问。
- 导出TGT,伪造用户身份。
- 访问域控或其他服务。
案例 :攻击者控制WEB01$
(启用了非约束委派),诱导域管理员访问,导出TGT,冒充域管理员运行dcsync
,提取所有用户哈希。
图表:非约束委派攻击路径
阶段 | 动作 | 结果 | 风险 | 典型工具 |
---|---|---|---|---|
发现 | 查找非约束委派账号 | 锁定WEB01$ |
暴露目标 | PowerView |
诱导 | 诱导域管理员访问 | TGT存储在内存 | 凭据泄露 | Printer Bug |
导出 | 提取TGT | 域管理员票据 | 直接提权 | Mimikatz |
利用 | 访问域控 | 控制域环境 | 完全失陷 | dcsync |
图表解读:
- 高危性:TGT可用于任意服务,攻击者可直接提权。
- 诱导技术:如Printer Bug(CVE-2020-1048),通过漏洞触发高权限用户访问。
3.4 约束委派攻击
原理:服务账号通过S4U2self和S4U2proxy协议冒充用户访问指定SPN。
流程简述:
- 发现启用了约束委派的账号。
- 伪造票据访问指定服务。
案例 :服务账号svc-web
允许访问CIFS/fileserver.corp.local
,攻击者控制svc-web
,伪造域管理员票据,访问文件服务器,下载敏感文件。
图表:约束委派攻击路径
阶段 | 动作 | 结果 | 风险 | 典型工具 |
---|---|---|---|---|
发现 | 查找约束委派账号 | 锁定svc-web |
暴露目标 | PowerView |
伪造 | 生成伪造票据 | 冒充域管理员 | 访问受限服务 | Mimikatz |
利用 | 访问文件服务器 | 获取敏感文件 | 数据泄露 | dir |
图表解读:
- 受限性:攻击范围限于指定SPN,需精准目标。
- 灵活性:可冒充任意用户,适合针对性攻击。
3.5 基于资源的约束委派(RBCD)
原理 :目标资源通过msDS-AllowedToActOnBehalfOfOtherIdentity
属性控制委派权限,攻击者修改配置后伪造票据。
流程简述:
- 创建或控制机器账号(默认配额10个)。
- 配置目标资源的RBCD权限。
- 伪造票据访问资源。
案例 :攻击者创建ATTACKER-PC$
,配置TARGET-PC
允许其委派,伪造域管理员票据,获取TARGET-PC
的SYSTEM权限。
图表:RBCD攻击路径
阶段 | 动作 | 结果 | 风险 | 典型工具 |
---|---|---|---|---|
创建 | 创建ATTACKER-PC$ |
新机器账号 | 利用配额 | New-ADComputer |
配置 | 修改RBCD | 允许委派 | 控制资源 | Set-ADComputer |
伪造 | 生成伪造票据 | 冒充域管理员 | 访问资源 | Mimikatz |
利用 | 执行远程命令 | SYSTEM权限 | 横向移动 | Invoke-Command |
图表解读:
- 低权限利用:普通用户可创建机器账号,降低门槛。
- 横向移动:适合从低权限账号扩展到关键资源。
四、横向移动与服务账号的利用
服务账号的高权限特性使其成为横向移动的理想跳板。以下为主要利用方式:
利用方式 | 描述 | 攻击目标 | 潜在结果 | 典型场景 |
---|---|---|---|---|
服务控制 | 使用服务账号凭据登录主机 | SQL Server、文件服务器 | 本地管理员权限 | 控制数据库服务器 |
票据伪造 | 使用TGT/TGS冒充高权限用户 | 域控、关键服务 | 权限提升 | 冒充域管理员 |
漏洞利用 | 攻击服务漏洞 | SQL Server RCE | 直接提权 | 执行系统命令 |
图表解读:
- 多路径攻击:服务账号连接低权限用户与高权限目标。
- 高回报:控制服务账号常可访问敏感资源或提权。
案例 :攻击者破解sqlsvc
密码,登录SQL Server,提取域管理员的NTLM哈希,通过Pass-the-Hash攻击访问域控,完成域提权。
五、总结
服务账号在AD环境中是Kerberos认证的核心,但其SPN绑定、高权限特性和委派配置使其成为攻击者的目标。Kerberoasting通过TGS破解弱密码,非约束委派、约束委派和RBCD通过伪造票据实现权限提升和横向移动。通过图表和案例分析,读者可清晰理解"谁能委派谁"以及各攻击类型的权限范围和风险点。攻击者仅需普通域用户权限即可发起这些攻击,凸显了服务账号管理的重要性。