发明内容
针对现有技术存在的上述不足,本发明的目的在于提供一种能够快速、及时地检测出蠕虫的基于接触跟踪链的Email蠕虫检测方法CTCBF(Contact-Tracing Chain BasedFramework)。
本发明的目的是这样实现的:一种Email蠕虫检测方法,包括如下步骤:
a、单点检测:将单点检测模块配置在网关上,利用网关实现对单个节点异常SMTP数据包的检测,分析单个节点的感染特征,然后利用差分熵检测出疑似Email蠕虫的异常节点;
b、多点跟踪检测:将多点跟踪模块配置在邮件服务器,通过分析单点检测模块检测出的异常节点之间的连接关系建立跟踪链,并对每条跟踪链进行跟踪检测,超过预设长度的跟踪链上的可疑节点被确定为感染节点。
进一步,所述单点检测的具体步骤包括:
a1)利用网关接收SMTP数据包,在一个检测时段内确定SMTP数据包分布序列V;
a2)利用熵值算法对分布序列V求熵值;
a3)确定阈值M,通过对每个终端用户长时间发送Email的习惯,确定一个平均值E,令M≥E,将序列V超出阈值M部分定义为新序列V′;
a4)利用熵值算法对分布序列V′求熵值;
a5)比较两个熵值相似度,求取差分熵值DH;
a6)定义一个固定的相似度阈值,当差分熵DH小于此相似度阈值时,将被检测网络节点认定为异常节点。
熵值计算能够体现在一个时间段内发送邮件数目的分布情况,只要M设置合理,可以作如下假设:定义V′为异常邮件部分,相似度为一个时间段内总的邮件分布的熵值和异常邮件分布的熵值相比较的结果,异常邮件数目越多,H(v′)越高,DH越小,则相似度越高。
相似度阈值是划分正常节点与异常节点的差分熵DH临界值,它能够体现单点检测的安全等级:相似度阈值定义得越高,差分熵DH临界值就相对增大,被认定为异常节点的网络节点数目相对增加,增强了系统的警惕性,则单点检测的安全等级就越高。相似度阈值可根据网络安全等级的要求自由设置。
进一步,多点跟踪检测的具体步骤包括:
b1)所有节点信息初始化,为每个节点开辟跟踪链缓冲区,同时将所有节点初始化为正常类型;
b2)服务器等待接收网关信息;
b3)基于单点检测的节点A出现感染特征,检测节点A的邮件地址和目标地址是否为同一邮件服务器,如果不是属于同一邮件服务器,则需要两个邮件服务期相互交换关于节点A的跟踪链信息;
b4)节点A如果是第一次出现感染特征,以该节点作为根节点建立跟踪链;
b5)更新节点A跟踪链缓冲区信息;
b6)以递归的方法更新所有与节点A相关联的节点缓冲区信息;
b7)另一节点B在接收到异常节点A发送的Email以后出现了同样的感染特征,则节点B作为节点A的子节点被加入跟踪链,跟踪链的长度增加一级,同时重复步骤b5和步骤b6;
b8)当跟踪链长度达到设定阈值K的时候,该跟踪链上的节点被确认为感染节点。
再进一步,阈值K采用动态设置,根据不同的网络感染等级来动态地改变阈值K的大小,动态阈值调整具体步骤包括:
①根据跟踪链单位时间段内增加的感染节点数目确定网络的感染等级,将典型的Email蠕虫传播周期分为三个传播时间段:初始期,上升期,饱和期;
②应用动态阈值算法,根据不同传播时间段动态改变跟踪链的阈值K;
③将动态阈值K反馈给跟踪模块。
相比现有技术,本发明具有如下优点:
1]将单点检测模块配置在网关上,将多点跟踪模块配置在邮件服务器上,这种分布式的结构能够减小邮件服务器负荷,提高检测的效率。
2]单点检测模块和多点跟踪模块相对独立,可以将其他的单点检测手段作为一种感染特征检测手段应用到系统中,系统具有很好的兼容性。
3]由于本系统检测基于对蠕虫传播过程的监控,所以能够快速、及时地检测出蠕虫的传播行为。
4]利用跟踪算法提高检测精度,在单个节点感染特征的基础上,通过分析节点之间的连接特征,从而确定真正的感染节点;相对于目前普遍采用的一些单点检测的方法,本系统增加了跟踪模块减小的误报率,提高了检测精度。
5]由于跟踪链的建立会使得检测出现一定的延迟性,本系统采用了动态阈值的方法平衡了检测精度和检测速度之间的关系。
6]该方法采用广泛应用于传染病检测的接触跟踪法,通过建立跟踪链对异常的Email传播过程进行监控,同时根据跟踪链的状态来确定Email蠕虫感染节点,为未知Email蠕虫的检测提供了一种新的模式。
具体实施方式
本发明系统结构如图2所示,演示了节点A通过Email蠕虫感染节点B、C、D的过程,时间序列t1<t2<t3...<t13<t14。在此过程中,网关1、网关2和网关3分别在t2、t6、t11时刻向邮件服务器发送了异常节点信息,由于节点D相对于节点A、B、C,属于不同的邮件服务器,所以分别在t7,t12时刻,邮件服务器1和邮件服务器2交换了异常节点信息。
参见图1,本发明提供一种Email蠕虫检测方法CTCBF(Contact-Tracing Chain BasedFramework):
a、单点检测,利用单点检测算法对于单个节点的感染特征进行检测;具体方法是:将单点检测模块配置在网关上,利用网关实现对单个节点异常SMTP数据包的检测,分析单个节点的感染特征,然后利用差分熵检测出疑似Email蠕虫的异常节点;
b、多点跟踪检测,利用跟踪算法提高检测精度,在单个节点感染特征的基础上,通过分析节点之间的连接特征,从而确定真正的感染节点;具体方法是:将多点跟踪模块配置在邮件服务器,通过分析单点检测模块检测出的异常节点之间的连接关系(两点之间发送Email的记录)建立跟踪链,并对每条跟踪链进行跟踪检测,超过预设长度的跟踪链上的可疑节点被确定为感染节点。
1、单点检测:
单点检测的具体步骤是:
a1)利用网关接收SMTP数据包,在一个检测时段内确定SMTP数据包分布序列V:
V(T)=<v(1),v(2),…,v(t),…,v(n)>,其中,v(t)为在时间段t中被检测节点与外部节点建立的连接数,T为序列V的长度;
a2)利用熵值算法对分布序列V求熵值:根据香农定理,定义V(T)的熵值为
a3)确定阈值M,通过对每个终端用户长时间发送Email的习惯,确定一个平均值E,令M≥E,将序列V超出阈值M部分定义为新序列V′:
V′(T′)=<v′(1),v′(2),…,v′(t),…,v′(n)>,
其中,v′(t)为v(t)中超出预先设定的阈值M的连接数,即v′(t)=max(0,v(t)-M),T′为序列V′的长度;
a4)利用熵值算法对分布序列V′求熵值:由v′(t)=max(0,v(t)-M)得到V′(T)的熵值为
a5)比较两个熵值相似度,求取差分熵值DH:DH=H(v)-H(v′);
a6)定义一个固定的相似度阈值,当差分熵DH小于此相似度阈值时,将被检测网络节点认定为异常节点。
熵值计算能够体现在一个时间段内发送邮件数目的分布情况,只要M设置合理,我们可以作如下假设:定义V′为异常邮件部分,相似度为一个时间段内总的邮件分布的熵值和异常邮件分布的熵值相比较的结果,异常邮件数目越多,H(v′)越高,DH越小,则相似度越高。
相似度阈值是划分正常节点与异常节点的差分熵DH临界值,它能够体现单点检测的安全等级:相似度阈值定义得越高,差分熵DH临界值就相对增大,被认定为异常节点的网络节点相对增加,增强了系统的警惕性,则单点检测的安全等级就越高。相似度阈值可根据网络安全等级的要求自由设置。
但仅通过单点检测方法得到的可疑节点数与真实的感染节点数还有一定误差。有些正常节点被误识别为异常节点,造成网络节点假阳性;有些感染节点没有被归类识别异常节点,造成网络节点假阴性。
假阳性和假阴性的数量高低与阈值M的大小有直接关系。当v(t)>>M的时候,DH→0,V(t)与V′(t)的相似度较高,假阳性的数量较高;当v(t)<<M的时候,DH由正常连接的序列分布决定,V(t)与V′(t)的相似度较低,就可能出现数量较高的假阴性。因此,M的大小对差分熵的结果有影响,M越小,DH也就越小,V(t)与V′(t)的相似度越高,假阳性数量越高。
M的值可以根据网络状况进行设置,但仅通过设置M值很难同时保证最低假阳性和最低假阴性,从而检测结果难免有一定误差。而多点跟踪检测能在单点检测的基础上提高检测精度,将单点检测与多点跟踪结合,便能够识别出假阳性的可疑节点,有效提高检测精度。所以,如果进一步进行多点跟踪检测,单点检测就允许出现较高的假阳性,不妨将M设置为一个较小的值。
2、多点跟踪检测:
多点跟踪检测的目的是在假阳性较高的单点检测机制的基础上,利用跟踪链提高检测精度。我们作如下定义:
定义1:网络中的任意节点r∈S都有可能与其他节点发生连接,并且成为任意跟踪链的根节点,所以每个节点设置S-1跟踪链存储空间。
定义2:网络中的任意节点i∈S,i≠r都有可能成为以r为根节点的跟踪链节点。任意节点状态可表示为函数Ai=f(Ci(r),Li(r),Pi(r)),i∈S,Ci(r)定义为节点i的类型,Li(r)定义为节点i相对于根节点r的级数,Pi(r)定义为节点i的父节点。
定义3:根据网络节点的行为特征,将节点划分为4个类型:正常类型(NS),连接类型(CS),可疑类型(SS),感染类型(IS):
NS:没有出现感染特征和连接特征。
CS:出现连接特征,但没有出现感染特征。
SS:出现了感染特征。
IS:出现过感染特征,所在跟踪链被确认为感染链。
在初始状态下,Li(r)=-1表示节点i没有被任何以r为根节点的跟踪链节点感染,当i=r时,Li(r)=0表示每个节点相对于自己都处于第0级,Pi=i将所有节点都初始化为根节点,每个初始节点的类型被定义为NS。
多点跟踪检测的具体步骤是:
b1)所有节点信息初始化,为每个节点开辟跟踪链缓冲区,同时将所有节点初始化为正常类型;
b2)服务器等待接收网关信息;
b3)基于单点检测的节点A出现感染特征,检测节点A的邮件地址和目标地址是否为同一邮件服务器,如果不是属于同一邮件服务器,则需要两个邮件服务期相互交换关于节点A的跟踪链信息;
b4)节点A如果是第一次出现感染特征,以该节点作为根节点建立跟踪链;
b5)更新节点A跟踪链缓冲区信息;
b6)以递归的方法更新所有与节点A相关联的节点缓冲区信息;
b7)另一节点B在接收到异常节点A发送的Email以后出现了同样的感染特征,则节点B作为节点A的子节点被加入跟踪链,跟踪链的长度增加一级,同时重复步骤b5和步骤b6;
b8)当跟踪链长度达到设定阈值K的时候,该跟踪链上的节点被确认为感染节点。
在多点跟踪检测中,阈值K可采用动态设置,根据不同的网络感染等级来动态地改变阈值K的大小:
①根据跟踪链单位时间段内增加的感染节点数目确定网络的感染等级,将典型的Email蠕虫传播周期分为三个传播时间段:初始期,上升期,饱和期。定义ΔI为单位时间段内增加的感染节点数目,用ΔI体现网络的感染等级。
初始期:感染的数目不多,被感染节点增长的速度不快,ΔI比较小,网络感染等级低。
上升期:感染的数目逐渐增多,被感染的节点增长速度急剧加快,ΔI迅速增大,网络感染等级增加。
饱和期:感染的数目增加的速度减慢,ΔI逐渐减小,网络感染等级逐渐降低。
动态设置阈值K的优势体现于:在网络感染等级较低的时候采用较大的阈值K以提高跟踪链的精度,减少误报率;在网络感染等级较高的时候采用较小的阈值K以提高跟踪链的速度,减少更多节点被感染的可能性。
②应用动态阈值算法,根据不同传播时间段动态改变跟踪链的阈值K,动态阈值算法定义为:
其中,ΔI(t)为当前传播时间段增加的感染节点数目,ΔI(t+1)为下一传播时间段增加的感染节点数目,K(t)为当前传播时间段设定的阈值,K(t+1)为下一传播时间段的阈值,Kmin和Kmax分别为阈值K的上限阈值和下限阈值。
③将动态阈值K反馈给跟踪模块。
下面结合附图和具体实施方式对本发明作进一步说明。