Impossible Traveler Response

This playbook handles impossible traveler alerts. An Impossible Traveler event occurs when multiple login attempts seen for a user from multiple remote countries in a short period of time, which shouldn't be possible. This may indicate the account is compromised. **Attacker's Goals:** Gain user-account credentials. **Investigative Actions:** Investigate the IP addresses and identities involved in the detected activity using: * Impossible Traveler - Enrichment playbook * CalculateGeoDistance automation **Response Actions** The playbook's first response actions are based on the data available within the alert. In that phase, the playbook will execute: * Manual block indicators if the IP address found malicious * Manual disable user * Manual clear of the user’s sessions (Okta) When the playbook continues, after validating the activity with the user’s manager, another phase of response actions is being executed, which includes: * Auto block indicators **External Resources:** [Impossible traveler alert](https://docs-cortex.paloaltonetworks.com/r/Cortex-XDR-Analytics-Alert-Reference/Impossible-traveler-SSO)

Core · 26 tasks · 28 inputs · 21 outputs

Details

IDImpossible Traveler Response
From Version6.6.0
Tasks26

README

This playbook handles impossible traveler alerts.

An Impossible Traveler event occurs when multiple login attempts seen for a user from multiple remote countries in a short period of time, which shouldn’t be possible. This may indicate the account is compromised.

Attacker’s Goals:

Gain user-account credentials.

Investigative Actions:

Investigate the IP addresses and identities involved in the detected activity using:

  • Impossible Traveler - Enrichment playbook
  • CalculateGeoDistance automation

Response Actions

The playbook’s first response actions are based on the data available within the alert. In that phase, the playbook will execute:

  • Manual block indicators if the IP address found malicious
  • Manual disable user
  • Manual clear of the user’s sessions (Okta)

When the playbook continues, after validating the activity with the user’s manager, another phase of response actions is being executed, which includes:

  • Auto block indicators

External Resources:

Impossible traveler alert

Dependencies

This playbook uses the following sub-playbooks, integrations, and scripts.

Sub-playbooks

  • Containment Plan
  • Impossible Traveler - Enrichment
  • Ticket Management - Generic

Integrations

This playbook does not use any integrations.

Scripts

  • impossibleTravelerGetDistance
  • Set
  • CreateArray

Commands

  • closeInvestigation
  • setParentIncidentFields

Playbook Inputs


Name Description Default Value Required
MaxMilesPerHourAllowed The maximum miles per hour that is considered reasonable. If the geographical distance and difference in time between logins is greater than this value, the user will be considered an impossible traveler. 400 Optional
WhitelistedIPs A comma separated list of IP addresses that are allowed to be used across long distances.   Optional
ContactUserManager Whether to ask the user manager for the legitimacy of the login events, in case of an alleged impossible traveler. True Optional
AutoContainment Whether to execute auto containment. False Optional
AbuseIPDBThreshold The score needed from AbuseIPDB to consider IP address as malicious. 80 Optional
preInvestigationContainment Whether to execute containment prior investigation phase   Optional
AllowlistCIDR A comma separated list of CIDR that are allowed to be used across long distances. lists.CIDR - Allowlist Optional
username The username to iterate over. alert.username Optional
domain The organization domain.   Optional
ShouldOpenTicket Whether to open a ticket automatically in a ticketing system. (True/False). False Optional
serviceNowShortDescription A short description of the ticket. XSIAM Incident ID - ${parentIncidentFields.incident_id} Optional
serviceNowImpact The impact for the new ticket. Leave empty for ServiceNow default impact.   Optional
serviceNowUrgency The urgency of the new ticket. Leave empty for ServiceNow default urgency.   Optional
serviceNowSeverity The severity of the new ticket. Leave empty for ServiceNow default severity.   Optional
serviceNowTicketType The ServiceNow ticket type. Options are “incident”, “problem”, “change_request”, “sc_request”, “sc_task”, or “sc_req_item”. Default is “incident”.   Optional
serviceNowCategory The category of the ServiceNow ticket.   Optional
serviceNowAssignmentGroup The group to which to assign the new ticket.   Optional
ZendeskPriority The urgency with which the ticket should be addressed. Allowed values are “urgent”, “high”, “normal”, or “low”.   Optional
ZendeskRequester The user who requested this ticket.   Optional
ZendeskStatus The state of the ticket. Allowed values are “new”, “open”, “pending”, “hold”, “solved”, or “closed”.   Optional
ZendeskSubject The value of the subject field for this ticket. XSIAM Incident ID - ${parentIncidentFields.incident_id} Optional
ZendeskTags The array of tags applied to this ticket.   Optional
ZendeskType The type of this ticket. Allowed values are “problem”, “incident”, “question”, or “task”.   Optional
ZendeskAssigne The agent currently assigned to the ticket.   Optional
ZendeskCollaborators The users currently CC’ed on the ticket.   Optional
description The ticket description. ${parentIncidentFields.description}. ${parentIncidentFields.xdr_url} Optional
addCommentPerEndpoint Whether to append a new comment to the ticket for each endpoint in the incident. Possible values: True/False. True Optional
CommentToAdd Comment for the ticket. ${alert.name}. Alert ID: ${alert.id} Optional

