程序文件的分类方法、分类装置和分类系统与流程

文档序号:11627730阅读:400来源:国知局
程序文件的分类方法、分类装置和分类系统与流程

本发明实施例涉及计算机领域,并且更具体地,涉及一种程序文件的分类方法、分类装置和分类系统。



背景技术:

在企业内部的高级持续性威胁(advancedpersistentthreat,apt)攻击中,恶意程序文件占有很大的比例。因此,apt防御中,如何及时识别和发现恶意程序文件成为一个非常重要的技术。但是,对于大中型企业来说,企业内部网络中存在的程序文件的数量众多,逐个进行深层次分析的工作量巨大,基本是做不到的。为了解决这一问题,现有技术提出利用程序文件在运行期间的行为对企业内部的程序文件进行分类的方法。对每类程序文件进行分析与对每个程序文件进行分析相比,能够在一定程度上降低工作量。

对企业内部的程序文件进行分类,具体而言,将程序文件在运行期间的行为作为机器聚类、分类的特征向量,从而将企业内部的大量程序文件划分为若干个程序文件类别。由此,分析人员对每一类别只需随机抽取几个程序文件进行深入分析,即可了解该类别的程序文件是否可疑。同时,还能及时发现未被分类的、不易被分类的或程序文件数量少的类别中的小众的程序文件,对小众的程序文件重点分析并及时发现恶意的程序文件。这样能够有效地降低分析海量程序文件的工作量、提高分析的效率。

现有的技术中,对程序文件分类是直接使用程序文件的行为序列中的行为信息,如字符串信息,形成特征向量进行计算。由于各种行为信息涉及的路径的参数信息的随机性大,导致特征向量间差异很大,分类效果不佳,从而无法有效地利用行为信息的相似性进行聚类和分类。



技术实现要素:

本发明实施例提供一种程序文件的分类方法、分类装置和分类系统,可以改善程序文件分类的效果,进而降低识别恶意程序文件的工作量。

第一方面,本发明提供了一种程序文件的分类方法,包括:获取程序文件在运行期间执行的至少两个行为分别对应的行为信息,每个所述行为信息中包括行为标识以及在执行所对应的行为时涉及的路径;对每个所述行为信息中的路径进行归一化处理,所述归一化处理用于降低路径的多样性;根据对路径进行归一化处理后的至少两个行为信息,生成特征向量,其中,所述特征向量的每个元素对应对路径进行归一化处理后的一个行为信息,将对路径进行归一化处理后的相同的行为信息对应的元素的值相同,相同的行为信息是指行为标识相同并且进行归一化处理后的路径也相同的行为信息;根据所述特征向量,确定所述程序文件所属的类别。

本发明的程序文件的分类方法,获取程序文件的至少两个行为分别对应的行为信息,对行为信息中的行为的路径进行归一化处理,降低路径的多样性,根据对路径进行归一化处理后的行为信息,生成特征向量,并根据特征向量确定程序文件所属的类别,使得归一化处理后的路径的随机性降低,从而改善程序文件的分类效果,进而降低识别恶意程序文件时工作人员的工作量。

具体的归一化处理可以包括以下几种。

所述行为信息中的路径包括文件的m级目录,所述对每个所述行为信息中的路径进行归一化处理,包括:如果所述m级目录符合第一正则表达式,将所述m级目录的前n级目录替换为第一标识,将所述m级目录的剩余的m-n级替换为数字m-n,其中,所述第一正则表达式和所述第一标识形成的映射关系是第一类映射关系中的一组,所述第一类映射关系中包括至少一组由正则表达式与标识形成的映射关系,m为正整数,n为小于或等于m的正整数;如果所述m级目录不符合所述第一类映射关系中任一组映射关系,将所述m级目录的前l级目录保留,将所述m级目录的剩余的m-l级目录替换为数字m-l,其中,l为小于或等于m的正整数。

应理解,m级目录符合第一正则表达式可以等同理解为m级目录中包括某一特殊目录,例如第一目录。

所述行为信息中的路径包括文件主名和文件扩展名,所述对每个所述行为信息中的路径进行归一化处理,包括:如果所述文件主名符合预定文件主名特征,将所述文件主名替换为第二标识,其中,所述预定文件主名特征和所述第二标识形成的映射关系是第二类映射关系中的一组,所述第二类映射关系中包括至少一组由文件主名所符合的特征与标识形成的映射关系;如果所述文件扩展名不属于预设的文件扩展名列表中的文件扩展名,将所述文件扩展名替换为预设的第三标识。

所述行为信息中的路径包括注册表的s级子键,所述对每个所述行为信息中的路径进行归一化处理,包括:如果所述s级子键符合第三正则表达式,将所述s级子键的前t级目录保留,将所述s级子键的剩余的s-t级子键删除,其中,所述第三正则表达式和t形成的映射关系是第三类映射关系中的一组,所述第三类映射关系中包括至少一组由正则表达式与标识形成的映射关系,s为正整数,t为小于或等于s的正整数;如果所述s级子键中的第一子键为全局唯一标示符clsid,将所述第一子键替换为第四标识。

应理解,s级子键符合第三正则表达式可以等同理解为s级子键中包括某一特殊子键。

