Detection rules › Sigma

IAM Access Key Created

Status
test
Severity
medium
Log source
product aws, service cloudtrail
Author
nishikawaakira (@nishikawaakira)
Source
github.com/Yamato-Security/suzaku-rules

Detects when an IAM access key is created via CreateAccessKey. Attackers create access keys for persistence after compromising an account, often targeting an existing user or a newly created backdoor user. Note: This is different from CreateApiKey (AppSync/API Gateway).

MITRE ATT&CK coverage

Event coverage

Rules detecting the same action

Other rules on this platform that filter on the same API call or operation.

Rule body yaml

title: IAM Access Key Created
id: 2c4d6e8f-0a1b-3c5d-7e9f-1a2b3c4d5e6f
status: test
description: |
    Detects when an IAM access key is created via CreateAccessKey.
    Attackers create access keys for persistence after compromising an account,
    often targeting an existing user or a newly created backdoor user.
    Note: This is different from CreateApiKey (AppSync/API Gateway).
references:
    - https://attack.mitre.org/techniques/T1098/001/
    - https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateAccessKey.html
author: nishikawaakira (@nishikawaakira)
date: 2026-05-03
modified: 2026-05-29
tags:
    - attack.persistence
    - attack.t1098.001
logsource:
    product: aws
    service: cloudtrail
detection:
    selection:
        eventSource: iam.amazonaws.com
        eventName: CreateAccessKey
    filter:
        errorCode|exists: true
    condition: selection and not filter
falsepositives:
    - Legitimate key rotation by administrators or automation
level: medium

Stages and Predicates

Stage 0: condition

selection and not filter

Stage 1: selection

selection:
    eventSource: iam.amazonaws.com
    eventName: CreateAccessKey

Stage 2: not filter

filter:
    errorCode|exists: true

Exclusions

Top-level NOT(...) conjuncts: predicates this rule actively suppresses.

FieldKindExcluded values
errorCodeis_not_null(no value, null check)

Indicators

Each row is a field, operator, and value that the rule matches. The corpus column counts how many other rules in the catalog look for the same combination: high numbers point to widely-used, community-vetted indicators. Blank or 1 shows that the indicator is specific to this rule.

FieldKindValues
eventNameeq
  • CreateAccessKey
eventSourceeq
  • iam.amazonaws.com