Detection rules › Kusto

SOCRadar Unsynced Closed Incident

Status
available
Severity
low
Time window
1d
Source
github.com/Azure/Azure-Sentinel

'Detects Microsoft Sentinel incidents tagged as SOCRadar that were closed more than 30 minutes ago but do not have the Synced tag. This may indicate the SOCRadar-Alarm-Sync playbook has failed to update the SOCRadar platform with the closure status.'

MITRE ATT&CK coverage

TacticTechniques
DiscoveryT1526 Cloud Service Discovery

Rule body kusto

id: 6e2f8d4b-5a71-4c9e-b3f6-8a1c9d4e7b2a
name: SOCRadar Unsynced Closed Incident
description: |
  'Detects Microsoft Sentinel incidents tagged as SOCRadar that were closed more than 30 minutes ago but do not have the Synced tag. This may indicate the SOCRadar-Alarm-Sync playbook has failed to update the SOCRadar platform with the closure status.'
severity: Low
status: Available
requiredDataConnectors: []
queryFrequency: 1h
queryPeriod: 1d
triggerOperator: gt
triggerThreshold: 0
tactics:
  - Discovery
relevantTechniques:
  - T1526
query: |
    SecurityIncident
    | where Labels has "SOCRadar"
    | where Status == "Closed"
    | where LastModifiedTime < ago(30m)
    | where not(Labels has "Synced")
    | extend AlarmId = extract(@"#(\d+)", 1, Title)
    | extend AccountName = AlarmId
    | project TimeGenerated, IncidentName, Title, Status, Classification, LastModifiedTime, AlarmId, AccountName
entityMappings:
  - entityType: Account
    fieldMappings:
      - identifier: Name
        columnName: AccountName
version: 1.0.0
kind: Scheduled

Stages and Predicates

Stage 1: source

SecurityIncident

Stage 2: where

| where Labels has "SOCRadar"

Stage 3: where

| where Status == "Closed"

Stage 4: where

| where LastModifiedTime < ago(30m)

Stage 5: where

| where not(Labels has "Synced")

Stage 6: extend

| extend AlarmId = extract(@"#(\d+)", 1, Title)

Stage 7: extend

| extend AccountName = AlarmId

Stage 8: project

| project TimeGenerated, IncidentName, Title, Status, Classification, LastModifiedTime, AlarmId, AccountName

Exclusions

Top-level NOT(...) conjuncts: predicates this rule actively suppresses.

FieldKindExcluded values
LabelsmatchSynced

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
Labelsmatch
  • SOCRadar transforms: term
Statuseq
  • Closed 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
AccountNameproject
AlarmIdproject
Classificationproject
IncidentNameproject
LastModifiedTimeproject
Statusproject
TimeGeneratedproject
Titleproject