最近社会媒体报道Okta事件通过第三方承包商的安全团队跑回到自己的日志,并要求供应商像砖检测和分析的建议。被Okta通知之前,我们没有客户的潜在的影响,我们使用了砖Lakehouse对我们的调查。我们想要展示我们进行调查和分享见解和技术细节。我们还将提供笔记本电脑,你可以导入数据砖部署或我们的community edition摄取Okta日志,以便年底这个博客,您可以执行相同的分析你的公司。
背景
Okta是一个领先的基于云的身份平台用于单点登录(SSO)的身份验证和授权,多因素身份验证bob体育客户端下载、与客户和用户管理服务的企业或业务应用程序。
2022年1月,黑客获得端点(用户系统)由第三方组织拥有并经营Okta客户提供支持服务。这些演员们可能能够执行操作,如果他们的员工分配到端点。像大多数组织中,砖立即展开调查,分析几年我们存储在Lakehouse Okta数据。我们建立了我们自己的查询,但是我们也发现巨大的价值在别人的帖子和tweet。
我们最喜欢的行业博客Cloudflare。两个语句特别是共鸣我们的安全团队:
“尽管Okta控制台日志是可用的,我们也将它们存储在我们自己的系统。这增加了一个额外的安全层,我们能够存储日志的时间比在Okta控制台可用。Okta还确保达成妥协的平台不能改变我们已经收集和储存证据。”bob体育客户端下载
由于这种方法,他们能够“搜索
Okta系统日志任何妥协的迹象(密码更改、硬件令牌的变化等)。Cloudflare读取系统Okta日志每五分钟和商店这些在我们SIEM如果我们要经历一个这样的事件,我们可以回顾Okta仪表板中提供的90天。”
图1所示。从行业的文章引用Cloudflare
事件发生后,我们的许多客户向我们伸出问砖可以帮助他们摄取和分析Okta系统日志,答案绝对是肯定的!砖Lakehouse平台允许您存储、处理和分析你的bob体育客户端下载数据在天平multi-petabyte,允许更长的保留和lookback时期和先进威胁检测与数据科学和机器学习。更重要的是,你甚至可以查询通过SIEM工具,提供了一个360的安全事件。
在这篇文章中,我们将演示如何集成Okta系统日志与你的砖Lakehouse平台bob体育客户端下载,收集和监视他们。这种集成允许您的安全团队更大的可视性应用程序和终端用户的身份验证和授权行为,并让你寻找特定事件与最近Okta妥协。
如果你的目标是迅速开始,您可以跳过阅读其他博客和使用这些笔记本电脑在自己的砖部署,指的是笔记本的每个部分的注释如果你卡住。
请继续读下去的技术解释集成和分析提供的笔记本。
Okta系统日志
的Okta系统日志记录系统事件,有关您的组织提供一个审计跟踪,可以用来了解平台活动和诊断问题。bob体育客户端下载Okta的系统日志API提供接近实时的,只读访问您的组织的系统日志。这些日志提供关键洞察用户活动,由Okta分类事件类型。每个事件类型代表一个特定的活动(例如,登录尝试,密码重置,创建一个新用户)。你可以搜索事件类型和相关活动与其他Okta日志属性,如事件的结果(例如,成功或失败),IP地址、用户名、浏览器类型和地理位置。
有很多方法摄取Okta系统日志事件到其他系统,但是我们正在使用系统日志API获取最新的系统日志事件。
Okta Lakehouse架构系统日志
砖Lakehouse是一个开放的体系结构,结合最好的湖泊和数据仓库的数据元素。我们建议以下lakehouse网络安全架构的工作负载,比如Okta系统日志分析:
在下一节中,我们将介绍如何摄取Okta日志监控活动在您的应用程序属性。
摄取Okta系统登录砖三角洲
后如果你在工作或家庭(或这些天经常)用这个笔记本,我们将使用三角洲湖批处理能力使用Okta摄取数据系统日志API的三角洲表抓取命令日志事件的列表从你Okta组织的系统日志。我们将使用有界的请求请求类型(有界的情况下当你知道确切的时间框架的日志你想检索)。
请求是一个有界的请求,它必须符合下列请求参数标准:
有界的请求/ api / v1 /日志
API有以下语义:
的性能,我们将使用一个自适应水印方法:我。e查询过去72小时来寻找最新的摄取;如果我们不能找到一些时间框架内,然后我们重新查询整个表找到最新的摄取。这是比每次查询整个表。
- 步骤1:Okta系统日志记录系统活动相关的组织提供一个审计跟踪,可以用来了解平台活动和诊断问题。bob体育客户端下载
- 步骤2:Okta系统日志API提供接近实时的,只读访问您的组织的系统日志。
- 步骤3:您可以使用笔记本连接Okta提供系统日志API和摄取记录到砖三角洲自动以很短的间隔(可选,时间表为砖工作)。
- 步骤4:在这个博客,笔记本电脑提供,您可以使用数据进行分析。
- 返回的时间过滤的相关事件发表字段(与轮询请求)。
- 返回的事件是保证根据出版领域。
- 他们有一个有限数目的页面。也就是说,不包含最后一页下一个链接头的关系。
- 并不是所有的事件指定时间范围可能存在——事件可能被推迟。这种罕见但有可能延误。
d=datetime.today ()- - - - - -timedelta(天=3)beginDate=d.strftime (“% Y - % - % d”)水印=sql(“从okta_demo选择合并(max(出版))。okta_system_logs日期> = {0}”.format (beginDate))。第一个()(0]如果不水印:水印=sql(“选择合并(max(出版))从okta_demo.okta_system_logs”)。第一个()(0]
图3。Cmd 3”2。Okta_Ingest_Logs” notebook
我们将构建一个API请求如下使用Okta API的令牌,并分开记录到个人JSON行
头= {“授权”:“量”+牌}url = URL_BASE +“api / v1 /日志?限制= "+str(限制)+“&sortOrder = ASCENDING&since = "+自r =请求。get (url,标题=标题)json = []jsons.extend ([json.dumps (x)为x在r.json ()))
图4。Cmd 4”2。Okta_Ingest_Logs” notebook
将JSON dataframe行
df=(sc.parallelize ([行(recordJson=x)为x在json) .toDF ().withColumn(“记录”,f.from_json (f.col (“recordJson”), okta_schema)).withColumn(“日期”,f.col (“record.published”)。投(“日期”)。选择(“日期”,“。*”,“recordJson”,))
图5。Cmd 4”2。Okta_Ingest_Logs” notebook
持续到三角洲表的记录
df。写\.option (“mergeSchema”,“真正的”)\。格式(“δ”)\.mode (“添加”)\.partitionBy (“日期”)\.save (STORAGE_PATH)
图6。Cmd 4”2。Okta_Ingest_Logs” notebook
如上所示的Okta数据收集小于50行代码以很短的间隔,您可以运行代码自动调度它砖的工作。
Okta系统日志现在在砖。让我们做一些分析。
Okta分析系统日志
对于我们的分析,我们将被指“系统日志查询试图收购“知识内容,漂亮的人Okta连同他们的出版文档。
Okta模拟会话搜索
据报道,这出现攻击者破坏的端点为第三方支持员工更高的权限(如能力迫使一个Okta客户帐户的密码重置)。客户安全团队可能希望开始寻找一些事件日志Okta租户妥协的任何迹象。
让我们先从管理员的活动。这个查询搜索模拟事件据报道失误中使用美元的活动。User.session。模拟是罕见的事件,通常时触发一个Okta支持的人请求管理员访问故障排除,所以你可能不会看到很多。
选择eventType。数(eventType)从okta_demo.okta_system_logs在哪里日期> =日期(“2021-12-01”)和eventType在(“user.session.impersonation.initiate”,“user.session.impersonation.grant”,“user.session.impersonation.extend”,“user.session.impersonation.end”,“user.session.impersonation.revoke”)集团通过eventType
图7。Cmd 4“3。Okta_Analytics” notebook
结果,如果你看到一个user.session.impersonation。在itiate event (triggered when a support staff impersonates an admin) but no user.session.impersonation.grant event (triggered when an admin grants access to support), that is cause for a concern! We provided a detailed query in the notebooks that detects “impersonation initiations” that are missing a corresponding “impersonation grant” or “impersonation end”. You can review user.session.impersonation events and correlate that with legitimate opened Okta support tickets to determine if these are anomalous. SeeOkta API事件类型对于文档和Cloudflare的调查,2022年1月Okta妥协对于一个真实世界的场景。
Okta近期员工的MFA重置密码或修改
现在,让我们寻找任何员工账户密码重置或修改他们多因素身份验证(MFA) 12月1日以来以任何方式。事件类型在Okta帮助这个搜索:user.account。reset_password user.mfa.factor。更新、system.mfa.factor.deactivate user.mfa。attempt_bypass或user.mfa.factor.reset_all(你可以看看Okta文档捕捉更多的事件分析根据需要)。我们正在寻找一个“演员。alternateId”(电子邮件保护)出现当Okta支持组织发起一个密码重置。注意,尽管我们也寻找下面的“更新密码”事件,Okta代表的支持没有更新密码的能力——他们只能重置。
选择actor.alternateId,*从okta_demo.okta_system_logs在哪里((eventType=“user.account.update_password”和actor.alternateId=”(电子邮件保护)”)或(eventType=“user.account.reset_password”和actor.alternateId=”(电子邮件保护)”)或eventType=“user.mfa.factor.update”或eventType=“system.mfa.factor.deactivate”或eventType=“user.mfa.attempt_bypass”或eventType=“user.mfa.factor.reset_all”)和日期> =日期(“2021-12-01”)
图8。Cmd 8“3。Okta_Analytics” notebook
如果你看到这个查询的结果,你可能Okta用户帐户,需要进一步的调查,特别是如果他们的特权或敏感的用户。
MFA疲劳的袭击
多因素身份验证(MFA)是最有效的安全控制防止账户收购,但它并不是万无一失的。据报道,这是滥用在美元Solarwinds妥协和失误。这种技术被称为MFA疲劳攻击或MFA引发爆炸。之前,敌人使用偷来的用户名和密码登录到一个帐户保护推动MFA和触发器许多推送通知受害者(通常是手机),直到他们的轮胎警报和批准请求。简单!我们如何检测这些攻击呢?我们的灵感来自这篇博客由詹姆斯·布罗斯基在Okta地址。
选择authenticationContext。externalSessionId externalSessionId actor.alternateId,最小值(发表)作为第一次,马克斯(发表)作为lastTime,数(eventType)过滤器(在哪里eventType=推动“system.push.send_factor_verify_push”),数(legacyEventType)过滤器(在哪里legacyEventType=“core.user.factor.attempt_success”)作为成功,数(legacyEventType)过滤器(在哪里legacyEventType=“core.user.factor.attempt_fail”)作为失败,unix_timestamp (马克斯(发表)- - - - - -unix_timestamp (最小值(发表)作为elapsetime从okta_demo.okta_system_logs在哪里eventType=“system.push.send_factor_verify_push”或((legacyEventType=“core.user.factor.attempt_success”)和(debugContext.debugData就像“% OKTA_VERIFY_PUSH %”))或((legacyEventType=“core.user.factor.attempt_fail”)和(debugContext.debugData就像“% OKTA_VERIFY_PUSH %”))集团通过authenticationContext。externalSessionId, actor.alternateId有elapsetime0和推> =3和失败> =1
图9。Cmd 11“3。Okta_Analytics” notebook
这就是上面的查询查找:首先,它读取MFA推送式通知事件及其匹配成功或失败事件,每一个独特的会话ID和用户。然后计算时间登录期间(仅限于10分钟),并计算出推送通知发送的数量,以及推送通知的数量对积极和消极。然后它使简单的决定根据返回结果的组合。如果超过三个把看到的,和一个成功的通知,那么这可能是值得更多的调查。
建议
如果你是一个Okta客户,我们建议接触您的帐户团队为进一步的信息和指导。
我们还建议以下行为:
- 支持和加强MFA实现所有用户帐户。
- 在你的砖Lakehouse摄取和储存Okta日志。
- 调查并回复:
- 持续监测罕见support-initiated事件,如Okta模拟会议,使用砖工作。
- 监视可疑的密码重置和MFA-related事件。
结论
在这篇文章您学习了是多么容易摄取到砖Lakehouse Okta系统日志。您还看到几个例子来分析寻找Okta事件中妥协的迹象。请继续关注更多的博文,构建更重视这个用例通过应用毫升和使用砖SQL。
我们邀请您登录到自己的砖帐户或砖社区版和运行这些笔记本。详细请参考文档说明进口要运行的笔记本。
我们期待着您的问题和建议。你可以到我们:(电子邮件保护)。也如果你好奇砖方法安全,请检查我们安全与信任中心。
确认
感谢所有员工整个行业,在Okta,砖,谁一直在努力让每个人都安全。