以上归一化手段是长期对恶意程序的行为进行总结得到的,或者说是基于经验得到的。通过本发明实施的对路径进行的上述归一化处理,可以减少程序文件的特征的数量。一方面,可能会减少一个程序文件的特征向量的元素的个数。另一方面,可能会增加任意两个程序文件的相同的特征的个数,从而达到更有效地进行程序文件的分类的效果。

结合第一方面,在一种可能的实现方式中,所述根据所述特征向量,确定所述程序文件所属的类别,包括:通过分类算法,确定所述特征向量中的元素分别与多个程序文件类别的聚类中心数据的相似性,所述聚类中心数据用于表示所属程序文件类别中的程序文件的特征,包括所属程序文件类别中的程序文件的特征向量的元素;将所述程序文件划分到第一程序文件类别,所述特征向量的元素与所述第一程序文件类别的聚类中心数据的相似性高于所述特征向量的元素与所述多个程序文件类别中除所述第一程序文件类别之外的其他程序文件类别的聚类中心数据的相似性。

应理解,本发明中的聚类中心数据可以是在对多个程序文件进行聚类时,通过聚类算法对多个程序文件的特征向量进行聚类得到的,用于表示所属程序文件类别中的程序文件的特征。

结合第一方面,在另一种可能的实现方式中,所述根据所述特征向量,确定所述程序文件所属的类别,包括:通过聚类算法,将所述特征向量与多个其他程序文件的特征向量进行聚类,形成至少一个程序文件类别,其中,每个程序文件类别中的程序文件的特征向量的元素的相似性高于阈值,所述程序文件被划分到所述至少一个程序文件类别中的第一程序文件类别。

结合第一方面,在一种可能的实现方式中,所述根据对路径进行归一化处理后的至少两个行为信息,生成特征向量,包括:将对路径进行归一化处理后的每个行为信息表示为一个整数,其中,将对路径进行归一化处理后相同的行为信息表示为相同的整数;将每个所述整数作为所述特征向量的一个元素,多个所述整数构成所述特征向量。

结合第一方面,在一种可能的实现方式中,获取程序文件在运行期间执行的至少两个行为分别对应的行为信息,包括:通过监控程序获取所述程序文件;通过沙箱服务器获得所述程序文件的行为序列,所述行为序列中包括所述至少两个行为分别对应的行为信息。

第二方面提供了一种程序文件的分类装置,包括获取模块,用于获取程序文件在运行期间执行的至少两个行为分别对应的行为信息,每个所述行为信息中包括行为标识以及在执行所对应的行为时涉及的路径;归一化模块,用于对所述获取模块获取的每个所述行为信息中的路径进行归一化处理,所述归一化处理用于降低路径的多样性;生成模块,用于根据经过所述归一化模块对路径进行归一化处理后的至少两个行为信息,生成特征向量,其中,所述特征向量的每个元素对应对路径进行归一化处理后的一个行为信息,将对路径进行归一化处理后的相同的行为信息对应的元素的值相同,相同的行为信息是指行为标识相同并且进行归一化处理后的路径也相同的行为信息;分类模块,用于根据所述生成模块生成的所述特征向量,确定所述程序文件所属的类别。

应理解,第二方面的程序文件的分类装置的各个模块可以用于实现第一方面及第一方面的各种可能的实现方式的程序文件的分类方法,此处不再赘述。

在第二方面的一种具体的实现方式中,第二方面的程序文件的分类装置为分类服务器。

第三方面提供了一种程序文件的分类系统,包括客户端、沙箱服务器和程序文件的分类装置,所述客户端中包括监控程序,以通过所述监控程序获取所述客户端中的程序文件;所述沙箱服务器用于接收所述监控程序发送的所述程序文件,以生成所述程序文件的行为序列并将生成的行为序列提供给所述程序文件的分类装置,所述行为序列中包括至少两个行为分别对应的行为信息;所述程序文件的分类装置用于执行如第一方面及相应的实现方式所述的方法。

本发明中,程序文件可以称为可执行程序文件。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是一个程序文件在运行期间执行的多个行为分别对应的行为信息的示意图。

图2a和图2b为两组程序文件的哈希值以及程序文件在运行期间的行为序列抽象转换为特征向量的结果的示意图。

图3是本发明一个实施例的程序文件的分类方法的示意性流程图。

图4是本发明一个实施例的程序文件的分类系统的示意图。

图5是本发明一个实施例的生成特征向量的示意性流程图。

图6是本发明一个实施例的实现聚类功能的示意图。

图7是本发明一个实施例的实现聚类功能的示意性流程图。

图8是本发明一个实施例的实现分类功能的示意图。

图9是本发明一个实施例的实现分类功能的示意性流程图。

图10是本发明另一个实施例的程序文件的分类方法的示意性流程图。

图11是本发明一个实施例的程序文件的分类装置的示意性框图。

图12是本发明另一个实施例的程序文件的分类方法的示意性框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

首先对程序文件分类涉及的一些技术进行简单的介绍。应理解,本文中的程序文件又称为可执行程序文件。

