Detection rules › Kusto

Jira - User's password changed multiple times

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

'Detects when user's password was changed multiple times from different IP addresses.'

MITRE ATT&CK coverage

TacticTechniques
Persistence

Rule body

id: 943176e8-b979-45c0-8ad3-58ba6cfd41f0
name: Jira - User's password changed multiple times
description: |
  'Detects when user's password was changed multiple times from different IP addresses.'
severity: High
status: Available
requiredDataConnectors:
  - connectorId: JiraAuditAPI
    dataTypes:
      - JiraAudit
queryFrequency: 1h
queryPeriod: 1h
triggerOperator: gt
triggerThreshold: 0
tactics:
  - Persistence
relevantTechniques:
  - T1078
query: |
  JiraAudit
  | where EventMessage =~ "User's password changed"
  | extend user = todynamic(AssociatedItems)[0]['name']
  | summarize ip_list = makeset(SrcIpAddr) by tostring(user), bin(TimeGenerated, 30m)
  | where array_length(ip_list) > 1
  | extend AccountCustomEntity = user, IPCustomEntity = ip_list
entityMappings:
  - entityType: Account
    fieldMappings:
      - identifier: Name
        columnName: AccountCustomEntity
  - entityType: IP
    fieldMappings:
      - identifier: Address
        columnName: IPCustomEntity
version: 1.0.1
kind: Scheduled

Stages and Predicates

Stage 1: source

JiraAudit

Stage 2: where

| where EventMessage =~ "User's password changed"

Stage 3: extend

| extend user = todynamic(AssociatedItems)[0]['name']

Stage 4: summarize

| summarize ip_list = makeset(SrcIpAddr) by tostring(user), bin(TimeGenerated, 30m)

Stage 5: where

| where array_length(ip_list) > 1

Stage 6: extend

| extend AccountCustomEntity = user, IPCustomEntity = ip_list

Indicators

These rows show field, operator, and value matches.

Output fields

These fields are emitted when the rule matches.

FieldSource
ip_listsummarize
AccountCustomEntityextend
IPCustomEntityextend