如何匹配Splunk中的事件序列?



我的SPL专业知识有限。我正在尝试编写一个匹配事件序列的搜索。

我正在处理来自windows机器的系统日志。

第一个事件是一个文件创建事件,其中Imagedllhost.exeTargetFilename以*开头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 *"

TargetFilenam事件1中的e必须等于ImageLoaded的值字段。

事件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

相关内容

  • 没有找到相关文章

最新更新