Okta Risk Threshold Exceeded

Original Source: [splunk source]
Name:Okta Risk Threshold Exceeded
id:d8b967dd-657f-4d88-93b5-c588bcd7218c
version:4
date:2024-09-30
author:Michael Haag, Bhavin Patel, Splunk
status:production
type:Correlation
Description:The following correlation identifies when a user exceeds a risk threshold based on multiple suspicious Okta activities. It leverages the Risk Framework from Enterprise Security, aggregating risk events from "Suspicious Okta Activity," "Okta Account Takeover," and "Okta MFA Exhaustion" analytic stories. This detection is significant as it highlights potentially compromised user accounts exhibiting multiple tactics, techniques, and procedures (TTPs) within a 24-hour period. If confirmed malicious, this activity could indicate a serious security breach, allowing attackers to gain unauthorized access, escalate privileges, or persist within the environment.
Data_source:
  • -Okta
search:| tstats `security_content_summariesonly` values(All_Risk.analyticstories) as analyticstories sum(All_Risk.calculated_risk_score) as risk_score, count(All_Risk.calculated_risk_score) as risk_event_count,values(All_Risk.annotations.mitre_attack.mitre_tactic_id) as annotations.mitre_attack.mitre_tactic_id, dc(All_Risk.annotations.mitre_attack.mitre_tactic_id) as mitre_tactic_id_count, values(All_Risk.annotations.mitre_attack.mitre_technique_id) as annotations.mitre_attack.mitre_technique_id, dc(All_Risk.annotations.mitre_attack.mitre_technique_id) as mitre_technique_id_count, values(All_Risk.tag) as tag, values(source) as source, dc(source) as source_count from datamodel=Risk.All_Risk where All_Risk.risk_object_type = user All_Risk.analyticstories IN ("Okta Account Takeover", "Suspicious Okta Activity","Okta MFA Exhaustion") by All_Risk.risk_object,All_Risk.risk_object_type
| `drop_dm_object_name("All_Risk")`
| search mitre_technique_id_count > 5
| `okta_risk_threshold_exceeded_filter`


how_to_implement:This search leverages the Risk Framework from Enterprise Security. Ensure that "Suspicious Okta Activity", "Okta Account Takeover", and "Okta MFA Exhaustion" analytic stories are enabled. TTPs may be set to Notables for point detections; anomalies should not be notables but rather risk generators. The correlation relies on risk before generating a notable. Modify the value as needed.
known_false_positives:False positives will be limited to the number of events generated by the analytics tied to the stories. Analytics will need to be tested and tuned, and the risk score reduced as needed based on the organization.
References:
  -https://developer.okta.com/docs/reference/api/event-types
  -https://sec.okta.com/everythingisyes
drilldown_searches:
name:'View the detection results for - "$risk_object$"'
search:'%original_detection_search% | search risk_object = "$risk_object$"'
earliest_offset:'$info_min_time$'
latest_offset:'$info_max_time$'
name:'View risk events for the last 7 days for - "$risk_object$"'
search:'| from datamodel Risk.All_Risk | search normalized_risk_object IN ("$risk_object$") starthoursago=168 | stats count min(_time) as firstTime max(_time) as lastTime values(search_name) as "Search Name" values(risk_message) as "Risk Message" values(analyticstories) as "Analytic Stories" values(annotations._all) as "Annotations" values(annotations.mitre_attack.mitre_tactic) as "ATT&CK Tactics" by normalized_risk_object | `security_content_ctime(firstTime)` | `security_content_ctime(lastTime)`'
earliest_offset:'$info_min_time$'
latest_offset:'$info_max_time$'
tags:
  analytic_story:
    - 'Okta Account Takeover'
    - 'Okta MFA Exhaustion'
    - 'Suspicious Okta Activity'
  asset_type:Okta Tenant
  confidence:80
  impact:70
  message:Okta Risk threshold exceeded for user [$risk_object$]. Investigate further to determine if this was authorized.
  mitre_attack_id:
    - 'T1078'
    - 'T1110'
  observable:
    name:'risk_object'
    type:'User'
    - role:
      - 'Victim'
  product:
    - 'Splunk Enterprise'
    - 'Splunk Enterprise Security'
    - 'Splunk Cloud'
  required_fields:
    - 'All_Risk.risk_object'
    - 'All_Risk.risk_object_type'
    - 'All_Risk.analyticstories'
    - 'All_Risk.calculated_risk_score'
    - 'All_Risk.annotations.mitre_attack.mitre_tactic_id'
    - 'All_Risk.annotations.mitre_attack.mitre_technique_id'
    - 'All_Risk.tag'
    - '_time'
  risk_score:56
  security_domain:access

tests:
name:'True Positive Test'
 attack_data:
  data: https://media.githubusercontent.com/media/splunk/attack_data/master/datasets/suspicious_behaviour/okta_account_takeover_risk_events/okta_risk.log
  source: risk_data
  sourcetype: stash
manual_test:None