AccessChk 学习笔记(9.2):最小权限体检利器——文件/注册表/服务/进程统一权限可视化
AccessChk是Sysinternals工具集中的Windows权限审计工具,能够统一检查文件、注册表、服务、进程等对象的访问权限。本文介绍了AccessChk的核心功能和使用方法,包括基本语法、高频参数(如-k检查注册表、-c检查服务)、输出解读要点,并提供了10个典型应用场景命令示例,如检查用户对System32目录的权限、查找可写服务、审计注册表键安全性等。该工具无需安装,解压即用,适合
AccessChk 学习笔记(9.2):最小权限体检利器——文件/注册表/服务/进程统一权限可视化
AccessChk 学习笔记(9.2):最小权限体检利器——文件/注册表/服务/进程统一权限可视化
适用读者:Windows 运维/安全/开发、域管/审计、应急响应工程师
目标:用一条命令看清“谁对什么有何种权限”,支撑最小权限与合规审计。
你将收获
- AccessChk 能力全览:一次性盘点文件/目录、注册表、服务、进程、对象管理器命名对象、共享的访问权限。 (learn.microsoft.com)
- 正确的命令行语法与高频开关清单(含读取/写入筛选、递归、显式 DACL、整型权限详情)。 (learn.microsoft.com)
- 10 条即用即拷的典型场景命令;外加排错与最佳实践。
1. 工具定位与运行原理(速读)
AccessChk 是 Sysinternals 的只读权限体检工具:给定对象(文件/注册表/服务/进程/共享/内核对象等)与账户(或默认列出 DACL 中的账户),它计算并展示有效权限(R/W/X 等)与可选的完整安全描述符(SD)。无需代理、解压即用。 (learn.microsoft.com)
安装:将二进制放入 PATH;首次运行可用
-nobanner或-accepteula(任一 Sysinternals 工具首次运行需接受 EULA)。语法输入accesschk可查看帮助。 (learn.microsoft.com)
2. 命令行语法与高频参数
基本用法(简化版)
accesschk [对象修饰] [过滤/显示] [递归/详细] [账户] <对象路径或名称>
对象修饰(告诉它你查什么)
| 开关 | 说明 | 示例 |
|---|---|---|
-k |
目标是注册表键 | -k hklm\software |
-c |
目标是服务(值为服务名或 *;scmanager 检查 SCM 自身) |
-c spooler、-c *、-c scmanager |
-p |
目标是进程(名或 PID;* 为所有) |
-p lsass.exe、-p * |
-h |
目标是文件/打印共享 | -h * |
-o |
目标是对象管理器命名对象(可加 -t section/event/... 过滤类型) |
-o \BaseNamedObjects -t section |
过滤/显示选项(最常用)
| 开关 | 作用 | 备注 |
|---|---|---|
-r |
仅显示授予读取的对象 | 读矩阵快速排查 |
-w |
仅显示授予写入的对象 | 高风险聚焦 |
-x |
仅显示授予执行的对象 | 可执行路径核查 |
-e |
只看显式完整性级别/显式 DACL | 噪音降维 |
-n |
仅显示无访问对象 | 封禁验证 |
-l |
输出完整 SD(配合 -i 忽略继承 ACE) |
深度审计 |
-f |
在 -p 模式下显示令牌组与特权;或作为账户过滤列表 |
进程令牌体检 |
-s |
递归子目录/子键/子对象 | 目录/注册表树漫游 |
-v |
详情(含完整权限位/完整性级别) | 精准取证 |
-u |
抑制错误 | 扫描大范围更清爽 |
-nobanner |
不显示工具横幅 | 批处理更干净 |
官方参数释义与完整语法参见 Microsoft Learn:AccessChk 文档。本文表格据其整理。 (learn.microsoft.com)
3. 快速上手:看懂输出
- 不指定账户:默认按对象 DACL 中引用到的账户逐一计算有效访问,以
R/W标记展示;-v可展开为权限位清单。 (learn.microsoft.com) - 指定账户(
[username] 路径):仅计算该账户的有效权限(包含组聚合)。 (learn.microsoft.com)
4. 十条「即用即拷」命令(覆盖 80% 场景)
- 盘点某账户对 System32 的权限矩阵
accesschk "Power Users" C:\Windows\System32
报告 Power Users 对目录与文件的有效访问位。 (learn.microsoft.com)
- 找出 Users 组可写的服务(高风险点)
accesschk users -cw *
列出普通用户可写的服务,重点排查“服务可被普通用户改写二进制/重启劫持”。 (learn.microsoft.com)
- 审计注册表键安全性(查看 SD)
accesschk -l -k hklm\software
输出 HKLM\Software 的完整安全描述符(可配 -i 忽略继承)。 (learn.microsoft.com)
- 找出某账户在 HKLM\Software 下“无访问”的键
accesschk -k -n -s corp\alice hklm\software
-n 只显示无访问项,-s 递归。 (learn.microsoft.com)
- 巡检用户目录中设置了显式完整性级别的文件(兼容 Vista+)
accesschk -e -s C:\Users\Alice
快速发现被显式标记 IL 的对象。 (learn.microsoft.com)
- 定位 Everyone 可修改的全局对象(对象管理器)
accesschk -w -u -o everyone \BaseNamedObjects
结合 -o 与 -t 可只看 section/event/mutex 等类型。 (learn.microsoft.com)
- 进程令牌体检(组与特权)
accesschk -p -f lsass.exe
在 -p 模式下的 -f 会显示完整令牌信息。 (learn.microsoft.com)
- 批量导出所有进程可访问性快照
accesschk -p -v * > proc_access.txt
用于基线对比与异常溯源。 (learn.microsoft.com)
- 审计共享(文件/打印)权限
accesschk -h *
一次性列出本机共享与对应访问。 (learn.microsoft.com)
- 查看服务控制管理器(SCM)自身权限
accesschk -c scmanager
确认谁有操作服务控制器能力。 (learn.microsoft.com)
5. 常见问题与排错
- 结果与“属性-安全”界面不一致?
请确认你是在 指定账户模式 下评估(例如accesschk corp\alice <对象>),并开启-v查看合并后有效权限(继承、显式 ACE、拒绝 ACE 叠加)。 (learn.microsoft.com) - 输出很吵/太多继承项
用-e(显式)、-i(忽略继承 ACE)、-r/-w/-x(权限聚焦)与-s(递归)组合。 - 注册表路径写不对
使用hklm\...、hkcu\...简写;WOW64 重定向与 32/64 位视图差异要在路径上明确。 - 对象管理器看不到内容
访问\BaseNamedObjects等命名空间需本地管理员或等效权限;配合-t过滤类型。
6. 最佳实践清单(运维/安全双维度)
- 最小权限与差距分析:先跑基线(金标准主机),再对比偏差(可写服务、Everyone 可写对象等)。
- 高风险优先:优先巡检
-w(可写)、-x(可执行)授权对象。 - 变更前后留痕:导出基线文本(如
> before.txt),变更后再导(> after.txt)做diff。 - 结合 Sysmon/Procmon:发现“可写服务/目录”后,用 Sysmon 订阅规则或 Procmon 验证利用链。
- 批量与自动化:结合 PsExec/PowerShell 对 OU/资产清单并发巡检,统一入库做报表。
7. 学到就能用:两段脚本模板
A. 巡检“普通用户可写服务”(本机)
:: 列出 Users 组可写服务(高危)
accesschk users -cw * > writable_services.txt
(对域环境,将 users 换成你的低权限组或特定账号) (learn.microsoft.com)
B. 递归审计某目录对 Everyone 的写权限
:: 只显示授予写入的项,并递归
accesschk -w -s everyone D:\AppData > everyone_write_d_appdata.txt
(变更 ACL 前务必评估业务影响)
8. 参考与延伸
- 官方文档:AccessChk - Sysinternals | Microsoft Learn(含完整语法、示例) 。建议收藏为权威对照。 (learn.microsoft.com)
到这里,你已经能用 AccessChk 进行“定点+批量”的权限体检。下一篇我们进入 PsLogList(9.3) 或你指定的工具,继续把“远程取证 + 合规审计”的链路打通。
更多推荐


所有评论(0)