Detection rules › Panther

AWS IAM Group Read Only Events

Severity
informational
Group by
userIdentity.arn
Log types
AWS.CloudTrail
Tags
AWS, Cloudtrail, Configuration Required, IAM, MITRE
Reference
https://attack.mitre.org/techniques/T1069/
Source
github.com/panther-labs/panther-analysis

This rule captures multiple read/list events related to IAM group management in AWS Cloudtrail.

MITRE ATT&CK coverage

TacticTechniques
DiscoveryT1069 Permission Groups Discovery

Rules detecting the same action

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

Rule body yaml

AnalysisType: rule
Description: This rule captures multiple read/list events related to IAM group management in AWS Cloudtrail.
DisplayName: "AWS IAM Group Read Only Events"
Enabled: false
Filename: aws_iam_group_read_only_events.py
Reference: https://attack.mitre.org/techniques/T1069/
Runbook: Examine other activities done by this user to determine whether or not activity is suspicious.
Severity: Info
CreateAlert: false
Tags:
  - AWS
  - Cloudtrail
  - Configuration Required
  - IAM
  - MITRE
Tests:
  - ExpectedResult: true
    Log:
      awsRegion: us-east-1
      eventCategory: Management
      eventID: 883efb94-aa58-4512-beb7-10a5fffa33e4
      eventName: GetGroup
      eventSource: iam.amazonaws.com
      eventTime: "2022-12-11 19:42:55"
      eventType: AwsApiCall
      eventVersion: "1.08"
      managementEvent: true
      readOnly: true
      recipientAccountId: "1231231234"
      requestID: f92dd1a7-ad07-4fef-9511-1081d2dd3585
      requestParameters:
        maxItems: 1000
        userName: user-name
      sourceIPAddress: cloudformation.amazonaws.com
      userAgent: cloudformation.amazonaws.com
      userIdentity:
        accessKeyId: ASIAVKVYIOO7BDL4T5NG
        accountId: "1231231234"
        arn: arn:aws:sts::1231231234:assumed-role/AssumedRole-us-east-2/123123123456
        invokedBy: cloudformation.amazonaws.com
        principalId: AROAVKVYIOO7JN7TN7NSA:123123123456
        sessionContext:
          attributes:
            creationDate: "2022-12-11T19:42:54Z"
            mfaAuthenticated: "false"
          sessionIssuer:
            accountId: "1231231234"
            arn: arn:aws:iam::1231231234:role/PAssumedRole-us-east-2
            principalId: AROAVKVYIOO7JN7TN7NSA
            type: Role
            userName: AssumedRole-us-east-2
          webIdFederationData: {}
        type: AssumedRole
    Name: Get Group
  - ExpectedResult: true
    Log:
      awsRegion: us-east-1
      eventCategory: Management
      eventID: 883efb94-aa58-4512-beb7-10a5fffa33e4
      eventName: GetGroupPolicy
      eventSource: iam.amazonaws.com
      eventTime: "2022-12-11 19:42:55"
      eventType: AwsApiCall
      eventVersion: "1.08"
      managementEvent: true
      readOnly: true
      recipientAccountId: "1231231234"
      requestID: f92dd1a7-ad07-4fef-9511-1081d2dd3585
      requestParameters:
        maxItems: 1000
        userName: user-name
      sourceIPAddress: cloudformation.amazonaws.com
      userAgent: cloudformation.amazonaws.com
      userIdentity:
        accessKeyId: ASIAVKVYIOO7BDL4T5NG
        accountId: "1231231234"
        arn: arn:aws:sts::1231231234:assumed-role/AssumedRole-us-east-2/123123123456
        invokedBy: cloudformation.amazonaws.com
        principalId: AROAVKVYIOO7JN7TN7NSA:123123123456
        sessionContext:
          attributes:
            creationDate: "2022-12-11T19:42:54Z"
            mfaAuthenticated: "false"
          sessionIssuer:
            accountId: "1231231234"
            arn: arn:aws:iam::1231231234:role/PAssumedRole-us-east-2
            principalId: AROAVKVYIOO7JN7TN7NSA
            type: Role
            userName: AssumedRole-us-east-2
          webIdFederationData: {}
        type: AssumedRole
    Name: Get Group Policy
  - ExpectedResult: true
    Log:
      awsRegion: us-east-1
      eventCategory: Management
      eventID: 883efb94-aa58-4512-beb7-10a5fffa33e4
      eventName: ListAttachedGroupPolicies
      eventSource: iam.amazonaws.com
      eventTime: "2022-12-11 19:42:55"
      eventType: AwsApiCall
      eventVersion: "1.08"
      managementEvent: true
      readOnly: true
      recipientAccountId: "1231231234"
      requestID: f92dd1a7-ad07-4fef-9511-1081d2dd3585
      requestParameters:
        maxItems: 1000
        userName: user-name
      sourceIPAddress: cloudformation.amazonaws.com
      userAgent: cloudformation.amazonaws.com
      userIdentity:
        accessKeyId: ASIAVKVYIOO7BDL4T5NG
        accountId: "1231231234"
        arn: arn:aws:sts::1231231234:assumed-role/AssumedRole-us-east-2/123123123456
        invokedBy: cloudformation.amazonaws.com
        principalId: AROAVKVYIOO7JN7TN7NSA:123123123456
        sessionContext:
          attributes:
            creationDate: "2022-12-11T19:42:54Z"
            mfaAuthenticated: "false"
          sessionIssuer:
            accountId: "1231231234"
            arn: arn:aws:iam::1231231234:role/PAssumedRole-us-east-2
            principalId: AROAVKVYIOO7JN7TN7NSA
            type: Role
            userName: AssumedRole-us-east-2
          webIdFederationData: {}
        type: AssumedRole
    Name: List Attached Group Policies
  - ExpectedResult: true
    Log:
      awsRegion: us-east-1
      eventCategory: Management
      eventID: 883efb94-aa58-4512-beb7-10a5fffa33e4
      eventName: ListGroups
      eventSource: iam.amazonaws.com
      eventTime: "2022-12-11 19:42:55"
      eventType: AwsApiCall
      eventVersion: "1.08"
      managementEvent: true
      readOnly: true
      recipientAccountId: "1231231234"
      requestID: f92dd1a7-ad07-4fef-9511-1081d2dd3585
      requestParameters:
        maxItems: 1000
        userName: user-name
      sourceIPAddress: cloudformation.amazonaws.com
      userAgent: cloudformation.amazonaws.com
      userIdentity:
        accessKeyId: ASIAVKVYIOO7BDL4T5NG
        accountId: "1231231234"
        arn: arn:aws:sts::1231231234:assumed-role/AssumedRole-us-east-2/123123123456
        invokedBy: cloudformation.amazonaws.com
        principalId: AROAVKVYIOO7JN7TN7NSA:123123123456
        sessionContext:
          attributes:
            creationDate: "2022-12-11T19:42:54Z"
            mfaAuthenticated: "false"
          sessionIssuer:
            accountId: "1231231234"
            arn: arn:aws:iam::1231231234:role/PAssumedRole-us-east-2
            principalId: AROAVKVYIOO7JN7TN7NSA
            type: Role
            userName: AssumedRole-us-east-2
          webIdFederationData: {}
        type: AssumedRole
    Name: List Groups
  - ExpectedResult: true
    Log:
      awsRegion: us-east-1
      eventCategory: Management
      eventID: 883efb94-aa58-4512-beb7-10a5fffa33e4
      eventName: ListGroupsForUser
      eventSource: iam.amazonaws.com
      eventTime: "2022-12-11 19:42:55"
      eventType: AwsApiCall
      eventVersion: "1.08"
      managementEvent: true
      readOnly: true
      recipientAccountId: "1231231234"
      requestID: f92dd1a7-ad07-4fef-9511-1081d2dd3585
      requestParameters:
        maxItems: 1000
        userName: user-name
      sourceIPAddress: cloudformation.amazonaws.com
      userAgent: cloudformation.amazonaws.com
      userIdentity:
        accessKeyId: ASIAVKVYIOO7BDL4T5NG
        accountId: "1231231234"
        arn: arn:aws:sts::1231231234:assumed-role/AssumedRole-us-east-2/123123123456
        invokedBy: cloudformation.amazonaws.com
        principalId: AROAVKVYIOO7JN7TN7NSA:123123123456
        sessionContext:
          attributes:
            creationDate: "2022-12-11T19:42:54Z"
            mfaAuthenticated: "false"
          sessionIssuer:
            accountId: "1231231234"
            arn: arn:aws:iam::1231231234:role/PAssumedRole-us-east-2
            principalId: AROAVKVYIOO7JN7TN7NSA
            type: Role
            userName: AssumedRole-us-east-2
          webIdFederationData: {}
        type: AssumedRole
    Name: List Groups for User
  - ExpectedResult: false
    Log:
      awsRegion: us-east-1
      eventCategory: Management
      eventID: 883efb94-aa58-4512-beb7-10a5fffa33e4
      eventName: DetachUserGroup
      eventSource: iam.amazonaws.com
      eventTime: "2022-12-11 19:42:55"
      eventType: AwsApiCall
      eventVersion: "1.08"
      managementEvent: true
      readOnly: true
      recipientAccountId: "1231231234"
      requestID: f92dd1a7-ad07-4fef-9511-1081d2dd3585
      requestParameters:
        maxItems: 1000
        userName: user-name
      sourceIPAddress: cloudformation.amazonaws.com
      userAgent: cloudformation.amazonaws.com
      userIdentity:
        accessKeyId: ASIAVKVYIOO7BDL4T5NG
        accountId: "1231231234"
        arn: arn:aws:sts::1231231234:assumed-role/AssumedRole-us-east-2/123123123456
        invokedBy: cloudformation.amazonaws.com
        principalId: AROAVKVYIOO7JN7TN7NSA:123123123456
        sessionContext:
          attributes:
            creationDate: "2022-12-11T19:42:54Z"
            mfaAuthenticated: "false"
          sessionIssuer:
            accountId: "1231231234"
            arn: arn:aws:iam::1231231234:role/PAssumedRole-us-east-2
            principalId: AROAVKVYIOO7JN7TN7NSA
            type: Role
            userName: AssumedRole-us-east-2
          webIdFederationData: {}
        type: AssumedRole
    Name: Detach User Group
DedupPeriodMinutes: 60
LogTypes:
  - AWS.CloudTrail
RuleID: "AWS.IAM.Group.Read.Only.Events"
Threshold: 2

Detection logic

Condition

userIdentity.arn not in
eventSource eq "iam.amazonaws.com"
eventName in ["GetGroup", "GetGroupPolicy", "ListAttachedGroupPolicies", "ListGroupPolicies", "ListGroups", "ListGroupsForUser"]

Exclusions

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

FieldKindExcluded values
userIdentity.arnin(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
eventNamein
  • GetGroup
  • GetGroupPolicy
  • ListAttachedGroupPolicies
  • ListGroupPolicies
  • ListGroups
  • ListGroupsForUser
eventSourceeq
  • iam.amazonaws.com

Output fields

Fields the rule emits when it matches. Chronicle authors list these in the outcome block; they appear on the detection and $risk_score drives alerting. Sentinel / Defender XDR rules build them up through project / summarize / extend stages. Sentinel maps these into alert fields via entityMappings and customDetails; Defender XDR custom detections surface them as alert fields directly.

FieldSource
eventName
eventSource
awsRegion
recipientAccountId
sourceIPAddress
userAgent
userIdentity
arnuserIdentity.arn