最准确快速的方式是直接查询“domain admins”组成员,该组默认拥有本域最高管理权限;可通过aduc图形界面或powershell命令get-adgroupmember导出含姓名、登录名、启用状态及最近登录时间的完整列表,并需验证账户启用状态、密码过期情况和登录活跃度。

直接用 PowerShell 查找域内权限过大的管理员账号,核心是定位两类高危对象:一是属于高权限组(如 Domain Admins、Enterprise Admins、Administrators)的用户;二是拥有特殊特权(如 SeDebugPrivilege、SeTakeOwnershipPrivilege)或异常配置(如密码永不过期、长期未登录)的账户。不能只看“是不是管理员”,得看“谁在什么位置、有什么额外权限、是否异常活跃”。
查哪些用户属于关键高权限组
域内真正危险的不是“管理员”头衔,而是实际成员身份。以下命令可快速列出核心高权限组的全部成员:
-
Domain Admins:
Get-ADGroupMember "Domain Admins" -Recursive | Get-ADUser -Properties Name, SamAccountName, Enabled, LastLogonDate | Select Name, SamAccountName, Enabled, LastLogonDate -
Enterprise Admins:
Get-ADGroupMember "Enterprise Admins" -Recursive | Get-ADUser -Properties Name, SamAccountName, Enabled, LastLogonDate | Select Name, SamAccountName, Enabled, LastLogonDate -
Administrators(本地管理员组,跨域控/服务器):需逐台查询,例如对某台 DC 运行:
Invoke-Command -ComputerName dc01.contoso.com -ScriptBlock { net localgroup administrators }
注意:加 -Recursive 可展开嵌套组成员,避免遗漏间接获得权限的账号。
筛出具备敏感特权或异常配置的账号
有些用户虽不在顶级组里,但被单独授予了高危特权,或设置了易被利用的策略。这类账号同样危险:
-
检查密码永不过期且启用的账号:
Get-ADUser -Filter {PasswordNeverExpires -eq $true -and Enabled -eq $true} -Properties Name, SamAccountName, PasswordLastSet, LastLogonDate | Select Name, SamAccountName, PasswordLastSet, LastLogonDate -
查找长期未登录的高权限用户(“僵尸管理员”):
$days = 90; $cutoff = (Get-Date).AddDays(-$days); Get-ADUser -Filter {LastLogonDate -lt $cutoff -and Enabled -eq $true} -Properties Name, SamAccountName, LastLogonDate | Where-Object {$_.MemberOf -match "Domain Admins|Enterprise Admins"} | Select Name, SamAccountName, LastLogonDate -
识别拥有 SeDebugPrivilege 等高危特权的用户:需结合
whoami /priv或第三方工具(如 PowerSploit 的Get-Privileges),PowerShell 原生不直接暴露该信息,但可在目标主机上远程执行:Invoke-Command -ComputerName target-srv -ScriptBlock { whoami /priv | findstr "SeDebugPrivilege SeTakeOwnershipPrivilege SeBackupPrivilege" }
定位权限来源与横向风险点
一个账号权限过大,往往不只是因为进了 Domain Admins,还可能源于其他路径。需进一步确认权限落地位置:
-
查该用户是否在多台关键服务器上有本地管理员权限:用
Get-ADGroupMember "Domain Admins"结果循环调用net localgroup administrators或使用Test-ComputerCredential类脚本批量验证 -
检查是否为关键服务账户(如 SQL Server、Exchange、SCCM 管理员):这些账户常被赋予本地管理员+服务特权,但未加入 Domain Admins,可用
Get-ADServiceAccount或搜索描述字段含 “sql”、“exchange”、“scm” 的用户 -
查看是否有非交互式登录权限(如 Allow log on locally / Log on as a service):这类策略常通过 GPO 应用,需导出相关 GPO 报告,或用
gpresult /h report.html在目标机器上本地检查
导出并交叉比对结果
单条命令只能看到局部,真正有效的排查需要合并多个维度:
- 把上述所有结果(高权限组成员、永不过期账号、长期未登录者、特权账户)统一导出到 CSV:
Export-Csv -Path "C:\Audit\HighRiskAdmins.csv" -NoTypeInformation -Encoding UTF8 - 人工或用 Excel 筛选交集:比如“既是 Domain Admins 成员,又密码永不过期,且 LastLogonDate 为空或超 180 天”——这类账号应优先处置
- 配合事件日志查操作痕迹:对重点账号运行
Get-WinEvent -FilterHashtable @{LogName='Security'; ID=4624; Data='username'} -MaxEvents 50,确认最近是否被真实使用