程序文件在运行期间会对操作系统发起系统服务请求。系统服务请求也可以称为应用程序编程接口(applicationprogramminginterface,api)调用。api调用可以包括文件的读写、内存的分配、网络的输入输出(inputoutput,io)、硬件设备的操作、系统配置的读写等等,本发明实施例对此不作限定。程序文件在运行期间中api调用被业界称为程序文件的“行为”;api调用的序列被称为程序文件的“行为序列”。行为序列中包括多个行为信息,每个行为信息对应一个行为,每个行为信息包括在执行所对应的行为时涉及的路径。

图1为一个程序文件在运行期间执行的多个行为分别对应的行为信息的示意图。例如,对于<actionarg1=”hklm\software\microsoft\windowsnt\currentversion\drivers32\msacm.msgsm610”>regqueryvalue</action>这一行为信息,执行行为时涉及的路径为hklm\software\microsoft\windowsnt\currentversion\drivers32\msacm.msgsm610,其中,注册表的各级子键为hklm\software\microsoft\windowsnt\currentversion\drivers32,注册表值名为msacm.msgsm610。行为标识为regqueryvalue,具体的行为为执行注册表操作函数regqueryvalue。

一个程序文件通常会有多个不同的版本。新的版本可能是漏洞(bug)的修复或功能的改进等,但是,这些不同版本的程序所要实现的基本功能是一致的。因此,这些不同版本的程序文件在相同环境下运行期间的流程和行为也非常接近。

本发明实施例利用这一特点,利用程序文件在运行期间的的行为,对程序文件的相似度进行统计分析,并将行为相似的程序文件划分为一类。图2a和图2b分别为两组程序文件的哈希值,例如消息摘要算法第五版(messagedigestalgorithm,md5)值,以及程序文件在运行期间的行为序列抽象转换为特征向量的结果的示意图。其中左边一列为md5值,每个md5值表示一个程序文件,右侧为该程序文件对应的特征向量。可以看出,两组程序文件的每组程序文件的md5值都各不相同,但是每组程序文件的特征向量都非常接近。

然而,现有的技术中,对程序文件分类是直接使用程序文件的行为序列中的行为信息形成特征向量进行计算。由于行为信息对应的行为所涉及的路径的随机性大,导致程序文件的特征向量间差异很大,分类效果不佳,从而无法有效地利用行为信息的相似性进行聚类和分类。

图3示出了本发明实施例的程序文件的分类方法300的示意性流程图。该方法300可以包括:

s310,获取程序文件在运行期间执行的至少两个行为分别对应的行为信息,每个该行为信息中包括行为标识以及在执行所对应的行为时涉及的路径;

s320,对每个该行为信息中的路径进行归一化处理,该归一化处理用于降低路径的多样性;

s330,根据对路径进行归一化处理后的至少两个行为信息,生成特征向量,其中,该特征向量的每个元素对应对路径进行归一化处理后的一个行为信息,将对路径进行归一化处理后的相同的行为信息对应的元素的值相同,相同的行为信息是指行为标识相同并且进行归一化处理后的路径也相同的行为信息;

s340,根据该特征向量,确定该程序文件所属的类别。

具体而言,s310获取程序文件在运行期间执行的至少两个行为分别对应的行为信息,可以包括:通过监控程序获取该程序文件;通过沙箱服务器获得该程序文件的行为序列,该行为序列中包括该至少两个行为分别对应的行为信息。

一个具体的例子中,如图4所示,程序文件的分类系统400可以在多个企业客户端,例如客户端402、客户端404和客户端406,中分别部署监控程序,例如agent程序,agent程序408、agent程序410和agent程序412。这些agent程序负责实时监控企业客户端中的可执行程序文件,尤其是新增的可执行程序文件。通过监控程序的方法获取可执行程序文件,可以依照常用的技术,此处不做详细叙述。

客户端中的agent程序将程序文件发送至远程的沙箱(sandboxie)服务器414。沙箱服务器414持续地接收来自不同客户端发来的程序文件,并生成程序文件的行为序列。如图1所示的,该行为序列中包括多个行为信息,每个行为信息对应一个行为,每个行为信息包括在执行所对应的行为时涉及的路径。沙箱服务器414输出每个程序文件在运行期间的行为序列至分类服务器416,以方便分类服务器416对程序文件进行分类。沙箱技术也可以依照常用的技术,此处也不做详细叙述。

分类服务器416对程序文件的行为进行抽象,根据每个程序文件的行为序列中包括的行为信息,生成一个特征向量。其中,在s320中,分类服务器416可以对每个行为信息中的路径进行归一化处理,该归一化处理用于降低行为信息的多样性。根据对路径进行归一化处理后的多个行为信息,生成特征向量,其中,该特征向量的每个元素对应对路径进行归一化处理后的一个行为信息,将对路径进行归一化处理后的相同的行为信息对应的元素的值相同。具体的归一化处理在下文中展开描述。

s330根据对路径进行归一化处理后的至少两个行为信息,生成特征向量,可以包括:将对路径进行归一化处理后的每个行为信息表示为一个整数,其中,将对路径进行归一化处理后相同的行为信息表示为相同的整数;将每个该整数作为该特征向量的一个元素,多个该整数构成该特征向量。

