管理员可以读取并导出所有事件日志,但只能通过提升的提示符进行。对于其他人来说,内置的 “事件日志读取者” 组允许本地和远程读取大多数日志,无需管理员权限。使用 net localgroup “Event Log Readers” <user> /add 添加帐户,然后注销并重新登录。有些通道设置了自己的权限;我们可以通过 wevtutil gl <log> 准确看到谁可以读取特定日志。
分析师、日志收集器和事件响应伙伴都需要事件日志,但他们不应该需要成为本地管理员。本文介绍了最低权限设置以及即使你认为你有权限却依然显示“访问被拒绝”的原因。
谁可以做什么
| 操作 | 默认情况下的权限 |
|---|---|
| 读取和导出大多数日志 | 管理员(提升的)和事件日志读取者 |
| 读取安全日志 | 管理员(提升的);事件日志读取者 |
| 清除安全日志或更改审核 | 具有“管理审核和安全日志”权限的帐户(管理员) |
| 更改日志的大小或保留 | 管理员 |
| 从其他计算机读取日志 | 具有与本地相同的权限,此外需打开防火墙以进行远程事件日志访问 |
为什么管理员仍然会得到“访问被拒绝”
用户帐户控制。未提升的会话以过滤后的令牌运行,没有管理员组。事件查看器和 wevtutil 因此表现得如同你是普通用户。右键单击, 以管理员身份运行,然后重试。这是迄今为止最常见的原因。
将帐户添加到事件日志读取者
在一台机器上:
net localgroup "Event Log Readers" 分析师 /add
或在 PowerShell 中:
Add-LocalGroupMember -Group "Event Log Readers" -Member "CORPanalyst"
注销并重新登录;组成员身份在登录时读取。
在整个域中,使用组策略(受限组或组策略首选项 → 本地用户和组)将域组添加到每台机器上的事件日志读取者。在域控制器上,事件日志读取者是域范围的内置组,因此一次更改适用于所有 DC。
检查特定日志的权限
wevtutil gl Security
查看 channelAccess。这是一个 SDDL 字符串,重要的部分看起来是 (A;;0x1;;;S-1-5-32-573): A 表示允许, 0x1 表示读取,和 S-1-5-32-573 是事件日志读取者。如果通道的 SDDL 不包含该 SID,事件日志读取者无法读取它。你可以通过 wevtutil sl <log> /ca:<SDDL> 更改通道访问,但这很容易出错。尽量使用组成员身份。
远程访问
- 防火墙。 事件查看器的“连接到另一台计算机”、wevtutil /r: 和 Get-WinEvent -ComputerName 使用 RPC。在目标上启用规则组:Enable-NetFirewallRule -DisplayGroup “Remote Event Log Management”。
- PowerShell 远程 (Invoke-Command)则改用 WinRM。这通常已经在 RPC 尚未打开的情况下 是可用的。
- Windows 事件转发。 要转发安全日志,请将网络服务添加到源机器上的事件日志读取者中。否则,订阅看起来健康,但不会传递任何安全事件。
关于上传 EVTX 的说明
具有导出日志权限并不意味着所有目的地都合适。LogTotal 还没有清理 EVTX 文件。将 EVTX 上传视为交出原始文件,或先将其转换为 JSON。
出错时
| 症状 | 可能原因 | Fix |
|---|---|---|
| 作为管理员访问被拒绝 | 会话未提升 | 以管理员身份运行 |
| 在事件日志读取者中访问被拒绝 | 成员身份尚未激活,或通道有自定义权限 | 注销并重新登录;检查 wevtutil gl |
| RPC 服务器不可用 | 远程事件日志防火墙规则未开启 | 在目标上启用“远程事件日志管理” |
| WEF 传递所有内容,但不包括安全项 | 网络服务不在事件日志读取者中 | 添加它到源 |
| 可以读取日志,但导出失败 | 没有目标文件夹的写入权限 | 导出到你可以写入的地方,例如 C:Users<you> |