基于Spark的SOC ML检测平台是为企业安全运营人员打造的一站式机器学习检测服务平台,为用户提供从数据预处理、特征转换、特征提取、模型训练、模型预测、异常结果可视化到用户实时反馈的全流程可配置(无需编写代码)可直接运用于生产环境的智能威胁检测服务。SOC ML检测平台内置了多种适用于企业安全环境的数据预处理/特征提取方法和算法组件,同时检测平台融入了最新的行为分析检测思想,满足用户直接在生产环境实验及部署安全检测场景发现未知威胁的需求。拖拽式任务流设计及提供的默认模型参数(沉淀了安全分析经验)让安全运营人员能轻松快速上手。

一、背景

1. 行业挑战

在过去,IDS、SOC/SIEM等大多数网络安全设备中的威胁检测能力主要依赖于各类规则。但随网络安全形势变化、攻防对抗的升级,传统的规则检测方式存在两方面的挑战:1)滞后的经验规则很难跟上持续多变的黑客的攻击脚步,缺乏对未知威胁的发现能力;2)此外,趋于复杂的攻击很难再用规则来定义检测模式,限制了威胁检测能力的扩展。因此,如何利用企业的各类日志、流量等数据来持续持续提升未知威胁发现能力,缩短MTTD,构建defense-in-depth的威胁检测框架成为SOC/SIEM等安全设施的要解决的重要问题之一。

除了威胁检测的问题以外,随着企业数据源越来越丰富,数据量也越来越大,例如流量数据, 日志数据等等,不管是存储还是分析单机性能没法满足。所以为了应对上述问题,我们构建了基于Spark的SOC机器学习检测平台,在提升检测能力的同时确保高性能、易部署和灵活易用的特性。

2. 基于Spark的SOC机器学习检测平台定位

检测内部威胁

提供大数据处理能力

Spark是专为大规模数据处理而设计的快速通用的计算引擎,我们基于Spark构建机器学习检测平台对企业内大量的流量及日志数据进行分析检测,一方面适应用户企业不断增大的数据规模。另一方面,分布式并行分析减少了威胁分析检测的时间,缩短了威胁发现周期,一定程度上为企业降低风险和损失。

机器学习检测异常发现未知

利用机器学习从行为上对实体或者用户进行学习及预测,一方面提供发现未知的能力,从Know Knows到 Know Unkonws/Unkown Unknown;

另一方面对历史或同类行为等上下文信息分析挖掘弥补单点检测问题。

企业里的威胁检测主要针对细分安全场景进行检测,场景多且不同企业关注场景可能不同。

支撑SOC内置场景检测: 构建适合于SOC场景的机器学习检测框架,支撑SOC内置的众多场景的威胁检测,丰富UEBA模块,增强SOC安全检测能力。

满足客户自定义场景发现未知需求提供多种异常检测算法模块,及端到端的检测流程,以画布拖拽形式方便用户快速利用机器学习检测异常,提供用户自定义场景检测发现未知的能力。

下面分别先介绍我们基于SOC ML平台的内置的检测场景,然后再详细介绍提支撑内置场景检测及供给用户使用的SOC机器学习平台。

二、SOC ML平台支撑的内置智能威胁检测场景

SOC ML平台从攻击链的视角构建威胁检测能力,尝试覆盖各个阶段中的攻击场景。

下面以Data Exfiltration阶段为例,简要介绍阶段场景及我们基于SOC机器学习做的一些检测场景。

Data Exfiltration:

数据泄漏是APT攻击链的最后一个阶段,当重要数据被攻击者获取以后,一般会将重要数据汇聚到某一台失陷主机上,然后攻击者通过各种方式将数据传回。数据传回的方式有可能通过隐蔽隧道进行传输,也可能通过其他方法直接将文件数据外发传出。

我们基于SOC机器学习检测框架对每台资产进行持续监控,检测数据汇聚行为,检测隐蔽通道传输行为和直接文件数据传输行为。

数据汇聚检测:基于TCP/UDP全流量,持续监控每个资产的数据汇集行为。

DNS隧道外发检测:基于DNS协议,持续监控所有资产的DNS访问行为,检测可疑的DNS隧道外发。

数据外发检测:基于TCP/UDP全流量,全面检测每个资产的外发流量,检测可疑的数据外发行为。

三、基于Spark的SOC机器学习检测平台

1.与其他机器学习平台的区别

与其他机器学习平台和框架相比,SOC机器学习检测框架聚焦在企业安全运营中的威胁发现能力构建,适用于企业安全环境。主要特性如下:

  • 主要采用无监督+策略的方法检测威胁

  • UEBA的检测思路

  • 检测结果具有可解释性

  • 可视化便于用户运营追溯

2. SOC机器学习检测框架

下面分别从检测思路,任务调度,特征提取,检测算法,策略几个方面介绍SOC机器学习检测框架:

1) 检测思路-UEBA

