diff --git a/pkg/filter/filter.go b/pkg/filter/filter.go index 93b44f299..bb38ada64 100644 --- a/pkg/filter/filter.go +++ b/pkg/filter/filter.go @@ -350,7 +350,7 @@ func (f *filter) GetSequence() *ql.Sequence { return f.seq } // which refers to the event in particular sequence stage. Otherwise, the modifier is // a well-known field name prepended with the `%` symbol. func InterpolateFields(s string, evts []*kevent.Kevent) string { - var fieldsReplRegexp = regexp.MustCompile(`%([1-9]?)\.?([a-z0-9A-Z\[\].]+)`) + var fieldsReplRegexp = regexp.MustCompile(`%([1-9]?)\.?([a-z0-9A-Z\[\]._]+)`) matches := fieldsReplRegexp.FindAllStringSubmatch(s, -1) r := s if len(matches) == 0 { diff --git a/pkg/filter/filter_test.go b/pkg/filter/filter_test.go index b5cead9b3..ae71641e6 100644 --- a/pkg/filter/filter_test.go +++ b/pkg/filter/filter_test.go @@ -1325,6 +1325,21 @@ func TestInterpolateFields(t *testing.T) { }, }, }, + { + original: "Suspicious thread start module %thread.start_address.module", + interpolated: "Suspicious thread start module C:\\Windows\\System32\\vault.dll", + evts: []*kevent.Kevent{ + { + Type: ktypes.CreateThread, + Category: ktypes.Thread, + Name: "CreateThread", + PID: 1023, + Kparams: kevent.Kparams{ + kparams.StartAddressModule: {Name: kparams.StartAddressModule, Type: kparams.UnicodeString, Value: "C:\\Windows\\System32\\vault.dll"}, + }, + }, + }, + }, { original: `Detected an attempt by %1.ps.name process to access and read the memory of the Local Security And Authority Subsystem Service