我的SPL专业知识有限。我试着写一个匹配一系列事件的搜索。
我在处理windows机器上的sysmon日志。
第一个事件是一个文件创建事件,其中TargetFilename图像以dllhost.exe结尾,而图像以dllhost.exe开头类似于:
index=sysmon EventID=11 Image="*dllhost.exe" TargetFilename="C:\\windows\\system32\\*"
下一个事件是一个图像加载事件,图像以开始,签名不以关键字"Microsoft "开头。就像这样
index=sysmon EventID=7 Image="C:\\windows\\system32\\*" Signature != "Microsoft *"
事件1中的TargetFilenam_e值必须等于事件2中的ImageLoaded_字段的值。
事件2必须在事件1后1分钟内发生。
我尝试了内部连接,其中基于事件1的TargetFilename和事件2的ImageLoaded (重命名)连接结果,但这只解决了谜题的第一部分。我希望这两个事件都按顺序发生,即,如果事件2的时间小于事件1的1分钟,则为联接。我不知道如何用SPL来表达这一点。另外,如果有人能教我如何使用tstats来完成这一切,我也会很高兴:)
谢谢
发布于 2022-05-05 00:05:55
考虑使用stats按字段对项进行分组。
首先,创建一个可以用于匹配的列。确保匹配字段对于任何不想分组的内容都是空的。然后使用stats命令对事件进行分组。
| eval Match=case(EventID==11,TargetFilename,EventID==7,ImageLoaded)
| table Match EventID Image TargetFilename Signature ImageLoaded
| stats list(*) as * by Match下面是一个“”示例,将事件和它们连接起来。
| makeresults
| eval _raw="
EventID Image TargetFilename Signature ImageLoaded
11 dllhost.exe C:\windows\system32\X Microsoft IL
9 I TF S IL
7 C:\windows\system32\I TF Apple C:\windows\system32\X
"
| multikv forceheader=1 fields EventID Image TargetFilename Signature ImageLoaded
| eval Match=case(EventID==11,TargetFilename,EventID==7,ImageLoaded)
| table Match EventID Image TargetFilename Signature ImageLoaded
| stats list(*) as * by Matchhttps://stackoverflow.com/questions/72074191
复制相似问题