Detection rules › Kusto

1Password - Manual account creation

Severity
medium
Time window
5m
Source
github.com/Azure/Azure-Sentinel

This will alert when a new account was created manually within 1Password. This should only be used when a 1Password integration via a SCIM Bridge has been implemented. Ref: https://support.1password.com/scim/ Ref: https://1password.com/ Ref: https://github.com/securehats/

MITRE ATT&CK coverage

TacticTechniques
Persistence

Telemetry coverage

Rule body

id: 9a264487-bcb8-4c7f-a461-b289a46377b8
name: 1Password - Manual account creation
version: 1.0.0
kind: Scheduled
description: |-
  This will alert when a new account was created manually within 1Password. This should only be used when a 1Password integration via a SCIM Bridge has been implemented.

  Ref: https://support.1password.com/scim/
  Ref: https://1password.com/
  Ref: https://github.com/securehats/
severity: Medium
requiredDataConnectors:
  - connectorId: 1Password
    dataTypes:
      - OnePasswordEventLogs_CL
queryFrequency: 5m
queryPeriod: 5m
triggerOperator: gt
triggerThreshold: 0
tactics:
- Persistence
relevantTechniques:
- T1136
query: |-
  OnePasswordEventLogs_CL
  | where action == "create"
  | where object_type == "invite"
  | where actor_details.email !endswith "@1passwordserviceaccounts.com"
  | extend
      ActorUsername = actor_details.email
      , SrcIpAddr = session.ip
      , TargetUsername = aux_info
suppressionEnabled: false
incidentConfiguration:
  createIncident: true
  groupingConfiguration:
    enabled: true
    reopenClosedIncident: false
    lookbackDuration: 1h
    matchingMethod: AnyAlert
suppressionDuration: 1h
eventGroupingSettings:
  aggregationKind: SingleAlert
entityMappings:
- entityType: Account
  fieldMappings:
  - identifier: FullName
    columnName: ActorUsername
- entityType: IP
  fieldMappings:
  - identifier: Address
    columnName: SrcIpAddr
- entityType: Account
  fieldMappings:
  - identifier: FullName
    columnName: TargetUsername

Stages and Predicates

Stage 1: source

OnePasswordEventLogs_CL

Stage 2: where

| where action == "create"

Stage 3: where

| where object_type == "invite"

Stage 4: where

| where actor_details.email !endswith "@1passwordserviceaccounts.com"

Stage 5: extend

| extend
    ActorUsername = actor_details.email
    , SrcIpAddr = session.ip
    , TargetUsername = aux_info

Exclusions

The rule actively suppresses these predicates.

FieldKindExcluded valuesSearch
emailends_with@1passwordserviceaccounts.comexcludes:email field:"email" value:"@1passwordserviceaccounts.com"

Indicators

These rows show field, operator, and value matches.

Output fields

These fields are emitted when the rule matches.

FieldSource
ActorUsernameextend
SrcIpAddrextend
TargetUsernameextend