Windows权限评估核心是验证实际生效的权限链条:从登录方式、会话上下文、令牌权限到ACL,重点核查高权限账户、隐性提权路径、服务/任务配置缺陷、关键路径与注册表可写性、权限分配及审计策略完整性。
windows 环境下的权限评估,核心是确认“谁能在什么条件下、以什么身份、执行什么操作”。不是只看账户名或组名,而是要验证实际生效的权限链条——从登录方式、会话上下文、令牌权限,到文件/注册表/服务等具体对象的访问控制列表(acl)。
账户与组成员关系核查
重点识别高权限账户和隐性提权路径:
- 用 net localgroup administrators 查看本地管理员组成员,确认无多余账户(特别是 Guest、测试账号、已离职人员账号)
- 运行 whoami /groups 查看当前会话的全部组 SID 和属性,注意是否包含 SeDebugPrivilege、SeBackupPrivilege、SeRestorePrivilege 等敏感特权
- 检查是否存在嵌套组权限继承,例如某普通用户属于一个被加入 Administrators 的自定义组,但该组本身未被审计
- 通过 lusrmgr.msc 核对本地用户状态:禁用非必要账户,删除空密码账户,确保所有账户启用密码策略
服务与计划任务权限分析
服务和计划任务常以 SYSTEM 或高权限用户运行,其配置缺陷极易导致权限提升:
- 用 sc qc <servicename> 检查服务二进制路径,确认路径含空格时是否加了英文双引号;若无引号且路径前段目录可写(如 C:Program FilesApp),攻击者可在 C: 下放恶意 Program.exe
- 运行 Get-Service | Where-Object {$_.StartType -eq 'Automatic'} | ForEach-Object {sc qc $_.Name} 批量检查自动启动服务路径规范性
- 检查 C:WindowsSystem32Tasks 目录权限:icacls "C:WindowsSystem32Tasks",确保非 SYSTEM/Administrators 用户无写入或修改权限
- 导出所有计划任务:schtasks /query /fo LIST /v > tasks_full.txt,人工筛查是否使用高权限上下文(如 SYSTEM)运行用户可控脚本
文件与注册表关键位置可写性检查
攻击者常利用可写目录或注册表项植入恶意代码,需聚焦系统级敏感路径:
- 检查以下目录是否对低权限用户可写:C:WindowsSystem32、C:WindowsSysWOW64、C:Program Files、C:Program Files (x86) —— 使用 icacls 或 accesschk64.exe -uqwc
- 验证注册表项 HKEY_LOCAL_MACHINESOFTWAREPoliciesMicrosoftWindowsInstallerAlwaysInstallElevated 是否为 0(启用时允许普通用户以 SYSTEM 安装 MSI)
- 搜索 Unattend.xml 文件:dir /s /b C:WindowsPantherUnattend*.xml C:WindowsSystem32Sysprepunattend.xml 2>nul,一旦存在,立即检查是否含明文密码
- 检查 PATH 环境变量中各目录的写权限:$env:PATH -split ';' | ForEach-Object {icacls $_ 2>nul | findstr 'BUILTINUsers.*M'}
权限分配与审计策略验证
系统级权限分配和日志记录能力决定能否追溯异常行为:
- 打开 gpedit.msc → 计算机配置 → Windows 设置 → 安全设置 → 本地策略 → 用户权限分配,重点检查:
– “管理审核和安全日志”是否仅限 Administrators
– “从网络访问此计算机”是否限制为必要组(而非 Everyone)
– “拒绝从网络访问这台计算机”是否明确排除高危账户
- 在事件查看器中检查安全日志是否启用:右键“安全”日志 → 属性 → 确认“启用日志”已勾选,最大日志大小 ≥ 100MB,覆盖策略合理
- 运行 auditpol /get /category:* | findstr "Success.*Failure",确认关键事件(如账户登录、特权使用、对象访问)已开启成功+失败审计
- 检查远程桌面相关策略:gpedit.msc → 计算机配置 → 管理模板 → Windows 组件 → 远程桌面服务 → 安全 → “要求使用特定的安全层”应设为 SSL,并启用“始终要求使用网络级身份验证”