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 Access

Rule body

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

These rows show field, operator, and value matches.

Output fields

These fields are emitted when the rule matches.

FieldSource
TimeDiffextend