Detection rules › Sigma

GCP Access Policy Deleted

Status
test
Severity
medium
Log source
product gcp, service gcp.audit
Author
Bryan Lim
Source
github.com/SigmaHQ/sigma

Detects when an access policy that is applied to a GCP cloud resource is deleted. An adversary would be able to remove access policies to gain access to a GCP cloud resource.

Known false positives

  • Legitimate administrative activities

MITRE ATT&CK coverage

TacticTechniques
Persistence
Privilege Escalation

Telemetry coverage

Rule body

title: GCP Access Policy Deleted
id: 32438676-1dba-4ac7-bf69-b86cba995e05
status: test
description: |
    Detects when an access policy that is applied to a GCP cloud resource is deleted.
    An adversary would be able to remove access policies to gain access to a GCP cloud resource.
references:
    - https://cloud.google.com/access-context-manager/docs/audit-logging
    - https://cloud.google.com/logging/docs/audit/understanding-audit-logs
    - https://cloud.google.com/logging/docs/reference/audit/auditlog/rest/Shared.Types/AuditLog
author: Bryan Lim
date: 2024-01-12
tags:
    - attack.persistence
    - attack.privilege-escalation
    - attack.t1098
logsource:
    product: gcp
    service: gcp.audit
detection:
    selection:
        data.protoPayload.authorizationInfo.permission:
            - 'accesscontextmanager.accessPolicies.delete'
            - 'accesscontextmanager.accessPolicies.accessLevels.delete'
            - 'accesscontextmanager.accessPolicies.accessZones.delete'
            - 'accesscontextmanager.accessPolicies.authorizedOrgsDescs.delete'
        data.protoPayload.authorizationInfo.granted: 'true'
        data.protoPayload.serviceName: 'accesscontextmanager.googleapis.com'
    condition: selection
falsepositives:
    - Legitimate administrative activities
level: medium

Stages and Predicates

Stage 0: condition

selection

Stage 1: selection

selection:
    data.protoPayload.authorizationInfo.permission:
        - 'accesscontextmanager.accessPolicies.delete'
        - 'accesscontextmanager.accessPolicies.accessLevels.delete'
        - 'accesscontextmanager.accessPolicies.accessZones.delete'
        - 'accesscontextmanager.accessPolicies.authorizedOrgsDescs.delete'
    data.protoPayload.authorizationInfo.granted: 'true'
    data.protoPayload.serviceName: 'accesscontextmanager.googleapis.com'

Indicators

These rows show field, operator, and value matches.

FieldKindValuesSearch
data.protoPayload.authorizationInfo.grantedeq
  • true
field:"gcp::authorization_granted" kind:eq value:"true"
data.protoPayload.authorizationInfo.permissioneq
  • accesscontextmanager.accessPolicies.accessLevels.delete
  • accesscontextmanager.accessPolicies.accessZones.delete
  • accesscontextmanager.accessPolicies.authorizedOrgsDescs.delete
  • accesscontextmanager.accessPolicies.delete
field:"gcp::authorization_permission" kind:eq
data.protoPayload.serviceNameeq
  • accesscontextmanager.googleapis.com
field:"gcp::service_name" kind:eq value:"accesscontextmanager.googleapis.com"