Detection rules › Sigma

IAM User Created

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

Detects when an IAM user creates a new IAM user via CreateUser. This is a common persistence technique where an attacker with compromised credentials creates a backdoor IAM user for continued access even after the originally compromised credentials are rotated.

MITRE ATT&CK coverage

TacticTechniques
PersistenceT1136.003 Create Account: Cloud Account

Event coverage

ProviderEvent
AWS-iamCreateUser

Rules detecting the same action

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

Rule body yaml

title: IAM User Created
id: 8f3a7b2c-1d4e-5f6a-9b0c-2e3d4f5a6b7c
status: test
description: |
    Detects when an IAM user creates a new IAM user via CreateUser.
    This is a common persistence technique where an attacker with compromised
    credentials creates a backdoor IAM user for continued access even after
    the originally compromised credentials are rotated.
references:
    - https://attack.mitre.org/techniques/T1136/003/
    - https://docs.aws.amazon.com/IAM/latest/APIReference/API_CreateUser.html
    - https://hackingthe.cloud/aws/post_exploitation/create_a_console_session_from_iam_credentials/
author: nishikawaakira (@nishikawaakira)
date: 2026-05-03
modified: 2026-05-29
tags:
    - attack.persistence
    - attack.t1136.003
logsource:
    product: aws
    service: cloudtrail
detection:
    selection:
        eventSource: iam.amazonaws.com
        eventName: CreateUser
    filter:
        errorCode|exists: true
    condition: selection and not filter
falsepositives:
    - Legitimate IAM administrators creating new users
    - Automated provisioning systems (Terraform, CloudFormation, SCIM)
level: high

Stages and Predicates

Stage 0: condition

selection and not filter

Stage 1: selection

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

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
  • CreateUser
eventSourceeq
  • iam.amazonaws.com