Detection rules › Kusto

1Password - Vault export prior to account suspension or deletion

Severity
medium
Time window
14d
Group by
userUuid
Source
github.com/Azure/Azure-Sentinel

This will alert when a successful vault export has occurred within the last 14 days prior to an account being suspended or deleted from 1Password. Ref: https://1password.com/ Ref: https://github.com/securehats/

MITRE ATT&CK coverage

TacticTechniques
Credential Access

Telemetry coverage

Rule body

id: 51617533-cf51-4415-9020-b15bd47d69d2
name: 1Password - Vault export prior to account suspension or deletion
version: 1.0.0
kind: Scheduled
description: |-
  This will alert when a successful vault export has occurred within the last 14 days prior to an account being suspended or deleted from 1Password.

  Ref: https://1password.com/
  Ref: https://github.com/securehats/
severity: Medium
requiredDataConnectors:
  - connectorId: 1Password
    dataTypes:
      - OnePasswordEventLogs_CL
queryFrequency: 1h
queryPeriod: 14d
triggerOperator: gt
triggerThreshold: 0
tactics:
- CredentialAccess
relevantTechniques:
- T1555
query: |-
  let ruleFrequency = 1h;
  let lookback = 14d;
  let onePasswordVaultExportCheck =
      OnePasswordEventLogs_CL
      | where TimeGenerated between (ago(lookback) .. ago(now() - ago(ruleFrequency)))
      | where action == "export" and object_type == "vault"
  ;
  OnePasswordEventLogs_CL
  | where (action == "suspend" and object_type == "user") or (action == "delete" and object_type == "user")
  | extend
      userUuid = tostring(object_details.uuid)
      , auditevents = bag_pack("action", action, "object_type", object_type)
  | join (
      onePasswordVaultExportCheck
      | extend userUuid = tostring(actor_details.uuid)
      )
      on $left.userUuid == $right.userUuid
  | extend
      TargetUsername = actor_details1.email
      , SrcIpAddr = session1.ip_address
  | project
      TimeGenerated
      , auditevents
      , actor_details
      , location_details = location
      , session_details = session
      , exported_vault = object_details
      , TargetUsername
      , SrcIpAddr
entityMappings:
- entityType: Account
  fieldMappings:
  - identifier: FullName
    columnName: TargetUsername
- entityType: IP
  fieldMappings:
  - identifier: Address
    columnName: SrcIpAddr
suppressionEnabled: false
incidentConfiguration:
  createIncident: true
  groupingConfiguration:
    enabled: true
    reopenClosedIncident: false
    lookbackDuration: 1h
    matchingMethod: AllEntities
suppressionDuration: 5h
eventGroupingSettings:
  aggregationKind: SingleAlert

Stages and Predicates

Parameters

let ruleFrequency = 1h;
let lookback = 14d;

Let binding: onePasswordVaultExportCheck used in Stage 4

let onePasswordVaultExportCheck = OnePasswordEventLogs_CL
    | where TimeGenerated between (ago(lookback) .. ago(now() - ago(ruleFrequency)))
    | where action == "export" and object_type == "vault";

Stage 1: source

OnePasswordEventLogs_CL

Stage 2: where

| where (action == "suspend" and object_type == "user") or (action == "delete" and object_type == "user")

Stage 3: extend

| extend
    userUuid = tostring(object_details.uuid)
    , auditevents = bag_pack("action", action, "object_type", object_type)

Stage 4: join

| join (
    onePasswordVaultExportCheck
    | extend userUuid = tostring(actor_details.uuid)
    )
    on $left.userUuid == $right.userUuid

Stage 5: extend

| extend
    TargetUsername = actor_details1.email
    , SrcIpAddr = session1.ip_address

Stage 6: project

| project
    TimeGenerated
    , auditevents
    , actor_details
    , location_details = location
    , session_details = session
    , exported_vault = object_details
    , TargetUsername
    , SrcIpAddr

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
actioneq
  • delete
  • export
  • suspend
field:"action" kind:eq
object_typeeq
  • user
  • vault
field:"object_type" kind:eq

Output fields

These fields are emitted when the rule matches.

FieldSource
SrcIpAddrproject
TargetUsernameproject
TimeGeneratedproject
actor_detailsproject
auditeventsproject
exported_vaultproject
location_detailsproject
session_detailsproject