ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Active Directory域渗透测试核心技术与防御策略

Active Directory域渗透测试核心技术与防御策略

1. 域渗透基础概念解析

在网络安全领域,域渗透测试是评估企业Active Directory环境安全性的重要手段。作为渗透测试人员,我经常遇到刚入行的同事直接上手工具而忽略基础概念理解的情况。这就像不熟悉建筑结构就直接开始拆墙,不仅效率低下还容易触发警报。让我们先系统梳理域环境的核心组件。

Active Directory(AD)是微软开发的目录服务,它像一本企业网络的大型通讯录,存储着所有用户、计算机、策略和权限信息。根据微软官方文档,AD采用多主复制模型,这意味着域控制器(DC)之间会相互同步数据。理解这一点对后续的横向移动至关重要——当你攻陷一台DC,理论上可以影响整个域。

1.1 域控制器核心机制

域控制器是AD域的大脑,主要运行以下关键服务:

  • Kerberos认证:采用票据(TGT、ST)进行身份验证
  • NTLM认证:旧式挑战-响应协议
  • LDAP服务:389端口提供目录查询
  • DNS服务:通常集成在DC上
  • SYSVOL共享:存储组策略和登录脚本

我曾在一个企业内网测试中发现,管理员将SYSVOL共享权限配置为Everyone可读,导致所有组策略首选项中的密码被轻易获取。这印证了微软早在2014年就警告过的GPP漏洞,但至今仍有许多企业未修复。

1.2 常见域对象类型

对象类型作用描述渗透测试中的价值
用户账户域内人员身份凭证密码爆破、AS-REP Roasting目标
计算机账户加入域的机器标识RBCD攻击、资源委派利用
组权限集合单元特权组识别(如Domain Admins)
组织单元(OU)管理分区容器组策略继承分析
组策略对象(GPO)集中配置管理系统设置查找密码策略、登录脚本漏洞

2. 域认证协议深度剖析

2.1 Kerberos认证流程

标准Kerberos认证包含三个关键阶段:

  1. AS-REQ/AS-REP:客户端向KDC请求TGT(票证授予票证)
  2. TGS-REQ/TGS-REP:使用TGT获取服务票据(ST)
  3. AP-REQ/AP-REP:向目标服务出示ST进行验证

这个过程中可能存在的攻击点包括:

  • 黄金票据攻击:获取krbtgt账户哈希后伪造TGT
  • 白银票据攻击:获取服务账户哈希后伪造ST
  • Kerberoasting:暴力破解服务账户密码
# Kerberoasting攻击示例(需PowerShell) Get-ADServiceAccount -Filter * | Select-Object SamAccountName Request-SPNTicket -SPN "MSSQLSvc/sql01.domain.com" -Format Hashcat

2.2 NTLM认证与哈希传递

尽管微软推荐使用Kerberos,但NTLM仍在许多旧系统中使用。其核心缺陷在于:

  • 采用静态哈希比较(NT哈希)
  • 不依赖KDC,允许本地验证
  • 容易受到中间人攻击

哈希传递(Pass-the-Hash)之所以有效,正是因为NTLM协议只验证哈希值而非原始密码。在测试中,我常用以下工具进行利用:

# 使用Mimikatz进行PtH sekurlsa::pth /user:Administrator /domain:corp.com /ntlm:e2b475c11da2a0748290d87aa966c327 /run:cmd.exe # CrackMapExec批量测试 cme smb 192.168.1.0/24 -u Administrator -H e2b475c11da2a0748290d87aa966c327 -x whoami

重要提示:在授权测试中,哈希传递可能触发SIEM告警。建议先通过低权限账户测试防御检测能力。

3. 域内信息收集方法论

3.1 基础信息枚举

初始立足点获取后,应当系统性地收集以下信息:

  • 域拓扑结构:使用nltest /domain_trusts
  • 用户列表:net user /domain
  • 计算机列表:Get-ADComputer -Filter *
  • 组关系:Get-ADGroupMember "Domain Admins"

我曾开发过一个自动化收集脚本,通过LDAP查询获取关键信息:

$searcher = [ADSISearcher]"(objectClass=user)" $searcher.PageSize = 200 $searcher.FindAll() | ForEach-Object { $_.Properties | Select-Object samaccountname, userprincipalname }

3.2 特权路径分析

