用于移动/智能终端的病毒特征提取和检测系统及方法
技术领域
本发明涉及一种用于移动/智能终端进行病毒特征分类提取和检测的装置以及该装置对病毒样本特征进行分类提取和检测方法,属于与互联网、移动通信、网络安全相关联的模式识别技术领域。
背景技术
自从2004年7月出现了第一个针对Symbian系统的概念性病毒cabir后,移动终端受到前所未有的病毒侵袭。以Symbian系统为例,据有关技术人员透露,只过了短短一年时间,各种版本的Symbian病毒总数增至百余种。病毒的种类主要有(不计变种):cabir,skulls,mosquito,lasco,Gavno(locknut)。
目前,全球的移动用户已经达到15亿。移动/智能终端病毒的危害性日益突显:在隐私方面,病毒能窃取移动终端里的个人敏感信息,造成用户私密信息曝光;在经济方面,病毒能在用户不察觉的情况下拨打国际长途或群发短信/彩信,使得用户要支付巨额资费;在信用方面,由于移动终端代表用户个人信誉,因此当被感染的终端向其他终端发出欺骗短信或骚扰消息时,用户的声誉和信用倍受损害;在设备方面,不少病毒还会损坏移动/智能终端的硬件,使用户蒙受财产损失,并影响使用;再者,这些病毒的传播速度极快,传播途径多样,与传统的PC病毒相比,有过之而无不及。
目前,基于病毒特征码的主要扫描方式包括有:传统特征码扫描、启发式扫描、广谱特征扫描等。下面分别简要介绍之:
传统特征码扫描:所谓特征码是一个表明病毒自身特征的十六进制字符串;例如:“如果在第1034字节处是下面的内容:0xEC 0x99 0x80 0xEA,就是大麻病毒”。特征码一般都很长,有的可达数十字节,按照以往传统PC杀毒的经验,一般取32字节。用比较好的单向Hash函数可以缩短为6~8字节。杀毒软件根据该特征字符串,可非常容易地查出病毒。但是遗憾的是,随着病毒种类越来越多,病毒库的规模随之变大,扫描时间也越来越长。针对移动设备主频低、内存小的特点,传统特征码扫描技术如果再不优化,很难应用于移动终端上。
启发式扫描:通过分析指令出现的顺序或特定组合情况等常见病毒的标准特征来判断文件是否感染了未知病毒。它的出现就是为了对付病毒的不断变化和对未知病毒的研究。因为病毒要达到感染和破坏的目的,其通常的行为都会有一定的特征,例如非常规读写文件、终结自身、非常规切入零环等等。所以可以根据扫描的特定行为或多种行为的组合来判断某个程序是否为病毒。但是,移动设备的软件开发包SDK一般都不支持汇编级的编程及调试;也就是说,虽然许多移动终端制造厂商公布了移动终端整套操作系统的源代码,但是,在目前一段的很长时间内,对于移动设备的病毒作者和反病毒软件的开发者来说,打包完成后的目标机器的二进制程序是不可调试分析的。
广谱特征扫描:为了躲避杀毒软件的查杀,病毒开始进化,即逐渐开始演变或变形,每感染一次,就对自身进行一次变形,并藉此来躲避查杀。这样使得同一种病毒的变种病毒大量增加,甚至到达天文数字量级。大量不同形态的变形病毒之间甚至能够做到没有超过三个连续字节是相同的。为了对付这种情况,特征码的获取不再是简单地提取一段代码,而是分段提取,其中间可以包含任意内容(即增加了一些不参与比较的“掩码字节”,在出现“掩码字节”的地方的任何内容都不参与比较)。这就是广谱特征码的概念。这个技术在一段时间内,对于处理某些变形病毒提供了一种方法。但是遗憾的是,它也使误报率大大增加,所以采用广谱特征码技术目前已经不能有效的对病毒进行查杀。
总之,虽然目前在PC上积累了很多反病毒的经验和方法,但是由于移动终端的特殊性,需要另辟蹊径。所以,如何尽快研究和开发一种对病毒样本特征进行分类提取和检测的系统及方法对移动/智能终端设备进行防护已经成为业内科技人员关注的热点和焦点。
发明内容
有鉴于此,本发明的目的是提供一种用于移动/智能终端的病毒特征提取和检测装置及方法,本发明采用分类方法提取并管理已知病毒的代码特征,并在此基础上按照设定的分类规则和类别对待测样本进行检测,以判断该样本是否是病毒。本发明能够很好地适应移动/智能终端内存小、主频低的特点,能以极快的扫描速度根据已存储的病毒特征判断文件是否带毒,做到不漏报,不误报。同时,在保持优良扫描性能的前提下,可以存储大量的病毒特征信息,为移动/智能终端设备及时防卫病毒侵害提供了一种切实有效的技术手段。
为了达到上述目的,本发明提供了一种用于移动/智能终端的病毒特征提取和检测装置,其特征在于:该装置包括下述组成构件:
程序样本类别生成部件,用于产生一组符合设定程序分类规则的分类类别,以供管理者将所生成的类别载入分类类别存储部件中;所述分类类别是将业务平台的可执行程序按设定规则划分的类别,作为整个装置各部件的运行基础和参照;该分类类别一旦存入存储部件后,除进行二次开发外,不再变动;
分类类别存储部件,为存储类别生成部件产生的类别信息,以供各部件读取使用的分类类别集的存储器;病毒特征信息提取部件用该类别信息作为病毒信息提取过程中的病毒样本分类依据,扫描引擎部件用其作为病毒检测过程中的分类检索依据,特征信息分类管理部件用其建立与每个类别分别对应的病毒数据库子表,以供存储和管理与各个类别相对应的病毒样本特征信息;
病毒特征信息提取部件,负责根据分类类别存储部件中的类别信息,并结合分类规则判断病毒样本的类别,再根据设定方法提取病毒样本的特征信息,然后将其存入病毒库管理部件中与该病毒类别相对应的病毒数据库子表;
扫描引擎部件,根据分类类别存储部件中的类别信息和分类规则,判断待测样本的类别,再根据设定方法提取被测样本的特征信息,然后在病毒库管理部件中与该待测样本类别相对应的病毒数据库子表里进行检索,是否存在与其相同的特征信息,藉此判断该待测样本是否为病毒;
特征信息分类管理部件,又称病毒库管理部件,根据分类类别存储部件中的类别信息,设有与各个类别相对应的病毒数据库子表,用于分别存储已有的该类病毒样本的特征信息;还设有访问接口和数据库子表管理模块,分别用于该部件与病毒特征信息提取部件和扫描引擎部件的信息交互和管理。
所述设定程序的分类规则是按“核”分类:从某个程序样本代码段的起始位置开始扫描后,找到第一个匹配的“核”,则该样本与该“核”归属同一个程序类别;如果最后没有找到任何一个匹配的“核”,则另行单独归属一类;所述“核”是一个长度大于等于3个字节的十六进制字符串,即特定业务平台中的十六进制码元的字符特征信息,用作对给定的可执行程序样本进行类别映射判断的分类基准。
所述“核”集是一组用作分类映射判断基准的“核”的集合,当“核”集有n个“核”时,均衡快速分类的程序样本的类别为n+1,其中n为正整数。
所述程序样本类别生成部件包括下述顺序连接的组成模块:
样本遍历模块,负责搜集、遍历和保存设定场合的所有程序样本,即对样本根据设置的“核”字节长度为窗口进行移动采样,使用概率统计方法获得该平台下的程序代码段的十六进制码元的组合规律;
程序结构解析模块,存储有设定业务平台程序的结构特征信息,用于解析程序样本的文件头,以获得代码段的偏移位置,即定位代码段的起始位置,并获取代码段的字长信息;
采样信息记录模块,用于记录样本遍历模块移动采样时的各种信息:至少包括特征信息“核”字节的出现次数、出现的文件名,在文件中的偏移位置;
条件过滤模块,用于最后输出统计信息前按照设定条件进行的信息过滤,删除明显不合要求的候选特征信息,保证按“核”分类的均衡性。
所述病毒特征信息提取部件包括下述组成模块:
程序类别映射模块,根据类别存储部件中的类别信息,按照分类规则并结合Hash方法,从十六进制病毒样本代码段的起始位置顺序扫描,寻找相匹配的“核”,藉此快速判断该病毒样本的类别;
核相邻信息抽取模块,从所述病毒样本中抽取“相邻码”-由“核”字节和与其前、后相邻的设定长度的字节组成的字符串,该设定长度是大于8的正整数;
确认信息抽取模块,直接从十六进制病毒样本代码段的前、中、尾端的设定位置各取数十个字节,并与该代码段的字长信息合并组成确认码,用作防止误报而从病毒样本中抽取的附加信息;
信息串单向Hash模块,负责对“相邻码”和“确认码”分别采用Hash运算将其转换为两者字长都是固定的“相邻码”Hash值a和“确认码”Hash值b,精简病毒代码特征信息,提高病毒库的存储率和检索效率;
特征信息分类存储模块,将所述Hash值a和Hash值b合并为一条特征信息,通过病毒库管理部件的分类子表访问接口存入相对应的病毒数据库子表中;
上述各模块除了确认信息抽取模块直接连接信息串单向Hash模块外,其余各模块顺序连接。
所述扫描引擎部件的结构组成包括:程序类别映射模块、核相邻信息抽取模块、确认信息抽取模块、信息串单向Hash模块和特征信息检索模块,其中前四个模块的功能与病毒特征信息提取部件的对应模块相同,区别是扫描对象为待测的程序样本,而不是设定的病毒样本;特征信息检索模块是将“相邻码”Hash值a和“确认码”Hash值b合并为一条特征信息,再以该程序所属类别为参数,在病毒库管理部件中相对应的病毒库子表中检索是否存在该特征值,以判断该程序样本是否为病毒。
为了达到上述目的,本发明还提供了一种使用病毒特征提取和检测装置的提取和检测病毒特征的方法,其特征在于:采用分类映射方法,将对所有病毒样本特征进行匹配的操作,转移到其中某一个分类的病毒数据库子表中进行匹配,以提高扫描效率和病毒数据库的容量;包括下述操作步骤:
(1)确定可执行程序的分类规则和所划分的具体类别:设计分类规则,并由程序样本类别生成部件根据该分类规则产生一组符合该规则的分类类别,再将该组类别载入分类类别存储部件中;
(2)以具体类别为依据对病毒库管理部件进行初始化设置:由病毒库管理部件读取分类类别存储部件中存储的类别信息,建立每个类别的病毒数据库子表,并对其进行管理;
(3)按照分类规则和具体类别对病毒样本提取并保存分类特征信息:对于给定的病毒样本,由病毒特征信息提取部件分类提取该病毒样本的特征信息,再将提取的特征信息存入病毒库管理部件中;
(4)按照分类规则和具体类别检测待测样本是否带毒:对于待测程序样本,由扫描引擎部件先分类提取该待测样本的特征信息,再到病毒库管理部件中检索是否存在该特征信息,以判断待测样本是否为病毒。
所述步骤(1)进一步包括以下操作内容:
(11)设计计算代价小的分类规则-按“核”分类,用于对给定的可执行程序样本进行快速类别映射;
(12)生成分类的类别:由样本类别生成部件产生一组符合分类规则的具体分类类别,要求分类结果均衡,即各个程序样本被均匀映射到各个类别中;
(13)保存生成的分类类别:由分类类别存储部件将样本类别生成部件产生的分类类别进行存储处理。
所述步骤(12)进一步包括以下操作内容:
(121)尽可能多地收集特定平台下的程序样本,以便用概率统计方法获得该业务平台下的程序代码段的十六进制码元的组合规律;
(122)类别生成部件读取程序样本的文件头信息,以便定位代码段的起始位置,并获取包括但不限于该代码段字长的信息;
(123)以设定的“核”字节长度为窗口,对样本代码段进行逐字移动采样,并记录每次扫描中的相关信息:至少包括该“核”字节的出现次数、出现的样本文件名,在该文件中的偏移位置;
(124)在输出统计信息时,根据设定条件过滤信息,删除不符合要求的候选“核”的信息,以得到经过概率统计分析、分类均衡的“核”集;所述过滤条件至少包括:出现频率太低和太高的候选“核”,出现在填充字符区域的候选“核”,出现在文件开头固定位置的候选“核”;
(125)改变采样窗口的“核”字节长度,重复上述步骤(122)~(124),对所有程序样本进行多次采样,以便选择分类均衡的“核”集。
所述步骤(3)进一步包括以下操作内容:
(31)对于给定的病毒样本,病毒特征信息提取部件从类别存储部件读取“核”集,根据分类规则和设定的Hash方法,从该样本代码段的起始位置开始顺序扫描,快速判断该病毒样本的类别,即与其相匹配的第一个“核”的归属类别;
(32)从病毒样本中获取“相邻码”:由该“核”字节及其前、后相邻接的设定长度的字节组成的字符串,所述“相邻码”的字长是W+2S,其中W为“核”字节字长,前、后相邻接的字节设定字长均为S,S是大于8的正整数;
(33)由抽取模块在病毒代码样本段的前、中、尾部的设定位置分别截取数十个字节,并与该代码段的字长信息组合,形成防止误报的“确认码”;
(34)分别对“相邻码”和“确认码”进行Hash运算,将其转换为各自字长固定的“相邻码”Hash值a和“确认码”Hash值b,以精简病毒特征信息;
(35)将上述两个Hash值a、Hash值b合并为一条病毒特征信息的新记录,存入病毒库中与该病毒样本类别相对应的数据库子表里。
所述步骤(4)进一步包括以下操作内容:
(41)对于给定的待测样本,扫描引擎部件从类别存储部件读取“核”集,根据分类规则和设定的Hash方法,从该样本代码段的起始位置开始顺序扫描,判断该待测样本的类别:即与其匹配的第一个“核”的归属类别;
(42)从待测样本中获取“相邻码”:由该“核”字节及其前、后相邻接的设定长度的字节组成的字符串,所述“相邻码”的字长是W+2S,其中W为“核”字节字长,前、后相邻接的设定字节字长均为S,S是大于8的正整数;
(43)由抽取模块在该待测样本代码段的前、中、尾部的设定位置分别截取数十个字节,并与该代码段的字长信息组合,形成防止误报的“确认码”;
(44)分别对“相邻码”和“确认码”进行Hash运算,将其转换为各自字长固定的“相邻码”Hash值a和“确认码”Hash值b,以精简病毒特征信息;
(45)将上述Hash值a、Hash值b合并为一条样本特征信息,再以步骤(41)中获得的该程序所属的类别为参数,在病毒库管理部件中所对应的病毒数据库子表中进行检索,是否有与其匹配的特征值,如果有,则该样本携带有已知病毒;否则,表明该样本没有携带已知病毒。
所述方法进一步包括下述操作步骤:
(5)病毒库管理部件中病毒数据库的建立和更新:病毒库中的病毒特征信息的创建和/或数据更新可以由该业务运营商的服务器采用数字广播系统的广播方式、互联网接入下载、短信SMS、彩信MMS、GPRS、蓝牙、红外、或USB棒读卡器输入移动/智能终端的病毒库管理部件中的病毒数据库。
众所周知,病毒扫描、检测的本质是进行特征匹配。如何提高匹配的速度和效率是检测方法成功与否的一个关键。本发明的创新之一是将广义的“分层”技术运用到病毒特征匹配中。具体做法是:设计一种分类算法,该算法能够将任何一种病毒样本快速映射到事先定义好的某一个类别(如类别A)中,然后根据设定的算法流程提取该病毒样本的代码特征信息,再将该特征信息存入病毒特征库相应的分类子表中(即专门存储某一类病毒特征信息的数据库子表),这就是本发明的病毒特征分类提取技术;当要判断一个程序是否属于目前已知病毒中的某一种时,先按照上述分类算法,分析出该程序所归属的类别,然后按照与上述相同的特征信息提取流程计算或提取出该程序的特征信息(完成一层映射),再到病毒特征库中相对应的分类子表中检索该特征信息是否存在,如果存在,表明该程序或文件是一种已知病毒,如果不存在,则说明该程序或文件不是一种已知病毒(完成二层映射),这就是本发明的分层映射扫描技术。
本发明的病毒特征分类提取技术和分层映射扫描技术在快速模式匹配上的优点是:避免了在一个规模极大的一维线性特征库中检索某个特征值,因为这将严重影响扫描性能。其实质是:将一个大的目标检索范围(整个特征库)迅速圈定到一个相对较小的检索范围(某一个分类子表)。效果是:在检索性能不改变的情况下,数据特征库的总体规模可以得到很大程度的扩充,同时,如果特征库的规模一定,那么特征信息匹配速度将大幅提高。
总之,本发明的装置及方法的优点简述如下:
(1)扫描、检测的速度快:为了适应移动/智能终端内存小,主频低的特点,本发明采用分类方法存储病毒代码特征信息,能以极快的扫描速度根据病毒库已存储的病毒特征判别程序或文件是否带毒,极大地提高了模式判别的速度和效率。
(2)能适应病毒库的规模增长:一方面,病毒库的规模增长对本发明扫描性能的负面影响很小。因为本发明的病毒特征分类提取技术和与之相应的分层映射扫描技术,能在保证扫描性能的前提下,在病毒库里存储海量的病毒特征信息。经过测试,本发明装置在存储了数万条病毒特征后,仍能高速进行病毒检测;另一方面,采用设定算法的优化处理后,病毒库占用的存储空间很小,并且病毒特征信息的存储量增长缓慢,能很好地适应移动/智能终端存储资源不足的特点。
(3)不漏报,不误报:本发明的分层映射扫描的检测方法能够使漏报和误报的概率降到最低。
(4)自动提取病毒特征:本发明采用特征分类提取方法提取病毒样本特征信息,并且提供相应的功能部件,用于批量自动地对多个病毒样本进行特征提取,不仅使得病毒特征的提取更加快速准确,缩短了从获得新病毒样本到发布病毒库升级包之间的时间间隔,还使传统手工提取十六进制码元特征信息的繁重工作变得简单方便、快捷可靠,大大降低了技术人员的操作复杂度。
(5)由该业务运营商的服务器随时将创建和/或更新后的病毒库采用互联网接入下载或者通过数字广播系统(参见申请号:200410101636.1的中国专利申请《基于数据广播和移动终端的信息接收终端及信息发布系统》)的广播方式向智能终端中的病毒库管理部件更新病毒数据。其工作原理是:将创建和/或更新的病毒数据作为发布信息的一个类别,传递给信息发布装置,而后通过数字广播系统到达接收及转换装置,最终通过信息输出及配置管理装置恢复出创建和/或更新病毒数据,并提供给本发明中的特征信息分类管理部件(又称病毒库管理部件)使用。
因为未来的各种电子设备(如随身听、MP3播放器、电视机、电冰箱、汽车音响甚至电子词典等)都将形成网络实现互联,因此病毒的危害除了手机之外,还会涉及更为广泛的电子设备。通过数字广播方式为这些设备提供病毒库的创建和/或更新的优点是:(A)广播是覆盖最宽广的通信方式,超过电视网和互联网,即使设备没有连接到互联网上,也可以实现病毒库更新。(B)广播系统的通信费用非常廉价,通过数字广播系统发布病毒库更新将有利于更广泛的用户能够快速实现病毒库更新,确保系统安全。(C)更新同步速度快:通过互联网进行病毒库更新,一般需要通过终端和更新服务器之间的通信来实现,因此实现大范围(比如全国范围内)病毒库更新有较大的时延,而通过数字广播系统的某个频段在某个时间向全国广播发布,可以让全国范围内的设备在同一时间接受到病毒更新,从而实现高速的同步更新。
附图说明
图1是本发明用于移动/智能终端进行病毒特征分类提取和检测的装置的总体结构框图。
图2是本发明用于移动/智能终端进行病毒特征分类提取和检测的装置的组成部件的内部结构框图。
图3是本发明的病毒特征分类提取和检测方法流程步骤方框图。
图4是某个程序样本中分类基准“核”的字符串范例的示意图。
图5是本发明方法中的病毒类别生成的流程方框图。
图6是本发明装置中的特征信息分类管理部件的子表结构示意图。
图7是本发明方法中的病毒特征信息提取流程方框图。
图8是本发明方法中对程序样本进行病毒检测的流程方框图。
图9是本发明一个实施例的装置结构及其操作方法流程示意图。
图10是本发明另一个实施例的装置结构及其操作方法流程示意图。
具体实施万式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明作进一步的详细描述。
参见图1,本发明是一种用于移动/智能终端的病毒特征提取和检测装置,该装置由用于产生一组符合设定程序分类规则的分类类别的程序样本类别生成部件1、分类类别存储部件2、特征信息分类管理部件3(即病毒库管理部件)、病毒特征信息提取部件4(即病毒特征一键提取部件)和扫描引擎部件5组成。
其中:程序样本类别生成部件1产生一组符合设定的程序分类规则的分类类别,以供系统管理者将所产生的类别载入分类类别存储部件2中。该分类类别能将某业务平台的可执行程序按设定规则进行类别划分,作为整个系统其他部件运行的前提和参照,所以一经生成并且存入分类类别存储部件中后,不再变动(除非该装置转换到另一个业务平台进行二次开发)。
分类类别存储部件2用来存储类别生成部件1所生成的具体类别信息,以供其它各部件读取使用。病毒特征信息提取部件4读取类别信息作为病毒信息提取过程中病毒样本分类的依据;扫描引擎部件5读取类别信息作为病毒检测过程中分类检索的依据;病毒库管理部件3读取类别信息用来建立和管理对应于每个类别的数据库子表,数据库子表存储有与各个类别对应的病毒特征信息。
特征信息分类管理部件3又称病毒库管理部件,根据分类类别存储已有病毒样本的特征信息。它有一系列与各类别相对应的病毒库分类子表,用于分别存储已有的该类病毒样本的特征信息;还设有访问接口和数据库子表管理模块,分别用于该部件与病毒特征信息提取部件4和扫描引擎部件5的信息交互和管理。该部件初始化时,需要读取分类类别存储部件2中存储的类别信息,以此建立和管理对应于每个类别的数据库子表。病毒库管理部件3分别与病毒特征信息提取部件4和扫描引擎部件5发生交互。病毒特征信息提取部件4将提取的病毒样本特征信息存入病毒库管理部件3中相应类别的数据库子表,病毒库管理部件3为病毒特征信息提取部件4提供数据信息交互的接口;扫描引擎部件5在病毒库管理部件3中相应类别的数据库子表检索某个待测样本的特征信息是否存在,病毒库管理部件3也为扫描引擎部件5提供数据访问接口。
病毒特征信息提取部件4提取病毒样本的特征信息,将提取的特征信息存入到病毒库管理部件3中。它是先根据分类类别存储部件2中的类别信息,并结合分类规则对病毒样本进行类别判断,再根据设定方法提取病毒样本特征信息,并将其存入病毒库管理部件3中相应的病毒类别数据库子表。
扫描引擎部件5用来检测一个待测样本是否带毒。它是先根据分类类别存储部件2中的类别信息和分类规则对一个待测样本进行类别判断,然后用与病毒特征信息提取流程相同的方法来提取被检测样本的特征信息,再在病毒库管理部件3中相应于该待测样本类别的数据库子表里检索该待测样本的特征信息是否已经存在,以此判断该样本是否是病毒。如果检索到相同的特征信息,表明该待测样本带毒。
图2展示了本发明用于移动/智能终端进行病毒特征分类提取和检测的装置的结构部件内部组成方框图。
参见图3,本发明还提出一种基于上述装置的病毒特征分类提取和检测的方法:采用分类提取技术—按照设定的分类规则和具体类别对病毒样本进行分类—提取病毒的代码特征,并保存所提取的病毒代码特征信息,再采用分层映射扫描技术—按照定义的分类规则和具体类别—检测程序样本是否有病毒。该方法包含下述四个步骤:
(1)确定可执行程序的分类规则和所划分的具体类别:设计分类规则,并由程序样本类别生成部件根据该分类规则产生一组符合该规则的分类类别,再由系统管理者将该组类别载入分类类别存储部件中;
(2)以具体类别为依据,对病毒库管理部件进行初始化设置:由病毒库管理部件读取分类类别存储部件中存储的类别信息,建立每个类别的病毒数据库子表,并对其进行管理;
(3)按照分类规则和具体类别对病毒样本提取并保存分类特征信息:对于给定的病毒样本,由病毒特征信息提取部件分类提取该病毒样本的特征信息,再将提取的特征信息存入病毒库管理部件中;
(4)按照分类规则和具体的类别检测待测样本是否带毒:对于某个待测样本,由扫描引擎部件先分类提取该待测样本的特征信息(与步骤(3)中的病毒特征信息提取过程一样),再到病毒库管理部件中检索是否存在该特征信息,以判断待测样本是否为病毒。
下面将结合附图,具体介绍本发明方法的各个操作步骤:
其中步骤(1)进一步包括以下操作内容:
(11)设计一种分类规则-按“核”分类:要求其计算代价小,能对给定的可执行程序样本进行快速类别映射。
本发明的“核”是一个长度大于等于3个字节的十六进制字符串(如0x300x44 0x7F),即业务平台中的十六进制码元的字符特征信息,用作对可执行程序样本进行类别映射判断的分类基准。“核”集则是一组“核”的集合,如:
其中“核”1、“核”2、“核”3是对不同“核”的编号。
参见图4所示的某个程序样本中按“核”进行分类的范例示意。所谓按“核”分类是从某个程序样本代码段的起始位置开始扫描后,找到第一个匹配的“核”,则该样本与该“核”归属同一个程序类别。假如从该图所示程序样本的代码段起始位置开始扫描,第一个匹配的“核”是0x30 0x44 0x7F,则该样本就属于“核”1归属的那类程序;同理,如果另一个样本第一个匹配的核是0x00 0x07 0x81,那么该样本就归属“核”2一类的程序。如果某一个样本最后没有找到任何一个匹配的“核”,就将它归入单独的一类。所以,当“核”集有n个“核”时,快速分类的程序样本的类别共有n+1,其中n为正整数。对于一个可执行程序样本,“核”集中任何一个“核”都有可能与样本中的某一处发生匹配。
(12)生成分类的类别:由样本类别生成部件产生一组符合分类规则的具体分类类别,要求分类结果均衡,即各个程序样本被均匀映射到各个类别中;
该步骤(12)进一步包括以下操作内容(参见图5):
(121)尽可能多地收集特定业务平台下的可执行程序样本,并将它们放入程序样本类别生成部件的样本遍历模块中,以便用概率统计方法获得该平台下的可执行程序代码段的十六进制码元的组合规律。
(122)类别生成部件的程序结构解析模块读取样本的文件头信息,获得该代码段的偏移位置和代码段字长等信息。
(123)设定一个“核”的长度(如4),样本遍历模块以此长度为窗口开始逐个字节移动采样,凡移动一次文件窗口,就在采样信息记录模块中记录该连续4个字节是否出现过、出现次数、出现的文件名是什么,在文件中的偏移是多少等信息。
(124)输出统计信息时,由条件过滤模块进行信息过滤,删除一些不符合要求的候选“核”,最后得到经过概率统计分析后的“核”集。条件过滤模块的删除条件是:出现频率太低或太高的候选“核”,如0x00 0x00 0x00 0x00;出现在填充字符区域的候选“核”;出现在文件开头固定位置的候选“核”等,因为这些候选核将会破坏按“核”分类的均衡性。
(125)样本遍历模块改变采样的“核”的字长(如将4改成3),重复步骤(122)~(124)的操作,即对所有程序样本再次进行多次采样,以便从长度不同的“核”集中择优选择分类均衡的十六进制码元。
参见图6,介绍本发明方法的步骤(2)的特点:在对病毒库管理部件进行初始化设置时,病毒库管理部件的分类子表管理模块从类别存储部件中的“核”集存储模块读取“核”集,为每个“核”建立对应的数据库子表,用于存储各个类别病毒程序的特征信息。图中显示了具有n个核时的“核”集的病毒数据库分类子表的结构(左侧是分类索引,右侧为每个分类子表;n个“核”把程序样本空间分成了n+1类,所以数据库有n+1个子表)。
参见图7,具体介绍其中步骤(3)所包括的操作内容:
(31)对于给定的病毒样本,病毒特征信息提取部件中的程序类别映射模块从类别存储部件的“核”集存储模块读取“核”集,并从样本代码段的起始位置开始扫描,根据分类规则和设定的Hash方法快速获取该病毒的类别。假如该样本第一个匹配的“核”为“核”w,那么该程序就属于“核”w类。程序类别映射模块的主要作用是根据分类规则和结合分类类别存储部件中保存的类别信息快速得出一个病毒样本的类别。
(32)由核相邻信息抽取模块从病毒样本中获取“相邻码”:由该“核”字节及其前、后相邻接的设定长度的字节组成的字符串(“相邻码”的字长是W+2S,其中“核”字节字长W,前、后相邻接的字节字长均为S,设定字长S是大于8的正整数)。
(33)由确认信息追加抽取模块从病毒样本代码段的前、中、尾部的设定位置分别截取数十个字节,并与该代码段的字长信息组合,形成“确认码”,用作防止误报而对病毒程序采取的一个附加的多维信息。
(34)信息串单向Hash模块用Hash函数分别计算“相邻码”的Hash值a和“确认码”的Hash值b,将这两个字符串都转换为各自字长固定的Hash值a、Hash值b,以精简病毒特征信息,提高病毒库的存储效率和码值的检索效率。
(35)特征信息分类存储模块将上述两个Hash值a、Hash值b合并为一条病毒特征信息的新记录,通过病毒库管理部件中的分类子表访问接口存入病毒库中类别相对应的病毒数据库子表中。
该步骤的特点是实现了病毒特征的自动提取。如果要实现批量提取,只需在病毒特征信息提取部件中加入样本文件遍历模块,就能够批量、自动地对多个病毒样本进行特征提取,使得传统特征码的手工提取繁重工作变得简单容易。
参见图8,具体介绍其中步骤(4)所包括的操作内容:
(41)对于给定的待测样本,扫描引擎部件的程序类别映射模块从类别存储部件读取“核”集,根据分类规则和设定的Hash方法,从该样本代码段的起始位置开始顺序扫描,判断该待测样本的类别:即与其匹配的第一个“核”的归属类别;假如该样本第一个匹配的“核”为“核”w,则该程序样本就属于“核”w类。(该步骤与步骤(31)的流程相同)
(42)扫描引擎部件的核相邻信息抽取模块从待测程序样本中获取“相邻码”:由该“核”字节及其前、后相邻接的设定长度的字节组成的字符串(“相邻码”的字长是W+2S,其中“核”字节字长W,前、后相邻接的字节字长均为S,其中设定字长S是大于8的正整数)。(该步骤与步骤(32)的流程相同)
(43)由确认信息抽取模块在该待测程序代码样本段的前、中、尾部的设定位置分别截取数十个字节,并与该代码段的字长信息组合,形成防止误报的“确认码”。(该步骤与步骤(33)的流程相同)
(44)信息串单向Hash模块用Hash函数分别计算“相邻码”的Hash值a和“确认码”的Hash值b,将这两个字符串都转换为各自字长固定的Hash值a、Hash值b,以精简病毒特征信息,提高病毒库的存储效率和码值的检索效率。(该步骤与步骤(34)的流程相同)
(45)扫描引擎部件的特征信息检索模块将上述Hash值a、Hash值b合并为一条样本特征,并且以步骤(41)中获得的该程序样本所属的类别为参数,通过病毒库管理部件中的分类子表访问接口到病毒库相应的子表(即“核”w对应的表)中检索是否有与其匹配的特征值,如果有的话,则该样本是已知病毒,如果没有,则表明不是已知病毒。
该步骤的特点是:其中各个步骤(41)~(45)的操作流程与步骤(31)~(35)基本一样,也就是说,扫描引擎部件和病毒特征信息提取部件中的程序类别映射模块、核相邻信息抽取模块、确认信息抽取模块和信息串单向Hash模块的四个模块功能是相同的。区别在于特征信息检索模块的扫描对象为待测的程序样本,而不是设定的病毒样本;并在病毒库管理部件中相对应的病毒库子表中检索是否存在该特征值,以判断该代码样本是否为病毒。
该步骤是本发明分层映射扫描技术的代表:其中步骤(41)~(44)完成一层映射,得到了待测样本的所属类别,并提取了待测样本的特征信息;步骤(45)完成二层映射,即在病毒库管理部件的分类子表中检索特征信息是否存在。
本发明的方法进行了实施试验,下面简要介绍实施例的情况:
参见图9,第一实施例是针对Symbian智能手机移动平台。该Symbian平台的运行程序有App,Dll,Exe等多种,编制相应的Symbian运行程序的“核”集采集部件对样本进行信息采集,得到数十个符合系统运行要求的“核”。扫描引擎部件中的计算模块使用二层映射扫描技术对待测文件进行静态扫描,该计算模块封装在Symbian系统的客户端/服务器框架下构成扫描引擎部件。扫描引擎能异步、并发地被各个实时监控模块所调用。病毒特征信息提取部件采用MFC开发、运行在PC上,由反病毒公司的技术人员操作,以提取新病毒特征来构建病毒库升级包,病毒库升级包实际上是一个病毒库记录添加脚本。再经由短信SMS、彩信MMS、GPRS,蓝牙、红外、USB棒读卡器等各种途径将其传到手机后,被程序相应的升级部件解释添加到数据库中。实施例中的病毒库存储部件是直接使用Symbian自带的DBMS,如果某个移动平台不具备DBMS,病毒库存储部件也可以自行开发。该实施例的试验是成功的,实现了发明目的。
参见图9,第二实施例是用于智能家用电器的病毒特征提取及检测系统。由于网络技术日益成熟和普及,具有上网功能的智能家用电器已经开始进入普通家庭。智能终端的普及和网络化,给病毒传播又带来了新的途径,所以本系统就是用于此场合。考虑到智能家用电器的非移动性,可以由该业务运营商的服务器随时将更新后的病毒库采用互联网接入下载或者通过数字广播系统(参见申请号:200410101636.1的中国专利申请《基于数据广播和移动终端的信息接收终端及信息发布系统》)的广播方式向智能终端中的病毒库管理部件更新病毒数据。
此外,本发明的移动/智能终端的种类不仅包括移动通信手机、PDA笔记本电脑,还可以包括诸如随身听、MP3播放器、汽车音响甚至电子词典等电子产品,它们都可以在机内安装本发明装置中的各个相关部件,以实现本发明的检测方法,分享本发明的成果。