一种僵尸程序的检测方法

文档序号:6333574阅读:435来源:国知局
专利名称:一种僵尸程序的检测方法
技术领域
本发明涉及信息系统安全领域,尤其是一种基于免疫的僵尸程序的检测方法。
背景技术
传统的计算机病毒检测主要是基于特征码技术,仅当其特征库中事先保存有病毒 的特征码的情况下才能检测到,否则病毒将会逃过检测。僵尸程序是在传统计算机病毒、木 马和蠕虫基础上发展而成的一种新型计算机恶意代码程序,在僵尸程序中融合了加密、变 异、防查杀等多种防护机制,尤其是僵尸程序采用变异多态技术,在每次感染过程中均生成 一个新样本,给传统计算机病毒检测技术带来了很大挑战。公开号为CN101404658的中国专利申请案,公开了一种检测僵尸网络的方法,其 方法可以对整个僵尸网络进行整体的分析和防御。其检测僵尸网络的方法为首先从网络 数据包中提取出IRC协议数据;然后将协议数据与数据特征库中的特征码进行匹配,获取 僵尸网络数据包;最后在确定同一僵尸网络中的控制服务器、僵尸计算机、僵尸网络控制计 算机。该方法存在以下缺陷①仅能检测基于IRC协议的僵尸网络,通用性差;②仅能检测 未加密的僵尸网络,对于加密命令和控制通道的僵尸网络无能为力;③基于特征码技术检 测,不能检测已知僵尸网络的变种或新的僵尸网络,适应性差。