具体而言,将对路径进行归一化处理后的每个行为信息对应得到的一个整数。一个程序文件对应的行为序列中的多个行为对应的行为信息,则可以对应多个整数,多个整数构成一个整数序列,该整数序列即为特征向量。特征向量中的元素即为上述整数,每个整数也可以称为特征,表示程序文件的一个行为。

本发明实施例的程序文件的分类方法,获取程序文件的至少两个行为分别对应的行为信息,对行为信息中的行为的路径进行归一化处理,降低路径的多样性,根据对路径进行归一化处理后的行为信息,生成特征向量,并根据特征向量确定程序文件所属的类别,使得归一化处理后的路径的随机性降低,从而使得程序文件的分类效果大大提高。

具体而言,现有技术中根据未经归一化处理的行为信息生成特征向量,根据特征向量对程序文件进行聚类或分类后的效果不好。例如,现有技术中有100个程序文件待分类,对应100个特征向量,该100个特征向量分别包括的元素的差异很大,聚类或分类后的效果是得到99个程序文件类别。而执行本发明实施例的方法,待分类的100个程序文件,对应100个特征向量,该100个特征向量分别包括的元素的差异较现有技术的100个特征向量分别包括的元素的差异大大减小,有可能使得聚类或分类后的效果是得到5个程序文件类别。这样使得程序文件的分类效果大大提高,进而能够降低后续识别恶意程序文件的工作量。

图5为本发明实施例中生成特征向量的示意性流程图。

对于一个程序文件,执行s501,读取该程序文件的行为序列中的一个行为信息。

在s502中,对行为信息中的路径进行归一化处理。该行为信息包括在执行所对应的行为时涉及的路径,其中,执行所对应的行为时涉及的路径中可以包括文件的m级目录、文件主名和文件扩展名;或执行所对应的行为时涉及的路径中可以包括注册表的s级子键和注册表值名;对每个行为信息中的路径进行归一化处理,可以是根据一些预设的归一化规则,对路径进行简化。

在s503中,在特征集合中查询对路径进行归一化处理后的行为信息及其对应的整数是否已存在;其中,特征集合中包括多个行为信息及各自分别对应的整数。当存在时,执行s504,将该行为信息对应的整数作为特征向量的一个元素,继而执行s507。当不存在时,执行s505,生成新的代表该行为信息的整数,并将该整数作为特征向量的一个元素;并且执行s506,将该行为信息及对应的整数存入特征集合中,继而执行s507。

s507,判断行为序列中是否还存在行为信息,当存在时执行s501,当不存在时结束。由此获得程序文件对应的特征向量,执行s508,存储程序文件的md5值及特征向量。

分类服务器416将该整数序列作为机器学习的聚类和分类的特征向量。分类服务器416内部可以分为两个部分功能。

一部分功能用于实现聚类。具体地,通过聚类算法,将该特征向量与多个其他程序文件的特征向量进行聚类,形成至少一个程序文件类别,其中,每个程序文件类别中的程序文件的特征向量的元素的相似性高于阈值,该程序文件被划分到该至少一个程序文件类别中的第一程序文件类别。

图6示出了本发明一个实施例的实现聚类功能的示意图。图7示出了本发明一个实施例的实现聚类功能的示意性流程图。聚类功能可以由聚类器实现,s701中,聚类器读取原始的未经聚类的多个特征向量,或者读取一定时间内未聚类成功或未分类成功的多个特征向量。s702中,聚类器使用聚类算法对多个程序文件的特征向量进行聚类运算,生成多个聚类簇以及该聚类簇的聚类中心数据。每个聚类簇为一个程序文件类别,每个程序文件类别具有聚类中心数据,该聚类中心数据包括所对应的程序文件类别中的程序文件的特征向量的相应元素。s703,输出并保存聚类成功的聚类中心数据,以供后续聚类或分类时参考。

一部分功能用于实现分类。具体地,通过分类算法,确定该特征向量中的元素分别与多个程序文件类别的聚类中心数据的相似性,该聚类中心数据该聚类中心数据用于表示所属程序文件类别中的程序文件的特征,包括所属的程序文件类别中的程序文件的特征向量的元素;将该程序文件划分到第一程序文件类别,该特征向量的元素与该第一程序文件类别的聚类中心数据的相似性高于该特征向量的元素与该多个程序文件类别中除该第一程序文件类别之外的其他程序文件类别的聚类中心数据的相似性。

应理解,本发明实施例中的聚类中心数据可以是在对多个程序文件进行聚类时,通过聚类算法对多个程序文件的特征向量进行聚类得到的,用于表示所属程序文件类别中的程序文件的特征。聚类中心数据中包括多个元素,该多个元素可以是所属的程序文件类别中的程序文件的特征向量中的所有的元素,也可以是所属的程序文件类别中的程序文件的特征向量中的一部分元素,例如可以是该程序文件类别中所有程序文件的特征向量中的元素出现频率较高的一部分元素。采用不同聚类算法对多个程序文件进行聚类,聚类之后得到的聚类中心数据中所包括的元素也会有所不同,本发明实施例对此不作限定。

