如何通过 Kerberos进行横向移动
字数 1630 2025-08-25 22:58:40

Kerberos横向移动攻击技术详解

0x01 Kerberos协议基础

Kerberos概述

Kerberos是Windows Active Directory默认的身份验证协议,由MIT于1980年开发。其主要特点包括:

  • 提供客户端和服务器的双向安全身份验证
  • 通过不安全的网络传输加密的认证信息
  • 不验证资源访问权限,仅提供用户特权信息
  • 支持单点登录(SSO)功能

Kerberos工作流程

  1. 用户登录:用户提供凭证(密码/智能卡)
  2. 哈希转换:客户端将凭证转换为加密密钥(NT/LM哈希)
  3. AS请求:客户端使用加密密钥加密时间戳,发送给KDC
  4. AS响应:KDC验证凭证后创建:
    • 登录会话密钥
    • 票据授予票据(TGT),使用krbtgt账号的NT哈希加密
  5. 票据存储:TGT存储在LSASS进程内存中

关键概念

  • TGT(Ticket-Granting Ticket):用户身份验证令牌,相当于用户凭证
  • ST(Service Ticket):访问特定资源的服务票据
  • PAC(Privilege Attribute Certificate):包含用户授权数据(组成员身份、权限)
  • SPN(Service Principal Name):特定主机上特定服务的标识符

0x02 Kerberos攻击技术详解

2.1 凭证转储(T1003)

攻击者在获取计算机管理员权限后可以:

  1. 提取所有存储在内存中的Kerberos TGT
  2. 发现其他登录过该计算机的用户凭证
  3. 获取高权限账户的TGT

2.2 票据传递攻击(T1097)

攻击流程:

  1. 使用转储的TGT进行身份验证
  2. 无需账号密码即可访问网络资源
  3. 横向移动到其他系统

典型攻击场景:

  1. 获取普通用户TGT → 访问文件服务器
  2. 在文件服务器上转储更多TGT → 获取域管理员TGT
  3. 使用域管理员TGT → 控制域控制器

0x03 检测与防御

检测方法

  • Microsoft Defender ATP:能够检测票据传递攻击
  • SIEM监控:需要专门配置规则检测异常Kerberos活动

防御措施

  1. 实施分层管理模型

    • 限制域管理员登录范围(仅限域控制器和第0层资产)
    • 避免域管理员在工作站上登录
  2. 凭证保护

    • 启用Credential Guard(可增加攻击难度)
    • 注意:管理员仍可能绕过Credential Guard
  3. 架构设计

    • 理解SSO功能带来的安全风险
    • 控制凭证在网络中的分布范围

0x04 常见误区澄清

  1. 工具限制

    • Mimikatz不是唯一能进行PtH/PtT攻击的工具
    • Windows Credential Editor等工具也可实现类似功能
  2. 补丁限制

    • PtH和PtT是操作漏洞,无法通过安全补丁完全解决
    • 必须通过合理的架构设计和管理实践来缓解
  3. Credential Guard

    • 不能完全阻止攻击,只能增加攻击难度
    • 管理员权限仍可能绕过保护机制

0x05 攻击实例分析

实例1:通过RDP服务横向移动

  1. 识别SPN:TERMSRV/EXCHANGE002.IDENTITY.local
  2. 获取TGT后请求TERMSRV服务票据
  3. 使用服务票据访问RDP服务

实例2:通过SQL服务横向移动

  1. 识别SPN:MSSQLSvc/AADConnect.IDENTITY.local
  2. 获取TGT后请求MSSQLSvc服务票据
  3. 使用服务票据连接SQL数据库

实例3:通过文件共享横向移动

  1. 识别CIFS服务:\FILESERVER\Fileshare
  2. 获取TGT后请求CIFS服务票据
  3. 使用服务票据访问文件共享

0x06 总结

