Detection rules › Kusto

VirtualNetworkPeerings Alerts From Prancer

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

'High severity virtual network peerings alerts found by Prancer.'

MITRE ATT&CK coverage

TacticTechniques
Reconnaissance

Rule body

id: 6bd031cf-78d0-4edd-8191-60f84b6eef7a
name: VirtualNetworkPeerings Alerts From Prancer
description: |
  'High severity virtual network peerings alerts found by Prancer.'
severity: High
requiredDataConnectors:
- connectorId: PrancerLogData
  dataTypes:
    - prancer_CL
queryFrequency: 5h
queryPeriod: 5h
triggerOperator: gt
triggerThreshold: 0
eventGroupingSettings:
  aggregationKind: SingleAlert
status: Available
tactics:
  - Reconnaissance
relevantTechniques:
  - T1595
query: |
  union prancer_CL
  | where deviceProduct_s == 'azure'
  | where parse_json(data_data_snapshots_s)[0].type == 'Microsoft.Network/virtualNetworks/virtualNetworkPeerings'
  | where data_data_severity_s == 'High' and data_data_result_s == 'failed'
  | extend snapshot = parse_json(data_data_snapshots_s)
  | mv-expand snapshot 
  | extend
      id = tostring(snapshot.id),
      structure = tostring(snapshot.structure),
      reference = tostring(snapshot.reference),
      source = tostring(snapshot.source),
      collection = tostring(snapshot.collection),
      type = tostring(snapshot.type),
      region = tostring(snapshot.region),
      resourceTypes = tostring(snapshot.resourceTypes),
      path = tostring(snapshot.path)
customDetails:
entityMappings:
  - entityType: AzureResource
    fieldMappings:
      - identifier: ResourceId
        columnName: path
alertDetailsOverride:
  alertDisplayNameFormat: "{{data_data_message_s}}"  
  alertDescriptionFormat: "{{data_data_description_s}}"
  alertSeverityColumnName: "{{data_data_severity_s}}"
  alertDynamicProperties:
    - alertProperty: RemediationSteps
      value: data_data_remediation_description_s
version: 1.0.2
kind: Scheduled


Stages and Predicates

Stage 1: union

union prancer_CL

Stage 2: source

prancer_CL

Stage 3: where

| where deviceProduct_s == 'azure'

Stage 4: where

| where parse_json(data_data_snapshots_s)[0].type == 'Microsoft.Network/virtualNetworks/virtualNetworkPeerings'

Stage 5: where

| where data_data_severity_s == 'High' and data_data_result_s == 'failed'

Stage 6: extend

| extend snapshot = parse_json(data_data_snapshots_s)

Stage 7: mv-expand

| mv-expand snapshot

Stage 8: extend

| extend
    id = tostring(snapshot.id),
    structure = tostring(snapshot.structure),
    reference = tostring(snapshot.reference),
    source = tostring(snapshot.source),
    collection = tostring(snapshot.collection),
    type = tostring(snapshot.type),
    region = tostring(snapshot.region),
    resourceTypes = tostring(snapshot.resourceTypes),
    path = tostring(snapshot.path)

Indicators

These rows show field, operator, and value matches.

Output fields

These fields are emitted when the rule matches.

FieldSource
snapshotextend
collectionextend
idextend
pathextend
referenceextend
regionextend
resourceTypesextend
sourceextend
structureextend
typeextend