单个 Okta 会话中的多个设备令牌哈希

编辑

单个 Okta 会话中的多个设备令牌哈希

编辑

此规则检测特定 Okta 参与者在一个 Okta 会话中是否有多个设备令牌哈希。这可能表明经过身份验证的会话已被劫持或正在被多个设备使用。攻击者可能会劫持会话以未经授权访问 Okta 管理控制台、应用程序、租户或其他资源。

规则类型: esql

规则索引: 无

严重性: 中等

风险评分: 47

每隔: 5 分钟

搜索索引自: now-9m (日期数学格式,另请参阅 其他回溯时间)

每次执行的最大警报数: 100

参考:

标签:

  • 用例:身份和访问审计
  • 数据源:Okta
  • 战术:凭据访问
  • 领域:SaaS

版本: 104

规则作者:

  • Elastic

规则许可证: Elastic License v2

调查指南

编辑

分类和分析

调查单个 Okta 会话中的多个设备令牌哈希

此规则检测特定 Okta 参与者在一个 Okta 会话中是否有多个设备令牌哈希。这可能表明经过身份验证的会话已被劫持或正在被多个设备使用。攻击者可能会劫持会话以未经授权访问 Okta 管理控制台、应用程序、租户或其他资源。

可能的调查步骤

  • 由于这是一个 ES|QL 规则,因此可以使用 okta.actor.alternate_idokta.authentication_context.external_session_id 值来转向与此警报相关的原始身份验证事件。
  • 通过检查 okta.actor.idokta.actor.typeokta.actor.alternate_idokta.actor.display_name 字段来识别参与此操作的用户。
  • 通过分析 okta.client.ipokta.client.user_agent.raw_user_agentokta.client.zoneokta.client.deviceokta.client.id 字段来确定用于这些操作的设备客户端。
  • 识别 Okta 最终用户后,请查看 okta.debug_context.debug_data.dt_hash 字段。
  • 历史分析应指示此设备令牌哈希是否通常与用户关联。
  • 查看 okta.event_type 字段以确定发生的认证事件类型。
  • 身份验证事件已被过滤掉,以专注于通过已建立会话的 Okta 活动。
  • 通过检查其之前的操作来查看参与此操作的参与者(s)的过去活动。
  • 评估 okta.event_type 字段中此事件前后发生的操作,以帮助了解活动的完整上下文。
  • 这可能有助于确定用户、Okta 和应用程序之间发生的认证和授权操作。
  • okta.actor.alternate_idevent.action 聚合,以确定参与此操作的参与者(s)正在执行的操作类型。
  • 如果报告了各种活动,似乎表明来自不同用户的操作,请考虑暂时停用用户的帐户。

误报分析

  • 合法用户在一个 Okta 会话中有多个设备令牌哈希的情况非常罕见,因为在建立经过身份验证的会话后,DT 哈希不会更改。

响应和补救措施

  • 考虑停止参与此操作的用户(s)的所有会话。
  • 如果这似乎不是误报,请考虑重置相关用户的密码并启用多因素身份验证 (MFA)。
  • 如果已启用 MFA,请考虑重置用户的 MFA。
  • 如果任何用户都不是合法的,请考虑停用用户的帐户。
  • 对 Okta 策略进行审查,并确保它们符合安全最佳实践。
  • 与内部 IT 团队核实,以确定相关帐户是否最近在用户的请求下重置了 MFA。
  • 如果是,请与用户确认这是一个合法的请求。
  • 如果是,并且这不是一个合法的请求,请考虑暂时停用用户的帐户。
  • 重置用户的密码并重置 MFA。
  • 或者,将 okta.client.ip 或 CIDR 范围添加到 exceptions 列表中可以防止此事件将来触发规则。
  • 这应该谨慎操作,因为它可能会阻止生成合法警报。

设置

编辑

设置

Okta Fleet 集成、Filebeat 模块或类似结构的数据必须与此规则兼容。

规则查询

编辑
FROM logs-okta*
| WHERE
    event.dataset == "okta.system"
    // ignore authentication events where session and device token hash change often
    AND NOT event.action IN (
        "policy.evaluate_sign_on",
        "user.session.start",
        "user.authentication.sso"
    )
    // ignore Okta system events and only allow registered users
    AND (
        okta.actor.alternate_id != "[email protected]"
        AND okta.actor.alternate_id RLIKE "[^@\\s]+\\@[^@\\s]+"
    )
    AND okta.authentication_context.external_session_id != "unknown"
| KEEP event.action, okta.actor.alternate_id, okta.authentication_context.external_session_id, okta.debug_context.debug_data.dt_hash
| STATS
    dt_hash_counts = COUNT_DISTINCT(okta.debug_context.debug_data.dt_hash) BY
        okta.actor.alternate_id,
        okta.authentication_context.external_session_id
| WHERE
    dt_hash_counts >= 2
| SORT
    dt_hash_counts DESC

框架: MITRE ATT&CKTM