我被要求查明上周用户何时登录系统。现在 Windows 中的审计日志应该包含我需要的所有信息。我想如果我使用特定的 AD 用户和登录类型 2(交互式登录)搜索事件 ID 4624(登录成功),它应该为我提供所需的信息,但在我的一生中,我无法弄清楚如何实际过滤事件日志以获取此信息。是否可以在事件查看器内部使用,或者您是否需要使用外部工具将其解析到此级别?
我发现http://nerdsknowbest.blogspot.com.au/2013/03/filter-security-event-logs-by-user-in.html这似乎是我需要的一部分。我稍微修改了一下,只给了我最后 7 天的价值。下面是我试过的 XML。
<QueryList>
<Query Id="0" Path="Security">
<Select Path="Security">*[System[(EventID=4624) and TimeCreated[timediff(@SystemTime) <= 604800000]]]</Select>
<Select Path="Security">*[EventData[Data[@Name='Logon Type']='2']]</Select>
<Select Path="Security">*[EventData[Data[@Name='subjectUsername']='Domain\Username']]</Select>
</Query>
</QueryList>
Run Code Online (Sandbox Code Playgroud)
它只给了我最后 7 天,但其余时间都不起作用。
任何人都可以帮助我吗?
编辑
感谢Lucky Luke的建议,我一直在进步。下面是我当前的查询,尽管我将解释它没有返回任何结果。
<QueryList>
<Query Id="0" Path="Security">
<Select Path="Security">
*[System[(EventID='4624')]
and
System[TimeCreated[timediff(@SystemTime) <= 604800000]]
and
EventData[Data[@Name='TargetUserName']='john.doe']
and
EventData[Data[@Name='LogonType']='2']
]
</Select>
</Query>
</QueryList>
Run Code Online (Sandbox Code Playgroud)
正如我所提到的,它没有返回任何结果,所以我一直在弄乱它。在我添加 LogonType 行之前,我可以让它正确产生结果。之后,它不返回任何结果。知道为什么会这样吗?
编辑 2
我将 LogonType 行更新为以下内容:
EventData[Data[@Name='LogonType'] and (Data='2' or Data='7')]
Run Code Online (Sandbox Code Playgroud)
这应该捕获工作站登录以及工作站解锁,但我仍然一无所获。然后我修改它以搜索其他登录类型,如 3 或 8,它找到了很多。这让我相信查询工作正常,但由于某种原因,事件日志中没有登录类型等于 2 的条目,这对我来说毫无意义。是否可以关闭此功能?