三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

别再乱改权限了!用微软官方AccessChk工具,5分钟排查Windows系统安全漏洞

别再乱改权限了!用微软官方AccessChk工具,5分钟排查Windows系统安全漏洞

Windows系统权限审计实战:用AccessChk构建安全防线

每次系统被入侵后复盘,总会发现那些本可避免的权限配置失误。作为在金融行业负责Windows服务器集群安全加固的工程师,我见过太多因服务账户过度授权导致的横向渗透案例。本文将分享如何用微软官方工具AccessChk快速定位这些"定时炸弹",这套方法曾帮助我们在一次红蓝对抗演练前修复了17处高危权限漏洞。

1. 为什么权限审计是安全运维的第一道防线

去年某次针对域控制器的渗透测试中,攻击者仅通过一个普通应用服务账户就获取了系统级权限。根本原因在于该账户对某个注册表键拥有错误的写入权限——这种问题用常规安全扫描工具很难发现,却能被AccessChk精准捕捉。

1.1 权限配置的典型风险场景

  • 服务账户提权:IIS或SQL服务账户被授予SCM(服务控制管理器)修改权限
  • 注册表越权:普通用户组对HKLM\System\CurrentControlSet具有写权限
  • 文件系统暴露:关键目录(如C:\Windows\Temp)允许Authenticated Users完全控制
  • 对象命名空间漏洞:全局对象(如命名管道)配置不当导致信息泄露

提示:微软漏洞数据库显示,约43%的本地提权漏洞与错误权限配置直接相关

1.2 AccessChk在安全工具链中的定位

与传统杀毒软件不同,AccessChk专注于主动防御领域。它能以命令行方式检查:

资源类型检查维度风险示例
Windows服务启动/停止/配置权限恶意服务植入
注册表项键值读写权限持久化后门
文件目录NTFS权限继承关系敏感文件篡改
内核对象全局对象访问控制内存数据窃取

2. 高效部署AccessChk的工程实践

2.1 自动化部署方案

对于拥有数百台服务器的环境,推荐使用以下PowerShell脚本实现静默部署:

# 下载最新版AccessChk到所有服务器的C:\Tools目录 $servers = Get-Content .\server_list.txt $source = "https://live.sysinternals.com/AccessChk.exe" $dest = "\\$server\C$\Tools\" Invoke-Command -ComputerName $servers -ScriptBlock { if(-not (Test-Path $using:dest)) { New-Item -Path $using:dest -ItemType Directory } Start-BitsTransfer -Source $using:source -Destination $using:dest }

2.2 权限审计的黄金命令组合

2.2.1 服务权限扫描

查找所有允许修改的服务(高危操作):

accesschk.exe /accepteula -w -v -c * > service_permissions.log

关键参数解析:

  • -w:筛选具有写入权限的条目
  • -v:显示完整性级别(Vista+系统)
  • -c *:检查所有服务
2.2.2 注册表敏感键检查

扫描Run键的权限配置:

accesschk.exe -kns "BUILTIN\Users" HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Run

典型输出示例:

RW NT AUTHORITY\SYSTEM RW BUILTIN\Administrators R BUILTIN\Users

3. 企业级安全审计实战案例

3.1 自动化批处理脚本

创建audit.bat实现一键扫描:

@echo off set LOGDIR=C:\AuditLogs\%COMPUTERNAME%_%DATE:~0,10% mkdir "%LOGDIR%" accesschk.exe -w -v -c * > "%LOGDIR%\services.txt" accesschk.exe -kw -v HKLM > "%LOGDIR%\registry.txt" accesschk.exe -w -v -d C:\ > "%LOGDIR%\filesystem.txt"

3.2 关键发现与修复方案

在某次审计中发现的真实案例:

  1. 漏洞发现

    [SCM] RW NT AUTHORITY\NETWORK SERVICE [Service] AppReadiness RW NT AUTHORITY\LOCAL SERVICE
  2. 风险分析

    • NETWORK SERVICE账户可创建新服务
    • LOCAL SERVICE可修改现有服务配置
  3. 修复命令

    sc.exe sdset AppReadiness D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;BA)(A;;CCLCSWLOCRRC;;;IU)

4. 构建持续监控体系

4.1 与SIEM系统集成

将AccessChk输出转换为Syslog格式发送到安全分析平台:

$results = .\accesschk.exe -w -q -c * | ConvertTo-Json Invoke-RestMethod -Uri "https://siem.example.com/api/logs" -Method POST -Body $results

4.2 基线比对策略

建立已知安全配置的黄金基准:

# 基准文件 -HKLM\SYSTEM\CurrentControlSet\Services\* : Administrators:FULL +HKLM\SYSTEM\CurrentControlSet\Services\* : NETWORK SERVICE:READ

在最近一次为医疗客户做的安全评估中,这套方法帮助他们在3天内完成了200台服务器的权限合规检查,相比商业工具节省了78%的时间成本。记住,好的系统管理员不是整天忙着救火,而是用正确的工具让火苗无从燃起。

← 返回列表