File tree Expand file tree Collapse file tree 2 files changed +71
-0
lines changed
Expand file tree Collapse file tree 2 files changed +71
-0
lines changed Original file line number Diff line number Diff line change @@ -235,6 +235,9 @@ class SplunkBackend(TextQueryBackend):
235235 temporal_aggregation_expression : ClassVar [Dict [str , str ]] = {
236236 "stats" : "| bin _time span={timespan}\n | stats dc(event_type) as event_type_count by _time{groupby}" ,
237237 }
238+ temporal_extended_aggregation_expression : ClassVar [Dict [str , str ]] = {
239+ "stats" : "| bin _time span={timespan}\n | stats values(event_type) as event_types by _time{groupby}" ,
240+ }
238241
239242 timespan_mapping : ClassVar [Dict [str , str ]] = {
240243 "M" : "mon" ,
@@ -253,6 +256,13 @@ class SplunkBackend(TextQueryBackend):
253256 temporal_condition_expression : ClassVar [Dict [str , str ]] = {
254257 "stats" : "| search event_type_count {op} {count}"
255258 }
259+ temporal_extended_condition_expression : ClassVar [dict [str , str ]] = {
260+ "stats" : "| search {extended_condition}"
261+ }
262+
263+ extended_correlation_condition_rule_reference_expression : ClassVar [dict [str , str ]] = {
264+ "stats" : 'event_types="{ruleid}"'
265+ }
256266
257267 def __init__ (
258268 self ,
Original file line number Diff line number Diff line change @@ -126,6 +126,67 @@ def test_temporal_correlation_rule_stats_query(splunk_backend):
126126
127127| search event_type_count >= 2""" ]
128128
129+ def test_temporal_extended_correlation_rule_stats_query (splunk_backend ):
130+ correlation_rule = SigmaCollection .from_yaml (
131+ """
132+ title: Base rule 1
133+ name: base_rule_1
134+ status: test
135+ logsource:
136+ category: test
137+ detection:
138+ selection:
139+ fieldA: value1
140+ fieldB: value2
141+ condition: selection
142+ ---
143+ title: Base rule 2
144+ name: base_rule_2
145+ status: test
146+ logsource:
147+ category: test
148+ detection:
149+ selection:
150+ fieldA: value3
151+ fieldB: value4
152+ condition: selection
153+ ---
154+ title: Base rule 3
155+ name: base_rule_3
156+ status: test
157+ logsource:
158+ category: test
159+ detection:
160+ selection:
161+ fieldA: value5
162+ fieldB: value6
163+ condition: selection
164+ ---
165+ title: Temporal correlation rule
166+ status: test
167+ correlation:
168+ type: temporal
169+ aliases:
170+ field:
171+ base_rule_1: fieldC
172+ base_rule_2: fieldD
173+ group-by:
174+ - fieldC
175+ condition: base_rule_1 and base_rule_2 and not base_rule_3
176+ timespan: 15m
177+ """
178+ )
179+ assert splunk_backend .convert (correlation_rule ) == [
180+ """| multisearch
181+ [ search fieldA="value1" fieldB="value2" | eval event_type="base_rule_1" | rename fieldC as field ]
182+ [ search fieldA="value3" fieldB="value4" | eval event_type="base_rule_2" | rename fieldD as field ]
183+ [ search fieldA="value5" fieldB="value6" | eval event_type="base_rule_3" ]
184+
185+ | bin _time span=15m
186+ | stats values(event_type) as event_types by _time fieldC
187+
188+ | search event_types="base_rule_1" event_types="base_rule_2" NOT event_types="base_rule_3\" """ ]
189+
129190def test_event_count_correlation_rule_with_regex_deferred (splunk_backend ):
130191 """Test that deferred regex expressions are included in correlation sub-queries."""
131192 correlation_rule = SigmaCollection .from_yaml (
You can’t perform that action at this time.
0 commit comments