AWS Privilege Escalation Via User Compromise


Query

Detection:
    - Group:
        - ID: User Backdoored
          RuleID: AWS.IAM.Backdoor.User.Keys
        - ID: User Accessed
          RuleID: AWS.CloudTrail.UserAccessKeyAuth
      MatchCriteria:
        field_name:
          - GroupID: User Backdoored
            Match: p_alert_context.ip_accessKeyId
          - GroupID: User Accessed
            Match: p_alert_context.ip_accessKeyId
      Schedule:
        RateMinutes: 1440
        TimeoutMinutes: 10
      LookbackWindowMinutes: 1800

Rule dependencies

Higher-order rule. It fires on other rules' alerts, not on raw events, so it cannot fire on its own. Deploy the rules it depends on too.

Depends on

Raw source AWS Privilege Escalation Via User Compromise · Panther Python
Esc
Published by panther-labs/panther-analysis ↗, licensed under Apache 2.0 ↗. Reproduced here unmodified.
AnalysisType: correlation_rule
RuleID: "AWS.Privilege.Escalation.Via.User.Compromise.Group"
DisplayName: "AWS Privilege Escalation Via User Compromise"
Enabled: false
Severity: Medium
Reports:
  MITRE ATT&CK:
    - TA0004:T1098.001 # Additional Cloud Credentials
Detection:
    - Group:
        - ID: User Backdoored
          RuleID: AWS.IAM.Backdoor.User.Keys
        - ID: User Accessed
          RuleID: AWS.CloudTrail.UserAccessKeyAuth
      MatchCriteria:
        field_name:
          - GroupID: User Backdoored
            Match: p_alert_context.ip_accessKeyId
          - GroupID: User Accessed
            Match: p_alert_context.ip_accessKeyId
      Schedule:
        RateMinutes: 1440
        TimeoutMinutes: 10
      LookbackWindowMinutes: 1800
Tests:
    - Name: Access Key Created and Used from Same IP
      ExpectedResult: true
      RuleOutputs:
        - ID: User Backdoored
          Matches:
            p_alert_context.ip_accessKeyId:
              1.1.1.1-FAKE_ACCESS_KEY_ID: [0]
        - ID: User Accessed
          Matches:
            p_alert_context.ip_accessKeyId:
              1.1.1.1-FAKE_ACCESS_KEY_ID: [30]
    - Name: Access Key Created and Used from Different IPs
      ExpectedResult: false
      RuleOutputs:
        - ID: User Backdoored
          Matches:
            p_alert_context.ip_accessKeyId:
              1.1.1.1-FAKE_ACCESS_KEY_ID: [0]
        - ID: User Accessed
          Matches:
            p_alert_context.ip_accessKeyId:
              2.2.2.2-FAKE_ACCESS_KEY_ID: [30]
    - Name: Single IP Creates Access Key, Uses Different Key
      ExpectedResult: false
      RuleOutputs:
        - ID: User Backdoored
          Matches:
            p_alert_context.ip_accessKeyId:
              1.1.1.1-FAKE_ACCESS_KEY_ID: [0]
        - ID: User Accessed
          Matches:
            p_alert_context.ip_accessKeyId:
              1.1.1.1-OTHER_ACCESS_KEY_ID: [30]
    - Name: Access Key Created But Not Used
      ExpectedResult: false
      RuleOutputs:
        - ID: User Backdoored
          Matches:
            p_alert_context.ip_accessKeyId:
              1.1.1.1-FAKE_ACCESS_KEY_ID: [0]
    - Name: Access Key Used But Not Created
      ExpectedResult: false
      RuleOutputs:
        - ID: User Accessed
          Matches:
            p_alert_context.ip_accessKeyId:
              1.1.1.1-FAKE_ACCESS_KEY_ID: [30]

Detection rules belong to the projects that publish them and remain under their own licenses. This site indexes and links to them; it claims no rights in them.