当组织中的利益相关者找到他们时,很少有安全团队能够自信地证明日志记录和警报功能按预期工作。组织变得更加分散,并且依赖于云产品来实现身份和访问管理、用户生产力和文件存储等用例。与此同时,攻击者已将其在云环境中的运营能力扩展。至关重要的是,安全团队能够监控这些系统是否存在滥用情况,以保护其组织的数据免受攻击。
Dorothy 是一款免费的开源工具,可帮助安全团队测试其 Okta 单点登录 (SSO) 环境的可见性、监控和检测能力。我们将演示如何使用 Dorothy 执行测试,以及如何使用 Elastic Security 通过我们的免费开源检测规则来警报相关的可疑行为。
什么是 Okta SSO?
对于那些不熟悉的人,Okta SSO 是一种基于云的身份管理解决方案,它允许用户使用单个用户帐户对组织内的各种系统和应用程序进行身份验证。告知最终用户他们只需要记住一个用户名和密码,而不是十个或更多,这样可以降低他们养成不良密码习惯的风险,并使系统管理员能够强制执行更强的密码策略。此外,可以在 Okta 中配置多因素身份验证 (MFA) 策略,这提高了攻击者的准入门槛。当攻击者发现其目标网络或用户帐户中强制执行 MFA 时,许多攻击者会直接离开并寻找更容易的目标。
虽然 SSO 解决方案可以提供方便的用户体验并降低组织的网络安全风险,但这些集中式系统为许多系统和应用程序提供了一种万能钥匙,并且通常是攻击者的理想目标。至关重要的是,安全团队要了解其 Okta 环境中的正常行为是什么样的,以便他们可以更轻松地识别可疑活动。
认识 Dorothy
Dorothy 具有 25 多个模块,用于模拟攻击者在 Okta 环境中运行时可能采取的操作以及安全团队应监控、检测和警报的行为。所有模块都映射到相关的 MITRE ATT&CK® 战术,例如持久化、防御规避、发现和影响。
创建 Dorothy 的目的是帮助防御者测试其安全可见性和控制措施,并且不提供任何模块来获取初始访问权限或在 Okta 环境中提升权限。要使用 Dorothy 执行操作,需要一个有效的 Okta API 令牌,该令牌链接到一个分配了一个或多个管理员角色的用户。
提供了一个用户友好的 shell 界面,其中包含上下文帮助,用于在菜单和模块之间导航,帮助用户完成模拟入侵者场景。其他功能包括用于管理与各个 Okta 环境的连接的配置文件,以及详细的日志记录(可以选择将事件索引到 Elasticsearch 中),以提供使用 Dorothy 执行的操作的审计跟踪。
使用 Dorothy 在 Okta 环境中执行操作
在本节中,我们将演示如何在 Okta 环境中执行 Dorothy 的一些模块。下面的图 2 显示了 Elastic Security 用户的典型工作流程。演示之后,您应该可以轻松前往 Dorothy 的 GitHub 存储库,并按照项目wiki中的“入门”步骤进行操作。
whoami?
让我们站在攻击者的角度思考一下他们在 Okta 环境中运行时可能采取的操作。作为具有初始立足点的攻击者,我首先要问的问题是关于我有 API 令牌的用户。让我们通过 Dorothy 的 whoami 命令模拟此攻击者操作,以查看关联用户的登录 ID、上次登录时间和上次密码更改。
现在我们对我们控制的用户帐户有了更好的了解,我们将列出 Dorothy 的模块并在进行下一步操作之前查看帮助菜单。
图 3 - 执行 Dorothy 的 whoami 和 list-modules 命令
发现
Dorothy 有几个发现模块,我们可以使用它们来模拟攻击者可能获得的关于 Okta 环境的知识。攻击者通常会花时间在获得初始访问权限后了解环境的详细信息 — 这些详细信息对于在计划下一步行动之前确定自身方向至关重要。
让我们尝试通过收集以下信息来了解 Okta 环境的一些知识
- 用户 - 当选择要控制、修改或保持不变以避免被检测到的帐户时,用户名、登录 ID、电子邮件地址、密码恢复问题以及每个用户的状态列表将很有用
- 策略 - Okta 策略用于控制安全元素,包括密码复杂性和 MFA 要求,以及用户允许使用的设备。如果我们决定削弱目标安全配置的某些组件,这些知识将派上用场
- 区域 - 网络区域可用于为 Okta 环境定义安全边界。与策略类似,此信息有助于我们了解环境是如何配置的,并在实施任何关于允许或阻止流量的更改之前做出明智的决策
最后,我们将执行 find-admins 模块来枚举每个 Okta 用户的角色,并识别哪些用户分配了一个或多个管理员角色。
图 4 - 执行 Dorothy 的“发现”模块以了解有关 Okta 环境的知识
其他有助于信息收集任务的发现模块包括 find-users-without-mfa,用于查找可能仅使用用户名和密码进行身份验证的用户,以及 find-admin-groups,用于识别分配了一个或多个管理员角色的用户组。
持久性
一旦攻击者获得对其目标环境的访问权限,他们可能会寻找建立持久性的机会。持久性可以帮助攻击者在失去初始立足点的情况下保持访问权限。攻击者可能丢失访问权限的一个常见示例是,当安全团队检测到他们的存在并禁用攻击者正在使用的受损用户帐户或在其网络边界阻止其通信时。
拥有一个或多个持久性机制意味着,如果他们的某个路径被阻止或中断,攻击者将能够继续执行其任务。在此示例中,我们将使用 Dorothy 的 create-user 和 create-admin-user 模块创建一个 Okta 用户,并将管理员角色分配给新用户。接下来,我们将为另一个 Okta 用户创建一个恢复问题,以便我们可以完成重置该用户密码的过程并控制其帐户作为另一种持久性方法。
Dorothy 具有其他持久性模块,可帮助我们了解攻击者可能采取的步骤,例如 reset-factors 以删除用户注册的身份验证因素,以及 reset-password 以生成用于重置用户密码的一次性链接。
防御规避
攻击者会尝试执行防御规避技术,以避免在整个任务中被检测到。例如,攻击者可能会尝试禁用安全日志记录,从而使安全团队看不到他们的恶意操作。
此时,我们已经了解了环境,并配置了几个持久性形式。让我们执行 Dorothy 的 change-policy-state 和 change-zone-state 模块,以削弱“目标”的安全控制。
图 6 - 停用 Okta 策略和网络区域对象
其他以防御规避为主题的模块可以激活、停用或修改其他 Okta 对象,例如应用程序和单个策略规则。
我们将在这里停止虚构的攻击场景,但如果您有兴趣了解 Dorothy 还能做什么,请访问 GitHub 存储库。
使用 Elastic Security 检测可疑行为
在本节中,我们将演示 Okta 的 系统日志 如何为我们的免费检测规则提供支持,以监控可疑行为并向团队发出警报。
Okta 的系统日志提供了在组织环境中观察到的活动审计跟踪。这包括用户登录或更改密码、管理员进行配置更改等活动。此数据源对于安全监控、调查、合规性和响应活动非常有用。
使用 Fleet 摄取 Okta 系统日志
Fleet 在 Kibana 中提供了一个基于 Web 的 UI,用于添加和管理流行的服务和平台的集成,包括 Okta、AWS、Azure、Google Cloud Platform、Google Workspace 以及其他许多平台。 Fleet 的 Okta 集成提供了一种轻松摄取和规范化 Okta 系统日志事件的方法。
对于已经使用 Beats 的团队,还有一个 Okta Filebeat 模块可用。
使用 Elastic Security 的免费检测规则检测可疑行为
Elastic Security 保护团队研究对手的策略,以便为端点、云和网络平台开发检测和预防措施。我们的检测规则是免费的,并与更广泛的安全社区一起公开开发。
我们的 Okta 规则利用索引的系统日志事件,这些事件被规范化为 Elastic Common Schema (ECS),并向安全团队发出有关相关和可疑行为的警报。
下图 8 显示了在 Dorothy 用于模拟攻击者在 Okta 环境中运行时可能采取的行动后,Elastic Security 中出现的许多警报。
那么那些讨厌的误报呢?在 Elastic Security 中向规则添加例外以过滤例行和预期行为非常简单。此功能包括一个关闭与例外匹配的所有警报的选项,以节省您的时间。
使用 Dorothy 衡量您的云覆盖范围
Okta 和其他身份管理解决方案经常成为攻击者的目标,但往往很少或根本没有受到监控。我们创建了 Dorothy 作为一种工具,以帮助安全团队了解攻击者如何在 Okta 环境中运行,从而进一步增强他们测试我们的免费和开放检测规则的可见性和有效性的能力。
您可以访问该项目的 wiki,了解如何开始使用 Dorothy。如果您还不是 Elastic Security 用户,您可以立即注册一个 免费云试用版,并查看我们的免费检测规则。