Detection rules › Kusto

Cloud Replica Permanent Failover Performed by Tenant

Status
available
Severity
high
Time window
5m
Source
github.com/Azure/Azure-Sentinel

Detects permanent failover of a cloud replica initiated by a tenant. This might indicate disaster recovery activity or issues with primary systems.

Rule body kusto

id: 1f1634e5-585e-4187-ac5b-6d0e157bd2ea
name: Cloud Replica Permanent Failover Performed by Tenant
description: Detects permanent failover of a cloud replica initiated by a tenant.
  This might indicate disaster recovery activity or issues with primary systems.
severity: High
status: Available
requiredDataConnectors:
- connectorId: Syslog
  dataTypes:
  - Syslog
- connectorId: SyslogAma
  dataTypes:
  - Syslog
queryFrequency: 5m
queryPeriod: 5m
triggerOperator: gt
triggerThreshold: 0
eventGroupingSettings:
  aggregationKind: AlertPerResult
tactics: []
relevantTechniques: []
query: "Veeam_GetSecurityEvents\n| where instanceId == 27000\n| extend VmRef = extract(\"\
  VmRef=\\\"([^\\\"]*)\\\"\", 1, SyslogMessage)\n| extend TenantID = extract(\"TenantID=\\\
  \"([^\\\"]*)\\\"\", 1, SyslogMessage)\n| extend TenantID = extract(\"TenantID=\\\
  \"([^\\\"]*)\\\"\", 1, SyslogMessage)\n| extend HostID = extract(\"HostID=\\\"([^\\\
  \"]*)\\\"\", 1, SyslogMessage)\n| project\n    Date = format_datetime(TimeGenerated,\
  \ 'dd.MM.yyyy HH:mm'),\n    DataSource = original_host,\n    EventId = instanceId,\n\
  \    [\"Replica Name\"] = VmRef,\n    [\"Tenant ID\"] = TenantID,\n    [\"Data SourceID\"\
  ] = HostID,\n    MessageDetails = Description,\n    Severity = SeverityDescription"
version: 1.0.1
kind: Scheduled
customDetails:
  Date: Date
  VbrHostName: DataSource
  EventId: EventId
  MessageDetails: MessageDetails
  Severity: Severity

Stages and Predicates

Stage 1: source

Veeam_GetSecurityEvents

Stage 2: where

| where instanceId == 27000

Stage 3: extend (4 consecutive steps)

| extend VmRef = extract("VmRef=\"([^\"]*)\"", 1, SyslogMessage)
| extend TenantID = extract("TenantID=\"([^\"]*)\"", 1, SyslogMessage)
| extend TenantID = extract("TenantID=\"([^\"]*)\"", 1, SyslogMessage)
| extend HostID = extract("HostID=\"([^\"]*)\"", 1, SyslogMessage)

Stage 4: project

| project
    Date = format_datetime(TimeGenerated, 'dd.MM.yyyy HH:mm'),
    DataSource = original_host,
    EventId = instanceId,
    ["Replica Name"] = VmRef,
    ["Tenant ID"] = TenantID,
    ["Data SourceID"] = HostID,
    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.

FieldKindValues
instanceIdeq
  • 27000 transforms: cased

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.

FieldSource
Data SourceIDproject
DataSourceproject
Dateproject
EventIdproject
MessageDetailsproject
Replica Nameproject
Severityproject
Tenant IDproject