0%

僵尸网络检测技术——周期性检测算法

概述:僵尸主机通常会通过HTTP、DNS等协议主动向C&C服务器发出大量的请求,而这些请求通常会具有一定的周期性。本文介绍一种周期性检测算法来对IP地址是否具有周期性的DNS行为进行刻画,作为僵尸网络检测的角度之一。

僵尸网络DNS请求周期性

  虽然僵尸网络一般都具有一定的周期性,但是不同类型的僵尸网络的周期性也不相同,并且周期也并非一成不变,因此我们需要一种不需要任何先验知识,就能够对周期性进行刻画的算法,来对IP请求域名的周期性进行评价。

自循环检测算法

  对DNS对域名请求的周期性刻画首先需要我们在统计DNS信息时,构造一种IP-DomainName的序列结构,如下表所示。

IP-DomainName t1 t2 t3 t4 Tn
211.65.193.10_www.sina.com.cn 1 0 2 0 3
121.25.214.23_www.bing.com 0 0 1 0 0
131.12.11.21_cn.yahoo.com 0 5 0 4 2

  IP-DomainName作为统计标识,统计在统计时间T内,每一个小时间片t中IP请求域名的次数,统计时间T又连续的t1、t2、t3、…、tn时间片构成,这些时间片对应的访问次数构成一个长度为N的序列S,S描述了统计时间T内的DNS请求分布情况。

  循环自相关检测算法是一种不要任何统计具体间隔,而是通过分析IP-DomainName系列中对应的长度为N的序列S来确定其周期性的,具有不需要DNS请求周期间隔等先验知识、抗干扰和噪声能力等特点。循环自相关算法计算公式如下:

  其中,f(t)表示第t个时间片内IP对某个域名的访问次数,f(t+k)表示循环右移k步长之后的结果,卷积结果代表两者的相近程度。如果k正好是周期或者是周期的整数倍,那么结果r(k)的值就会非常大,反之则会非常小。

这里利用了卷积运算具有两个函数相似度越高,卷积值越大的特性

  但是上面的r(k)值并不能让我们对对IP对域名请求是否具有周期性具有一个清晰地认识,例如一个IP-DomainName的r(k)值为99,这个IP-Domain是否具有较强的周期性?因此需要我们对其进行进一步的刻画,观察发现r(k)具有下面的性质:

  可以推出:

  由上面的公式可知,可以用$\alpha(k)$来刻画周期性,其值越接近1说明周期性越强,越接近0则周期性越弱。

  我们在在实际使用的时候则可以设定阈值$\sigma$,设定的序列长度N之内的,分别计算$\alpha(k)$ (0<i<=N),取其中最大值与阈值$\sigma$进行比较,大于$\sigma$则认为其具有周期性,小于则认为其不具有明显的周期性。

序列S r(0) r(2) r(N-1) $\alpha(k)_{MAX}$ $\sigma$ Y/N
S1 689 20 701 1.0 0.80 Y
S2 99 20 18 0.63 0.80 N
S3 786 452 123 0.86 0.80 Y
参考文献
  • xxx
  • xxx