基于Spark的SOC ML检测平台是为企业安全运营人员打造的一站式机器学习检测服务平台,为用户提供从数据预处理、特征转换、特征提取、模型训练、模型预测、异常结果可视化到用户实时反馈的全流程可配置(无需编写代码)可直接运用于生产环境的智能威胁检测服务。SOC ML检测平台内置了多种适用于企业安全环境的数据预处理/特征提取方法和算法组件,同时检测平台融入了最新的行为分析检测思想,满足用户直接在生产环境实验及部署安全检测场景发现未知威胁和异常行为的需求。拖拽式任务流设计及提供的默认模型参数(沉淀了安全分析经验)让安全运营人员能轻松快速上手。本篇主要介绍基于SOCML检测平台的时间序列建模的一个外发DoS/DDos检测场景。
一、 SOC机器学习检测平台及时间序列建模简述
企业里的威胁检测主要针对细分安全场景进行检测,场景多且不同企业关注场景可能不同。我们针对于企业威胁检测的特点构建了统一的SOC机器学习检测平台,平台的目的有两个: 一是支撑SOC内置场景检测,丰富UEBA模块,增强SOC安全检测能力。二:提供客户自定义场景功能,以满足客户自定义场景发现未知威胁的能力。
基于SOC机器学习检测平台的内置检测场景:
关于SOC机器学习平台更详细的介绍见《智能威胁检测:基于Spark的SOC机器学习检测平台》
时间序列异常检测:
时间序列分析是将历史数据在时间维度上按先后顺序构建时间序列,并通过一系列相关模型进行建模识别潜在模式,以便对后续数据进行预测或者异常检测。
根据时间序列本身的特点,我们将时间序列分为周期性的时间序列,和非周期性的时间序列。对不同类型的时间序列应用不同的算法建模。例如:周期性的时间序列应用STL, Holt-Winters等算法建模;非周期性的时间序列应用小波变换等算法建模。
根据时间序列异常类型不同,我们将时间序列异常区分为离群点异常,拐点异常,子序列异常。
本文将介绍SOC机器学习平台支撑的一个内置场景检测:外发DoS/DDos检测。受感染/受控的内网设备向外网发送DoS攻击是不确定性事件,具有随机性,因此作为非周期性时间序列,我们期望基于历史数据的统计信息将拐点检测出来。所以我们主要基于非周期性建模+拐点检测识别外发DoS/DDos场景。
二、 外发DoS/DDos攻击(Outbound DoS/DDos)
外发DoS/DDos攻击是指受感染/受控的内网主机、服务器等终端设备向外网发动Dos/DDos攻击。受控设备变成肉鸡或傀儡机发送DoS/DDos攻击数据,导致内网网络流量异常,严重影响正常业务,同时也会受到网络监管部门的通报。
检测外发DoS/DDos攻击与检测入站流量DoS/DDos的区别在于:
1. 外发DoS/DDos的流量通常小于入站DoS/DDos攻击的网络流量,传统的静态阈值设定无法有效检测;
2. 外发DoS/DDos的攻击特征和入站DoS/DDos的攻击特征不完全相同,传统的规则匹配和行为分析不能完全套用,以SYN FLOOD攻击为例,发生SYN FLOOD攻击时,受害端服务器的TCP流量会出现大量的syn_rcvd状态,而发起攻击的网络环境则不会存在syn_rcvd状态,只会出现大量的syn_sent状态,因此需要重新分析制定。
目前业界的主要方案包括:基于主机行为的异常检测;基于流量的行为分析。其中基于主机行为的异常检测忽略了网络流量的特征维度,检测能力和可检测场景受限。基于流量的行为分析虽然有相对丰富的特征维度,但缺乏发现未知的能力,同时没有历史数据的分析和策略容易产生误报。
SOC+智能威胁检测针对外发DoS/DDos攻击给出的检测方案如下所示:
三、 检测方法
外发DoS/DDos检测的整体流程如下图所示:
3.1 离散小波变换(Discrete Wavelet Transform)
原始流量数据会包含许多干扰和冗余信息,为了能更好地分析数据,采用离散小波变换来对原始时间序列进行特征提取。
离散小波变换可以提取时间序列的频谱特性,在时频两域都具有表征信号局部特征的能力。原始数据通过离散小波后可以得到细节分量和近似分量。其中细节分量代表了原始数据中的高频部分,包含了原始信号的噪声等信息;近似分量为原始数据的低频部分,代表了原始信号的主要行为和信息。因此低频的近似分量更能反映出异常行为的变化。
为了更好地获取到原始数据的主要行为信息,采用金字塔递归算法,对原始数据进行多阶离散小波变换,获得k阶近似分量,如下图所示:
当阶数k越大,近似分量的主要趋势和主要信息越明显,但阶数太大会丢失太多细节信息,使得变化信息减少,不利于特征数据变化的判断。下图为1阶、5阶和7阶离散小波变换的结果,可以看到5阶变换能更好地描述反映时间序列的主要信息和数据变化,且没有多余的冗余信息和噪声。考虑到便捷性和计算代价,本方法使用了Haar离散小波变换。
3.2 动态阈值估算
基于离散小波变换的结果进行动态阈值的计算。假设输入时间序列数据长度为N,其中待检测时间段长度为n,n<N。则N-n长度的时间序列将作为历史数据进行训练得到动态阈值。一般而言,N为一周7天数据,n为小于等于一天的待检测时间段。则待检测时间段n中每个时间点x(t)都会有对应的历史数据时间点,比如当天12:10:00的阈值可以利用对应前i天的12:10:00数据进行阈值估计。计算公式如下:
(1)
(2)
(3)
(4)
(5)
(6)
其中,m表示有m天历史数据,C为标准差系数,用来调整动态阈值上限的范围b(t),最终获得利用历史数据获得的上限曲线b。最后,利用b曲线的最大值加上标准差来确定最终的异常阈值。
如上图所示,蓝线为待检测时间段,绿线为基于历史数据计算获得的上限b,红虚线为max(b),红点划线则为最终的异常阈值。
3.3 CUSUM检测
CUSUM(Cumulative Sum Control Chart)累积和控制图的设计思想是对样本数据信息加以累积,将过程的小偏移累积起来,达到放大的效果,从而提高检测过程中对小偏移的灵敏度。因此,CUSUM在时间序列中对于数据的突变和连续性有很好的检测能力。如下图所示,假设Xn为待检测数据, 为正常阈值曲线的最大值,即,则表示时间序列与正常阈值的差值,当时间序列不包含异常点的情况下, 均为负值。
当外发DDoS攻击发生时,特征值数据将有别于历史数据迅速发生突变,此时,变为正值。当超过异常阈值界限时,即,其中k表示变为正值时间点,将按照如下公式对异常值进行累加。
(7)
当累加值超过DDoS阈值时,则判定发生了外发DDoS行为。DDoS阈值如下式所示,其中t为常数系数。
(8)
此时,将记录发生外发DDoS的开始时间、结束时间、特征值总和、特征值最大值和特征值均值。
3.4 策略制定
由于Wavelet-CUSUM时间序列检测算法针对每一个src_ip自身的历史数据进行分析检测,因此当历史数据较为稀疏或者历史数据特征值较小的情况下,突增的小规模数据也会被判定为异常行为。为了降低误报,采用同类对比策略进行过滤。针对外发DoS/DDos的规则策略具体如下:
a. 获取算法检测为正常的白ip特征数据,获取其中的最大值以及均值。
b. 利用公式来作为同类正常特征数据的阈值界限,当异常ip的最大值小于阈值界限,则作为误报过滤排除;
通过该策略过滤后的异常结果将判定为外发DoS/DDos攻击进行告警。
四、 检测效果及可视化
1. 以实际网络中的一周实际流量作为测试数据,检测网络环境中是否存在外发syn flood攻击。我们提取syn_sent状态数作为主要特征值进行时间序列的检测,待检测时间段为最后一天(24小时)时间序列。以下为其中两个Src_ip的检测对比情况:
Src_ip1 | Src_ip2 | |
原始syn_sent包数图 | ||
离散小波变换 | ||
CUSUM检测 | ||
中间 结果 | 无异常 | |
策略 过滤 | 无异常 | 无异常 |
2. 为了检测算法的检测能力,以CIC DOS 2019开源数据集中的SYN FLOOD攻击数据为例,将开源数据的pcap文件回放获取flow记录,并与实际网络环境数据的整合成测试数据。
下图显示源IP的待检测时间段特征值,经过三阶Haar离散小波变换后的时间序列以及阈值预测(红色点划线为阈值,由于数据量问题,在图表中趋近于零)。
离散小波变换结果和阈值
下图显示在2019-11-23 11:20~2019-11-23 12:42 共82分钟内,源ip向外发送的syn_sent数量的时间序列图,其中红色线段表示算法检测出的外发DDoS情况。检测到外发开始于2019-11-23 12:24:00,结束于2019-11-23 12:39:00,总共发送了337906个syn_sent包,其中最大值为一分钟发送了48427个数据包,而实际的阈值范围只有83左右。这与实际插入的12:30:00~12:36:00时间段相符合。表明了该检测方法的检测能力和召回能力。
检测结果
(陈嘉豪、郭豪)
声明:本文来自腾讯安全智能,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。