Entra session country shift

Severity highCloud & SaaSThresholdexperimentalcloud.identity.entra_session_country_shift · v1.0.0

One session appearing from two countries inside an hour.

What it detects

One session appearing from two countries inside an hour.

This is impossible travel measured against the SESSION rather than against a new sign-in, which is the gap it exists to close. Conditional Access and Identity Protection evaluate at authentication time; a session that is already open is not re-evaluated, so a stolen token used from another country produces no risky sign-in, no MFA prompt and no policy hit — the activity simply continues, and the only trace is that the same session id is now reporting a different location.

Country rather than city because the coarse unit is the one that survives geolocation error. Two cities in one country is a database artifact; two countries in an hour is a person who did not move.

MITRE ATT&CK mapping

  • T1539Steal Web Session Cookie· Credential Access
  • T1078.004Valid Accounts: Cloud Accounts· Initial Access

False positives and triage

Corporate VPNs and cloud egress are the dominant false positive: a user whose traffic exits through a gateway in another country produces exactly this pattern, and so does a roaming user near a border whose carrier geolocates inconsistently. Check whether the second country's address belongs to a known VPN or hosting provider before treating the pair as travel — an egress range is a configuration fact and should be allowlisted once.

Geolocation of mobile carrier ranges is also unreliable at country granularity in a few regions. Two countries that are geographic neighbours deserve more scepticism than two continents apart. Read this rule with the device and user-agent evidence open: a country change ALONE is weak, while a country change that arrives with a new device id or a scripted client is the same finding twice and should be escalated.

The rule

Declarative YAML read by the detection engine — data, never executed. Confidence 60%. Source: rules/cloud/entra_session_country_shift.yaml, licensed under the Apache License 2.0.

id: cloud.identity.entra_session_country_shift
version: 1.0.0
status: experimental
severity: high
confidence: 0.6
platforms: [application]
mitre_techniques: [T1539, T1078.004]
description: |
  One session appearing from two countries inside an hour.

  This is impossible travel measured against the SESSION rather than against a new
  sign-in, which is the gap it exists to close. Conditional Access and Identity
  Protection evaluate at authentication time; a session that is already open is not
  re-evaluated, so a stolen token used from another country produces no risky
  sign-in, no MFA prompt and no policy hit — the activity simply continues, and the
  only trace is that the same session id is now reporting a different location.

  Country rather than city because the coarse unit is the one that survives
  geolocation error. Two cities in one country is a database artifact; two
  countries in an hour is a person who did not move.
match:
  event_category: authentication
threshold:
  count: 2
  # An hour is short enough that no commercial flight closes the distance, so the
  # window itself carries the "impossible" part of impossible travel.
  window_seconds: 3600
  distinct: ext:country
  group_by: [session_id, user_name]
correlation_keys: [user_name, session_id, source_ip]
false_positive_guidance: |
  Corporate VPNs and cloud egress are the dominant false positive: a user whose
  traffic exits through a gateway in another country produces exactly this pattern,
  and so does a roaming user near a border whose carrier geolocates inconsistently.
  Check whether the second country's address belongs to a known VPN or hosting
  provider before treating the pair as travel — an egress range is a configuration
  fact and should be allowlisted once.

  Geolocation of mobile carrier ranges is also unreliable at country granularity in
  a few regions. Two countries that are geographic neighbours deserve more
  scepticism than two continents apart. Read this rule with the device and
  user-agent evidence open: a country change ALONE is weak, while a country change
  that arrives with a new device id or a scripted client is the same finding twice
  and should be escalated.

Related detections

Run this rule on your own logs — offline

KIROSEC runs this rule and the rest of the library over Windows, Linux, macOS and cloud audit logs on the analyst's own machine. Every alert links to the events that raised it, and nothing leaves the device.

Browse all detections