图6-3为对ip2 = 92. 243. 21. 205&num = 1进行分析得到的自相关系数序列图。
[0110] 图7-1为对ip2 = 58. 216. 16. 240&num = 1进行分析得到的相邻时间戳差分序列 图。
[0111] 图7-2为对ip2 = 58. 216. 16. 240&num = 1进行分析得到的时间差FFT变换后阈 值序列图。
[0112] 图7-3为对ip2 = 58. 216. 16. 240&num = 1进行分析得到的自相关系数序列图。
[0113] 图8为本发明实施例的木马检测系统的系统框图。
【具体实施方式】
[0114] 下面通过实施例的方式进一步说明本发明,但并不因此将本发明限制在所述的实 施例范围之中。
[0115] 实施例
[0116] 一种木马检测方法,参见图1,所述木马检测方法包括:
[0117] 步骤101、采集网络流量数据。将一天中(或者其它指定的一时间段内)网路环境 中的所有网络流量数据采集到本地,作为离线分析的样本数据。所述网络流量数据包括网 络流量信息的基本五元组(源ip地址、源ip端口、目的ip地址、目的ip端口和数据包的 长度)以及时间戳和协议号等信息。表1-1和表1-2分别示例性地列出了数据集test_ip 和数据集〇a_security中部分网络流量数据的部分字段信息:
[0118]表 1-1 数据集 testjp
[0123] -步骤102、对所述网络流量数据预处理,去除含有空值的网络流量数据。表1-1中 不存在含有空值的数据,所以没有需要删除的条目,而表1-2中id为450的数据的length 为NULL,所以此条目需要删除。
[0124] 步骤103、将预处理后的网络流量数据按照ip对分组。其中,将相互通信(包括 上行包以及下行包)的两个ip作为一个ip对,将相同的ip对分为一组。表1-1中id为 286-290的数据为同一组;表1-2中的数据分为四组,每一条各为一组。
[0125] 步骤104、将同一组ip对的数据包分别聚为一个或多个簇。具体地,包括分别对同 一组ip对的数据包执行以下步骤,参见图2,通过步骤1041-1045分别为每一组ip对设定 分隔阈值,然后利用设定的分隔阈值通过步骤1046分别对每一组ip执行包聚簇操作:
[0126] 步骤1041、获取该组ip对的前N个数据包中相邻的两个数据包的时间间隔,N为 小于或等于该组ip对的数据包的总数的正整数;
[0127] 步骤1042、计算该些时间间隔的平均时间间隔以及时间间隔标准差;
[0128] 步骤1043、从该些时间间隔中,去除大于平均时间间隔加Μ倍的时间间隔标准差 的时间间隔,Μ为正数,如Μ = 3 ;
[0129] 步骤1044、计算剩余的时间间隔的平均时间间隔以及时间间隔标准差;
[0130] 步骤1045、计算分隔阈值,分隔阈值等于步骤1044中计算出的平均时间间隔加步 骤1044中计算出的时间间隔标准差;
[0131] 步骤1046、将相邻的两个时间间隔小于所述分隔阈值的数据包聚为一个簇。
[0132] 步骤105、将由同一组ip对的数据包聚成的簇聚为一个或多个类。具体地,参见图 3,包括:
[0133] 步骤1051、获取同一组ip对的数据包聚成的簇的簇大小和簇长度;
[0134] 步骤1052、将簇大小和簇长度均相同的簇聚为一个类。
[0135] 步骤106、对聚成的类进行过滤。具体地,参见图4,通过以下步骤中的一种或多种 对聚成的类进行过滤:
[0136] 步骤1061、剔除包含簇的数量小于一数量阈值的类;
[0137] 步骤1062、根据每个类所代表的序列的时间间隔计算每个类对应的平均心跳间 隔,剔除平均心跳间隔小于一心跳间隔阈值的类;
[0138] 步骤1063、剔除所包含的簇的簇大小均为1的类。
[0139] 步骤107、将每一类对应的时间序列标准化,所述时间序列由类中的簇间隔构成。 标准化后所有时间序列均为同一量纲下的数据,本实施例采用min-max标准化,即将所有 值映射到(〇,1)的区间上,以方便后续的各个统计量的比较。min-max标准化的转换函数如 下:
[0140] X* = (χ-min) / (max-min)
[0141] 式中min为时间序列中的最小值,max为时间序列中的最大值,x为变换前的值, X*为变换后的值。
[0142] 步骤108、分别计算标准化后的时间序列的时序统计量。其中,计算的时序统计量 包括方差和不稳定度instability,不稳定度的计算公式如下:
[0144] 式中nk为类k中簇的个数,T kil为类k中簇按时间先后顺序排序后第i个簇的到 达时间,Tkil+1为类k中簇按时间先后顺序排序后第i+Ι个簇的到达时间,TM为类k中簇按 时间先后顺序排序后第〇个簇的到达时间。
[0145] 步骤109、筛选出时序统计量不在第一阈值范围内的时间序列作为木马序列,输出 木马ip。即,若方差小于方差阈值且不稳定度instability小于不稳定度阈值,则时间序列 为木马序列,在筛选出木马序列后,木马序列对应的ip对中一个ip为已知的ip (如客户端 的ip),另一个即为木马ip。
[0146] 以下列出两个数据集的不稳定度排名前列的ip列表:
[0147] 表2-1数据集test_ip不稳定度排名前四位
[0149] 表2-2数据集oa_security不稳定度排名前五位
[0151] 数据集中freq字段指示类中簇的数量,num为类中的簇的大小,size为簇的长度, instability为不稳定度,var为方差值。从表2-1中可以看出,在test_ip数据集中,排名 较高的是121. 42. 145. 4这个ip,其簇大小为3,簇长度为194。从表2-2可以看出,在oa_ security数据集中,排名较高的是92. 243. 21. 205这个ip,其簇大小为3。经检验,该两个 ip都为疑似的木马ip。
[0152] 为了进一步防止木马序列被遗漏,本实施例的木马检测方法还可以对步骤109筛 选剩下的时序统计量在第一阈值范围内的时间序列执行以下步骤:
[0153] 步骤110、分别计算标准化后的时间序列的频域统计量。具体地,参见图5,包括:
[0154] 步骤1101、对标准化后的时间序列进行离散傅立叶变换,得到一组傅立叶系数;
[0155] 步骤1102、分别用相位和振幅计算模值,形成一个新的序列;
[0156] 步骤1103、计算所述新的序列对应的自相关系数;
[0157] 步骤1104、剔除0阶的自相关系数,计算剩余的自相关系数的绝对值的均值。
[0158] 所述均值即为频域统计量,小于均值阈值即为不在第二阈值范围内。
[0159] 步骤111、筛选出频域统计量不在第二阈值范围内的时间序列作为木马序列,输出 木马ip。即若步骤1104计算的均值小于均值阈值,则时间序列为木马序列。
[0160] 从步骤110-111可以看出,虽然一些时间序列的时序统计量在第一阈值范围内但 是其频域统计量却不在第二阈值范围内,这样的时间序列同样可能是木马序列,存在木马 ip〇
[0161] 目前以 oa_security 数据集中 ip2 = 92. 243. 21. 205&num = 1 和 ip2 = 58. 216. 16. 240&num = 1这两组心跳行为为例说明。
[0162] # 对 ip2 = 92. 243. 21. 205&num = 1 进行分析
[0163] 由图6-1示出的相邻时间戳差分序列图可以看出,心跳间隔尚未展现平稳特性, 或出现平稳但不易观察,很难通过时域分析确定上述ip是否为木马ip。由图6-2示出的时 间差FFT变换后阈值序列图和图6-3示出的自相关系数序列图可以看出,经过FFT变换后 的域值随序号变化迅速出现平稳现象,自相关系数随阶数变化后迅速出现平稳现象(〇阶 自相关系数为1),确定了上述ip为木马ip。
[0164] # 对 ip2 = 58. 216. 16. 240&num = 1 进行分析
[0165] 由图7-1示出的相邻时间戳差分序列图可以看出,心跳间隔尚