菜单

Active Directory 攻击方法论

相关源文件

目的与范围

本文档提供了 Active Directory 渗透测试技术的全面指南。它涵盖了在 Windows 域的安全评估过程中使用的初始枚举、凭据收集、横向移动、权限提升和域接管方法。有关 Active Directory 之外的相关 Windows 权限提升技术,请参阅 Windows 权限提升

来源: Methodology and Resources/Active Directory Attack.md1-52

Active Directory 概述

Active Directory (AD) 是 Microsoft 为 Windows 域网络提供的目录服务。理解其结构对于有效的渗透测试至关重要。

核心组件

  • 域控制器:用于验证用户身份和存储目录数据的服务器
  • NTDS.dit:存储用户哈希和其他 AD 信息的数据库文件
  • 组织单位 (OUs):用于存放用户、组和计算机的容器
  • 组策略对象 (GPOs):应用于 OU 的设置集合
  • 域信任:不同 AD 域/林之间的关系

来源: Methodology and Resources/Active Directory Attack.md4-14

攻击方法论阶段

Active Directory 攻击方法论通常遵循以下阶段

来源: Methodology and Resources/Active Directory Attack.md1-52

1. 枚举技术

Active Directory 枚举是识别攻击向量和理解域结构的第一步。

1.1 域枚举

工具描述用例
BloodHound图形化 AD 映射工具可视化攻击路径
PowerViewPowerShell AD 枚举框架枚举用户、组和权限
ADExplorerMicrosoft Sysinternals AD 查看器基于 GUI 的枚举
ldapsearchLDAP 查询工具命令行 AD 查询
SharpHoundBloodHound 的 C# 数据收集器收集 AD 数据以供分析

基本 PowerShell 枚举命令

  • 获取域信息: Get-Domain
  • 枚举用户: Get-DomainUser
  • 枚举计算机: Get-DomainComputer
  • 枚举组: Get-DomainGroup
  • 查找域管理员: Get-DomainGroupMember "Domain Admins"

1.2 用户查找

识别高价值目标和潜在攻击路径

  • 查找具有受限委派的用户: Get-DomainUser -TrustedToAuth
  • 查找具有不受限委派的用户: Get-DomainComputer -Unconstrained
  • 查找具有服务主体名称 (SPN) 的用户: Get-DomainUser -SPN

来源: Methodology and Resources/Active Directory Attack.md7

2. 凭据访问技术

在 Active Directory 环境中,有几种方法可用于获取凭据。

2.1 Kerberoasting

Kerberoasting 通过请求服务票据并离线破解它们来攻击服务账户。

检测:监控来自意外用户的异常 TGS 请求(事件 ID 4769)。

来源: Methodology and Resources/Active Directory Attack.md16

2.2 AS-REP Roasting

此攻击针对启用了“不要求 Kerberos 预身份验证”的用户。

工具

  • Impacket 的 GetNPUsers.py
  • Rubeus 配合 asreproast 命令

来源: Methodology and Resources/Active Directory Attack.md15

2.3 NTDS.dit 提取

NTDS.dit 文件包含所有域用户密码哈希,可以通过多种方式进行提取。

提取方法

  • 卷影复制: vssadmin create shadow /for=C:
  • DCSync 攻击: mimikatz "lsadump::dcsync /domain:domain.local /all /csv"
  • 使用 ntdsutil: ntdsutil "ac i ntds" "ifm" "create full C:\temp" q q

来源: Methodology and Resources/Active Directory Attack.md11

2.4 密码提取方法

方法描述工具
LAPS 密码读取提取本地管理员密码解决方案凭据Get-LAPSPasswords
组策略首选项在 GPP XML 文件中查找凭据Get-GPPPassword
DSRM 管理员访问目录服务恢复模式密码Mimikatz: token::elevate lsadump::sam
GMSA 中的密码从组托管服务账户提取密码GMSAPasswordReader
Shadow Credentials(影子凭据)向计算机账户添加备用凭据Whisker

来源: Methodology and Resources/Active Directory Attack.md35-41

3. 横向移动技术

在获得凭据后,可以使用多种方法在域中进行横向移动。

3.1 Pass-the-Hash

直接使用 NTLM 哈希,无需破解密码。

工具和命令

  • Mimikatz: sekurlsa::pth /user:administrator /domain:domain.local /ntlm:hash
  • CrackMapExec: crackmapexec smb target -u username -H hash
  • Impacket 的 PsExec.py: psexec.py domain/user@target -hashes :hash

来源: Methodology and Resources/Active Directory Attack.md23 Methodology and Resources/Windows - Mimikatz.md9

3.2 Overpass-the-Hash

将 NTLM 哈希转换为 Kerberos 票据以进行身份验证。

使用 Mimikatz 的示例

sekurlsa::pth /user:admin /domain:domain.local /ntlm:hash /run:powershell.exe

来源: Methodology and Resources/Active Directory Attack.md22

3.3 Pass-the-Ticket

使用窃取的 Kerberos 票据进行身份验证。

方法

  • 使用 Mimikatz 提取票据: sekurlsa::tickets /export
  • 注入票据: kerberos::ptt ticket.kirbi

来源: Methodology and Resources/Active Directory Attack.md33

4. 权限提升技术

Active Directory 中可以使用各种方法来提升权限。

4.1 Kerberos 委派攻击

不受限委派攻击

  1. 攻陷具有不受限委派的服务器
  2. 强制域管理员连接到被攻陷的服务器
  3. 捕获 TGT 并使用它来冒充域管理员

