@@ -3,7 +3,7 @@ bypass_bbr_timing = true
33creation_date = " 2024/08/26"
44integration = [" aws" ]
55maturity = " production"
6- updated_date = " 2025/10/20 "
6+ updated_date = " 2025/12/04 "
77
88[rule ]
99author = [" Elastic" ]
@@ -112,7 +112,7 @@ timestamp_override = "event.ingested"
112112type = " esql"
113113
114114query = '''
115- from logs-aws.cloudtrail-*
115+ from logs-aws.cloudtrail-* metadata _id, _version, _index
116116
117117// filter for DescribeInstances API calls
118118| where event.dataset == "aws.cloudtrail"
@@ -131,20 +131,28 @@ from logs-aws.cloudtrail-*
131131 aws.cloudtrail.user_identity.access_key_id,
132132 aws.cloudtrail.user_identity.type,
133133 user_agent.original,
134+ source.as.organization.name,
134135 source.ip,
135- @timestamp
136+ @timestamp,
137+ data_stream.namespace
136138
137139// count the number of unique regions and total API calls within the 30-second window
138140| stats
139141 Esql.cloud_region_count_distinct = count_distinct(cloud.region),
140- Esql.event_count = count(*)
142+ Esql.event_count = count(*),
143+ Esql.event_timestamp_values = VALUES(@timestamp),
144+ Esql.aws_cloudtrail_user_identity_type_values = VALUES(aws.cloudtrail.user_identity.type),
145+ Esql.aws_cloudtrail_user_identity_access_key_id_values = VALUES(aws.cloudtrail.user_identity.access_key_id),
146+ Esql.source_ip_values = VALUES(source.ip),
147+ Esql.user_agent_original_values = VALUES(user_agent.original),
148+ Esql.source_as_organization_name_values = VALUES(source.as.organization.name),
149+ Esql.cloud_account_id_values = VALUES(cloud.account.id),
150+ Esql.cloud_region_values = VALUES(cloud.region),
151+ Esql.data_stream_namespace_values = VALUES(data_stream.namespace)
141152 by Esql.time_window_date_trunc, aws.cloudtrail.user_identity.arn
142153
143154// filter for resources making DescribeInstances API calls in more than 10 regions within the 30-second window
144155| where Esql.cloud_region_count_distinct >= 10 and Esql.event_count >= 10
145-
146- // sort the results by time window in descending order
147- | sort Esql.time_window_date_trunc desc
148156'''
149157
150158
@@ -163,15 +171,17 @@ reference = "https://attack.mitre.org/tactics/TA0007/"
163171
164172[rule .investigation_fields ]
165173field_names = [
174+ " Esql.cloud_region_count_distinct" ,
175+ " Esql.event_count" ,
176+ " Esql.event_timestamp_values" ,
166177 " aws.cloudtrail.user_identity.arn" ,
167- " target_time_window" ,
168- " region_count" ,
169- " window_count" ,
170- " cloud.account.id" ,
171- " aws.cloudtrail.user_identity.access_key_id" ,
172- " aws.cloudtrail.user_identity.type" ,
173- " user_agent.original" ,
174- " source.ip" ,
175- " @timestamp" ,
178+ " Esql.aws_cloudtrail_user_identity_type_values" ,
179+ " Esql.aws_cloudtrail_user_identity_access_key_id_values" ,
180+ " Esql.source_ip_values" ,
181+ " Esql.user_agent_original_values" ,
182+ " Esql.source_as_organization_name_values" ,
183+ " Esql.cloud_account_id_values" ,
184+ " Esql.cloud_region_values" ,
185+ " Esql.data_stream_namespace_values"
176186]
177187
0 commit comments