本发明实施例中所使用的聚类算法可以基于现有的一些算法,包括但不限于以下算法:k均值(k-means)算法、k中心点(k-medoids)算法、clarans算法等划分法(partitioningmethods);基于层次的平衡迭代减少和聚类(balancediterativereducingandclusteringusinghierarchies,birch)算法、基于代表的聚类(clusteringusingrepresentatives,cure)算法、变色龙(chameleon)算法等层次法;噪声应用的基于密度的空间聚类(density-basedspatialclusteringofapplicationswithnoise,dbscan)算法、optics算法、denclue算法等密度算法;图论聚类法;sting算法、clique算法、小波聚类(wave-cluster)算法等网格算法;基于统计的或基于神经网络的模型算法;等等,此处不作赘述。

还应理解,本发明实施例中,将程序文件划分到第一程序文件,程序文件的特征向量的元素与第一程序文件类别的聚类中心数据的相似性最高。所谓相似性最高是指计算程序文件的特征向量的元素与所有程序文件类别的聚类中心数据的相似性,程序文件的特征向量的元素与第一程序文件类别的聚类中心数据的相似性最高。

图8示出了本发明一个实施例的实现分类功能的示意图。图9示出了本发明一个实施例的实现分类功能的示意性流程图。分类功能可以由类别标定器实现,s901中,类别标定器获得一个程序文件的特征向量。继而,在s902,类别标定器使用分类算法,将该特征向量与已有的聚类中心数据进行对较,判断该特征向量与哪个聚类中心数据最接近,则将该特征向量对应的程序文件划分到相应的程序文件类别。

程序文件分类的系统400中还可以包括门户网站(webportal)服务器418。通过webportal服务器418,系统400可以实时地向企业的相关工作人员,例如it管理员,展示当前程序文件的分类信息。相关工作人员可以在每个程序文件类别中抽选典型的程序文件,对这些程序文件以及分类失败的小众的程序文件进行深入的分析。

下面结合图10具体介绍本发明一个实施例的程序文件的分类方法1000。该方法1000由程序文件分类的系统执行,包括:

s1001,客户端中的agent程序将程序文件发送至沙箱服务器。该程序文件可以为客户端中新增的程序文件。

s1002,沙箱服务器运行程序,输出程序文件的行为序列至分类服务器。应理解,行为序列也可以称为行为日志,本发明实施例对此不作限定。

s1003,分类服务器根据行为序列,生成由整数序列构成的特征向量。

s1004,将该程序文件的md5值及其特征向量进行保存,以便于后续进行聚类或分类。

s1005,使用类别标定器根据特征向量,判断该程序文件是否属于一个已知的程序文件类别。当属于时,可以执行s1009;当不属于时,执行s1006,并同时可以执行s1009。

s1006,判断未知类别的程序文件数量是否达到了预定的阈值。未达到阈值时,结束;达到阈值时,执行s1007。

s1007,对未知类别的程序文件的多个特征向量进行聚类运算。

s1008,输出并保存聚类中心数据,以便于后续进行分类时使用。

s1009,通过webporal服务器展示程序文件类别的信息。程序文件类别的信息可以包括每个程序文件类别中的程序文件,还可以包括分类失败或聚类失败的小众的程序文件等。

本发明实施例中,将程序文件的行为序列中的每个行为信息唯一标记为一个整数。例如,对一条行为信息,行为标识为regwritevalue,其对应的行为为执行注册表操作函数regwritevalue,该行为所涉及的路径为hkey_local_machine\system\controlset001\control\bootdriverflags。将上述行为信息作为一个独立特征,给予其一个整数编号。这样,能够将一组行为序列转换为一个整数序列或者称其为特征向量,例如[1,2,3,4,5]。

由于行为信息中行为所涉及的路径的随机性非常大。这导致独立的特征非常多,过于分散。为了解决这一问题,本发明实施例可以采用一套预设的归一化规则对行为信息中的路径进行归一化处理。更具体地说是根据预设的归一化规则,对行为信息中行为涉及的路径进行简化,从而降低独立的特征的数量。

具体地,对路径进行归一化处理的具体流程可以如下。其中,路径包括文件的路径和注册表的路径。

一、对文件的路径进行归一化或简化处理,其中,文件的路径包括文件的目录,例如为m级目录、文件主名和文件扩展名。

a)m级目录的归一化

在分类服务器中可以预先存储至少一组由正则表达式与标识形成的映射关系,将上述至少一组映射关系称为第一类映射关系。其中,第一正则表达式和该第一标识形成的映射关系是第一类映射关系中的一组。当m级目录符合第一正则表达式时,将该m级目录的前n级目录替换为第一标识,将该m级目录的剩余的m-n级替换为数字m-n,m为正整数,n为小于或等于m的正整数。这种情况适用于文件的目录以特殊目录作为根目录或为目录的一部分的情况。

特殊目录包括如表1中所示的目录,但不限于这些。

表1

具体而言,在一个实施例中,对于特殊目录,其可分别对应一个抽象后的标识或名称,在归一化处理时,如果被归一化的路径的目录与表格中的特殊目录的正则表达式相匹配,则将相对应的前几级目录替换为标识。换而言之,如果被归一化的路径的目录与表格中的特殊目录的正则表达式相匹配,则将符合正则表达式的最后一级目录和之前的各级目录作为一个整体替换为标识。同时,将剩余的目录的级数放在标识的后边。

