aiwg
Version:
Deployment tool and support utility for AI context. Copies agents, skills, commands, rules, and behaviors into the paths each AI platform reads (Claude Code, Codex, Copilot, Cursor, Warp, OpenClaw, and 6 more) so one source of truth works across 10 platfo
89 lines (88 loc) • 3.12 kB
YAML
title: AWS API Calls from Unusual Geographic Region
id: 6b3c5d7e-2f4a-6b8c-1d3e-5f6a7b8c9d0e
status: stable
description: Detects AWS API calls originating from regions that are unusual for the
account's normal operating pattern. Calls from unexpected regions may indicate use
of compromised credentials from a different geographic location than the legitimate
user, or an attacker using a VPN or proxy endpoint in an unexpected region.
references:
- https://attack.mitre.org/techniques/T1078/
- https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-log-file-examples.html
author: forensics-complete
date: 2025-11-14
modified: 2025-11-14
tags:
- attack.initial_access
- attack.t1078
- attack.credential_access
- attack.t1078.004
logsource:
product: aws
service: cloudtrail
detection:
selection:
eventSource: '*'
# Regions that are commonly associated with attacker infrastructure or
# are unlikely to be used by legitimate users in most organizations.
# Adjust this list based on the organization's actual operating regions.
awsRegion:
- 'ap-east-1'
- 'af-south-1'
- 'me-south-1'
- 'eu-south-1'
filter_expected_services:
# Exclude automated/service-to-service calls that legitimately span regions
userIdentity.type: 'AWSService'
filter_replication:
# Exclude replication-related events
eventName:
- 'ReplicateObject'
- 'ReplicateDelete'
- 'ReplicateTags'
condition: selection and not filter_expected_services and not filter_replication
falsepositives:
- Legitimate users traveling or working from an unexpected region
- New business expansion into a region not previously used
- Global services that automatically use nearest region
- VPN or corporate proxy endpoints in unexpected regions
level: medium
fields:
- eventTime
- awsRegion
- userIdentity.arn
- userIdentity.type
- eventName
- eventSource
- sourceIPAddress
- userAgent
# Tuning Instructions
#
# This rule REQUIRES tuning before deployment. The awsRegion list in the
# detection section must be adjusted to match the organization's baseline:
#
# Step 1: Determine normal operating regions
# SELECT awsregion, count(*) as event_count
# FROM cloudtrail_logs
# WHERE eventtime > date_add('day', -90, now())
# GROUP BY awsregion
# ORDER BY event_count DESC;
#
# Step 2: Define the allowlist of expected regions based on Step 1 results
#
# Step 3: Update the awsRegion list to include only regions NOT in the allowlist
#
# Step 4: Add baseline exceptions for services that legitimately use global regions
#
# Detection Logic Note (Athena):
#
# SELECT eventtime, awsregion, useridentity.arn, eventname, sourceipaddress
# FROM cloudtrail_logs
# WHERE awsregion NOT IN ('us-east-1', 'us-west-2', 'eu-west-1') -- your normal regions
# AND useridentity.type != 'AWSService'
# AND eventtime > '2025-11-01'
# ORDER BY eventtime;
#
# Enrich source IP with geolocation to confirm the geographic anomaly:
#
# curl -s "https://ipinfo.io/<sourceIPAddress>/json" | jq '{ip,city,country,org}'