通过BloodHound工具可视化攻击路径是当前最高效的方法。其核心原理是:

  1. 使用SharpHound收集域关系数据
  2. 将数据导入Neo4j图数据库
  3. 通过图形化界面分析特权继承链

常见危险路径包括:

  • 到域管理员的ACL路径:比如GenericAll权限
  • 非约束委派配置:可导致权限提升
  • 敏感组的直接成员:如Account Operators

4. 横向移动技术详解

4.1 基于服务的横向移动

当获取某台域内主机的权限后,可检查以下服务进行扩展:

  • SMB服务:检查共享文件夹(如NETLOGON)
  • RDP服务:检查是否允许其他域用户登录
  • WinRM服务:5985/5986端口是否开放
# 检查可用WinRM端点 Test-WSMan -ComputerName DC01 -Authentication Default

4.2 票据中继攻击

Kerberos约束委派配置不当可能导致中继攻击。攻击者可以将票据中继到特定服务,例如:

  1. 诱使用户访问恶意HTTP服务
  2. 捕获NTLM认证请求
  3. 中继到目标Exchange服务器

防御措施包括:

  • 启用EPA(Extended Protection for Authentication)
  • 禁用NTLM认证
  • 配置服务使用强制加密

5. 权限维持技术

5.1 黄金票据与白银票据

票据类型所需哈希有效期控制检测难度
黄金票据krbtgt账户哈希可自定义高(需审计TGT)
白银票据服务账户哈希依赖服务账户密码中(需监控ST)

生成黄金票据的命令示例:

mimikatz # kerberos::golden /admin:Administrator /domain:corp.com /sid:S-1-5-21-123456789-1234567890-123456789 /krbtgt:aa3bf9e2718e8d1b5e22 /ptt

5.2 隐蔽后门技术

更隐蔽的权限维持方法包括:

  • SID History注入:添加特权组SID到普通用户
  • ACL后门:在关键对象上添加隐藏权限
  • DCShadow攻击:直接修改目录数据库
# 添加隐藏ACL后门 $acl = Get-Acl "AD:\CN=AdminSDHolder,CN=System,DC=corp,DC=com" $ace = New-Object System.DirectoryServices.ActiveDirectoryAccessRule ("CORP\TestUser","GenericAll","Allow") $acl.AddAccessRule($ace) Set-Acl -Path "AD:\CN=AdminSDHolder,CN=System,DC=corp,DC=com" -AclObject $acl

6. 防御规避与检测对抗

6.1 日志清除技术

常见的日志清除方法包括:

  • 单条日志删除:通过ETW接口操作
  • 日志服务停止:Stop-Service EventLog
  • 内存Patch:修改日志记录函数指针

但现代EDR通常会检测这些行为,更隐蔽的做法是:

  • 通过合法管理操作掩盖痕迹
  • 使用白名单进程进行恶意操作
  • 利用时间差进行攻击

6.2 对抗AV检测

针对杀毒软件的规避技巧:

  • 模块反射加载:不落地执行恶意代码
  • API间接调用:通过合法DLL转发调用
  • 内存加密:运行时解密关键代码段
// 示例:间接调用WinAPI typedef BOOL (WINAPI* pMessageBox)(HWND, LPCSTR, LPCSTR, UINT); HMODULE hUser32 = LoadLibraryA("user32.dll"); pMessageBox msgBox = (pMessageBox)GetProcAddress(hUser32, "MessageBoxA"); msgBox(NULL, "Legitimate Message", "Title", MB_OK);

7. 实战案例与经验总结

在一次红队评估中,我们通过以下路径完成域控接管:

  1. 初始立足:钓鱼获取普通域用户凭证
  2. 信息收集:发现某服务器配置了非约束委派
  3. 权限提升:利用SpoolService漏洞获取SYSTEM权限
  4. 票据捕获:等待域管理员登录该服务器
  5. 横向移动:使用捕获的TGT访问域控制器
  6. 权限维持:创建隐藏的GPO后门

关键教训:

  • 非约束委派服务器应视为关键资产保护
  • 特权账户不应登录非管理工作站
  • 应启用Kerberos AES加密减少票据被盗风险

对于防御方,我建议重点关注:

  • 定期审计域内委派配置
  • 监控异常Kerberos票据请求
  • 实施网络分段限制横向移动
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进