受限委派攻击

  1. 攻陷具有受限委派的账户
  2. 使用 S4U2self 和 S4U2proxy 请求允许服务的票据
  3. 以任何用户(包括域管理员)的身份访问服务

基于资源的受限委派 (RBCD) 攻击

  1. 攻陷对计算机具有 GenericWrite 权限的账户
  2. 配置 RBCD 以允许您的受控计算机委派给目标
  3. 将任何用户冒充到目标计算机

来源: Methodology and Resources/Active Directory Attack.md29-31

4.2 ACL 滥用

利用 Active Directory 对象上的弱权限

权限滥用方法影响
GenericAll重置密码,修改组成员身份完全控制对象
GenericWrite修改属性,设置 SPN 以进行 Kerberoasting凭据窃取
WriteDACL修改权限,授予自己完全控制权权限提升
WriteOwner获取对象所有权控制对象
AddMember将用户添加到组权限提升
ForceChangePassword重置用户密码账户接管

工具

  • PowerView: Find-InterestingDomainAcl
  • BloodHound: ACL 滥用边

来源: Methodology and Resources/Active Directory Attack.md6

4.3 AD 证书服务滥用

Active Directory 证书服务 (AD CS) 可以通过多种方式被滥用

攻击向量

  • ESC1:配置错误的证书模板
  • ESC2:模板主题备用名称
  • ESC3:模板注册权限
  • ESC4:易受攻击的证书颁发机构 ACL
  • ESC8:NTLM 中继到证书注册服务

工具

  • Certify.exe:枚举易受攻击的模板
  • Certipy:利用证书漏洞

来源: Methodology and Resources/Active Directory Attack.md5

5. 域持久化

建立持久访问以保持对域的控制。

5.1 Golden Ticket(黄金票据)攻击

使用 krbtgt 账户的 NTLM 哈希创建一个伪造的 Kerberos TGT。

使用 Mimikatz

lsadump::dcsync /domain:domain.local /user:krbtgt
kerberos::golden /user:admin /domain:domain.local /sid:S-1-5... /krbtgt:hash /ptt

来源: Methodology and Resources/Active Directory Attack.md1-52 Methodology and Resources/Windows - Mimikatz.md10

5.2 Silver Ticket(银票)攻击

创建特定服务的伪造服务票据。

使用 Mimikatz

kerberos::golden /domain:domain.local /sid:S-1-5... /target:server.domain.local /service:service /rc4:hash /user:admin /ptt

来源: Methodology and Resources/Active Directory Attack.md33

5.3 Skeleton Key(骨架密钥)

安装一个后门密码,该密码可用于任何域用户。

在域控制器上使用 Mimikatz

privilege::debug
mimikatz "lsadump::lsa /inject" "misc::skeleton"

部署后,可以使用骨架密钥(默认:"mimikatz")访问任何账户。

来源: Methodology and Resources/Windows - Mimikatz.md11 Methodology and Resources/Windows - Persistence.md34

6. 域控制

完全控制域或林。

6.1 信任关系攻击

SID 历史滥用

  1. 攻陷子域
  2. 提取信任密钥
  3. 创建 Enterprise Admins 的 SID 历史票据
  4. 攻陷林根域

信任票据攻击

  1. 提取森林间信任密钥
  2. 创建伪造的信任票据
  3. 访问受信任林中的资源

来源:Methodology and Resources/Active Directory Attack.md42-45

6.2 DCSync 攻击

利用复制权限从域控制器提取密码哈希。

先决条件

  • 具有“复制目录更改”权限的账户

使用 Mimikatz

lsadump::dcsync /domain:domain.local /user:Administrator

来源:Methodology and Resources/Windows - Mimikatz.md1-21

7. 关键 CVE 和漏洞

CVE/漏洞描述利用工具
ZeroLogon (CVE-2020-1472)重置域控制器计算机账户密码ZeroLogon 漏洞利用
PrintNightmare (CVE-2021-34527)通过打印后台处理程序进行远程代码执行PrintNightmare 漏洞利用
NoPAC/Sam-the-Admin (CVE-2021-42278/42287)通过 SAM 名称模拟进行域权限提升NoPac 漏洞利用
MS14-068 (CVE-2014-6324)Kerberos 校验和验证绕过PyKEK, MS14-068.py
PrivExchange通过 Exchange 提升到域管理员PrivExchange.py

来源:Methodology and Resources/Active Directory Attack.md46-51

8. 检测和缓解

检测策略

攻击技术检测方法事件 ID
Kerberoasting异常的 TGS 请求4769
AS-REP Roasting无预身份验证的 TGT 请求4768
DCSync非域控制器机器的复制请求4662
Golden Ticket具有长生命周期的 TGT,异常的加密类型4769
NTDS.dit 提取卷影副本创建,NTDS.dit 访问4661, 5145
MimikatzLSASS 凭证提取10

缓解策略

  • 实施凭证保护 (Credential Guard)
  • 使用受保护用户安全组
  • 启用 AES Kerberos 加密
  • 对服务账户应用最小权限原则
  • 定期轮换敏感账户的密码
  • 为管理员启用 PAW(特权访问工作站)
  • 实施分级管理模型
  • 利用 LAPS 管理本地管理员密码
  • 通过高级日志记录监控可疑活动

来源: Methodology and Resources/Active Directory Attack.md1-52

结论

Active Directory 攻击遵循从枚举到域控制的系统化方法。理解这些技术对于进攻性安全测试和防御性安全措施都至关重要。为了成功攻击,通常会根据目标环境中存在的特定漏洞和配置将多种技术串联起来。

来源: Methodology and Resources/Active Directory Attack.md1-52