1Password - Secret extraction post vault access change by administrator
| Id | 6711b747-16d7-4df4-9f61-8633617f45d7 |
| Rulename | 1Password - Secret extraction post vault access change by administrator |
| Description | This will alert when a secret extraction has occurred after an administrator has changed their own vault access permissions within that same vault. Ref: https://1password.com/ Ref: https://github.com/securehats/ |
| Severity | High |
| Tactics | CredentialAccess |
| Techniques | T1555 |
| Required data connectors | 1Password |
| Kind | Scheduled |
| Query frequency | 5m |
| Query period | 1h |
| Trigger threshold | 0 |
| Trigger operator | gt |
| Source Uri | https://github.com/Azure/Azure-Sentinel/blob/master/Solutions/1Password/Analytics Rules/1Password - Secret Extraction Post Vault Access Change By Administrator.yaml |
| Version | 1.0.0 |
| Arm template | 6711b747-16d7-4df4-9f61-8633617f45d7.json |
let lookback = 1h;
let secretExtractionActivity =
OnePasswordEventLogs_CL
| where TimeGenerated between (ago(lookback) .. now())
| where log_source == "itemusages"
| where action has_any("server-fetch", "reveal", "secure-copy")
;
OnePasswordEventLogs_CL
| where log_source == "auditevents"
| where (action == "grant" and object_type == "uva") or (action == "update" and object_type == "uva")
| where tostring(actor_details.uuid) == tostring(aux_details.uuid)
| extend
userUuid = tostring(actor_details.uuid)
, vaultUuid = tostring(object_uuid)
| join (
secretExtractionActivity
| extend
userUuid = tostring(user.uuid)
, vaultUuid = tostring(vault_uuid)
)
on $left.userUuid == $right.userUuid and $left.vaultUuid == $right.vaultUuid
| extend
auditevents = bag_pack("action", action, "object_type", object_type)
, itemusages = bag_pack("action", action1, "object_type", object_type1)
, vault_details = bag_pack("vault_uuid", vault_uuid1, "item_uuid", item_uuid1)
| project
TimeGenerated
, actor_details
, target_details = aux_details
, location_details = location
, client_details = client1
, auditevents
, itemusages
, vault_details
, TargetUsername = tostring(user1.email)
, SrcIpAddr = tostring(client1.ip_address)
queryFrequency: 5m
requiredDataConnectors:
- connectorId: 1Password
dataTypes:
- OnePasswordEventLogs_CL
OriginalUri: https://github.com/Azure/Azure-Sentinel/blob/master/Solutions/1Password/Analytics Rules/1Password - Secret Extraction Post Vault Access Change By Administrator.yaml
suppressionDuration: 1h
name: 1Password - Secret extraction post vault access change by administrator
description: |-
This will alert when a secret extraction has occurred after an administrator has changed their own vault access permissions within that same vault.
Ref: https://1password.com/
Ref: https://github.com/securehats/
severity: High
suppressionEnabled: false
kind: Scheduled
incidentConfiguration:
createIncident: true
groupingConfiguration:
lookbackDuration: 1h
matchingMethod: AllEntities
reopenClosedIncident: false
enabled: true
triggerThreshold: 0
version: 1.0.0
eventGroupingSettings:
aggregationKind: SingleAlert
relevantTechniques:
- T1555
id: 6711b747-16d7-4df4-9f61-8633617f45d7
triggerOperator: gt
queryPeriod: 1h
tactics:
- CredentialAccess
query: |-
let lookback = 1h;
let secretExtractionActivity =
OnePasswordEventLogs_CL
| where TimeGenerated between (ago(lookback) .. now())
| where log_source == "itemusages"
| where action has_any("server-fetch", "reveal", "secure-copy")
;
OnePasswordEventLogs_CL
| where log_source == "auditevents"
| where (action == "grant" and object_type == "uva") or (action == "update" and object_type == "uva")
| where tostring(actor_details.uuid) == tostring(aux_details.uuid)
| extend
userUuid = tostring(actor_details.uuid)
, vaultUuid = tostring(object_uuid)
| join (
secretExtractionActivity
| extend
userUuid = tostring(user.uuid)
, vaultUuid = tostring(vault_uuid)
)
on $left.userUuid == $right.userUuid and $left.vaultUuid == $right.vaultUuid
| extend
auditevents = bag_pack("action", action, "object_type", object_type)
, itemusages = bag_pack("action", action1, "object_type", object_type1)
, vault_details = bag_pack("vault_uuid", vault_uuid1, "item_uuid", item_uuid1)
| project
TimeGenerated
, actor_details
, target_details = aux_details
, location_details = location
, client_details = client1
, auditevents
, itemusages
, vault_details
, TargetUsername = tostring(user1.email)
, SrcIpAddr = tostring(client1.ip_address)
entityMappings:
- fieldMappings:
- identifier: FullName
columnName: TargetUsername
entityType: Account
- fieldMappings:
- identifier: Address
columnName: SrcIpAddr
entityType: IP