腾讯御见UEBA背后的技术
2020-7-27 11:54:33 Author: mp.weixin.qq.com(查看原文) 阅读量:19 收藏

 引子:腾讯御见UEBA(用户实体行为分析)面向政企办公安全、数据安全治理、员工行为管理,使用一系列分析方法(统计学习、机器学习等高级分析方法)通过分析用户实体(用户、应用、设备、主机等)相关行为日志构建用户实体画像(静态画像、动态画像),然后基于用户实体画像进行风险检测、风险分析、风险评估,最终识别内部风险用户和风险实体。御见UEBA是单独的解决方案或产品,也可以作为一种高级分析能力或模块嵌入到御见SOC中。目前我们御见UEBA产品最新版本已经发布,上一篇文章我们结合最新版本对御见UEBA产品进行了简单介绍,本文将对腾讯御见UEBA相关技术进行介绍,有兴趣欢迎交流。

御见UEBA技术架构如下图所示,主要包括3个部分:数据采集,智能检测分析平台,行为风险评估。UEBA采集多源数据例如登录日志,访问日志,其他安全产品日志,流量数据等,并对多源日志进行关联、分析、检测,基于行为分析等多种方法识别政企内部的用户风险和业务风险。

1. 数据采集

UEBA采集的数据源主要有三类:登录日志;访问日志;其他日志。

登录日志:主要记录用户认证登录业务、系统或应用的行为日志。例如:IAM统一认证登录日志,IOA登录认证日志,VPN日志,核心业务登录日志,AD日志,LDAP日志等等;

访问日志:主要记录用户认证登录成功后访问业务、系统或应用产生的行为日志。例如:里约网关访问日志,IOA应用访问日志,堡垒机日志,数据库审计日志,门禁日志,其他核心业务访问日志等等;

其他日志:主要包括其他安全产品日志,流量日志。例如:DLP日志,IOA日志,威胁情报,flow数据,其他安全产品日志等等。

2. 智能检测分析平台

智能检测分析平台为UEBA提供了主要的关联检测分析能力,一方面智能检测模块在产品上以可配置的基线建模平台的形式提供了画像体系构建、行为建模能力;另一方面智能分析模块根据场景进行风险检测、风险评估,并且基于风险评估结果进行动态打分,最终用户实体将以风险分数排序的方式展示给运营人员。

智能检测和智能分析将通过自适应学习、在线学习、离线学习、集成学习、强化学习等方式学习预测。

3. 行为风险评估

行为风险评估主要包括根据特定场景风险评估和用户实体综合风险打分。特定场景风险主要对用户进行恶意用户分析、失陷用户分析、违规用户分析、离职员工风险分析,对业务进行业务滥用分析、数据泄露分析、业务异常分析、业务运行状态监控等分析,最后综合所有的特定场景风险以用户实体的维度综合风险评分。

智能检测分析平台为UEBA提供了主要的关联检测分析能力,智能检测分析平台主要包括4大部分:画像体系,行为建模,自适应风险评估,层次动态打分。智能检测分析平台首先关联多源日志构建画像体系,然后基于完备的画像体系进行行为建模,通过行为建模对用户实体进行行为风险评估,最终将所有用户实体风险事件送入层次动态打分机制,完成用户实体的最终风险评分。

1. 画像体系

御见UEBA分析的对象主要包括用户、设备、资产、应用等等,当多源日志接入以后会自动构建用户实体画像体系,持续丰富更新用户实体的静态画像和动态画像

用户实体静态画像:及时更新维护用户实体的静态信息,例如:用户身份、部门、岗位、权限、账号;设备归属;资产身份及重要性;应用敏感度等等。

用户实体动态画像:持续监控用户实体行为建立动态画像。

基于Spark计算引擎实时监控用户实体的行为统计提取行为特征,并通过机器学习算法基于分析对象行为特征建立历史基线画像、同类画像及动态分组;分析对象的行为不是静态不变而是随着时间动态变化的,统计画像、历史基线画像和同类画像就构成了分析对象的动态画像,用来刻画分析对象的动态个性。

动态画像例如:用户访问敏感数据的历史频次等等;用户当天访问某个资产的时间,地点,操作行为等等;资产与其他资产通信情况或用户访问资产情况等等;设备当前登录次数,使用状态等等。

2. 行为建模

画像体系构建,一方面实时更新一方面送入行为建模。因为接入海量的多源日志数据并且对每个用户和实体进行实时监控,单机有性能瓶颈问题所以我们基于大数据计算引擎Spark搭建了行为基线建模平台(可配置的基线建模平台),并且支持简单拖拽(不用编写代码)即可快速完成行为建模调试及生成环境上线。可配置的基线建模平台数据流图如下图所示,Spark读取多源数据,经过预处理、数据转换、特征提取、AI引擎、可解释性模块、决策引擎,完成整个行为基线建模流程。下面将通过基线建模、可解释性、时间序列、行为分析等方面介绍。

