accesschk/download
GitHub: accesschk/download
Sysinternals 出品的免费 Windows 命令行权限审计工具,用于查询和报告用户对文件、注册表、服务等多种安全对象的有效访问权限。
Stars: 0 | Forks: 0
AccessChk — 免费的 Windows 权限审计工具
AccessChk 是一款免费、轻量级的命令行实用工具,用于报告 Windows 安全对象上的有效权限——包括 NTFS 文件和文件夹、注册表项、Windows 服务、进程、SMB 共享和内核对象。AccessChk 专为执行 ACL 审计、合规性审查和权限提升评估的 IT 管理员、安全工程师和基础架构团队设计,能快速回答一个问题:“该用户或组实际拥有什么权限?”它是 Microsoft Sysinternals 套件的一部分,可作为便携式、免安装工具运行。
下载 AccessChk
| 文件 | 架构 | 类型 | 链接 |
|---|---|---|---|
| AccessChk.msi | 64 位 (x64) | MSI 安装程序 | ⬇ 下载 |
所有版本均可在 Releases 页面获取。每个版本均包含用于校验的 SHA-256 校验和。
核心功能
- 有效权限报告 — 显示用户和组的实际访问权限,综合考虑组成员身份和继承关系
- NTFS 文件和文件夹审计 — 通过递归扫描检查文件、目录和整个目录树上的 ACL
- 注册表项权限 — 审计对
HKLM、HKCU和其他注册表配置单元的访问权限 - Windows 服务审计 — 检查哪些账户可以读取、写入或修改 Windows 服务及服务控制管理器
- 进程和 token 检查 — 查看进程 token、组、特权和线程权限
- SMB 共享权限 — 审计网络上的文件和打印机共享访问权限
- 内核对象分析 — 检查信号量、区段、互斥锁和其他对象管理器对象
- 读/写/无访问权限过滤器 — 使用
-r、-w和-n参数快速查找具有特定访问类型的对象 - SDDL 安全描述符输出 — 导出完整的安全描述符以进行详细的 ACL 分析
- 命令行自动化 — 跨服务器编写权限审计脚本,用于批量合规性报告
- 便携模式 — 无需安装,可直接从 USB 驱动器、网络共享或任何目录运行
- 无需 agent — 独立可执行文件,无后台服务或依赖项
工作原理
AccessChk 读取 Windows 安全对象的安全描述符,并评估指定用户或组的有效权限。与仅列出原始 ACL 条目的 icacls 不同,AccessChk 会解析组成员身份和继承关系,以显示账户实际拥有的访问权限。对于每个对象,它会打印 R 表示读取权限,W 表示写入权限,如果账户两者皆无,则不打印任何内容。使用 -v 参数,它会导出授予每个账户的特定访问权限。
快速开始 — 单机版
- 从最新版本下载 AccessChk.msi
- 运行 MSI 安装程序,或从提升权限的命令提示符启动 AccessChk.exe
- 首次运行时接受 EULA:
accesschk /accepteula - 运行基本审计:
accesschk C:\Windows\System32 - 按用户和访问类型进行过滤:
accesschk -w "BUILTIN\Users" C:\Data - 查看输出结果,以识别权限过大或配置不当的条目
静默 MSI 安装(企业版)
msiexec /i AccessChk.msi /qn /norestart
命令行审计示例
accesschk -w "BUILTIN\Users" C:\Windows\System32
accesschk -s -v C:\Projects
accesschk -k hklm\software\microsoft
第一条命令查找 System32 中所有可被 Users 组写入的对象。第二条命令对 Projects 文件夹执行递归详细审计。第三条命令检查注册表项权限。第四条命令列出可被 Users 组写入的服务。
企业安全审计工作流
- 通过组策略、SCCM 或 Intune 将 AccessChk.msi 部署到目标服务器和工作站
- 对关键路径执行定时审计:Web 根目录、数据共享、注册表配置单元和服务配置
- 将结果导出到日志文件,用于合规性文档和趋势分析
- 审查结果,查找是否存在过多的写入权限、Everyone/Authenticated Users 配置错误以及特权提升路径
- 使用
icacls 或组策略首选项修复配置不当的 ACL
- 重新运行 AccessChk 以验证权限是否已更正
命令行参考
语法
描述
accesschk [options] [username] <object>
报告文件、文件夹、注册表项、服务或其他对象的有效权限
accesschk -s <path>
递归进入子目录或注册表子项
accesschk -r [user] <object>
仅显示具有读取权限的对象
accesschk -w [user] <object>
仅显示具有写入权限的对象
accesschk -n [user] <object>
仅显示指定账户无访问权限的对象
accesschk -k <registry key>
审计注册表项(例如 hklm\software)的权限
accesschk -c <service>
审计 Windows 服务的权限。使用 * 代表所有服务
accesschk -p <process>
按名称或 PID 审计进程的权限
accesschk -h <share>
审计文件或打印机共享的权限
accesschk -l <object>
导出完整的安全描述符(SDDL)。添加 -i 以忽略继承的 ACE
accesschk -v <object>
详细输出,包括特定的访问权限和完整性级别
accesschk /accepteula
接受 Sysinternals EULA(首次运行必选)
支持的审计场景
场景
详细信息
NTFS 权限审计
检查谁可以读取或写入本地磁盘和文件服务器上的文件及文件夹
注册表安全审查
审计 HKLM、HKCU 和 HKCR 下关键注册表项的访问权限
服务配置错误扫描
查找可被低权限账户写入的 Windows 服务(存在特权提升风险)
SMB 共享审计
识别 Everyone 或 Users 组拥有过度宽松访问权限的网络共享
进程 token 分析
检查进程 token、组和特权以进行安全评估
合规性报告
为 SOC 2、ISO 27001、PCI DSS 和内部审计记录有效权限
渗透测试
在目标系统上发现可写路径、薄弱 ACL 和特权提升向量
访问权限故障排除
诊断特定用户为何无法读取或写入文件、文件夹或注册表项的原因
系统要求
要求
详细信息
操作系统
Windows 7 / 8 / 10 / 11 / Server 2008–2025(32 位和 64 位)
对象类型
文件、文件夹、注册表项、服务、进程、共享、内核对象
价格
免费
安装
MSI 安装程序 — 支持静默部署
依赖项
无 — 独立的 Sysinternals 可执行文件
权限
审计服务、某些注册表项和其他用户的进程需要管理员权限
常见用例
- 安全审计与强化 — 识别无特权组具有过多写入权限的文件夹、共享和注册表项
- 特权提升评估 — 查找可被低权限账户利用的配置不当的服务和可写系统路径
- 合规性文档 — 为 SOC 2、ISO 27001、PCI DSS 和法规审计生成权限报告
- 文件服务器 ACL 审查 — 审计共享驱动器上的 NTFS 权限,并识别孤立或错误的访问条目
- 部署前检查 — 在将应用程序投入生产环境之前,验证服务和进程权限
- 事件响应 — 在调查期间快速评估谁拥有对已入侵文件、注册表项或服务的访问权限
- 组策略验证 — 确认 GPO 应用的安全设置能产生预期的有效权限
- Helpdesk 诊断 — 通过显示受影响用户的确切有效权限,解决“拒绝访问”工单
AccessChk 的替代工具
如果您正在寻找类似的 Windows 权限审计工具,请考虑以下替代方案:
- icacls — 内置的 Windows 用工具,用于查看和修改 ACL 条目(不计算有效权限)
- cacls — 用于显示和修改文件及文件夹 ACL 的旧版命令行工具(已弃用)
- PowerShell Get-Acl — 原生的 PowerShell cmdlet,用于检索文件、文件夹和注册表项上的 ACL 对象
- XCACLS — 扩展的 ACL 实用工具,用于显示和修改文件及文件夹上的访问控制列表
- Windows 高级安全设置 — 文件资源管理器和注册表编辑器中的 GUI 对话框,用于查看有效权限
- SecAudit / auditpol — Windows 审计策略工具,用于记录访问事件,而不是直接检查 ACL
- 商业 IAM 工具 — 诸如 Varonis、Netwrix 或 ManageEngine 等企业级平台,用于大规模的权限治理
常见问题
如何下载 AccessChk?
直接从最新版本下载 AccessChk.msi,或访问 Releases 页面获取所有版本。
AccessChk 和 icacls 有什么区别?
AccessChk 会计算特定用户或组的有效权限,并综合考虑组成员身份和继承关系。icacls 仅显示原始 ACL 条目,而不解析特定账户实际拥有的访问权限。审计 ACL 时请使用 AccessChk,修改 ACL 时请使用 icacls。
如何从命令行检查文件夹权限?
运行 accesschk /accepteula -v "C:\YourFolder" 以查看所有账户的详细有效权限。要检查特定用户,请添加用户名:accesschk /accepteula -v "DOMAIN\User" "C:\YourFolder"。
如何查找 Users 组可写的所有文件?
运行 accesschk -sw "BUILTIN\Users" C:\TargetFolder。-s 参数会递归进入子目录,而 -w 会过滤出仅具有写入权限的对象。
AccessChk 需要管理员权限吗?
对于大多数文件和注册表项,拥有对安全描述符的读取权限即可。审计服务、某些系统对象以及其他用户的进程,需要从提升权限的命令提示符运行 AccessChk。
如何通过 MSI 静默安装 AccessChk?
在提升权限的命令提示符下运行 msiexec /i AccessChk.msi /qn /norestart,或通过组策略、SCCM 或 Intune 部署 MSI 软件包。
我可以使用 AccessChk 审计 Windows 服务权限吗?
可以。运行 accesschk -c * 以列出所有服务的权限,或运行 accesschk -cw "Users" * 查找 Users 组可写的服务——这是一种常见的特权提升向量。
如何在 PowerShell 中自动化 ACL 审计?
使用 $results = & accesschk.exe /accepteula -s -w "BUILTIN\Users" C:\Data 2>&1 并将输出通过管道传递到日志文件,以便对您整个机群进行定时的合规性报告。
AccessChk 是免费的吗?
是的。AccessChk 是 Microsoft Sysinternals 套件的一部分,根据 Sysinternals 许可证免费分发。
总结
AccessChk 是审计 Windows 系统有效权限的首选工具。无论您是在强化单台文件服务器、对数据中心进行合规性审查,还是在渗透测试期间寻找特权提升路径,AccessChk 都提供了一种快速、可靠且免费的方式来回答“谁拥有什么访问权限?”。它对 NTFS、注册表、服务、进程、共享和内核对象的支持——结合读/写/无访问权限过滤器和命令行自动化——使其成为 Windows 管理员和安全专业人员的必备实用工具。