我正在运行 AppLocker,并希望使用 XPath 从事件查看器中记录的事件中过滤掉一些噪音。具体来说,我想隐藏与 CMD.exe 相关的任何事件
这是我想要删除的示例条目:
<Event xmlns="http://schemas.microsoft.com/win/2004/08/events/event">
<System>
<Provider Name="Microsoft-Windows-AppLocker" Guid="{CBDA4DBF-8D5D-4F69-9578-BE14AA540D22}" />
<EventID>8003</EventID>
<Version>0</Version>
<Level>3</Level>
<Task>0</Task>
<Opcode>0</Opcode>
<Keywords>0x8000000000000000</Keywords>
<TimeCreated SystemTime="2014-05-29T05:47:09.625405200Z" />
<EventRecordID>257765</EventRecordID>
<Correlation />
<Execution ProcessID="1108" ThreadID="2652" />
<Channel>Microsoft-Windows-AppLocker/EXE and DLL</Channel>
<Computer>COMPUTERNAME.DOMAIN</Computer>
<Security UserID="S-1-5-21-123456789-123456789-123456789-123456" />
</System>
<UserData>
<RuleAndFileData xmlns:auto-ns2="http://schemas.microsoft.com/win/2004/08/events" xmlns="http://schemas.microsoft.com/schemas/event/Microsoft.Windows/1.0.0.0">
<PolicyName>EXE</PolicyName>
<RuleId>{00000000-0000-0000-0000-000000000000}</RuleId>
<RuleName>-</RuleName>
<RuleSddl>-</RuleSddl>
<TargetUser>S-1-5-21-123456789-123456789-123456789-123456</TargetUser>
<TargetProcessId>3224</TargetProcessId>
<FilePath>%SYSTEM32%\CMD.EXE</FilePath>
<FileHash>5F98965FF2650B89586176B38F007CA13A9E525E877DDCCBCDCE0A90408672D5</FileHash>
<Fqbn>O=MICROSOFT CORPORATION, L=REDMOND, S=WASHINGTON, C=US\MICROSOFT® WINDOWS® OPERATING SYSTEM\CMD.EXE\6.1.7601.17514</Fqbn>
</RuleAndFileData>
</UserData>
</Event>
我想要的效果是:如果 FilePath 等于“%SYSTEM32%\CMD.EXE”,则隐藏事件
我尝试过类似的事情:
<QueryList>
<Query Id="0" Path="Microsoft-Windows-AppLocker/EXE and DLL">
<Select Path="Microsoft-Windows-AppLocker/EXE and DLL">*[System[(Level=1 or Level=2 or Level=3)]]</Select>
<Suppress Path="Microsoft-Windows-AppLocker/EXE and DLL">*[UserData[FileAndFileData[FilePath = '%SYSTEM32%\CMD.EXE' ]]]</Suppress>
</Query>
</QueryList>
但这似乎没有任何作用。我一直在网上查看随机的 XPath 示例(包括相似的 问题在 Server Fault 上),但大多数都是在所讨论的 XML 列在“EventData”而不是“UserData”下时编写的,并且目标标签直接位于该 EventData 下,而不是在另一个标签(在此示例中为“RuleAndFileData”)下。
有没有人有我可以尝试一下的 XPath 代码示例?
答案1
看起来您在抑制部分使用了错误的 xpath 标签,请检查您的代码是否有任何错误。
代替:
FileAndFileData
和:
RuleAndFileData
答案2
重新提起老问题,但由于我今天遇到了同样的问题,所以我最好将我的发现记录下来以供将来参考。
根据嵌套元素过滤事件的正确语法是使用正斜杠/
作为路径分隔符:
*[UserData/RuleAndFileData[FilePath='%SYSTEM32%\CMD.EXE']]
只需将多个表达式连接起来即可将它们组合在一起。例如,这将对两个表达式执行逻辑与:
*[System[(Level=1 or Level=2 or Level=3)]][UserData/RuleAndFileData[FilePath='%SYSTEM32%\CMD.EXE']]
在以下示例中,查询 ID 1 将从“Exe 和 DLL”日志中选择所有信息事件,其中 FilePath 为“%SYSTEM32%\CMD.EXE”,RuleName 不是“(默认规则) 所有文件”。只有一个 EventID 8002 会匹配,因为其他 ID 实际上是来自其他 AppLocker 日志的信息事件。“TimeCreated”部分是可选的,也是它的边界之一,但在此处包含以供语法参考。
查询 ID 2 使用timediff()
函数从过去 7 天(604800000 毫秒)发生的“MSI 和脚本”日志警告事件中进行选择。同样,只有一个 EventID(8006)会匹配,因为该日志中不存在其他 EventID。Microsoft 的 Filter XPath 1.0 扩展有 timediff 的文档:https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-even6/4533bef3-5a74-4a72-a03a-7fd5c1470554
<QueryList>
<Query Id="1">
<Select Path="Microsoft-Windows-AppLocker/EXE and DLL">*[System[(EventID=8002 or EventID=8005 or EventID=8020 or EventID=8023) and TimeCreated[@SystemTime >= '0001-01-01T00:00:00.0000000Z' and @SystemTime <= '9999-12-31T21:59:59.9999999Z']]][UserData/RuleAndFileData[FilePath='%SYSTEM32%\CMD.EXE']]</Select>
<Suppress Path="Microsoft-Windows-AppLocker/EXE and DLL">*[UserData/RuleAndFileData[RuleName='(Default Rule) All files']]</Suppress>
</Query>
<Query Id="2">
<Select Path="Microsoft-Windows-AppLocker/MSI and Script">*[System[(EventID=8003 or EventID=8006 or EventID=8021 or EventID=8024) and TimeCreated[timediff(@SystemTime) < 604800000]]]</Select>
</Query>
</QueryList>
根据Windows 事件日志查询架构,Id
并且元素Path
的属性Query
是可选的。https://docs.microsoft.com/en-us/windows/win32/wes/queryschema-schema
还值得注意的是,Windows 事件日志不支持属性值中的通配符,也不支持 XPath 的contains()
功能。仅节点路径支持通配符。因此,如果您想进行子字符串过滤,则必须在查询之后进行,例如在 PowerShell 中。
https://docs.microsoft.com/en-us/windows/win32/wes/assuming-events
XPath 1.0 限制:
Windows 事件日志支持 XPath 1.0 的子集。查询中可以使用的函数存在限制。例如,您可以在查询中使用“position”、“Band”和“timediff”函数,但目前不支持“starts-with”和“contains”等其他函数。
有关事件日志 XPath 语法的更多示例和信息,请访问消费事件(Windows 事件日志)页:https://docs.microsoft.com/en-us/windows/win32/wes/assuming-events