例如,对于目录c:\documentsandsetting\administrator\temporaryinternetfiles\aaa\bbb,根据表1给出的映射关系,可被转换为ietemp\:2。

这是因为鉴别程序文件时,通常我们只关心程序文件访问了哪些关键系统目录,而不关心其访问的具体的子目录。由此,对文件路径中的各级目录进行简化。

对于路径中m级目录不符合第一类映射关系中任一组映射关系时,即目录为非特殊目录时,将该m级目录的前l级目录保留,将该m级目录的剩余的m-l级目录替换为数字m-l,其中,l为小于或等于m的正整数。优选地,l等于1。即,m级目录只提取第一级目录以及后续子目录的级数。例如,目录c:\aaa\bbb\ccc\ddd归一化为c:\aaa\:3。

应理解,m级目录符合第一正则表达式可以等同理解为m级目录中包括某一特殊目录,例如第一目录。

应理解,文件名包括文件主名和文件扩展名,文件主名和文件扩展名之间以分隔符“.”进行分隔。

b)文件主名的归一化

当文件主名符合预定文件主名特征时,将文件主名替换为第二标识,其中,预定文件主名特征和第二标识形成的映射关系是第二类映射关系中的一组。第二类映射关系中包括至少一组由文件主名所符合的特征与标识形成的映射关系。

具体而言,在一个实施例中,文件主名可以分为两类,系统文件主名和非系统文件主名。

例如,当程序文件在运行期间,读取、生成的文件主名与操作系统自身存在的文件主名相一致,则文件主名替换为标识“sysname”,否则文件主名替换为标识“normal”。

此外,还可以以一些其他的特征为标准。例如,如果文件主名中包含空格,则将文件主名替换为标识“space”。如果访问文件是程序文件运行过程中自身创建的,则将文件主名替换为标识“selfcreated”。其他情况,例如文件主名中不包括空格,并且文件主名不为程序文件自身创建,则将文件主名替换为标识“any”。

c)文件扩展名的归一化

当文件扩展名不属于预设的文件扩展名列表中的文件扩展名时,将该文件扩展名替换为预设的第三标识。

具体地,在一个实施例中,如果文件扩展名在预设的文件扩展名列表中,那么无需替换。如果文件扩展名不在预设的文件扩展名列表中,则将文件扩展名替换为标识“unstd”。

例如:notepad为系统文件主名,exe为预设的文件扩展名列表中的文件扩展名。则路径c:\windows\notepad.exe可以归一化为windir\sysname.exe。再如,aaa为非系统文件主名,rty不为预设的文件扩展名列表中的文件扩展名,则路径c:\windows\aaa.rty可以归一化为windir\normal.unstd。

二、对注册表的路径进行归一化,其中,注册表的路径包括注册表的子键,例如为s级子键和注册表值名(valuename)。

d)注册表的s级子键的归一化

当该s级子键符合第三正则表达式时,将该s级子键的前t级目录保留,将该s级子键的剩余的s-t级子键删除,其中,该第三正则表达式和t形成的映射关系是第三类映射关系中的一组,该第三类映射关系中包括至少一组由正则表达式与标识形成的映射关系,s为正整数,t为小于或等于s的正整数。这种情况适用于注册表的s级子键以特殊子键作为根子键或子键的一部分的情况。

特殊子键包括如表2中所示的子键,但不限于这些。

表2

具体而言,在一个实施例中,当s级子键中包括上述特殊子键时,根据“保留子键级数”的数字来确定最终保留至该子键后续的几级子键。或者说,当s级子键符合符合某一关于子键的正则表达式时,将该s级子键的前t级目录保留,将该s级子键的剩余的s-t级子键删除。

应理解,s级子键符合第三正则表达式可以等同理解为s级子键中包括某一特殊子键。

例如,注册表的各级子键为software\adobe\acrobatreader,该路径符合表2的第20项,该项要求保留的子键级数为1,那么归一化后的注册表的子键为software\adobe。

对于没有出现在表2中的子键为非特殊子键,一律保留全路径。

对于其他的情况,例如,当s级子键中的第一子键为全局唯一标示符clsid时,将该第一子键替换为第四标识。

具体而言,在一个实施例中,在注册表的路径中往往存在着大量的clsd类的子键,这种子键的形式可以为{8591da08-f8ad-333d-83fe-599cdaceb1a0},其使用正则表达式可以表示为\{[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\}。当s级子键中的某一级子键为这种子键时,将该级子键名称替换为标识“$clsid”。

例如,注册表的路径的s级子键为clsid\{8591da08-f8ad-333d-83fe-599cdaceb1a0}\progid时,归一化后可以为clsid\$clsid\progid。

e)注册表值名(valuename)保留。

应理解,本发明实施例中正则表达式中的“\”的个数仅是示意性的,正则式的表达也是示意性的。表1和表2的表现形式也是示意性的,其内容可以以其他等同的形式来表示,本发明实施例对此不作限定。

还应理解,行为的路径中还可以包括窗体名和进程名等,对窗体名和进程名也可以进行相应的归一化处理,以降低路径的多样性,本发明实施例对此不作限定。