Playbook Outputs


Path Description Type
Account.Email.Address The email address object associated with the Account. string
DBotScore Indicator, Score, Type, Vendor. unknown
Account.ID The unique Account DN (Distinguished Name). string
Account.Username The username of the Account. string
Account.Email The email address associated with the Account. unknown
Account.Type The type of the Account entity. string
Account.Groups The groups that the Account is a part of. unknown
Account Account object unknown
Account.DisplayName The display name of the Account. string
Account.Manager The manager of the Account. string
DBotScore.Indicator The indicator value. string
DBotScore.Type The indicator’s type. string
DBotScore.Vendor The indicator’s vendor. string
DBotScore.Score The indicator’s score. number
IP The IP objects. unknown
Endpoint The Endpoint’s object. unknown
Endpoint.Hostname The hostname to enrich. string
Endpoint.OS The Endpoint OS. string
Endpoint.IP The list of Endpoint IP addresses. unknown
Endpoint.MAC The list of Endpoint MAC addresses. unknown
Endpoint.Domain The domain name of the Endpoint. string

Playbook Image


Impossible Traveler Response

Inputs

  • MaxMilesPerHourAllowed — The maximum miles per hour that is considered reasonable. If the geographical distance and difference in time between logins is greater than this value, the user will be considered an impossible traveler.
  • WhitelistedIPs — A comma separated list of IP addresses that are allowed to be used across long distances.
  • ContactUserManager — Whether to ask the user manager for the legitimacy of the login events, in case of an alleged impossible traveler.
  • AutoContainment — Whether to execute auto containment.
  • AbuseIPDBThreshold — The score needed from AbuseIPDB to consider IP address as malicious.
  • preInvestigationContainment — Whether to execute containment prior investigation phase
  • AllowlistCIDR — A comma separated list of CIDR that are allowed to be used across long distances.
  • username — The username to iterate over.
  • domain — The organization domain.
  • ShouldOpenTicket — Whether to open a ticket automatically in a ticketing system. (True/False).
  • serviceNowShortDescription — A short description of the ticket.
  • serviceNowImpact — The impact for the new ticket. Leave empty for ServiceNow default impact.
  • serviceNowUrgency — The urgency of the new ticket. Leave empty for ServiceNow default urgency.
  • serviceNowSeverity — The severity of the new ticket. Leave empty for ServiceNow default severity.
  • serviceNowTicketType — The ServiceNow ticket type. Options are "incident", "problem", "change_request", "sc_request", "sc_task", or "sc_req_item". Default is "incident".
  • serviceNowCategory — The category of the ServiceNow ticket.
  • serviceNowAssignmentGroup — The group to which to assign the new ticket.
  • ZendeskPriority — The urgency with which the ticket should be addressed. Allowed values are "urgent", "high", "normal", or "low".
  • ZendeskRequester — The user who requested this ticket.
  • ZendeskStatus — The state of the ticket. Allowed values are "new", "open", "pending", "hold", "solved", or "closed".
  • ZendeskSubject — The value of the subject field for this ticket.
  • ZendeskTags — The array of tags applied to this ticket.
  • ZendeskType — The type of this ticket. Allowed values are "problem", "incident", "question", or "task".
  • ZendeskAssigne — The agent currently assigned to the ticket.
  • ZendeskCollaborators — The users currently CC'ed on the ticket.
  • description — The ticket description.
  • addCommentPerEndpoint — Whether to append a new comment to the ticket for each endpoint in the incident. Possible values: True/False.
  • CommentToAdd — Comment for the ticket.

