AD Enuming学习
字数 1970 2025-08-22 18:37:14
Active Directory (AD) 枚举技术详解
1. 实验环境与准备工作
1.1 实验环境
- 目标域:za.tryhackme.com
- 跳板机:THMJMP1.za.tryhackme.com
- 示例用户:kenneth.davies (Password1), rachel.dunn (Bmlj9838)
1.2 凭据注入技术 (Runas)
当无法创建新的域内机器时,可使用Runas进行凭据注入:
runas.exe /netonly /user:<domain>\<username> cmd.exe
参数说明:
/netonly:仅对网络会话使用注入的凭据/user:提供目标域和用户名(建议使用FQDN)cmd.exe:注入后执行的程序
验证凭据有效性:
dir \\za.tryhackme.com\SYSVOL
注意:
- 使用主机名(FQDN)会触发Kerberos认证
- 使用IP地址会强制使用NTLM认证
2. Microsoft管理控制台(MMC)枚举
2.1 安装AD Snap-Ins
- 开始菜单 → "Apps & Features"
- 点击"Manage Optional Features"
- 添加"RSAT: Active Directory Domain Services and Lightweight Directory Tools"
2.2 配置MMC
-
启动MMC (win+r输入mmc)
-
添加三个Active Directory管理单元
-
配置各管理单元指向目标域:
- Active Directory Domains and Trusts → 更改森林为za.tryhackme.com
- Active Directory Sites and Services → 更改森林
- Active Directory Users and Computers → 更改域
-
启用高级功能:右键AD Users and Computers → View → Advanced Features
2.3 枚举内容
- 查看用户和计算机结构
- 按部门OU查看用户
- 双击用户查看详细属性和组成员关系
- 查看Servers或Workstations中的域内机器
优缺点:
- 优点:GUI界面直观,支持搜索,可直接修改AD对象
- 缺点:需要RDP访问,无法收集所有AD属性
3. CMD枚举技术
3.1 常用net命令
枚举用户:
net user /domain
net user <username> /domain
枚举组:
net group /domain
net group <groupname> /domain
枚举密码策略:
net accounts /domain
输出内容包括:
- 密码历史长度
- 账户锁定阈值和时间
- 密码最小长度
- 密码最长有效期
优缺点:
- 优点:无需额外工具,不易被监控,支持宏语言
- 缺点:必须在域内机器执行,信息不完整
4. PowerShell枚举技术
4.1 常用AD-RSAT cmdlet
枚举用户:
Get-ADUser -Identity gordon.stevens -Server za.tryhackme.com -Properties *
Get-ADUser -Filter 'Name -like "*stevens"' -Server za.tryhackme.com | Format-Table Name,SamAccountName -A
枚举组:
Get-ADGroup -Identity Administrators -Server za.tryhackme.com
Get-ADGroupMember -Identity Administrators -Server za.tryhackme.com
枚举对象:
Get-ADObject -Filter 'badPwdCount -gt 0' -Server za.tryhackme.com
枚举域信息:
Get-ADDomain
修改对象示例:
Set-ADAccountPassword -Identity gordon.stevens -Server za.tryhackme.com -OldPassword (ConvertTo-SecureString -AsPlaintext "old" -force) -NewPassword (ConvertTo-SecureString -AsPlainText "new" -Force)
优缺点:
- 优点:信息丰富,可在非域机器使用,支持自定义cmdlet,可直接修改AD
- 缺点:易被监控,需要安装AD-RSAT
5. Bloodhound枚举技术
5.1 Sharphound收集器
三种类型:
- Sharphound.ps1:PowerShell脚本,适合RAT使用
- Sharphound.exe:Windows可执行文件
- AzureHound:用于Azure实例
常用命令:
Sharphound.exe --CollectionMethods All --Domain za.tryhackme.com --ExcludeDCs
Sharphound.exe --CollectionMethods Session --Domain za.tryhackme.com --ExcludeDCs
5.2 Bloodhound操作
启动:
neo4j start
./BloodHound --no-sandbox
主要功能:
-
节点信息查看:
- Overview:活动会话数量等
- Node Properties:基础信息
- Extra Properties:详细属性
- Group Membership:组成员关系
- Local Admin Rights:本地管理员权限
- Execution Rights:特殊权限
- Control Rights:控制权限
-
分析功能:
- "Find all Domain Admins"等预置查询
- 自定义路径搜索
-
攻击路径分析:
- 设置起始节点和目标节点
- 应用过滤器查看可用路径
- 分析路径中的权限提升点
会话更新:
- 初次使用"All"收集方法
- 后续使用"Session"方法快速更新
- 导入前可清除旧会话数据
优缺点:
- 优点:图形化展示攻击路径,直观易理解
- 缺点:易被AV/EDR检测,版本需匹配
6. 关键注意事项
-
认证方式差异:
- 主机名/FQDN → Kerberos认证
- IP地址 → NTLM认证
-
枚举策略:
- 初始使用MMC或PowerShell获取整体结构
- 详细枚举使用PowerShell或Bloodhound
- 隐蔽操作使用CMD命令
-
防御规避:
- 使用/netonly参数避免直接DC认证
- 在非工作时间执行枚举
- 考虑使用合法管理工具作掩护
-
信息利用:
- 密码策略信息用于密码喷洒攻击
- 组成员关系用于权限提升
- SYSVOL目录可能包含有用脚本或凭据
-
持续监控:
- 定期更新Sharphound数据
- 关注新创建的AD对象
- 跟踪高价值目标的活动会话