1) 分布式单体基线建模/群体基线建模

刻画一个用户或一个实体在某些场景下是否有异常,我们一方面可以分析用户实体的历史行为,对历史基线建模(比如1个月),如果当前用户实体行为偏离历史一个月的正常行为,那么我们需要关注分析对象是否出现行为偏离历史行为异常。另一方面可以分析用户同类行为,对同类基线建模(比如同组或者同岗位等),如果当前用户实体行为偏离同类行为,那么我们同样需要关注分析对象是否出现了偏离同类基线行为异常。无论是异于自身历史行为或同类行为,都应该引起关注,所以我们需要对每个分析对象建立同类基线及历史基线。

UEBA通过基于spark的行为基线建模平台分布式并行的对每一个分析对象(用户或应用等实体)基于历史基线建模和对同类基于群体基线建模。

单体基线建模:如上图所示,基线建模平台会根据场景自动收集历史一段时间日志(例如1个月),对每个分析对象历史行为建模,刻画用户历史正常行为模式,以用来预测识别当前分析对象的行为是否异常。

群体基线建模: 如上图所示,基线建模平台会根据场景自动收集分组日志(同组、同部门或同岗位等),对每个分组建立同类基线,客户用户同组正常行为模式,以用来预测识别当前分析对象的行为是否异常。

2) 可解释性

可解释性:企业场景下,为了客户快速定位威胁,检测结果必须具有可解释性。即模型既要有规则没有的发现未知的能力同时要像规则一样有较好的可解释性。

基于数据及检测场景特点,我们将行为建模算法主要分为两类:时间序列建模和行为分析建模。

时间序列建模的可解释性:时间序列有天然的可解释性,将时间序列数据及异常点可视化展示即可,如下图示例可见。

                离群点                                         拐点

行为分析建模的可解释性:我们在行为分析算法后增加z-score可解释性模块,用来解释模型。z-score 可解释性模块的输出是引起异常最重要的特征集合、特征值及偏离程度,这些指标能很好的解释模型结果。

3) 时间序列建模

时间序列建模是将历史数据在时间维度上按先后顺序构建时间序列,并通过一系列相关模型进行建模识别潜在模式,以便对后续数据进行预测或者异常检测。

根据时间序列本身的特点,我们将时间序列分为周期性的时间序列,和非周期性的时间序列。对不同类型的时间序列应用不同的算法建模。例如:周期性的时间序列应用STL, Holt-Winters等算法建模;非周期性的时间序列应用小波变换等算法建模。

根据时间序列异常类型不同,我们将时间序列异常区分为离群点异常,拐点异常,子序列异常。

时间序列建模加上异常检测可实现离群点检测拐点检测异常序列检测等功能。因不同特点的时间序列数据没法在同一个算法上达到最好的效果,所以这里的时间序列算法纳入了不同特点算法以适应不同类型的应用。

4) 行为分析建模

行为分析建模主要包括历史行为分析建模和同类行为分析建模两种模式。

基于历史行为分析建模:基于历史一段时间数据对每个对象建立历史基线,如果企业内部有10W个用户,那么行为分析建模模块会分布式建立10W个基线模型,以用来后续对每个用户识别异常行为。

基于同类行为分析建模:基于同类对象建立同类基线,每个分组建模一个基线模型,例如部门基线,岗位基线等等。

行为分析建模集成了多种算法例如基于推荐的、基于重构的、基于聚类的、基于半监督、有监督等算法,我们可以根据不同场景选择不同算法来快速完成行为分析建模。

1. 自适应风险评估

综合静态画像和动态画像完整的刻画了用户实体,基于画像数据进行行为建模、风险分析、风险评估等等。

用户风险评估:

基于用户画像根据不同场景进行风险评估,进而获得用户的登录风险;访问风险;账号权限滥用风险;数据外泄风险;特殊权限操作风险;账号失陷风险;敏感数据访问风险;数据访问异常风险等等。

用户风险评估将通过实时或离线的方式持续对每个用户的风险场景进行异常检测及关联打分,并最终以风险时间线的形式展示,以备后续进行运营调查。

设备、资产或应用风险评估:

基于应用、设备、资产或应用画像根据不同情况进行风险评估,例如:设备异地登录风险;大量新增设备风险;应用访问次数激增风险;资产外部告警风险;用户访问资产异常风险等等。

应用、设备、资产或应用风险评估将通过实时或离线方式持续对每个设备或资产的风险异常检测及关联打分,并最终以风险时间线的形式展示,以备后续基于风险评估运营调查。

1) 自适应学习
为什么需要自适应学习:

a. 风险评估不同客户不同模型:风险评估需要适配不同客户环境自适应学习,客户环境是复杂的,不同客户使用不同模型,要求我们需要根据客户真实数据训练模型,不能完全依赖模拟数据。