Outputs

  • Account.Email.Address — The email address object associated with the Account.
  • DBotScore — Indicator, Score, Type, Vendor.
  • Account.ID — The unique Account DN (Distinguished Name).
  • Account.Username — The username of the Account.
  • Account.Email — The email address associated with the Account.
  • Account.Type — The type of the Account entity.
  • Account.Groups — The groups that the Account is a part of.
  • Account — Account object
  • Account.DisplayName — The display name of the Account.
  • Account.Manager — The manager of the Account.
  • DBotScore.Indicator — The indicator value.
  • DBotScore.Type — The indicator's type.
  • DBotScore.Vendor — The indicator's vendor.
  • DBotScore.Score — The indicator's score.
  • IP — The IP objects.
  • Endpoint — The Endpoint's object.
  • Endpoint.Hostname — The hostname to enrich.
  • Endpoint.OS — The Endpoint OS.
  • Endpoint.IP — The list of Endpoint IP addresses.
  • Endpoint.MAC — The list of Endpoint MAC addresses.
  • Endpoint.Domain — The domain name of the Endpoint.

Commands used

closeInvestigation setParentIncidentFields

Flowchart

yes yes yes yes yes Approved yes yes Start Start Containment Containment Travel Information Enrichment Travel Information Enrich... Containment Containment Did the user travel more than the allowed MPH? Did the user travel more ... Did the user login from IP addresses on allow list? Did the user login from I... Are there IPs / CIDR configured on allow list? Are there IPs / CIDR conf... Close alert - closeInvestigation Close alert closeInvestigation Process Travel Data Process Travel Data Can the manager be contacted for travel approval? Can the manager be contac... Investigation Investigation Done Done Check if the IP is blacklisted Check if the IP is blackl... Close alert - closeInvestigation Close alert closeInvestigation Impossible Traveler - Enrichment - Impossible Traveler - Enrichment Impossible Traveler - Enr... Impossible Traveler - Enrichment Set containment actions - Set Set containment actions Set Get all Impossible Traveler IP Addresses - CreateArray Get all Impossible Travel... CreateArray Calculate geographical distance between logins - impossibleTravelerGetDistance Calculate geographical di... impossibleTravelerGetDistance Ask manager if travel was expected Ask manager if travel was... Check Manager Response Check Manager Response Containment Plan - Containment Plan Containment Plan Containment Plan Containment Plan - Containment Plan Containment Plan Containment Plan Should execute pre investigation containment? Should execute pre invest... Set Incident Severity to High - setParentIncidentFields Set Incident Severity to ... setParentIncidentFields Should open a ticket automatically in a ticketing system? Should open a ticket auto... Ticket Management - Generic - Ticket Management - Generic Ticket Management - Generic Ticket Management - Generic
This playbook get as an input all of the involved IP addresses and identities from the Impossible Traveler playbook alert, and enriches them based on the following:
* Geo location
* Active Directory
* IP enrichment e.g. VirusTotal, AbuseIPDB, etc.

## Dependencies

This playbook uses the following sub-playbooks, integrations, and scripts.

### Sub-playbooks

* Account Enrichment - Generic v2.1

### Integrations

* CortexCoreIR
* CoreIOCs

### Scripts

* http
* Set
* DeleteContext
* ParseJSON

### Commands

* ip

## Playbook Inputs

---

| **Name** | **Description** | **Default Value** | **Required** |
| --- | --- | --- | --- |
| sourceip | The source IP to iterate over. |  | Optional |
| username | The username to iterate over. |  | Optional |
| domain | The organization domain. |  | Optional |

## Playbook Outputs

---

| **Path** | **Description** | **Type** |
| --- | --- | --- |
| ActiveDirectory.Users.manager | The manager of the user. | unknown |
| IP | The IP enrichment results. | unknown |
| IP.Geo | The IP geo information. | unknown |
| IP.Malicious | The IP verdict. | unknown |
| AbuseIPDB.IP | The IP information retrieved from AbuseIPDB. | unknown |
| AbuseIPDB.IP.Geo | The IP geo information. | unknown |
| DBotScore | The DBotScore | unknown |
| AbuseIPDB.IP.Malicious | The IP verdict. | unknown |
| Account | The account object. | unknown |
| ActiveDirectory.Users | The AD users. | unknown |
| MSGraphUser | The user information retrieved from MSGraphUser | unknown |
| MSGraphUserManager.Manager | The user's manager information retrieved from MSGraphUser. | unknown |

## Playbook Image

---

![Impossible Traveler - Enrichment](../doc_files/Impossible_Traveler_-_Enrichment.png)