发明内容
本发明的目的是针对现有技术在僵尸程序的检测上存在的缺点,提出一种基于免 疫的僵尸程序检测方法,该方法不仅能识别已知的僵尸程序,而且通过自我学习与进化,能 在实时变化的计算机环境中发现新的僵尸程序或已知僵尸程序的变种,有效地解决了传统 计算机病毒特征码库无法与多态僵尸程序同步的突出矛盾。本发明为基于自然界生物体的免疫功能提出的发明,其原理如下自然界生物在 与外界细菌、病毒等病原体长期斗争的过程中,进化出了一套独特的保护机制——免疫保 护机制,它能有效地保护生物机体免遭外界病原体的侵害,并具有耐受性、自学习、分布式 并行处理、多样性、自组织、鲁棒性、自适应和免疫记忆等优良特性。生物免疫系统能记住以 前的病原体,当这些病原体进入生物体内,免疫细胞迅速克隆扩增,释放出大量的抗体来捕 获抗原。当新的病原体进入生物体内时,免疫系统迅速通过高频变异的自学习机制,进化出 高亲和力的免疫细胞,高和力的免疫细胞迅速克隆扩增以消灭抗原,高新和力的免疫细胞 进化成为记忆细胞,在下一次遭遇同样抗原时迅速做出反应。同时,生物免疫采用否定选择 机制巧妙地解决了免疫系统攻击自身的问题,即误杀的问题。为了更好的说明本发明所述的技术方案,须按如下方式定义系统中使用的一些名 词、符号以及一些公式
程序集合设字符串集合Ω= (αι}',有程序集合 。定义正常程序 ,僵
EcQBcE
尸程序Jf c 5,有5门-V = Φ JυM = S。正常程序i 的状态向量集合FtCiU,僵尸等恶意
4程序I的状态向量集合K1CU ’有力η Fm = Φ, Fi u Vlli = U。抗体基因抗体基因为从正常程序中提取的二进制字符串,定义长度为/的抗体 基因集合^^为= H eA-NI = U e对,其中/为抗体基因长度(单位为字节), #为自然数,集合化为从正常程序中提取的二进制字符串。抗体基因库由不同抗体基因长度的抗体基因集合组成了抗体基因库 Agd =AgdkuAgdhu,L ,UAgdlm ,其中Ii e F,i = IL η为抗体基因长度,#为自然数。抗体基
因库用于提取程序的特征,包括正常程序和僵尸程序的程序特征。自体定义自体集合S为S =、s = (αΚΓ )μ e CV c巧e i },其中G为从 正常程序中提取的状态向量集合,《/为自体元素自体半径。检测器定义检测器集合为 = P ifh,rd、\ch € U,rd e i ;),其中为检测器检 测半径。本发明的目的是基于上述的原理,提出一种僵尸程序检测方法,包括以下步骤 一种僵尸程序的检测方法,包括提取正常程序集合B的抗体基因构建抗体基因集合
J#//,并由不同抗体基因长度的抗体基因集合J^//组成抗体基因库JM的步骤;用抗体基因 集合J^Z7对正常程序集合B’进行特征提取构建正常程序状态模型的步骤;由正常程序状 态集合G生成检测器,并由检测器生成检测器集合;由检测器集合检测僵尸程序的步骤。上述抗体基因集合J^Z7构建的方法包括步骤S101,初始化抗体基因长度为1字 节,初始抗体基因集合J^z7为空,变量i为1 ;步骤S102,对正常程序集合B的第i个程序 為提取长度为1的字符串& ;步骤S103,判断字符串力是否已包含于抗体基因集合J^/7, 若是,则i=i+l并返回执行步骤S102,否则进行步骤S104,将字符串力添加到抗体基因集 合Md1 ;步骤S105,判断程序為是否为正常程序集合B的最后一个程序,若是则结束,否则 i=i+l并返回执行步骤102。上述构建正常程序状态模型的步骤包括步骤S201,初始化自体元素自体半径r, 正常程序集合B’ ;步骤S202,依次用抗体基因库的每个抗体集合对正常程序集合B’的每个 程序提取程序特征c,得到其正常程序状态集合G ;步骤S203,由正常程序特征集合C;和自 体元素自体半径r构建正常程序状态模型。所述由正常程序特征集合C;和自体半径r构 建正常程序状态模型的方法如果一个程序与正常程序特征集合G中的一个程序的欧几里 德距离小于或等于自体元素自体半径r,则该正常程序,否则为僵尸程序。上述由正常程序状态集合C;生成检测器的步骤包括步骤S301,初始化正常程序 的自体半径rd为r,变量χ等于最大值MAX;步骤S302,随即生成一个检测器d ;步骤S303, 计算检测器d与正常程序状态集合Cb中的任何一个程序的间的欧几里德距离f,如果f小 于变量X,则变量χ的值更新为f ;步骤S304,在遍历完整个正常程序状态集合C;后,判断变 量χ的值是否小于或等于自体半径r,若是,则d为一个非法的检测器,予以舍弃,否则d为 一个合法的检测器予以保留,并得到该检测器的检测半径d. rd,检测器的检测半径d. rd为 变量χ与自体半径r的差值。上述由检测器检测僵尸程序的步骤包括步骤S401,对待检程序e进行程序特征提取;步骤S402,计算检测器集合中每一个检测器与待检程序特征的距离χ’;步骤S403,判 断X’是否小于或等于检测器的检测半径d. rd,若是,则待检测程序e为僵尸程序,否则待检 测程序e为正常程序。前述程序特征的提取方法包括步骤Sal,初始化抗体基因长度为1字节,计 数器Coimtb=Q和COimtm=Q ;步骤Sa2,对待提取程序特征集合的程序,依次提取长度为 1字节的字符串s;步骤Sa3,判断字符串s是否已存在于抗体基因集合J^Z7,若是,则 卯&= 卯&+1,否则COuntm=COuntm+Y ;步骤Sa4,判断待提取程序特征的程序是否已遍 历完,若不是,则返回步骤Sa2,否则进行步骤Sa5,计算待提取程序特征的特征值c,C= coun tj (coun tb—coun tm ) 0上述抗体基因库根据计算机程序的动态变化进行动态的演化,检测器根据抗体基 因库的动态演化进行动态演化。由于本发明采用了以上的技术方案,因此本发明可以达到以下的有益技术效果 本发明公开的僵尸程序检测方法,不仅能识别已知的僵尸程序,而且通过自我学习与进化, 能在实时变化的计算机环境中发现新的僵尸程序或已知僵尸程序的变种,有效地解决了传 统计算机病毒特征码库无法与多态僵尸程序同步的突出矛盾。


