/UserRegEnum_0x727

域内普通域用户权限查找域内所有计算机上登录的用户

Primary LanguageC++

UserRegEnum_0x727

域内普通域用户权限查找域内所有计算机上登录的用户

使用方法

Usage example:
  program.exe -d missyou.com -dc dc.missyou.com -o result.csv
Options:
  -d,  --domain=Domain               domain name to search
  -dc, --dc=domainControllers        domain controller to query
  -t,  --threads=Theads              number of threads, default: 1000
  -o,  --output=outputResult         output result file
  -h,  --help                        display this help and exit

其中 -t 是非必须参数, 默认是 1000, 在本地调试的时候觉得 1000 线程挺合适的, 如果没有特殊需求可以不设置这个参数.

-d, -dc, -o 这三个参数时必须的.

image

结果会保存在当前 .exe 同级目录下.

image

如果信息量大的话, 可以通过文本筛选, 条件设置为: 不包含 "NT AUTHORITY" 字段.

image

image

域内计算机越多, 程序执行时间越长, 目前已知 2w 余台机器的域查询耗时 7 分钟左右.

没有域用户帐户权限的用法

如果当前计算机在域内,但是我们又没有域用户帐户的权限,那么可以提权致 SYSTEM,也是能够正常使用此工具的。

为什么 SYSTEM 权限可以查询?

个人的理解是:

在 Windows 系统中,SYSTEM 帐户是系统帐户,对于系统帐户来说,它拥有计算机帐户的身份,而在域环境中,每个计算机帐户都有一个对应的域计算机对象,所以在域环境下,SYSTEM 帐户具有域内计算机对象的身份,因此,它可以执行一些需要域用户帐户权限的命令。

原理

尝试与域内所有计算机建立远程注册表连接 ( 远程计算机需要启用 "Remote Registry" 服务 ), 一旦成功连接到指定计算机的注册表, 枚举其 HKEY_USERS 根键下的子键名称 (SID), 再通过 SID 转换得到用户帐户名称, 具体原理请看文章《域内普通域用户权限查找域内所有计算机上登录的用户》.