企业安全中的用户与实体行为分析
期刊/会议:2016 IEEE International Conference on Big Data (Big Data)
级别:CCF C
本文概述了我们在网络安全领域构建的一个用于解决威胁搜索和事件调查用例的情报平台。具体来说,关注用户和实体行为分析(UEBA)模块,跟踪和监控用户、IP地址和企业设备的行为。利用基于奇异值分解(SVD)的机器学习算法自动检测异常行为。
企业安全的一个关键问题是检测被泄露的用户帐户和公司内部可能有恶意意图的内部人员(流氓用户)。这种情况可能发生的各种场景,以及跨公司网络环境的特征的巨大变化,使这个问题非常复杂。然而,假设一个受影响的或恶意的用户的操作与他或她的日常工作职责有本质上的不同,就会使这个问题更容易处理。如果随着时间的推移跟踪每个用户的操作,并针对其他类似用户的操作,就可以开发用户行为的基线概要文件,任何偏离该行为的行为都可以标记为潜在异常,需要进一步调查。在本文中,我们描述了Niara安全分析平台的用户和实体行为分析模块。该模块通过对网络报文、日志等多种数据源应用机器学习算法,识别企业网络内用户、IP地址和设备的异常行为。
应用异常检测技术和机器学习方法来解决计算机安全问题有着悠久的历史。最早的作品之一可以追溯到1987年[3]。尽管从[2]开始学术界有大量的工作试图将异常检测应用于安全问题,但是实际落地到工业界困难。业界对用户行为分析重新产生了兴趣,但安全从业者对此持怀疑态度,现实世界中利用机器学习的部署很少[9]。
这种脱节有几个原因。[4]提供了一个关于问题域(攻击和恶意活动是罕见和异常的)、训练数据(无攻击数据可用和规范、模拟具有代表性和流量是静态的)和操作可用性(假警报>1%是可接受的,恶意的定义是通用的,用户可以解释异常)。[12]进一步确定了使安全领域与机器学习要求不一致的特征:错误成本很高,缺乏训练数据,结果和操作解释之间的语义差距,输入数据的巨大可变性,以及进行合理评估的困难
这些观察结果与我们的经验也产生了共鸣。仔细考虑正确的用例和定义良好的范围是非常重要的。最重要的因素是确保没有对数据做出错误的假设,并针对问题设计正确的功能。异常检测只能作为一个起点,帮助用户识别潜在的重要事件。提供关于为什么事件被标记为异常的操作上下文和其他支持信息是至关重要的。其目标是使安全分析人员更加高效和有效,而不仅仅是提供不可操作的新警报源。为此,我们相信我们已经构建了一个系统,它提供了丰富的支持上下文和数据,一直到网络包,以帮助分析人员识别和理解对企业重要的事件。
论文组织如下。我们首先在第二节介绍了用户和实体行为分析(UEBA),并提出了问题。第三节详细描述UEBA模块的核心算法。然后,我们在第四节提供了Niara平台的概述,并描述了实现和部署的细节。在第五节中,我们展示了来自真实世界数据集的实验和结果,并在第六节中给出最后的评论。
行为分析和异常检测是非常宽泛的术语。在本节中,我们以一个特定的服务器访问行为用例作为运行示例来设置问题。在产品中还有其他几类UEBA用例——例如。例如,与基线中未见的新值相关的异常,与地理位置相关的异常等,这些异常都由下面适当的机器学习算法支持。但是由于篇幅的限制,我们将关注这个特定的用例。
考虑企业中的一个重要服务器,需要对其进行监视,以查看被入侵的帐户或非法用户的操作。我们监视访问服务器的每个用户的访问模式。我们感兴趣的实体是所有连接到服务器的用户。为了检测异常,我们首先需要定义用于比较的基线。我们考虑两种情况:
首先,我们必须定义什么是用户行为。这包括确定用于分析的时间粒度(每小时、每天、每周等等),并确定一组特征来描述每个用户在每个时间段内的访问模式。在本例中,我们选择监视每天的用户访问行为,下面是每天对每个用户-服务器计算的特性子集:
随着时间的推移,通过上述所有特征收集的数据作为异常检测算法的输入。对于历史基线,特定用户-服务器对的历史上数天的数据向量用作基线数据x。对于测试日的相同用户-服务器对的数据用作测试数据向量x。在某一天访问服务器的所有用户(或特定组内的用户)的数据向量被用作当天的基线X, X中的每个向量都根据该基线打分。
我们的方法是基于马氏距离[7]的概念。我们首先描述了概念,并详细说明了我们如何适应它,以创建一个灵活的异常检测算法,可以在现实场景中使用,以产生可解释的结果。
https://zhuanlan.zhihu.com/p/46626607
单边偏差:
大多数安全用例的主要需求是找到偏差是单边的用例。例如,在监控敏感的内部服务器的下载活动的情况下,人们可能并不关心是否有人下载的比正常的少,而是想知道下载的规模是否真的很大。但是马氏距离将在低位和高位同时显示偏离正常活动的迹象。
我们扩展了该方法,为N个变量中的每个变量提供一个可选参数,以指定是否必须忽略偏离均值的正或负方向。更准确地说,用户指定一个长度为N的可选向量,包含-1、0或1。如果第i项为-1,则小于均值的第i个变量的值对马氏距离计算没有贡献;如果值为+1,则不考虑大于平均值的值。如果值为0,则平均值上下的值都将被考虑。
变量权重:
在某些用例中,另一个常见的需求是能够为不同的变量提供不同的权重。例如,如果我们想监视用户长时间的服务器访问,但不关心他们的下载活动,这个扩展提供了有时间变量的能力,当与字节相关的变量,如下载和上传活动相比,贡献更多的马氏距离。设w是权重向量,其中wi是第i个变量的权重。这个想法是让第i个变量的方差增加一个因子wi。要实现这一点,请参阅表i中的步骤2。
离群值的鲁棒性:
对离群值的鲁棒性:使用公式1计算马氏距离有一个重要的实际缺点。由于μ和Σ的真实平均值通常是未知的,因此在实践中,人们使用数据集的经验估计。然而,协方差矩阵的估计对数据中异常值的存在非常敏感。有一些启发式的方法,目的是在数据集中找到一个纯粹的点子集,并排除异常值。迭代求出其协方差矩阵行列式最小的点[10],[11]。
由于上述原因和前面提到的其他原因,我们采用了一种使用SVD的替代方法来计算距离。然而,SVD对异常值也很敏感,由方程4得到的分解可能会因为X中存在异常值而发生倾斜。
我们从最近关于主成分分析(PCA,[1])的健壮版本的工作中获得了灵感。主成分分析(PCA)与奇异值分解(SVD)密切相关,是一种常用的降维和数据分析技术。给定一个带有噪声的测量矩阵(图像、传感器数据等),使用主成分分析(PCA)找到一个低秩矩阵,作为被测量量的真实值的代理。在噪声较小且噪声误差服从独立同分布的正态分布的假设下,这种方法很好地工作。在许多实际情况下并不是这样,健壮的PCA或RPCA[1]被引入来处理。
可解释的结果:
任何异常检测方案的一个重要方面是,不仅要识别异常,而且还要提供关于被检测点为何异常的信息。在我们的例子中,我们显示了每个变量对异常得分的贡献。
将距离映射到一个分数:
马氏距离不是从上面限制的,计算的距离可以是任意大的。然而,产品需求之一是为每个异常生成一个置信分数,该分数限定在区间[0,100]内。我们使用一个s形函数将马氏距离映射成一个置信度分数。
从用户反馈中学习:
我们还实现了一个可选功能,算法可以从用户那里获取反馈。对于给定的测试向量,用户可以提供关于计算的异常分数过高(在误报的情况下)或过低的反馈。不需要修改算法,就可以轻松实现假阳性处理。在III-B3节提到的算法中,我们确保训练集不包含任何异常值或异常值。当用户标记一个被算法评分为异常的测试向量时,这意味着测试向量可以被认为是基线的一部分。换句话说,我们可以使用这个标记为假阳性的测试向量作为训练数据的一部分。其想法是,保持假阳性数据的列表,并在训练期间包括它们,以确保类似的数据向量在未来不会引起异常。然而,这种方法不能扩展到用户认为生成的异常评分太低的情况
在本节中,我们提供Niara平台的概述,并描述UEBA模块体系结构和实现的细节。
Niara平台是一个企业安全分析解决方案,旨在威胁搜索、事件调查、内部威胁检测和相关用例。其目标是让安全分析人员自动检测绕过外围防御系统的内部攻击。诸如命令和控制、内部侦察、横向传播、特权升级和暗示潜在恶意活动的外逃等活动会被自动检测到。图2提供了平台概念架构的概述:
Entity 360:
这个平台的核心理念是Entity360的概念。与特定实体相关的所有信息——用户、IP地址或设备——来自各种数据源的信息被汇集在一起,在实体360中生成一个全面的风险概要。它提供了与实体相关联的所有增强安全信息的一致视觉表示。它旨在为安全分析师提供一键访问信息的机会,否则,这些信息将花费数小时或数天的时间在多个数据竖井中搜索,并作为任何调查和响应工作的一部分进行收集。综合entity360是一个多步骤的过程——第一步是在数据融合步骤中将来自各种数据源的信息汇集在一起,然后应用各种分析模块来提取特定的安全见解。
数据融合:该平台可以从各种网络和安全数据源(例如。、包、流、日志、文件、警报、威胁提要)。在数据融合过程中,将原始数据进行相关处理,使其更有意义(例如。例如,将IP地址与用户联系起来),并提炼为提供丰富上下文的摘要(例如。、认证和设备使用历史、端口-协议关系)。该平台建立在一个健壮的大数据架构上,可以处理来自不同来源的大规模数据的不同速度
分析:分析模块使用机器学习模型——有监督的和无监督的——来检测和识别对安全分析师重要的事件。这些模块有助于跟踪实体的总体风险评分。该平台中有几个分析模块,但它们大致可以分为两类——行为分析和我们所说的离散分析。离散分析模块大多基于有监督的机器学习算法,用于检测和识别已知的未知。例子包括识别恶意软件感染,可疑的可执行文件等。另一方面,行为分析模块大多基于无监督机器学习算法,以解决更复杂的问题,如检测未知的未知,恶意或受损害的内部人员。
事件和警报:当分析模块成功检测到恶意活动或异常时,它会触发事件。每个事件与一个或多个实体和带有两个分数,(我)严重程度评分所定义的安全分析师表示业务上下文和重要性,和(2)一个模块生成的信心得分,可以认为是一种概率检测模块是正确的。两个分数的值都在0到100的范围内。例如,分析师可以选择将所有行为事件的严重程度设置为100
图3总结了UEBA模块的架构。该体系结构支持其他类型的UEBA用例,但我们将重点关注基于SVD的服务器访问行为异常检测。分析师首先要配置用例通过指定(a)的实体类型关注——用户IP地址或设备,(b)的IP地址(es)或内部服务器的主机名(s)的兴趣,©使用的基线,可选(d)任何其他过滤数据。一个示例用例可以是监视财务组(附加数据过滤器)中的用户(实体)对内部财务服务器(感兴趣的服务器)的访问。此外,分析人员将定义要使用的特性,我们在第二节给出了示例特性。我们省略了用例配置工作流的细节,因为它超出了本文的范围。
整个工作流可以分为四个不同的阶段。我们将在下面逐一描述:
UEBA模块已经作为Niara平台的一部分部署在多个客户站点上。在本节中,我们展示了Niara内部网络在2015年11月至2016年1月3个月内收集的真实网络流量数据集的结果。整个数据集包含1,315,895,522(13亿)个原始数据记录,其中每条记录对应一个网络第4层会话。
我们给出了一个特定服务器访问行为用例的结果。我们通过指定服务器的IP和端口(8080)来跟踪对内部Jenkins服务器的访问。在这3个月的时间里,总共有362,791个对话是从不同的内部IP地址发送到Jenkins服务器的。我们将UEBA模块配置为使用对等和历史基线检测此用例的异常。总共产生了64个事件,其中39个是置信度大于60的警报。表II按基线类型显示了事件和警报的数量,图4显示了置信度分数的分布。
第一行显示当天收到警报的用户的功能,而其余行显示基线的功能。在顶部面板中,将对等点用作基线,而在底部面板中使用用户自己的历史功能。请注意,与同行相比,该行为是异常的,而与用户自己过去的行为相比,1月14日是正常的一天。该用户是Jenkins服务器的管理员,与同龄人相比,预期会出现行为偏差。“下载字节”功能是造成这种异常的最重要的功能。
本文介绍了Niara安全分析平台的用户与实体行为分析(UEBA)模块。我们提供了解决方案的概述,并详细介绍了基于svd的算法,用于检测安全分析师感兴趣的异常。我们描述了体系结构和实现细节,并展示了解决方案的有效性,以及在真实数据上的示例经验结果。该解决方案目前部署在多个客户站点,并为安全团队提供了更多关于其网络和用户的可见性和洞察力。就后续工作而言,我们已经概括了部署体系结构,使客户能够在他们选择的任意日志上自行配置新的用例。我们还用更多的机器学习模型增强了模块,并在真实世界的数据集上验证了它们。我们将在未来的论文中报道这些进展