Detection rules › Panther
AWS CloudTrail SES List Identities
Rule body yaml
AnalysisType: rule
Filename: aws_cloudtrail_ses_list_identities.py
RuleID: "AWS.CloudTrail.SES.ListIdentities"
DisplayName: AWS CloudTrail SES List Identities
Enabled: true
LogTypes:
- AWS.CloudTrail
Severity: Info
CreateAlert: false
Reference: >
https://stratus-red-team.cloud/attack-techniques/AWS/aws.discovery.ses-enumerate/
Tags:
- AWS CloudTrail
- SES
Tests:
- Name: ListIdentities Event
ExpectedResult: true
Log:
{
"p_event_time": "2025-01-20 16:52:14.000000000",
"p_log_type": "AWS.CloudTrail",
"p_parse_time": "2025-01-20 17:00:54.217385551",
"additionalEventData": {
"SignatureVersion": "4"
},
"awsRegion": "us-west-2",
"eventCategory": "Management",
"eventID": "7c41bbec-52c5-49cb-80aa-88f295d490fd",
"eventName": "ListIdentities",
"eventSource": "ses.amazonaws.com",
"eventTime": "2025-01-20 16:52:14.000000000",
"eventType": "AwsApiCall",
"eventVersion": "1.08",
"managementEvent": true,
"readOnly": true,
"recipientAccountId": "111122223333",
"requestID": "7bdf32e1-6e53-4752-b745-2cb37788a23c",
"sourceIPAddress": "1.2.3.4",
"tlsDetails": {
"cipherSuite": "TLS_AES_128_GCM_SHA256",
"clientProvidedHostHeader": "email.us-west-2.amazonaws.com",
"tlsVersion": "TLSv1.3"
},
"userAgent": "example-user-agent",
"userIdentity": {
"accessKeyId": "SAMPLE_ACCESS_KEY",
"accountId": "111122223333",
"arn": "arn:aws:sts::111122223333:assumed-role/SampleRole/bobson.dugnutt",
"principalId": "SAMPLE_PRINCIPAL_ID:bobson.dugnutt",
"sessionContext": {
"attributes": {
"creationDate": "2025-01-20T15:58:59Z",
"mfaAuthenticated": "false"
},
"sessionIssuer": {
"accountId": "111122223333",
"arn": "arn:aws:iam::111122223333:role/aws-reserved/sso.amazonaws.com/us-west-2/SampleRole",
"principalId": "SAMPLE_PRINCIPAL_ID",
"type": "Role",
"userName": "SampleRole"
}
},
"type": "AssumedRole"
}
}
Detection logic
Condition
eventName eq "ListIdentities"
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.
| Field | Kind | Values |
|---|---|---|
eventName | eq |
|
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.
| Field |
|---|
eventName |
eventSource |
awsRegion |
recipientAccountId |
sourceIPAddress |
userAgent |
userIdentity |