Detection rules › Kusto
Malware Detection Session Finished
Detects when malware detection session finishes.
Rule body kusto
id: 88b9223c-29ff-48a9-a745-c553aa0dbae2
name: Malware Detection Session Finished
description: Detects when malware detection session finishes.
severity: Informational
status: Available
requiredDataConnectors:
- connectorId: Syslog
dataTypes:
- Syslog
- connectorId: SyslogAma
dataTypes:
- Syslog
queryFrequency: 3h
queryPeriod: 3h
triggerOperator: gt
triggerThreshold: 0
eventGroupingSettings:
aggregationKind: AlertPerResult
tactics: []
relevantTechniques: []
query: "let action_results_lookup = union isfuzzy=true (datatable(JobResult:string,\
\ JobResultMessage:string)[]), (_GetWatchlist(\"action_results_lookup\")); \nVeeam_GetSecurityEvents\n\
| where instanceId == 42210\n| extend Result = extract(\"Result=\\\"([^\\\"]*)\\\
\"\", 1, SyslogMessage)\n| extend SessionID = extract(\"SessionID=\\\"([^\\\"]*)\\\
\"\", 1, SyslogMessage)\n| lookup kind=leftouter (action_results_lookup)\n on\
\ $left.Result == $right.JobResult\n| project\n Date = format_datetime(TimeGenerated,\
\ 'dd.MM.yyyy HH:mm'),\n DataSource = original_host,\n EventId = instanceId,\n\
\ [\"Session ID\"] = SessionID,\n [\"StateMessage\"] = JobResultMessage,\n\
\ MessageDetails = Description,\n Severity = SeverityDescription\n"
version: 1.0.1
kind: Scheduled
customDetails:
Date: Date
VbrHostName: DataSource
EventId: EventId
MessageDetails: MessageDetails
Severity: Severity
Stages and Predicates
Parameters
let action_results_lookup = union isfuzzy=true (datatable(JobResult:string, JobResultMessage:string)[]), (_GetWatchlist("action_results_lookup"));
Stage 1: source
Veeam_GetSecurityEvents
Stage 2: where
| where instanceId == 42210
Stage 3: extend
| extend Result = extract("Result=\"([^\"]*)\"", 1, SyslogMessage)
Stage 4: extend
| extend SessionID = extract("SessionID=\"([^\"]*)\"", 1, SyslogMessage)
Stage 5: kusto:lookup
| lookup kind=leftouter (action_results_lookup)
on $left.Result == $right.JobResult
Stage 6: project
| project
Date = format_datetime(TimeGenerated, 'dd.MM.yyyy HH:mm'),
DataSource = original_host,
EventId = instanceId,
["Session ID"] = SessionID,
["StateMessage"] = JobResultMessage,
MessageDetails = Description,
Severity = SeverityDescription
Indicators
Each row is a field, operator, and value that the rule matches. The corpus column counts how many other rules in the catalog look for the same combination: high numbers point to widely-used, community-vetted indicators. Blank or 1 shows that the indicator is specific to this rule.
| Field | Kind | Values |
|---|---|---|
instanceId | eq |
|
Output fields
Fields the rule emits when it matches. Chronicle authors list these in the outcome block; they appear on the detection and $risk_score drives alerting. Sentinel / Defender XDR rules build them up through project / summarize / extend stages. Sentinel maps these into alert fields via entityMappings and customDetails; Defender XDR custom detections surface them as alert fields directly.
| Field | Source |
|---|---|
DataSource | project |
Date | project |
EventId | project |
MessageDetails | project |
Session ID | project |
Severity | project |
StateMessage | project |