使用 Dorothy 和 Elastic 安全测试您的 Okta 可见性和检测能力
当安全团队与其组织中的利益相关者进行探讨时,他们很少能够自信地证明日志和警报功能可达到预期要求。组织的模式已经变得愈加分散,对于身份和访问权限管理、用户生产效率和文件存储等这样的用例,组织更加依赖于云产品/服务来实现。同时,敌手也已经扩展了他们在云环境中的行动能力。至关重要的是,安全团队要能够监测这些系统的滥用情况,才可保护组织的数据免受攻击。
Dorothy 是一款免费开放的工具,可以帮助安全团队测试他们在 Okta 单点登录 (SSO) 环境中的可见性、监测和检测能力。我们将演示如何使用 Dorothy 来执行测试,以及如何使用免费开放的检测规则通过 Elastic 安全对相关和可疑的行为发出警报。
Okta SSO 是什么?
可能有对此不熟悉的用户,先简单做一下普及:Okta SSO 是一种基于云的身份管理解决方案,用户使用一个用户帐户就可以对所在组织内的各种系统和应用程序进行身份验证。告知最终用户,他们不需要记住十多个用户名和密码,只记住一个就够,这样既可以降低用户养成不良密码管理习惯的风险,还能够让系统管理员实施更严格的密码策略。此外,还可以在 Okta 中配置多因素身份验证 (MFA) 策略,进一步提升对攻击者的防护能力。许多攻击者在发现目标网络或用户帐户中实施了 MFA 时,他们会转而寻找更容易的目标。
虽然 SSO 解决方案可以为组织提供便捷的用户体验并降低网络安全风险,但这些集中式系统为许多系统和应用程序提供了一把万能钥匙,这常常会成为攻击者的主要攻击目标。安全团队必须了解 Okta 环境中的正常行为是怎样的,这样才可以更容易地识别可疑活动。
认识 Dorothy
Dorothy 有超过 25 个模块用来模拟攻击者在 Okta 环境中操作时可能采取的行动,以及安全团队应该监测、检测并发出警告的行为。所有模块都映射到相关的 MITRE ATT&CK® 战术,如持久化、防御规避、发现和影响。
创建 Dorothy 的初衷是为了帮助防御者测试他们的安全可见性和控制力,并不提供任何模块来获得 Okta 环境中的初始访问权限或提升权限。要使用 Dorothy 执行操作,需要一个有效的 Okta API 令牌,该令牌应关联到分配有一个或多个管理员角色的用户。
Dorothy 提供了具有上下文帮助且方便使用的 shell 界面,可在菜单和模块之间轻松导航,帮助引导用户完成入侵者场景模拟。其他功能还包括:提供配置概要文件(用于管理与各个 Okta 环境的连接)以及详细的日志,并可根据需要将事件索引添加到 Elasticsearch 中,以提供对使用 Dorothy 所执行操作的审计跟踪。
在 Okta 环境中使用 Dorothy 执行操作
在这一部分,我们将演示如何在 Okta 环境中执行 Dorothy 的一些模块。下面的图 2 显示了 Elastic 安全用户的典型工作流。在这个演示之后,您应该可以轻松地转到 Dorothy 的 GitHub 存储库,并按照该项目的 Wiki 页中“Getting Started”(入门)部分的入门步骤进行操作。
whoami?
我们站在攻击者的角度想一想他们在 Okta 环境中操作时可能会采取什么行动。作为一个找到初始落脚点的攻击者,我首先想到的问题是我对我拥有 API 令牌的用户有什么了解。让我们通过 Dorothy 的 whoami
命令来模拟这个攻击者的操作,以查看关联用户的登录 ID、上次登录时间和上次密码更改时间。
现在我们已经对我们控制的用户帐户有了更好的了解,接下来我们先列出 Dorothy 的模块并看一下帮助菜单,然后再进行下一步的操作。
发现
Dorothy 有若干个发现模块,我们可以用来模拟攻击者可能获得的关于 Okta 环境的信息。敌手通常会在获得初始访问权限后花时间了解环境的细节,这些细节对于他们在计划下一步行动之前确定自己的方向至关重要。
让我们尝试通过收集以下信息来了解 Okta 环境:
- 用户 — 在选择要进行控制、修改或保留原样(以避免被检测到)的帐户时,包含有姓名、登录 ID、电子邮件地址、密码恢复问题和每个用户状态的列表将非常有用。
- 策略 — Okta 策略用于控制安全要素,包括密码复杂性和 MFA 要求,以及允许用户使用的设备。如果我们决定削弱目标安全配置的某些组件,这些信息将派上用场。
- 区域 — 网络区域可用于定义 Okta 环境的安全边界。与策略类似,这些信息有助于我们了解环境的配置方式,并在对允许或阻止流量的方式进行任何更改之前做出明智的决策。
最后,我们将执行 find-admins
模块来枚举每个 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
模块,以削弱“目标”的安全控制。
其他以防御规避为主题的模块可以激活、停用或修改其他 Okta 对象,如应用程序和各个策略规则。
到这里我们虚构的攻击场景就结束了,如果您想了解 Dorothy 的其他功能,请前往 GitHub 存储库了解更多信息。
使用 Elastic 安全检测可疑行为
在这一部分,我们将演示 Okta 的系统日志如何增强我们的免费检测规则,以监测可疑行为并提醒团队注意。
通过 Okta 的系统日志,能够对在组织环境中观测到的活动进行审计跟踪。这包括用户登录或更改密码、管理员更改配置等活动。该数据源对于安全监测、调查、合规性和响应活动非常有用。
通过 Fleet 采集 Okta 系统日志
Fleet 在 Kibana 中提供了一个基于 Web 的 UI,用于添加和管理热门服务及平台(包括 Okta、AWS、Azure、Google Cloud Platform、Google Workspace 等)的集成。Fleet 的 Okta 集成提供了一种简便的方法来采集和规范 Okta 的系统日志事件。
已经在使用 Beats 的团队也可以使用 Okta Filebeat 模块。
使用 Elastic 安全的免费检测规则检测可疑行为
Elastic 安全保护团队为了开发针对终端、云和网络平台的检测和预防措施,对敌手的谍报技术进行了深入研究。我们的检测规则是免费的,并且与更广泛的安全社区一起在开放的环境中开发。
我们的 Okta 规则利用已规范化为 Elastic Common Schema (ECS) 且已编制索引的系统日志事件,并提醒安全团队注意相关和可疑的行为。
下面的图 8 显示了在使用 Dorothy 模拟攻击者在 Okta 环境中可能采取的行动之后,Elastic 安全中显示的许多警报。
对于那些比较烦人的误报该怎么办呢?通过向 Elastic 安全的规则中添加例外情况来过滤常规和预期的行为,即可轻松化解这个烦恼。这项功能包括一个选项,可将与例外情况匹配的所有警报都关掉,这可大大节省您的时间。
用 Dorothy 评测您的云防御情况
Okta 和其他身份管理解决方案经常成为敌手的攻击目标,话虽如此,但往往是监测不到位所致。我们着力打造 Dorothy 这款工具,就是为了帮助安全团队了解敌手如何在 Okta 环境中操作,从而进一步使他们能够测试其可见性和我们免费开放的检测规则的有效性。
您可以通过访问该项目的 Wiki 页来了解如何开始使用 Dorothy。如果您还不是 Elastic 安全用户,现在即可注册免费的云试用版,并查看我们的免费检测规则。