我的SPL专业知识有限。我正在尝试编写一个匹配事件序列的搜索。
我正在处理来自windows机器的系统日志。
第一个事件是一个文件创建事件,其中Image以dllhost.exe和TargetFilename以*开头C:windowssystem32*. 比如:
index=sysmon EventID=11 Image="*dllhost.exe" TargetFilename="C:\windows\system32\*"
next事件是一个图像加载事件,其中image以*开头C:windowssystem32*签名和不以关键字"Microsoft ">开头。就像
index=sysmon EventID=7 Image="C:\windows\system32\*" Signature != "Microsoft *"
事件2必须在事件1后1分钟内发生。
我尝试内部连接,在那里我基于TargetFilename加入结果from Event 1 andImageLoaded(重命名)来自事件2,但这只解决了谜题的第一部分。我希望这两个事件发生在一个序列,即加入如果事件2时间少于1分钟的事件1时间。我不知道如何用SPL表达这一点。如果有人能告诉我如何用tstats做所有这些,我也会很高兴:)
感谢考虑使用stats
按字段对项目进行分组。
首先,创建一个可以用于匹配的列。确保对于不想分组的内容,匹配字段为空。然后使用stats命令对事件进行分组
| eval Match=case(EventID==11,TargetFilename,EventID==7,ImageLoaded)
| table Match EventID Image TargetFilename Signature ImageLoaded
| stats list(*) as * by Match
这里有一个"run anywhere"创建事件并将它们连接起来的示例
| makeresults
| eval _raw="
EventID Image TargetFilename Signature ImageLoaded
11 dllhost.exe C:windowssystem32X Microsoft IL
9 I TF S IL
7 C:windowssystem32I TF Apple C:windowssystem32X
"
| 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 Match