b. 风险评估同一客户不同环境不同模型:即使同一客户环境,风险评估也需要根据时间推移自适应学习, 客户环境下的数据并非静态不变而是动态变化的,例如员工权限变化、员工岗位变化、服务器角色的变更、服务器业务增删等等,这些变化都可能引起之前训练的模型失效。所以即使是同一客户环境下,我们也需要动态适配客户环境,根据时间推移自适应学习。

如何自适应学习:

自适应学习主要采取训练数据更新、模型自适应更新、动态评价三个步骤来实现:

a. 训练数据更新:基于滑动时间窗口将最近的数据纳入到训练数据中。比如:行为异常检测模型需要x天数据进行训练,每次训练使用最近的x天时间窗口的数据。

b. 模型自适应更新:时间序列异常检测我们根据任务调度间隔获取x周最新特征数据做训练同时检测。行为分析异常检测需要根据x天历史或同类行为数据训练,一般训练时间较长,我们根据反馈数据误报升高时动态更新模型。

c. 动态评价:内置场景检测在上线之前我们会对检测能力进行离线评价;然而真实客户环境比较复杂,往往会导致误报增加,如何在不同的客户环境下进行动态评价变得尤为重要。对一部分场景,检测模型会根据测试样例和每次的训练数据动态调整置信度参数控制误报情况。另外提供反馈机制,通过反馈自动学习。

2) 在线学习

UEBA一部分场景需要及时将风险呈现(例如几分钟之内),对于这部分场景风险评估采取在线学习方式,实时预测识别风险。如下图所示针对一部分实时场景,基于spark streaming在线学习从行为建模中读取实时模型,从画像体系中读取实时画像,在线预测识别风险。

3) 离线学习

UEBA一部分场景我们需要基于较长时间间隔的画像特征进行建模和预测,比如一天内用户访问行为等,那么我们需要离线建模及预测。如上图所示,基于Spark离线学习同样从行为建模中读取离线模型,从画像体系中读取离线画像特征,基于模型及离线数据识别风险。

4) 集成学习

集成学习可以通过集成多种算法同时对同一个风险场景学习预测,进行风险评估,以达降低误报、预测识别更精准的效果。例如我们可以同时集成单体基线建模和群体基线建模来综合评估用户实体风险。如下图所示:

2. 层次动态打分

经过风险评估以后,会识别出每个分析对象的风险场景及置信度。层次动态打分的输入是所有风险场景及置信度及重要性权重,输出是每个用户实体最终的风险分数。风险场景置信度由风险评估直接给出,风险场景的重要性一般是人工经验指定,但是在不同行业不同客户那里,相同的风险场景的重要性却相差较大。风险分的公式如下:

,其中risks指风险评估检测识别出的用户实体相关场景的风险集合,confidence指风险置信度,severity指风险严重程度,context指风险发生的上下文包括时间、前后关系等等,context主要通过影响severity来影响score。所以严重程度的权重对打分有很重要的作用

御见UEBA采用层次动态打分的机制,前期主要基于推荐及策略将人工经验融入其中进行风险权重调整再计算出风险总分。后期用户有了长期反馈以后,启动基于强化学习动态打分模型,自动调整风险场景权重及用户实体风险总分。

1) 基于推荐及策略的风险权重调整

基于策略的风险权重调整:

我们融入多种人工经验到策略中自动调整风险权重,例如:时间衰减;相同风险频繁出现动态降低权重;风险上下文命中自动增加权重等等。

基于推荐的风险权重调整

针对有些特定场景我们可以通过推荐的算法自动预测风险事件权重,例如:首次访问敏感数据风险;

基于推荐算法的主要思路是将用户和同类的历史访问行为及用户上下文信息考虑进去,利用推荐算法FM预测用户访问每个实体的概率。我们将这个概率作为首次访问敏感数据风险场景的重要性权重。

2) 基于强化学习动态打分模型

UEBA部署前期阶段有较少的反馈,所以我们主要通过推荐及策略的方式调整重要性权重进行打分。当后期随着运营人员不断的反馈,前期产生的权重将作为初始参数与反馈的结果一同进入到基于强化学习的动态打分模型中,模型通过持续的奖赏和惩罚,动态调整权重及风险分数。

腾讯御见UEBA主要围绕智能检测分析平台构建了支撑UEBA关联检测分析能力,智能检测分析平台首先关联多源日志构建画像体系,然后基于完备的画像体系进行行为建模,通过行为建模对用户实体进行行为风险评估,最终将所有用户实体风险事件送入层次动态打分机制,完成用户实体的最终风险评分。本文分别对画像体系,行为建模,自适应风险评估,层次动态打分进行了简单介绍,有兴趣欢迎交流。


文章来源: https://mp.weixin.qq.com/s?__biz=MzI2NDUyMjAyOA==&mid=2247484165&idx=1&sn=3ab7548e39de360b7e8f012ecce3f249&chksm=eaaa1346dddd9a50924aad0615df79b92cd0b2db09cc116d3f7d914097ca2d7ef2cce4d08cef&scene=58&subscene=0#rd
如有侵权请联系:admin#unsafe.sh