什么是UEBA(用户实体行为分析):UEBA是一种检测思想,基于用户实体的行为分析挖掘检测关联威胁,目前业内的UEBA被当作一款产品或者产品中的一个模块,实际上是根据这种检测思想+关联+用户实体排序构建的产品形态。目前御见SOC ML框架借鉴UEBA最新的检测思路,去快速覆盖更多E和U相关的威胁场景(由于御见的数据源多数为实体数据,所以场景多以E为主),最终沉淀为御见SOC的UEBA模块。

UEBA检测思路的特点:

持续监控每一个U/E:ML检测框架的pipeline基于Spark构建,借助于Spark分析引擎的大数据处理能力持续并行监控每一台服务器和用户的历史行为。

基于行为分析:基于U/E的历史行为和同类行为进行分析检测。不同于规则检测,ML检测框架主要基于U/E行为(历史或同类)去检测U/E发生在不同攻击阶段上的威胁;基于行为分析检测的思路使得威胁检测具有发现未知的能力,同时打破规则的单点检测,结合用户历史和同类行为最大程度上降低误报。

2) 任务调度

场景检测任务调度有两种:

① 手动立即调度

用户可手动运行画布中的整体任务流,或单独某一个模块上运行后续任务流,如果系统有资源,则调度程序将调用任务流上相关任务提交spark执行。

② 定时调度

当用户设置了定时调度,检测任务将根据算法训练周期,预测周期,数据周期等自动调度检测并输出结果。

3) 特征提取模块

特征提取模块分为两类:

① 其他任务已提取的特征数据,可复用

用户修改任务类型和检测方法,可以选择特征值。

② 从原始数据新建特征提取

平台提供统计间隔,数据过滤,特征转换函数,统计算子等方法。

任务类型/检测方法:用户首先需要选择任务类型和检测方法,目前平台提供时间序列历史,行为分析历史,行为分析同类三种组合。

检测目标:然后需要选取此次任务需要检测的目标,即主key和辅key。例如src_ip/ username等等。

统计间隔:选取特征统计间隔,1min-1hour,即对每个key隔多久利用统计算子统计特征。

转换函数选择:当字段值非数值型时,我们需要将它转换成算法需要的数值型,或者做特征直接转换。平台提供length, add,entropy,one_hot等30+种特征转换函数。

统计算子选择:基于统计间隔,统计计算特征值,平台提供Sum, Count, Avg, Max等6种计算算子。

4) 算法模块

算法库特点:

无监督 + 可解释性

时间序列建模(历史) + 行为分析建模(历史/同类)

无监督+可解释:

无监督:主要基于无监督而不是有监督,一方面企业中威胁检测场景众多,且大多数场景难获取足够量的真实的恶意样本做威胁检测,而模拟的样本数据无法代表真实数据样本空间覆盖有限,导致模型产生大量漏报;另一方面白样本更难获取,不同企业或同一企业不同网络环境都差别较大,白样本无法覆盖大多数情况,较容易产生大量误报。基于SOC威胁检测的这些特点,我们主要基于无监督做异常检测,同时通过策略降低误报。

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

时间序列建模(历史) +行为分析建模(历史/同类):

基于数据及检测场景特点,我们算法模块提供了数十种异常检测算法并将算法分为两类:时间序列异常检测;行为异常检测。

  • 时间序列异常检测算法

目前时间序列异常检测算法库内已实现封装了部分算法,后续将进一步丰富,并且尝试增加自动选择算法功能。时间序列建模加上异常检测可实现离群点检测,拐点检测,异常序列检测等功能。因不同特点的时间序列数据没法在同一个算法上达到最好的效果,所以这里的时间序列算法纳入了不同特点算法以适应不同类型的应用。例如:心跳检测运用FFT算法;数据汇聚/文件数据外发运用离群点检测SHESD算法等。

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

离群点

拐点

  • 行为异常检测算法

目前行为异常检测算法库内已实现封装了部分算法,例如基于推荐算法首次访问,基于重构的maha_svd算法等。

算法的可解释性要么模型本身有可解释性由算法模型直接给出,要么得到异常结果后回溯解释。

下面分别介绍基于推荐算法首次访问和maha_svd及其可解释性。

基于推荐算法可疑首次访问检测:

基于用户行为分析从流量数据中检测失陷主机或用户威胁场景检测是SOC ML框架的主要检测思路。而首次访问具有很好的可解释性,但是首次访问很容易引起大量误报。基于推荐算法首次访问的思路是将用户和同类的历史访问行为及用户上下文信息考虑进去,利用推荐算法FM给每个用户推荐它最有可能访问的服务器,当用户访问了推荐以外的服务器时,产生异常首次访问的告警。

这里主要运用的推荐算法是FM(Factorization Machines),FM的二阶多项式回归模型如下:

模型采用Markov Chain Monte Carlo(MCMC)方法训练优化。

基于推荐算法可疑首次访问检测的过程如下所示:

* 构建历史访问行为矩阵,行为每个用户,列为每个服务器,访问过值为1。

* 基于FM 训练优化,产生新的重构矩阵,之前未被访问服务器的位置填充数值,值越大表示服务器越有可能被用户访问。

* 用户首次访问的服务器如果模型预测值大于一定阈值表示很有可能被用户访问,则不生成异常事件,否则生成用户可疑首次访问事件。如图中红色位置0.8,表示模型预测用户很可能会访问这个服务器。

可解释性:首次访问本身就具有良好的解释性,首次访问即可疑。

maha_svd 异常检测算法:

算法思想:异常样本将偏离大多数白样本集,本算法通过计算单个样本和矩阵之间maha距离来判断异常,maha距离越大异常程度越高。

maha距离:

svd分解:

maha_svd:

算法流程如下:

* 获取N天的流量数据,提取检测场景相关的特征,构成正常流量矩阵

* 去噪:通过RPCA 过滤噪声数据

* 通过SVD矩阵分解计算马氏距离

* 基于马氏距离归一化打异常分值(0-100)

* 基于z-score 输出重要特征集

可解释性:maha_svd通过z-score输出重要特征作为异常结果解释,

maha_svd 计算maha距离基于均值协方差和z-score天然一致,在此模型中异常结果能得到很好的解释。

5) 策略模块

策略模块对算法模型检测出的异常结果进行降误报,平台目前提供5种策略方法:

  • Ensemble: 多个模型集成对每个异常key(host或用户)综合打分,提高精度。

  • 静态策略:基于异常结果构造策略。

  • 白名单: 定制白名单,用户可通过页面交互,增减白名单内容。

  • TopN:根据用户需要,对每个异常key打分排序,只展示TopN的结果。

  • 置信度:平台会对每个检测的key打一个置信度的分值,可调整置信度分值。

四、实践tricks

当我们过去在客户环境下做威胁场景检测碰到了一些问题,比如离线测试具有较低的误报率,但客户环境比较复杂,会引起更多误报。我们结合机器学习框架做了一些调整,被将这些经验融入到了SOC机器学习框架中去,下面举几个例子:

模型更新:ML检测框架是在客户环境下基于客户数据训练,客户环境下的数据并非固定不变而是动态变化的,所以我们的场景检测需要动态适配客户环境,就要求我们按照一定策略动态更新模型。

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

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

动态评价:内置场景检测在上线之前我们会对检测能力进行离线评价;然而真实客户环境比较复杂,往往会导致误报增加,如何在不同的客户环境下进行动态评价变得尤为重要。对一部分检测场景,我们可以离线拿到少量的恶意样本或在线反馈恶意数据。

我们将恶意样本作为测试样例上传到对应的场景检测作为我们模型输入的一部分,检测模型会根据测试样例和每次的训练数据动态调整置信度参数控制误报情况。

模型鲁棒性:客户环境复杂,一般模型产生好的效果往往有预先设定的条件。例如一些异常检测算法需要正常数据做训练,并且复杂场景需要提取多维特征,我们期望模型检测出的异常是基于多维特征综合的结果,而非被单个极端异常特征带偏。真实环境复杂攻击者可能会对数据噪声污染影响模型训练,进而绕过检测。也可能通过特征干扰影响检测,使得真正恶意数据隐藏在大量误报中。

数据噪声污染:数据噪声在全部训练数据占小部分,我们通过rpca等异常检测方法过滤掉噪声数据再进行训练;数据噪声在全部训练数据占大部分,普通的异常检测方法已经没法过滤掉。我们会通过测试用例得到的动态评价效果来决定是否这次训练有效,动态评价没有达到标准,此次训练无效,直到下次训练滑动窗口内的训练数据得到的模型使得动态评价满足条件为止。

特征干扰:特征截断。为了避免单个特征数值过大导致模型仅受单个特征影响,干扰检测效果,我们根据训练数据中每维特征的均值方差做特征截断,限制单个特征对模型的影响。

五、总结

本文首先简单介绍了构建基于Spark的SOC机器学习检测平台的背景及定位,并重点介绍了SOC ML支撑的内置智能威胁检测场景及平台本身的介绍,最后举了几个客户侧碰到的问题以及将相关经验融入到SOC ML框架中去。由于篇幅有限,后续将持续更新基于SOC ML框架的内置场景检测的具体做法,比如如何检测DNS隧道,数据汇聚,可疑登录等场景。

目前越来越多的安全厂商在智能安全上布局,但业界尚未有开放给用户使用的适应于SOC安全场景的机器学习检测平台。我们一直以来持续的在智能安全上不断探索尝试,并将积累的经验融入到SOC安全检测中构建了SOC机器学习检测平台。它一方面支持我们SOC内置的安全场景检测,支撑打造UEBA模块。另一方面,赋能企业提供给企业安全运营人员快速上手,自定义场景发现未知威胁。(郭豪、陈嘉豪)

声明:本文来自腾讯安全智能,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。