Detection rules › Kusto

Versasec CMS - Multiple Failed Login Attempts

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

Detects when Operator login failed to often.

MITRE ATT&CK coverage

TacticTechniques
Credential AccessT1110 Brute Force

Rule body kusto

id: B1DB8B7E-9D74-48C3-9683-74483CBEFF4E
name: Versasec CMS - Multiple Failed Login Attempts
description: |
  Detects when Operator login failed to often.
severity: High
status: Available
requiredDataConnectors:
  - connectorId: VersasecCms
    dataTypes:
      - VersasecCmsSysLogs
queryFrequency: 5m
queryPeriod: 1h
triggerOperator: gt
triggerThreshold: 5
tactics:
  - CredentialAccess
relevantTechniques:
  - T1110 # Brute Force
query: |
  let threshold = 5;
  VersasecCmsSysLogs 
  | where EventId == 2 
  | sort by ComputerName asc, TimeGenerated asc
  | extend TimeDiff = datetime_diff('minute', TimeGenerated, prev(TimeGenerated))
  | where TimeDiff <= threshold and ComputerName == prev(ComputerName)
entityMappings:
  - entityType: Host
    fieldMappings:
      - identifier: FullName
        columnName: ComputerName
eventGroupingSettings:
  aggregationKind: SingleAlert
incidentConfiguration:
  createIncident: true
  groupingConfiguration:
    enabled: false
    reopenClosedIncident: false
    lookbackDuration: 5m
    matchingMethod: AllEntities
version: 1.0.1
kind: Scheduled

Stages and Predicates

Parameters

let threshold = 5;

Stage 1: source

VersasecCmsSysLogs

Stage 2: where

| where EventId == 2

Stage 3: sort

| sort by ComputerName asc, TimeGenerated asc

Stage 4: extend

| extend TimeDiff = datetime_diff('minute', TimeGenerated, prev(TimeGenerated))

Stage 5: where

| where TimeDiff <= threshold and ComputerName == prev(ComputerName)

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
EventIdeq
  • 2 transforms: cased
TimeDiffle
  • 5 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
TimeDiffextend