ADCollector是一个轻量级工具,用于枚举Active Directory环境以识别可能的攻击向量。它将为您提供对环境配置/部署的基本了解,作为起点。
ADCollector并非功能强大的PowerView的替代品,它只是自动执行枚举,以便在早期侦察阶段无需过多思考即可快速识别有价值的信息。ADCollector中实现的函数非常适合在拥有大量用户/计算机的大型企业环境中进行枚举,不会产生大量流量且耗时极短。它仅专注于从最有价值的目标中提取有用的属性/属性/ACL,而不是枚举域中所有用户/计算机对象的全部可用属性。之后你肯定需要PowerView来进行更详细的枚举。 只要你知道要枚举什么,就可以使用ADSI代替PowerView来枚举域,参见https://dev-2null.github.io/Easy-Domain-Enumeration-with-ADSI/。
开发此工具的目的是帮助我从不同角度学习更多关于Active Directory安全的知识,并弄清那些PowerView函数背后的原理。
它使用S.DS命名空间从域控制器(LDAP服务器)检索域/林信息。它还利用S.DS.P命名空间进行LDAP搜索。
此工具仍在构建中。将实现的功能可以从我的项目页面查看
如果你从非域加入的主机运行它,请确保有权访问SYSVOL。如果应用了UNC硬化策略,你可能需要运行以下命令:
reg add HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\NetworkProvider\HardenedPaths /v "\\*\SYSVOL" /d "RequireMutualAuthentication=0" /t REG_SZ
PS C:\> .\ADCollector.exe --help
_ ____ ____ _ _ _
/ \ | _ \ / ___|___ | | | ___ ___ _| |_ ___ _ __
/ _ \ | | | | | / _ \| | |/ _ \/ __|_ __/ _ \| '__|
/ ___ \| |_| | |__| (_) | | | __/ (__ | || (_) | |
/_/ \_\____/ \____\___/|_|_|\___|\___| |__/\___/|_|
v3.0.1 by dev2null
--Domain 要枚举的域
--LDAPS (Default: false) 通过SSL/TLS的LDAP
--DisableSigning (Default: false) 禁用Kerberos加密(与-LDAPS标志一起使用)
--UserName 备用用户名
--Password 备用凭据
--DC 备用域控制器(主机名/IP)进行连接
--OU 在特定组织单位下执行搜索
--LDAPONLY 仅枚举LDAP中的对象
--ACLScan 对某身份执行ACL扫描
--ADCS (Default: false) 仅执行AD证书服务检查
--TEMPLATES (Default: false) 仅枚举所有证书模板及其DACL
--SCHEMA (Default: false) 统计默认命名上下文中的架构属性数
--ADIDNS (Default: false) 仅收集ADIDNS记录
--NGAGP 仅枚举目标对象上的嵌套组成员身份和应用组策略
--DACL 枚举目标对象上的DACL(使用DistinguishedName)
--SessionEnum (Default: false) 枚举目标主机上的会话信息
--UserEnum (Default: false) 枚举目标主机上的用户信息
--LocalGMEnum (Default: false) 枚举目标主机上的本地组成员
--Host (Default: Localhost) 用于会话/用户/组成员枚举的主机名
--Group (Default: Administrators) 用于本地组成员枚举的本地组名
--Debug (Default: false) 调试模式
--help 显示此帮助屏幕。
示例:.\ADCollector.exe
.\ADCollector.exe --LDAPs --DisableSigning
.\ADCollector.exe --OU IT
.\ADCollector.exe --OU OU=IT,DC=domain,DC=local
.\ADCollector.exe --ADCS
.\ADCollector.exe --TEMPLATES
.\ADCollector.exe --LDAPOnly
.\ADCollector.exe --SCHEMA
.\ADCollector.exe --ADIDNS
.\ADCollector.exe --NGAGP samaccountname
.\ADCollector.exe --DACL DC=domain,DC=net
.\ADCollector.exe --ACLScan user --OU OU=IT,DC=domain,DC=local
.\ADCollector.exe --SessionEnum --Host targetHost
.\ADCollector.exe --UserEnum --Host targetHost
.\ADCollector.exe --LocalGMEnum --Host targetHost --Group 'Remote Desktop Users'
.\ADCollector.exe --Domain domain.local --Username user --Password pass
.\ADCollector.exe --Domain domain.local --DC 10.10.10.1
1. 添加了证书模板、架构和用户凭据的枚举
2. 添加了几个标志
1. 代码重构与错误修复
2. 添加了权限权利和对象DACL枚举
3. 添加了调试模式
4. 将交互菜单合并到命令行,并移除了一些简单的LDAP枚举(使用ADSI,参见[ADSI枚举](https://dev-2null.github.io/Easy-Domain-Enumeration-with-ADSI/))
1. 错误修复与一些改进
2. LAPS和受限组枚举的新实现逻辑
3. 使用Task处理一些繁重的枚举函数(对于大型域更快)
4. 移除了GPP缓存和DCSync账户枚举
1. 在特定OU下搜索
2. LAPS详细视图
3. 机器所有者
4. 受限组
5. ADCS配置
6. ACL扫描
7. 错误修复:SYSVOL访问、嵌套组成员身份
8. 用自定义实现替换外部readINF依赖
9. 受保护用户
1. 完全重写(更具可扩展性)
2. 添加带命令行选择的交互菜单
3. 使用直接API调用来枚举信任关系
4. 更新应用GPO枚举,添加安全筛选和WMI筛选(WMIFilter需要手动检查)
5. 添加LDAP DNS记录枚举
6. RunAs:在另一个用户上下文下运行ADCollector
7. 灵活的SPN扫描、DNS记录、嵌套组成员身份、ACL枚举
8. 添加NetSessionEnum、NetLocalGroupGetMembers和NetWkstaUserEnum
1. 修复了一些错误并改进了部分细节
2. SPN扫描现在是可选的
3. SYSVOL/缓存中的GPP cpassword
4. GPO上的有趣ACL;用户对象上的有趣描述
5. 不寻常的DCSync账户;敏感且非委派账户
6. 用户/计算机上的有效GPO
7. 受限组
8. 嵌套组成员身份
9. LAPS密码查看访问
1. 修复了SPN扫描结果、特权账户组成员身份
2. 密码永不过期账户;设置了SPN的用户账户
3. Kerberos策略
4. 域对象的有趣ACL枚举,解析GUID
5. DC信息已恢复
1. 拆分为三个类
2. 正确释放ldap连接
3. 枚举:AdminSDHolder、域属性(MAQ、minPwdLength、maxPwdAge、lockOutThreshold、链接到域对象的GP)、无需预认证的账户
4. LDAP基本信息(supportedLDAPVersion、supportedSASLMechanisms、域/林/DC功能级别)
5. SPN扫描(MSSQL、Exchange、RDP和PS远程的SPN)
6. 约束委派枚举(S4U2Self、S4U2Proxy以及基于资源的约束委派)
7. RODC(管理RODC的组)
1. 现在使用S.DS.P命名空间执行搜索操作,使搜索更快、更易于实现(也支持分页搜索)
2. 现在支持在其他域中搜索(命令行解析器尚未实现)
3. 代码逻辑重构,代码更少,更易理解且内聚性更强
关于此工具的更多信息(当前进度/待办事项等),请访问我的项目页面