Detection rules › Kusto

Jira - New site admin user

Status
available
Severity
high
Time window
14d
Source
github.com/Azure/Azure-Sentinel

'Detects new site admin user.'

MITRE ATT&CK coverage

TacticTechniques
Initial Access

Rule body

id: 6bf42891-b54d-4b4e-8533-babc5b3ea4c5
name: Jira - New site admin user
description: |
  'Detects new site admin user.'
severity: High
status: Available
requiredDataConnectors:
  - connectorId: JiraAuditAPI
    dataTypes:
      - JiraAudit
queryFrequency: 1h
queryPeriod: 14d
triggerOperator: gt
triggerThreshold: 0
tactics:
  - InitialAccess
relevantTechniques:
  - T1078
query: |
  let priv_users = JiraAudit
  | where TimeGenerated > ago(14d)
  | where EventMessage =~ 'User added to group'
  | where ObjectItemName =~ 'site-admins'
  | extend user = todynamic(AssociatedItems)[0]['name']
  | summarize makeset(user);
  JiraAudit
  | where EventMessage =~ "User's password changed"
  | extend user = todynamic(AssociatedItems)[0]['name']
  | where user in (priv_users)
  | extend AccountCustomEntity = user
entityMappings:
  - entityType: Account
    fieldMappings:
      - identifier: Name
        columnName: AccountCustomEntity
version: 1.0.1
kind: Scheduled

Stages and Predicates

Let binding: priv_users used in Stage 4

let priv_users = JiraAudit
| where TimeGenerated > ago(14d)
| where EventMessage =~ 'User added to group'
| where ObjectItemName =~ 'site-admins'
| extend user = todynamic(AssociatedItems)[0]['name']
| summarize makeset(user);

Stage 1: source

JiraAudit

Stage 2: where

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

Stage 3: extend

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

Stage 4: where

| where user in (priv_users)

Stage 5: extend

| extend AccountCustomEntity = user

Indicators

These rows show field, operator, and value matches.

Output fields

These fields are emitted when the rule matches.

FieldSource
userextend
AccountCustomEntityextend