还应理解,以上归一化手段是长期对恶意程序的行为进行总结得到的,或者说是基于经验得到的。通过本发明实施的对路径进行的上述归一化处理,可以减少程序文件的特征的数量。

一来,本发明实施例的方法可能会减少一个程序文件的特征向量的元素的个数。例如,未进行归一化处理时,程序文件x的特征向量中包括100个元素,即程序文件x对应的整数序列包括100个整数;而经过归一化处理后,程序文件x的特征向量中的元素个数可能减少为70个,即程序文件x对应的整数序列变为包括70个整数。这样,对于一个程序文件而言,将一些类似的行为合并为一个特征,其特征个数变少,其文件特点更突出,更容易与其他文件进行聚类或分类。

二来,本发明实施例的方法可能会增加两个程序文件的相同的特征的个数。例如,未进行归一化处理时,程序文件x的特征向量中包括100个元素,即程序文件x对应的整数序列包括100个整数,程序文件y的特征向量中也包括100个元素,即程序文件y对应的整数序列也包括100个整数,并且假设程序文件x的特征向量的100个元素和程序文件y的特征向量的100个元素完全不相同;而经过归一化处理后,程序文件x的特征向量中的元素个数仍为100个,程序文件y的特征向量中的元素个数也仍为100个,然而程序文件x的特征向量的100个元素和程序文件y的特征向量的100个元素中有若干个相同的元素。这样,对于两个程序文件而言,将一些类似的行为合并为一个特征,其总的特征个数也是变少的,更容易将两个程序文件聚类或分类到一个程序文件类别中。

应理解,本发明实施例中相同的元素是指元素的值相等,与元素在特征向量中或整数序列中的位置无关。

本发明实施例的程序文件的分类方法,获取程序文件的至少两个行为分别对应的行为信息,对行为信息中的行为的路径进行归一化处理,降低路径的多样性,根据对路径进行归一化处理后的行为信息,生成特征向量,并根据特征向量确定程序文件所属的类别,使得归一化处理后的路径的随机性降低,从而使得程序文件的分类效果大大提高。

分析人员对程序文件的的每一类别只需随机抽取几个程序文件进行深入分析,即可了解该类别的程序文件是否可疑。同时,还能及时发现未被分类的、不易被分类的或程序文件数量少的类别中的小众的程序文件,对小众的程序文件重点分析并及时发现恶意的程序文件。这样能够有效地降低分析海量程序文件的工作量、提高分析的效率。

图11示出了本发明一个实施例的程序文件的分类装置1100的示意性框图。该装置1100可以包括:

获取模块1110,用于获取程序文件在运行期间执行的至少两个行为分别对应的行为信息,每个该行为信息中包括行为标识以及在执行所对应的行为时涉及的路径;

归一化模块1120,用于对该获取模块1110获取的每个该行为信息中的路径进行归一化处理,该归一化处理用于降低路径的多样性;

生成模块1130,用于根据经过该归一化模块1120对路径进行归一化处理后的至少两个行为信息,生成特征向量,其中,该特征向量的每个元素对应对路径进行归一化处理后的一个行为信息,将对路径进行归一化处理后的相同的行为信息对应的元素的值相同,相同的行为信息是指行为标识相同并且进行归一化处理后的路径也相同的行为信息;

分类模块1140,用于根据该生成模块1130生成的该特征向量,确定该程序文件所属的类别。

本发明实施例的程序文件的分类装置,获取程序文件的至少两个行为分别对应的行为信息,对行为信息中的行为的路径进行归一化处理,降低路径的多样性,根据对路径进行归一化处理后的行为信息,生成特征向量,并根据特征向量确定程序文件所属的类别,使得归一化处理后的路径的随机性降低,从而改善程序文件的分类效果,进而降低识别恶意程序文件时工作人员的工作量。

可选地,作为一个实施例,行为信息中的路径包括文件的m级目录,归一化模块1120具体可以用于:

如果该m级目录符合第一正则表达式,将该m级目录的前n级目录替换为第一标识,将该m级目录的剩余的m-n级替换为数字m-n,其中,该第一正则表达式和该第一标识形成的映射关系是第一类映射关系中的一组,该第一类映射关系中包括至少一组由正则表达式与标识形成的映射关系,m为正整数,n为小于或等于m的正整数;

如果该m级目录不符合该第一类映射关系中任一组映射关系,将该m级目录的前l级目录保留,将该m级目录的剩余的m-l级目录替换为数字m-l,其中,l为小于或等于m的正整数。

可选地,作为一个实施例,该行为信息中的路径包括文件主名和文件扩展名,该归一化模块具体用于:

如果该文件主名符合预定文件主名特征,将该文件主名替换为第二标识,其中,该预定文件主名特征和该第二标识形成的映射关系是第二类映射关系中的一组,该第二类映射关系中包括至少一组由文件主名所符合的特征与标识形成的映射关系;

如果该文件扩展名不属于预设的文件扩展名列表中的文件扩展名,将该文件扩展名替换为预设的第三标识。

可选地,作为另一个实施例,该行为信息中的路径包括注册表的s级子键,该归一化模块1120具体可以用于:

