Anthropic User Activity From High Number of Countries

Last updated a day ago on 2026-10-05
Created a day ago on 2026-10-05

About

Detects Anthropic activity for the same user email from at least three countries and two unique user agents within a four-hour interval. This highly unusual activity may indicate leaked session cookies being abused by a remote adversary using a VPN.
Tags
Domain: GenAIDomain: IdentityPlatform: AnthropicData Source: Anthropic Audit LogsUse Case: Identity and Access AuditUse Case: Threat DetectionRule Type: ES|QLTactic: Credential AccessTactic: Initial AccessMitre Atlas: AML.T0012Threat: Impossible TravelLanguage: esql
Severity
critical
Risk Score
99
MITRE ATT&CK™

Credential Access (TA0006)(external, opens in a new tab or window)

Initial Access (TA0001)(external, opens in a new tab or window)

False Positive Examples
Users on VPN or proxy egress that geo-resolves through a region distant from the user's physical location. Mobile clients on cellular networks that peer through regional hubs may geo-resolve differently than the user's location. Cloud egress, split-tunnel, or dual-homed clients that present different public IPs for concurrent Anthropic sessions (for example browser and API tooling) can look like impossible travel when both resolve far apart.
License
Elastic License v2(external, opens in a new tab or window)

Definition

Integration Pack
Prebuilt Security Detection Rules
Related Integrations

anthropic(external, opens in a new tab or window)

Query
text code block:
FROM logs-anthropic.audit-* | where user.email IS NOT NULL and source.ip IS NOT NULL and `user.email` != "unknown@invalid.internal" | IP_LOCATION geo = source.ip with { "properties": ["country_name", "city_name", "location"] } | stats Esql.country_count = COUNT_DISTINCT(geo.country_name), Esql.source_ip_count = COUNT_DISTINCT(source.ip), Esql.user_agent_count = COUNT_DISTINCT(`user_agent`.original), Esql.event_count = count(*), Esql.event_action_values = values(event.action), Esql.source_ip_values = values(source.ip), Esql.source_geo_country_name_values = values(geo.country_name), Esql.source_geo_city_name_values = values(geo.city_name), Esql.user_agent_original_values = values(user_agent.original), Esql.timestamp_first_seen = min(@timestamp), Esql.timestamp_last_seen = max(@timestamp) by user.email | where Esql.country_count >= 3 AND Esql.user_agent_count >= 2 AND (MV_CONTAINS(Esql.event_action_values, "claude_chat_created") or MV_CONTAINS(Esql.event_action_values, "claude_chat_deleted") or MV_CONTAINS(Esql.event_action_values, "claude_user_settings_updated") or MV_CONTAINS(Esql.event_action_values, "claude_file_deleted") or MV_CONTAINS(Esql.event_action_values, "claude_chat_updated")) | Keep user.email, Esql.*

Install detection rules in Elastic Security

Detect Anthropic User Activity From High Number of Countries in the Elastic Security detection engine by installing this rule into your Elastic Stack.

To setup this rule, check out the installation guide for Prebuilt Security Detection Rules(external, opens in a new tab or window).