Kerberos协议作为Active Directory的核心认证机制,其设计特性为攻击者提供了横向移动的可能。理解Kerberos工作原理、攻击技术和防御措施对于构建安全的AD环境至关重要。防御重点应放在合理的架构设计、严格的权限管理和全面的监控上,而非依赖单一的安全产品或补丁。

Kerberos横向移动攻击技术详解 0x01 Kerberos协议基础 Kerberos概述 Kerberos是Windows Active Directory默认的身份验证协议,由MIT于1980年开发。其主要特点包括: 提供客户端和服务器的双向安全身份验证 通过不安全的网络传输加密的认证信息 不验证资源访问权限,仅提供用户特权信息 支持单点登录(SSO)功能 Kerberos工作流程 用户登录 :用户提供凭证(密码/智能卡) 哈希转换 :客户端将凭证转换为加密密钥(NT/LM哈希) AS请求 :客户端使用加密密钥加密时间戳,发送给KDC AS响应 :KDC验证凭证后创建: 登录会话密钥 票据授予票据(TGT),使用krbtgt账号的NT哈希加密 票据存储 :TGT存储在LSASS进程内存中 关键概念 TGT(Ticket-Granting Ticket) :用户身份验证令牌,相当于用户凭证 ST(Service Ticket) :访问特定资源的服务票据 PAC(Privilege Attribute Certificate) :包含用户授权数据(组成员身份、权限) SPN(Service Principal Name) :特定主机上特定服务的标识符 0x02 Kerberos攻击技术详解 2.1 凭证转储(T1003) 攻击者在获取计算机管理员权限后可以: 提取所有存储在内存中的Kerberos TGT 发现其他登录过该计算机的用户凭证 获取高权限账户的TGT 2.2 票据传递攻击(T1097) 攻击流程: 使用转储的TGT进行身份验证 无需账号密码即可访问网络资源 横向移动到其他系统 典型攻击场景: 获取普通用户TGT → 访问文件服务器 在文件服务器上转储更多TGT → 获取域管理员TGT 使用域管理员TGT → 控制域控制器 0x03 检测与防御 检测方法 Microsoft Defender ATP :能够检测票据传递攻击 SIEM监控 :需要专门配置规则检测异常Kerberos活动 防御措施 实施分层管理模型 : 限制域管理员登录范围(仅限域控制器和第0层资产) 避免域管理员在工作站上登录 凭证保护 : 启用Credential Guard(可增加攻击难度) 注意:管理员仍可能绕过Credential Guard 架构设计 : 理解SSO功能带来的安全风险 控制凭证在网络中的分布范围 0x04 常见误区澄清 工具限制 : Mimikatz不是唯一能进行PtH/PtT攻击的工具 Windows Credential Editor等工具也可实现类似功能 补丁限制 : PtH和PtT是操作漏洞,无法通过安全补丁完全解决 必须通过合理的架构设计和管理实践来缓解 Credential Guard : 不能完全阻止攻击,只能增加攻击难度 管理员权限仍可能绕过保护机制 0x05 攻击实例分析 实例1:通过RDP服务横向移动 识别SPN:TERMSRV/EXCHANGE002.IDENTITY.local 获取TGT后请求TERMSRV服务票据 使用服务票据访问RDP服务 实例2:通过SQL服务横向移动 识别SPN:MSSQLSvc/AADConnect.IDENTITY.local 获取TGT后请求MSSQLSvc服务票据 使用服务票据连接SQL数据库 实例3:通过文件共享横向移动 识别CIFS服务:\\FILESERVER\Fileshare 获取TGT后请求CIFS服务票据 使用服务票据访问文件共享 0x06 总结 Kerberos协议作为Active Directory的核心认证机制,其设计特性为攻击者提供了横向移动的可能。理解Kerberos工作原理、攻击技术和防御措施对于构建安全的AD环境至关重要。防御重点应放在合理的架构设计、严格的权限管理和全面的监控上,而非依赖单一的安全产品或补丁。