如果该s级子键符合第三正则表达式,将该s级子键的前t级目录保留,将该s级子键的剩余的s-t级子键删除,其中,该第三正则表达式和t形成的映射关系是第三类映射关系中的一组,该第三类映射关系中包括至少一组由正则表达式与标识形成的映射关系,s为正整数,t为小于或等于s的正整数;

如果该s级子键中的第一子键为全局唯一标示符clsid,将该第一子键替换为第四标识。

上述三个实施例中的归一化模块1120可以基于对恶意程序的行为的总结部署归一化处理。通过本发明实施的对路径进行的上述归一化处理,可以减少程序文件的特征的数量,从而可以更有效地进行程序文件的分类。

可选地,在本发明一个实施例中,该分类模块1140具体可以用于:

通过分类算法,确定该特征向量中的元素分别与多个程序文件类别的聚类中心数据的相似性,该聚类中心数据用于表示所属程序文件类别中的程序文件的特征,包括所属程序文件类别中的程序文件的特征向量的元素;

将该程序文件划分到第一程序文件类别,该特征向量的元素与该第一程序文件类别的聚类中心数据的相似性高于该特征向量的元素与该多个程序文件类别中除该第一程序文件类别之外的其他程序文件类别的聚类中心数据的相似性。

可选地,在本发明另一个实施例中,该分类模块1140具体可以用于:

通过聚类算法,将该特征向量与多个其他程序文件的特征向量进行聚类,形成至少一个程序文件类别,其中,每个程序文件类别中的程序文件的特征向量的元素的相似性高于阈值,该程序文件被划分到该至少一个程序文件类别中的第一程序文件类别。

可选地,在本发明各实施例中,该生成模块1130具体可以用于:

将对路径进行归一化处理后的每个行为信息表示为一个整数,其中,将对路径进行归一化处理后相同的行为信息表示为相同的整数;

将每个该整数作为该特征向量的一个元素,多个该整数构成该特征向量。

可选地,在本发明各实施例中,该获取模块1110具体可以用于:

通过监控程序获取该程序文件;

通过沙箱服务器获得该程序文件的行为序列,该行为序列中包括该至少两个行为分别对应的行为信息。

应理解,装置1100可以为上文中描述的分类服务器。

应注意,本发明实施例中,获取模块1100可以由网络接口实现,归一化模块1120、生成模块1130和分类模块1140可以由处理器实现。如图12所示,装置1200可以包括处理器1210、网络接口1220和存储器1230。其中,存储器1230可以用于存储处理器1210执行的代码等。装置1200还可以包括输出设备或与输出设备连接的输出接口1240,以用于输出程序文件的分类结果。输出设备包括显示器,打印机等等。

装置1200中的各个组件通过总线系统1250耦合在一起,其中总线系统1250除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。

图11所示的装置1100或图12所示的装置1200能够实现前述图1至图10的实施例中所实现的各个过程,为避免重复,这里不再赘述。

应注意,本发明上述方法实施例可以应用于处理器中,或者由处理器实现。处理器可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法实施例的各步骤可以通过处理器中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器可以是通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(fieldprogrammablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器,处理器读取存储器中的信息,结合其硬件完成上述方法的步骤。

可以理解,本发明实施例中的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-onlymemory,rom)、可编程只读存储器(programmablerom,prom)、可擦除可编程只读存储器(erasableprom,eprom)、电可擦除可编程只读存储器(electricallyeprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(randomaccessmemory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(staticram,sram)、动态随机存取存储器(dynamicram,dram)、同步动态随机存取存储器(synchronousdram,sdram)、双倍数据速率同步动态随机存取存储器(doubledataratesdram,ddrsdram)、增强型同步动态随机存取存储器(enhancedsdram,esdram)、同步连接动态随机存取存储器(synchlinkdram,sldram)和直接内存总线随机存取存储器(directrambusram,drram)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。

所述网络接口用于接收来自于企业网络中的沙箱服务器发送的至少一个程序文件的行为序列。具体地,网络接口可以接收沙箱服务器发送的程序文件对应的md5值以及程序文件的行为序列。网络接口1220可以是一个网络接口,也可以是多个网络接口。网络接口1220可以接收一个沙箱服务器发送的行为序列,也可以接收多个沙箱服务器分别发送的行为序列。网络接口可以是有线接口,例如光纤分布式数据接口(fiberdistributeddatainterface,fddi)、千兆以太网(gigabitethernet,ge)接口;网络接口也可以是无线接口。

本发明实施例还提供一种程序文件的分类系统,具体可以如图4所示。该程序文件分类的系统可以包括客户端、沙箱服务器和本发明实施例的程序文件分类的装置,对应于图4中的分类服务器416。客户端中包括监控程序,以通过所述监控程序获取所述客户端中的程序文件;所述沙箱服务器用于接收所述监控程序发送的所述程序文件,以生成所述程序文件的行为序列并将生成的行为序列提供给所述程序文件的分类装置,所述行为序列中包括至少两个行为信息,程序文件分类的装置用于执行本发明实施例的程序文件的分类方法。

本发明实施例的程序文件分类的系统能够本发明实施例中所描述的程序文件分类的方法的各个过程,为避免重复,这里不再赘述。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备,例如可以是个人计算机,服务器,或者网络设备等,执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1