本发明将通过例子并参照附图的方式说明,其中 图1是本发明僵尸程序检测的系统架构图。图2是构建抗体基因库的流程图。图3是正常程序集合的程序特征提取的步骤。图4是构建正常程序状态模型的流程图。图5是检测器生成流程图。图6是检测器检测僵尸程序的流程图。
具体实施例方式本说明书中公开的所有特征,或公开的所有方法或过程中的步骤,除了互相排斥 的特征和/或步骤以外,均可以以任何方式组合。本说明书(包括任何附加权利要求、摘要和附图)中公开的任一特征,除非特别叙 述,均可被其他等效或具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只 是一系列等效或类似特征中的一个例子而已。本发明僵尸程序检测的系统架构图如图1所示,一种僵尸程序的检测方法,包括 提取正常程序集合B的抗体基因构建抗体基因集合,并由不同抗体基因长度的抗体基 因集合J^Z7组成抗体基因库JM的步骤;用抗体基因集合J^Z7对正常程序集合B’进行特 征提取构建正常程序状态模型的步骤;由正常程序状态集合G生成检测器,并由检测器生 成检测器集合;由检测器集合检测僵尸程序的步骤。上述抗体基因库根据计算机程序的动态变化进行动态的演化,检测器根据抗体基 因库的动态演化进行动态演化。抗体基因库和检测器的演化过程反映了实际计算机环境的 变化,待检测程序经过程序特征提取以被检测器进行检测判断是否是僵尸程序。
上述抗体基因集合构建的流程图如图2所示,抗体基因集合J^Z7构建方法包括 步骤S101,初始化抗体基因长度为1字节,初始抗体基因集合J^Z7为空,变量i为1 ; 步骤S102,对正常程序集合B的第i个程序Cli提取长度为1的字符串^,每次滑动一
个字节;
步骤S103,判断字符串力是否已包含于抗体基因集合J识//,若是,则i=i+l并返回执行 步骤S102,否则进行
步骤S104,将字符串Si添加到抗体基因集合J^Z7 ;
步骤S105,判断程序為是否为正常程序集合B的最后一个程序,若是则结束,否则 i=i+l并返回执行步骤102。抗体基因提取及抗体基因库的构建可用方程(1)至(2)来描述 Agdl = I ad e= I,I e ΛΓ|⑴
W
A = U U [脚戏(2)
其中ι为抗体基因长度(单位为字节),#为自然数,集合込为正常程序中提取的二进制 字符串,如方程(2)所示。其中函数/;⑦,i,乃执行提取程序中二进制串的操作,即从程序
b e B,的位置i提取长度为1的二进制字符串s (位置i可以是字节位,即基因提取过程为
从正常程序开始依次提取固定长的短二进制字符串,每次滑动一个字节,直到程序结尾)。上述构建正常程序状态模型的流程图如图3所示,构建正常程序状态模型的步骤 包括
步骤S201,初始化自体元素自体半径r,正常程序集合B,;
步骤S202,依次用抗体基因库的每个抗体集合对正常程序集合B’的每个程序提取程 序特征c,得到其正常程序状态集合C;;所述提取程序特征c的流程图如图4所示,提取程 序特征c的步骤包括
(1)初始化抗体基因长度为1,单位是字节,置初始计数器COimtb=Q和count外(2) 对待提取程序特征的程序力,依次提取长度为/的字符串S。如果字符串 属于抗体基因长度为7的抗体基因集合J识//,则计数器⑶加1,否则计数器⑶卯‘加 1。直至程序力的最后一个字符串。(3)计算程序力的特征C=COffi (com O。程序特征的提取可用方程(3)至(4)来描述。(4)
其中、,I = IX 为抗体基因库&从程序^丑中提取的特征信息,/?为程序特征 的维数;函数义(AjgO为特征信息提取操作,如方程式⑷所示,函数Λ(ΑΛ〖)为从程序
中提取二进制串操作,从不同基因,i = 提取的特征信息组成了程序状态向量。步骤S203,由正常程序特征集合Cb和自体元素自体半径r构建正常程序状态模 型。所述由正常程序特征集合G和自体半径r构建正常程序状态模型的方法如果一个程 序与正常程序特征集合G中的一个程序的欧几里德距离小于或等于自体元素自体半径r, 则该正常程序,否则为僵尸程序。上述检测器生成的流程图如图5所示,上述由检测器检测僵尸程序的步骤包括 (1)初始化正常程序的自体半径为r,变量χ等于最大值MAX。(2)随机生成一个检测器 /。(3)计算检测器i/与正常程序状态集合C;中的任一个元素c间的欧几里德距离 f,如果/小于χ则χ值新值八(4)如果编历完集合C;后^小于等于自体半径r,则说明该检测器位于正常程序 空间内,是一个非法的检测器;否则d是一个合法的检测器。(5) 对于生成的合法检测器^为了防止该检测器检测到正常程序产生误报,其 检测半径由与该检测器距离最近的正常程序决定。而变量X记录了与该检测器最近的正常 程序的距离,因此该检测器的检测半径 /. /=Ζ"Γ。上述检测器检测检测僵尸程序的流程图如图6所示,由检测器检测僵尸程序的步 骤包括
(1)对待检程序e进行程序特征提取;其特征提取流程与图2所示流程相同。(2)计算检测器集合中每一个检测器与待检程序特征的距离X’。(3)判断χ’是否小于或等于检测器的检测半径d. rd,若是,则待检测程序e为僵 尸程序,否则待检测程序e为正常程序。方程(5)描述了检测过程。
「0,iff Vrf € DΛ fd(d,e) > d.rd/^iiiW = I1n ,,,,(5)
11, itr ds € UΛ Ji (a ,s) < dra
当函数等于0,表示该程序不在检测器的检测范围之内,则该程序为正常 程序;当函数/—“⑷等于1,表示有检测器检测到该程序,则该程序为僵尸程序;函数 fd{x,y)为χ和_7之间的欧几里德距离。
本发明在实际的应用中,计算机程序经常会被安装和卸载。为适应计算机程序的 动态变化,与之相对应的抗体基库也应动态变化,抗体基因库的变化会导致正常程序状态 模型和检测器的变化,通过这些变化能进一步提高检测率和降低误报率。抗体基因库的具 体演化步骤如下
(1) 设置初始的抗体基因库的步骤按图1的抗体基因的提取步骤对初始程序提取 抗体基因得到初始的抗体基因库JM。(2) 补充新安装程序的抗体基因的步骤当新安装计算机程序时,对这些新安 装的计算机程序按照图2的抗体基因提取步骤进行抗体基因的提取,并加入到抗体基因库 ¥中。(3)删除卸载程序的抗体基因的步骤当删除计算机程序时,对这些删除的计算 机程序按照图1的抗体基因提取步骤提取抗体基因,并将这些抗体基因从抗体基因库JM 中删除。抗体基因库的演化情况可用方程(6)和(7)来描述。
Γ B(O),£=05(0 = 1(6)
w、J 械0), =0,、
Agd(i) = i(7)
方程(6)中,Biff)为初始时刻的正常程序,Bit) (t>0) hkB(t-l)进化而来-,Bner(t)为 t时刻新增加的正常程序,如新安装的程序等,BunloadH)为卸载的程序从正常程序中删除。 由于正常程序的动态进化,从正常程序中提取的抗体基因也随之进化,方程(7)描述了抗 体基因库的动态演化。其中JM(O)为从初始正常程序A(O)中提取的抗体基因, 为从新增加的正常程序尾中提取的抗体基因添加到抗体基因库中,同时删除卸载程序 Bunlo3At)的抗体基因⑴。与计算机程序变化导致抗体基因库的变化相对应,检测器也应动态演化以适应这 些变化。检测器的演化包括如下
(1)设置初始检测器的步骤基于初始的抗体基因库和图4的检测器生成步骤生成初 始的检测器。(2)保留合法检测器的步骤如果检测器没有位于正常程序空间内,并且该检测 器没有检测到正常程序,则说明该检测器是一个合法的检测器,应该保留。(3) 更新不合适检测器的步骤如果检测器没有位于正常程序空间内,但该检测 器能检测到正常程序,则应重新计算该检测器的检测半径。(4)淘汰非法检测器的步骤如果检测器位于正常程序空间内,则直接删除该检 测器。(5)补充新检测器的步骤调用检测器生成步骤(见图5),补充新的检测器。检测器的演化可用方程(S)-(Il)来描述。
fM(0),I=OAf ( =,(8)
9Mmieive(i-l) = {x|xe Mmserve(I-I)^seS(i), Ji(κ,ε) > x.rd + srd](9)
MM ds^(t) = {x|x eM(i_ 1乂 彐s €S(t), fd(x, s) < x.rd + s.rd, xrd = fd(s, x)-srd]
(10)
MmJf) = {x\xe M、i — 1),i e S(I)Ji(x,s) <s.rd](11)
其中1(0)为初始的检测器,I⑴( >0)从M(t-l)进化而来。Mreserre ( -l)为 -l时刻 的没有覆盖自体元素的检测器不用改变。Mupdate(X)为需要更新的检测器,这些检测器是覆 盖了部分的自体元素空间,则减少检测半径。U为新增加的通过自体耐受的检测器。 MdeleteU)为落在了自体元素空间内的检测器,则应该删除。通过动态调整覆盖异常空间的 检测器,增强了模型的自学习和自适应能力;同时将通过自体耐受的新的检测器添加到检 测器集合中,有效地提高模型的检测率并能降地误报率。 本发明并不局限于前述的具体实施方式
。本发明扩展到任何在本说明书中披露的 新特征或任何新的组合,以及披露的任一新的方法或过程的步骤或任何新的组合。
权利要求
一种僵尸程序的检测方法,其特征在于,包括提取正常程序集合B的抗体基因构建抗体基因集合Agdl,并由不同抗体基因长度的抗体基因集合Agdl组成抗体基因库Agd的步骤;用抗体基因集合Agdl对正常程序集合B’进行特征提取构建正常程序状态模型的步骤;由正常程序状态集合Cb生成检测器,并由检测器生成检测器集合;由检测器集合检测僵尸程序的步骤。
2.根据权利要求1所述的僵尸程序的检测方法,其特征在于,所述抗体基因集合J^Z7 构建的方法包括步骤S101,初始化抗体基因长度为1字节,初始抗体基因集合J^Z7为空,变量i为1 ; 步骤S102,对正常程序集合B的第i个程序為提取长度为1的字符串Si ; 步骤S103,判断字符串力是否已包含于抗体基因集合J识//,若是,则i=i+l并返回执行 步骤S102,否则进行步骤S104,将字符串Si添加到抗体基因集合J^Z7 ;步骤S105,判断程序為是否为正常程序集合B的最后一个程序,若是则结束,否则 i=i+l并返回执行步骤102。
3.根据权利要求1所述的僵尸程序的检测方法,其特征在于,所述构建正常程序状态 模型的步骤包括步骤S201,初始化自体元素自体半径r,正常程序集合B’ ;步骤S202,依次用抗体基因库的每个抗体集合对正常程序集合B’的每个程序提取程 序特征c,得到其正常程序状态集合C;;步骤S203,由正常程序特征集合Cb和自体元素自体半径r构建正常程序状态模型。
4.根据权利要求3所述的僵尸程序的检测方法,其特征在于,所述由正常程序特征集 合G和自体半径r构建正常程序状态模型的方法如果一个程序与正常程序特征集合C;中 的一个程序的欧几里德距离小于或等于自体元素自体半径r,则该正常程序,否则为僵尸程 序。
5.根据权利要求1所述的僵尸程序的检测方法,其特征在于,所述由正常程序状态集 合G生成检测器的步骤包括步骤S301,初始化正常程序的自体半径rd为r,变量χ等于最大值MAX; 步骤S302,随即生成一个检测器d ;步骤S303,计算检测器d与正常程序状态集合C;中的任何一个程序的间的欧几里德距 离f,如果f小于变量X,则变量χ的值更新为f ;步骤S304,在遍历完整个正常程序状态集合Cb后,判断变量χ的值是否小于或等于自 体半径r,若是,则d为一个非法的检测器,予以舍弃,否则d为一个合法的检测器予以保留, 并得到该检测器的检测半径d. rd。
6.根据权利要求5所述的僵尸程序的检测方法,其特征在于,所述检测器的检测半径 d. rd为变量χ与自体半径r的差值。
7.根据全力要求1所述的僵尸程序的检测方法,其特征在于,所述由检测器检测僵尸 程序的步骤包括步骤S401,对待检程序e进行程序特征提取;步骤S402,计算检测器集合中每一个检测器与待检程序特征的距离χ’ ; 步骤S403,判断χ’是否小于或等于检测器的检测半径d. rd,若是,则待检测程序e为 僵尸程序,否则待检测程序e为正常程序。
8.根据权利要求3或8所述的僵尸程序的检测方法,其特征在于,所述程序特征的提取 方法包括步骤Sal,初始化抗体基因长度为1字节,计数器Countb=Q和Count11=Q ; 步骤Sa2,对待提取程序特征集合的程序,依次提取长度为1字节的字符串s ; 步骤Sa3,判断字符串s是否已存在于抗体基因集合J^Z7,若是,则coffi G=COffi7 Α+1, 否则 countm=countm+Y ;步骤Sa4,判断待提取程序特征的程序是否已遍历完,若不是,则返回步骤Sa2,否则进行步骤Sa5,计算待提取程序特征的特征值C= COimtbI {countb+countm).
9.根据权利要求1所述的僵尸程序的检测方法,其特征在于,所述抗体基因库根据计 算机程序的动态变化进行动态的演化。
10.根据权利要求5所述的僵尸程序的检测方法,其特征在于,所述检测器根据抗体基 因库的动态演化进行动态演化。
全文摘要
本发明公开了一种僵尸程序的检测方法,属于信息安全技术领域,该方法包括提取正常程序集合B的抗体基因构建抗体基因集合Agdl,并由不同抗体基因长度的抗体基因集合Agdl组成抗体基因库Agd的步骤;用抗体基因集合Agdl对正常程序集合B’进行特征提取构建正常程序状态模型的步骤;由正常程序状态集合Cb生成检测器,并由检测器生成检测器集合;由检测器集合检测僵尸程序的步骤;上述抗体基因库和检测器动态进行演化。本发明的方法不仅能识别已知的僵尸程序,而且通过自我学习与进化,能在实时变化的计算机环境中发现新的僵尸程序或已知僵尸程序的变种,有效地解决了传统计算机病毒特征码库无法与多态僵尸程序同步的突出矛盾。
文档编号G06F21/00GK101930517SQ201010504920
公开日2010年12月29日 申请日期2010年10月13日 优先权日2010年10月13日
发明者唐伟文, 曾金全 申请人:四川通信科研规划设计有限责任公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1