1.本发明涉及网络安全技术领域,尤其涉及一种恶意软件分类方法、装置、设备及介质。
背景技术:2.随着互联网的迅速发展,各种类型的恶意软件应运而生,严重危害了网络公共安全,因而催生了一系列恶意软件检测技术。恶意软件家族分类的目的是挖掘恶意软件的同源性,同家族的恶意软件具有相似的代码、动作行为或攻击目的,根据已有的恶意软件家族信息可以对恶意软件的恶意程度、攻击溯源等提供有力的分析依据。恶意软件分析数据的离散存储方式,难以协助分析人员快速挖掘恶意软件与恶意软件之间、恶意软件与恶意软件家族之间的深层次关联信息。
3.在现有技术中,恶意软件分类方式大致有两种,一种是基于规则的恶意软件检测方法,该方法准确率高,但需要维护大量规则,只能检测已被发现的恶意软件所属家族,对于未知的恶意软件无能为力,难以及时发现新的恶意软件;另一种是基于机器学习的恶意软件检测研究,通常从静态特征、动态特征两方面进行特征提取,但大部分工作是仅围绕应用程序接口(application programming interface,api)函数调用图、操作码序列、权限等其中之一的数据类型上,该方法在实施过程中有的需要标记大量数据以应对新家族或变种,有的虽无需标注数据,但准确率得不到保证。
4.综上,现有的恶意软件家族分类使用的规则或有监督机器学习方法通常只是识别恶意软件所属家族,没有进行更细粒度的恶意软件分类。
技术实现要素:5.本发明提供了一种恶意软件分类方法、装置、设备及介质,用以实现恶意软件在家族基础上更细粒度的分类方法,提高分类精细度。
6.第一方面,本发明提供了一种恶意软件分类方法,所述方法包括:获取第一特征集合,所述第一特征集合包括多个社区的特征,每个社区的特征根据属于同一家族且属于同一社区的恶意软件的特征确定;根据所述第一特征集合与待分类恶意软件的特征,确定所述待分类恶意软件所属的家族和社区。
7.在一种可能的设计中,所述获取第一特征集合,包括:根据至少两个恶意软件的特征,确定所述至少两个恶意软件两两之间的相似度;
8.根据所述相似度,将所述至少两个恶意软件划分到至少一个目标社区;
9.根据所述至少一个目标社区中的恶意软件的特征,确定所述第一特征集合。
10.在一种可能的设计中,所述根据至少两个恶意软件的特征,确定所述至少两个恶意软件两两之间的相似度,包括:
11.确定所述至少两个恶意软件中的恶意软件对,所述恶意软件对包括两个恶意软件;
12.根据不同目标特征方向下所述两个恶意软件分别的子特征,确定所述两个恶意软件在所述目标特征方向下的子相似度;
13.根据所述两个恶意软件在至少一个目标特征方向下的子相似度,确定所述两个恶意软件的相似度。
14.在一种可能的设计中,所述两个恶意软件的相似度高于或等于相似度阈值。
15.在一种可能的设计中,所述根据所述至少一个目标社区中的恶意软件的特征,确定所述第一特征集合,包括:
16.根据所述至少一个目标社区中的恶意软件的特征中,信息量不低于信息量阈值的特征,确定所述第一特征集合;
17.其中,所述信息量与是否已知所述特征的条件下恶意软件分类的信息熵的减少量有关。
18.在一种可能的设计中,所述根据所述第一特征集合与待分类恶意软件的特征,确定所述待分类恶意软件所属的家族和社区,还包括:
19.若待分类恶意软件不属于所述第一特征集合对应的社区,则还可根据所述待分类恶意软件的特征确定所述待分类恶意软件所属社区,所述待分类恶意软件所属社区不属于所述第一特征集合对应的社区。
20.因此,在未能识别恶意软件所属的现有社区的情况下,根据恶意软件确定新的社区。
21.在一种可能的设计中,所述根据所述待分类恶意软件的特征确定所述待分类恶意软件所属社区,包括:
22.在不属于所述第一特征集合对应的社区的恶意软件的数量达到数量阈值后,根据所述不属于所述第一特征集合对应的社区的恶意软件的特征,确定所述不属于所述第一特征集合对应的社区的恶意软件两两之间的相似度;
23.根据所述相似度,将所述不属于所述第一特征集合对应的社区的恶意软件划分到至少一个目标社区。
24.第二方面,本发明还提供了一种恶意软件分类装置,所述装置可包括获取模块和处理模块。该收发模块可用于获取第一特征集合,因此收发模块也可被称为获取模块。处理模块可用于根据所述第一特征集合与待分类恶意软件的特征,确定所述待分类恶意软件所属的家族和社区。
25.第三方面,本发明还提供了一种电子设备,所述电子设备包括处理器,所述处理器用于执行存储器中存储的计算机程序时实现如上述任一所述恶意软件分类方法的步骤。
26.第四方面,本发明还提供了一种计算机可读存储介质,其存储有计算机程序,所述计算机程序被处理器执行时实现如上述任一所述恶意软件分类方法的步骤。
27.在本技术中,可获取第一特征集合,所述第一特征集合包括多个社区的特征,每个社区的特征根据属于同一家族且属于同一社区的恶意软件的特征确定。之后根据所述第一特征集合与待分类恶意软件的特征,确定所述待分类恶意软件所属的家族和社区。因此,可根据第一特征集合识别待分类恶意软件的家族和社区,其中,社区为家族的更细粒度分类,因此实现了相比于家族粒度分类而言更细粒度的分类方式,可提高恶意软件分类方法的精细度。
附图说明
28.为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
29.图1为本发明实施例提供的一种恶意软件分类装置的结构示意图;
30.图2为本发明实施例提供的一种恶意软件分类方法的流程示意图;
31.图3为本发明实施例提供的一种获取第一特征集合的步骤示意图;
32.图4为本发明实施例提供的一种相似度计算的步骤示意图;
33.图5为本发明实施例提供的一种恶意软件本体结构的示意图;
34.图6为本发明实施例提供的一种在文件视角下的关联子图的结构示意图;
35.图7为本发明实施例提供的另一种恶意软件分类装置的结构示意图;
36.图8为本发明实施例提供的另一种恶意软件分类装置的结构示意图。
具体实施方式
37.为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明申请一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
38.为了能够高效、自动化地对恶意软件进行聚类和分类,及时发现恶意软件的新家族和家族变种,以提高分析人员的工作效率,本发明实施例提供了一种恶意软件分类方法、装置、设备及介质。
39.下面对本技术涉及术语进行解释:
40.恶意软件:指在未明确提示用户或未经用户许可的情况下,在用户计算机或其他终端上强行安装运行的软件,故意对个人电脑、服务器、智能设备、电脑网络等造成隐私或机密资料外泄、系统损害、资料丢失等非使用预期故障及信息安全问题,侵犯了用户的合法权益。
41.恶意软件家族:指一组具有相同或相似行为目的和相似代码结构的恶意软件集合。
42.同质图(homogeneity graph):一种只包含一种节点类型和一种边类型的图结构。
43.异质图(heterogeneous graph):一种包含多种节点类型和/或多种边类型的图结构。
44.社区发现(community detection):旨在遵循“社区内部节点连接紧密,不同社区之间节点连接稀疏”的规则对图中的节点集合进行聚类。鲁文(louvain)社区发现算法是一种基于模块度的社区发现算法,通过最大化社区网络的模块度以发现最佳的社区发现结果。
45.在本技术中,社区是相对于家族更细粒度的分类方式,也可将社区称为家族的细类别分类。应理解,一个家族中的不同恶意软件可能属于不同的社区,相同社区中的恶意软件属于相同的家族。
46.本技术实施例提供的恶意软件分类方法可由恶意软件分类装置(以下可简称为装置)100实现。如图1所示,该装置可包括恶意软件关联图谱生成模块、恶意软件相似图谱生成模块、社区发现和社区筛选模块、候选类别向量表示模块,或者恶意软件家族分类模块中的至少一个。下面将结合方法实施例对这些模块的功能进行介绍。
47.下面以恶意软件分类装置作为执行主体,对本技术实施例提供的恶意软件分类方法进行介绍。如图2所示,该方法可包括以下步骤:
48.s201:获取第一特征集合,该第一特征集合包括多个社区的特征,每个社区的特征根据属于同一家族且属于同一社区的恶意软件的特征确定。
49.在实施中,可对同属于同一个社区的恶意软件的特征进行特征提取和筛选,获得该社区中有价值的特征,用于确定该社区的特征,并将多个社区的特征的集合作为第一特征集合。可选的,第一特征集合包括已知全部家族的全部社区的候选特征。这里的候选特征可以是根据信息量从社区的全部特征中筛选的一个或多个特征。其中,特征的信息量与是否已知所述特征的条件下恶意软件分类的信息熵(或称不确定性)的减少量有关。其中,某个特征使得恶意软件分类的信息熵的减少量越大则该特征对于恶意软件的识别越有价值,该社区的候选特征越可能包括该特征。信息熵是信息论中对信息量的一个度量,用于衡量信息源的不确定性,本技术中的“信息源”是指恶意软件分类。其中,已知特征是指,用于执行本技术实施例所述恶意软件分类方法的装置已经知道某一或某些恶意软件具有该特征,根据该特征可用于识别恶意软件所属的家族和/或社区。因此,通过是否已知该特征对恶意软件分类的结果的影响程度,可以反映出该特征为恶意软件分类提供了多少的信息量。
50.其中,恶意软件分类装置还可用于识别属于同一个社区的恶意软件,并确定社区的特征以及第一特征集合,或者,恶意软件分类装置还可从其他装置或设备获取同属于同一个社区的恶意软件的特征以确定第一特征集合,或者,恶意软件分类装置还可从其他装置或设备获取第一特征集合,本技术不具体限定。后文中将对恶意软件分类装置获取第一特征集合的具体方式进行说明。
51.应理解,s201中的社区可以是候选社区。本技术中的候选社区是指社区规模达到指定值的社区。例如,候选社区中包括的恶意软件的数量达到指定值。
52.可选的,对于每个社区,确定该社区对应候选特征的方法可以是:提取社区中包含的所有恶意软件,从恶意软件关联图谱中提取每个恶意软件对应的所有动作序列特征(n
‑
gram,n∈{1,2,3,4
…
})。根据该动作序列特征确定该社区对应的候选特征。
53.可选的,根据该动作序列特征确定该社区对应的候选特征可以选择高信息量的动作序列特征,也可以随机选择,也可以全选。
54.可选的,上述选择高信息量的特征的方法可以是将目标社区中信息量不低于信息量阈值的特征作为候选特征,作为该社区对应的候选特征。具体的,使用信息增益算法筛选出具有高信息量的top
‑
k个特征作为候选特征,各特征的信息增益ig(x)计算公式为:
[0055][0056]
其中,x表示某个特征,h(c)表示所有类别下恶意软件分类的信息熵,或者说,h(c)表示在未知特征x的条件下恶意软件分类的信息熵,h(c|x)表示在已知特征x的条件下恶意软件分类的信息熵,或者说,h(c|x)表示在已知特征x的条件下恶意软件分类的信息熵,c
i
表示第i个类别(即,第i个社区),p(c
i
)对应类别c
i
出现的概率,p(x)和分别表示特征x在所有类别中出现与否的概率,p(c
i
|x)和分别表示特征x在类别c
i
中出现与否的概率。应理解,信息增益越大则信息量越大。
[0057]
可选的,还可以根据上述候选特征对社区进行向量化表示后得到的新的特征向量作为第一特征集合。例如,根据筛选出的候选特征,对每个社区中的恶意软件进行向量化。恶意软件的动作序列特征中如果有候选特征,则在对应的位置用1表示,否则用0表示。然后,针对每个社区,计算所有恶意软件的特征向量的均值,得到新的特征向量作为社区的向量表示,该新的向量即每个家族的细粒度类别的向量表示。
[0058]
可选的,可由候选类别向量表示生成模块执行恶意软件的向量化。
[0059]
s202:根据第一特征集合与待分类恶意软件的特征,确定待分类恶意软件所属的家族和社区。
[0060]
在s202中,恶意软件分类装置可采用分类模型对待分类的恶意软件进行家族分类检测,以确定待分类恶意软件所属的家族和社区。具体的,针对待分类的恶意软件,可提取其动作(或行为、目的)的特征(本技术中可表示为n
‑
gram),并根据社区的候选特征对该恶意软件进行向量化得到相应的向量,例如,恶意软件的特征中如果包括某个候选特征,则在恶意软件的向量对应的位置用1表示,否则用0表示。然后根据该向量逐一与每个家族的每个细粒度类别的向量进行相似度计算。例如,将待分类的恶意软件的向量表示与每个家族的细粒度类别的向量表示进行余弦距离计算,确定相似度。
[0061]
如果该恶意软件与某家族的某个细粒度类别的相似度大于指定阈值,则将该家族细粒度类别的名称(该名称可用于标识恶意软件所属的家族和社区)和相似度分值记录于待定标签表中。在计算完该恶意软件与所有家族的所有细粒度类别的相似度后,读取待定标签表进行处理。
[0062]
如果恶意软件的待定标签表不为空,则读取待定标签表中的所有类别名称,从中提取该恶意软件家族名称,由此可得该恶意软件被分类为哪个恶意软件家族。然后,将待定标签表中的家族细粒度类别名称和相似度分值,以及得到的恶意软件家族名称一起以适当格式(如,javascript对象简谱(javascript object notation,json)格式)汇总作为最终结果。从待定标签中提取恶意软件家族名称,并与待定标签表中的数据一起作为最终结果
输出。在该最终结果中,恶意软件家族名称作为粗粒度标签,家族细粒度类别名称作为细粒度标签,相似度分值表示恶意软件属于该家族细粒度类别的概率。
[0063]
如果s202中,恶意软件分类装置确定待定标签表为空,则表示该恶意软件与所有家族细粒度类别的相似度均低于阈值,即该恶意软件不属于任一已知的家族细粒度类别,因此该恶意软件的最终家族标签为“unknown(未知类别)”。
[0064]
可选的,如果根据第一特征集合与待分类恶意软件的特征,确定待分类恶意软件不属于第一特征集合对应的社区,也就是待定标签表为空,或者说,待分类恶意软件不属于此前确定的任一社区,则恶意软件分类装置可以根据待分类恶意软件的特征确定待分类恶意软件所属社区,待分类恶意软件所属社区不属于第一特征集合对应的社区。其中,第一特征集合对应的社区,是指第一特征集合中的任一特征所属的社区。
[0065]
由于恶意软件是不断演化的,会出现已知家族的新变种,或新家族的情况,以上操作可以尽可能对更多的恶意软件进行分类,从而不断扩充、完善恶意软件家族类别,以尽可能涵盖更多的恶意软件。
[0066]
进一步的,根据所述待分类恶意软件的特征确定待分类恶意软件所属社区,包括:在不属于第一特征集合对应的社区的恶意软件的数量达到数量阈值后,恶意软件分类装置可以根据不属于第一特征集合对应的社区的恶意软件的特征,确定不属于第一特征集合对应的社区的恶意软件两两之间的相似度;根据该相似度,将不属于第一特征集合对应的社区的恶意软件划分到至少一个目标社区。
[0067]
也就是说,当确定有一定数量的不属于第一特征集合对应的社区的恶意软件之后,对这些最终标签为“unknown”的恶意软件,重新进行社区发现和社区筛选操作,即执行s301,根据待分类恶意软件生成新的候选社区,并指定候选社区的名称,打上家族标签,得到新的恶意软件家族细粒度类别,用于后续的恶意软件家族分类任务。具体执行方式可参照s201的具体步骤,这里不再具体展开。
[0068]
可选的,可由恶意软件家族分类模块执行s202,以及根据待分类恶意软件的特征确定待分类恶意软件所属社区,待分类恶意软件所属社区不属于第一特征集合对应的社区。
[0069]
可选的,以上s201所示的获取第一特征集合的方法可由图3所示的步骤示意图实现,具体包括:
[0070]
s301:根据至少两个恶意软件的特征(或称动作特征),确定至少两个恶意软件两两之间的相似度。
[0071]
可选的,获取至少两个恶意软件的特征后,前述两个恶意软件之间的相似度可以根据两个恶意软件的特征的重复程度来确定,例如,两个恶意软件相同或相似的特征越多,这两个恶意软件的相似度越高。
[0072]
如图4所示,可选的,上述s301中两个恶意软件两两之间的相似度的计算方法可通过图4以下步骤实现:
[0073]
s401:获取恶意软件的关联图谱。
[0074]
考虑到恶意软件分析数据存储的离散化,不便于分析人员的关联、下钻分析的情况。可以采集多个(大量)恶意软件的特征,构建恶意软件的关联图谱,以便于计算恶意软件之间的相似度。多个家族、社区的恶意软件及其特征视为实体,实体表示具体的事物,使用
节点表示,实体间的关系用边表示,获得关联图谱,即由关联图谱体现。
[0075]
可选的,关联图谱可由恶意软件分类装置从存储器或其他装置、设备中获取,也可以由恶意软件分类装置构建。
[0076]
构建关联图谱的方法可以是:结合maec标准规范构建了恶意软件关联图谱本体。使用n
‑
gram算法从恶意软件的沙箱分析数据中提取多种长度的动作子序列,根据恶意软件关联图谱本体定义的实体和关系将提取到的数据以规范化、统一的格式表示,并存储到图数据库(如hugegraph、neo4j等)中,得到恶意软件关联图谱。
[0077]
具体的,根据预先定义的恶意软件关联图谱本体,将恶意软件和得到的动作n
‑
gram特征(n∈{1,2,3,4
…
})作为实体,从中提取对应的实体数据和实体间的关系数据存储到图数据库(如hugegraph、neo4j等)中,生成恶意软件关联图谱g={v,e},其中,v表示图谱中的实体集合(即,节点集合,每一个实体数据为一个节点),e表示图谱中的关系集合(即,边集合,每一个关系数据为一条边)。由此,得到恶意软件的一种异质图,即图谱中除了有恶意软件实体外,还有其他类型的实体(如,进程、文件、注册表、域名等),以及实体之间具有不同类型的关系(如,创建、修改、删除等)。
[0078]
其中,预先定义的恶意软件关联图谱本体可以是根据场景目标、数据存储粒度,结合恶意软件描述标准(malware attribute enumeration and characterization,maec),设计了规范化、可适用的恶意软件关联图谱本体结构,用于描述恶意软件的基础信息(如,文件类型、文件大小、ssdeep等)、动作信息(如,恶意软件执行过程中的文件、注册表、网络等操作)和家族信息。本体结构示意图如图5所示。图中圆圈表示实体(或节点),不同名称表示实体的不同类型,如“文件”表示文件类型的实体,包括但不限于“.exe”、“.log”、“.tmp”等格式的文件。图中连线表示关系(或边),不同名称表示实体间的不同关系,如恶意软件实体与文件实体之间具有创建、打开、修改、删除四种关系,分别代表恶意软件在执行过程中的创建文件、打开文件、修改文件、删除文件四种动作。
[0079]
可选的,为了构建关联图谱,可以将恶意软件输入到沙箱系统中,执行并采集恶意软件在执行过程中产生的动作,根据采集的动作确定恶意软件的特征。进一步的,可以将该动作数据直接使用n
‑
gram算法提取特征作为恶意软件的特征。或者,可以将该动作数据做抽象标准化处理,再使用n
‑
gram算法提取动作数据的特征作为恶意软件的特征。
[0080]
示例性的,抽象标准化处理步骤可以是,对采集到的恶意软件的动作数据进行解析,包括但不限于特殊字符过滤或大小写转换等操作。由于恶意软件在执行过程中会产生一些与唯一性标识有关的数据,这些唯一性数据会干扰恶意软件家族的识别和检测,如,某两个恶意软件都具有打开ie浏览器的功能,对应的进程命令行分别为“"c:\program files\internet explorer\iexplore.exe"scodef:1388credat:79873”和“"c:\program files\internet explorer\iexplore.exe"scodef:464credat:145409”,虽然两个命令行的scodef参数和credat参数不同,但两个命令行表达的含义都是iexplore.exe在某个浏览器窗口打开某个标签页,命令行可以表示为“"c:\program files\internet explorer\iexplore.exe"scodef:pid credat:ppid”。对数据进行抽象标准化处理,可以移除这些无实际意义的具有唯一性的数据。另外,对数据进行抽象标准化处理可以增强恶意软件之间的关联性,如上述示例,在标准化之前两个恶意软件因为命令行的具体的参数值不同,从而在该进程上具有不同的进程创建动作,但标准化之后两个恶意软件动作语义相同,在该进
程上具有相同的进程创建动作。
[0081]
示例性的,使用n
‑
gram算法提取动作数据的特征例如,恶意软件m
i
在创建文件动作上的原始动作数据f=[f1,f2,f3,f4,f5],可以得到1
‑
gram特征为{f1,f2,f3,f4,f5},2
‑
gram特征为{f1f2,f2f3,f3f4,f4f5},3
‑
gram特征为{f1f2f3,f2f3f4,f3f4f5},依次类推。1
‑
gram是将动作数据中每个动作作为一个特征,这种方法简单,但可能存在与恶意软件家族不是强相关的特征。n
‑
gram(n∈{2,3,4,5
…
})则是通过滑动窗口从原始动作序列中截取子序列,由此尽可能保留了动作间的执行顺序信息,以及可能蕴含的高级行为信息。执行以上操作是因为恶意软件在执行过程中会有一些特定的动作执行顺序,这种特定的动作序列可能是某一类恶意软件的某种恶意行为的具体表现。因此,在提取特征过程中,除了提取恶意软件的单一动作(即,1
‑
gram)作为特征外,还提取了多种长度的动作序列(n
‑
gram,n∈{2,3,4,5
…
})作为特征。之后可根据提取到的所有特征构建恶意软件关联图谱。使用图谱的形式表示恶意软件分析数据,不仅可以规范化数据的表示结构,还能利用图的特性衔接多实体数据之前的关联,有助于分析人员快速掌握恶意软件相关的多维度信息。
[0082]
可选的,如果由恶意软件分类装置构建关联图谱,则可由恶意软件关联图谱生成模块执行s401。
[0083]
s402:确定至少两个恶意软件中的恶意软件对,该恶意软件对包括两个恶意软件,根据恶意软件的关联子图计算恶意软件对在至少一个视角下的子相似度。
[0084]
具体的,基于预先定义的多个视角,结合图谱的特点设计各视角下的多种查询元路径。然后基于各视角的查询元路径在恶意软件关联图谱中获取恶意软件的关联子图,并计算恶意软件对在各视角下的相似度。
[0085]
其中,视角表示关注事物的一个角度,一个视角对应一个特征方向。例如,在恶意软件分析过程中,可能会侧重关注恶意软件在文件方面的操作,或恶意软件在网络通信方面的操作等等。本文定义的一组视角包括进程视角、文件视角、注册表视角、网络视角。当然,并不限于上述这几种视角,还可以定义更多的视角对恶意软件的相似性进行更全面的分析,只要能够用于衡量恶意软件之间的相似性都可以作为一个视角加入进来。视角可以用f表示,其中,n表示第n个视角;n表示视角总数。
[0086]
可选的,基于预先定义的多个视角,在恶意软件关联图谱中针对每个视角设计对应的恶意软件对的查询元路径,部分示例如表1所示。
[0087][0088][0089]
表1
[0090]
关联子图的获取可以是在完成恶意软件关联图谱构建后,按预先定义的多个视角从关联图谱中提取得到的。以文件视角为例,恶意软件1的创建文件动作数据f=[f1,f2,f3],对应的动作n
‑
gram特征有:1
‑
gram={f1,f2,f3},2
‑
gram={f1f2,f2f3},3
‑
gram={f1f2f3};恶意软件2的创建文件动作数据f=[f2,f3,f4],对应的动作n
‑
gram特征有:1
‑
gram={f2,f3,f4},2
‑
gram={f2f3,f3f4},3
‑
gram={f2f3f4}。恶意软件1的删除文件动作数据f=[f3],对应的动作n
‑
gram特征有:1
‑
gram={f3};恶意软件2的删除文件动作数据f=[f3,
f4],对应的动作n
‑
gram特征有:1
‑
gram={f3,f4},2
‑
gram={f3f4}。经过特征提取后恶意软件1和恶意软件2在恶意软件关联图谱中的关联情况如图6所示,该图谱即为一种可能的关联子图。
[0091]
可选的,根据不同目标特征方向下两个恶意软件分别的子特征,确定两个恶意软件在目标特征方向下的子相似度。其中,子特征指同一个视角下的特征,子相似度记做score(m
i
,m
j
,f),score(m
i
,m
j
,f)=score(m
j
,m
i
,f),其中m
i
、m
j
均表示恶意软件,f表示指定的一个视角。相似度的计算公式为:
[0092][0093]
其中,p
k
代表视角f下的恶意软件对的查询元路径,表示在查询元路径p
k
上恶意软件m
i
到恶意软件m
j
的可达路径数量,表示在查询元路径p
k
上恶意软件m
i
到恶意软件m
i
的可达路径数量,表示在查询元路径p
k
上恶意软件m
j
到恶意软件m
j
的可达路径数量。通过该计算公式得到恶意软件m
i
、m
j
在指定视角f上的相似度,相似度分值越高,表示两个恶意软件在指定视角上具有相同的动作序列越多。
[0094]
s403:根据恶意软件对在不同视角下的子相似度计算相似度(或称总相似度)。
[0095]
通过上述计算得到恶意软件关联图谱中所有恶意软件对在各视角下的相似度分值列表其中表示第n个视角下的恶意软件对的相似度分值。然后,根据给定视角的权重[ω1,ω2……
ω
n
]计算恶意软件对的总相似度,计算公式为其中,视角的权重可以是恶意软件分析人员根据经验设置的,也可以根据s302中通过社区发现的聚类效果进行自适应调整。
[0096]
可选的,可由恶意软件相似图谱生成模块执行s402和/或s403。
[0097]
应理解,在s403之后,可执行s302。
[0098]
s302:根据至少两个恶意软件之间的相似度,将至少两个恶意软件划分到至少一个目标社区。该步骤也可被称为社区发现。
[0099]
可选的,为进一步得到恶意软件的同质图进行社区发现挖掘恶意软件的家族类别,可以将s301中得到的相似度量化,即根据以上s301得到的多个(两个及以上)恶意软件的相似度(m
i
,m
j
,f)三元组,构建恶意软件相似图谱。该图谱为同质图,图谱中的节点均表示恶意软件,边表示两恶意软件之间存在相似关系,边上的属性表示两恶意软件之间的相似程度,数值越大表示相似程度越高。
[0100]
可选的,使用训练集和测试集进行社区发现和评估。其中,根据首次发现时间对图谱中的所有恶意软件进行排序,将发现时间靠前的恶意软件作为训练集,发现时间靠后的恶意软件作为测试集,避免在训练过程中引入“未来”信息。
[0101]
可选的,可以只保留相似度高于或等于相似度阈值的恶意软件构建相似子图。具体的,设置阈值对恶意软件对的相似度进行过滤,仅保留总相似度高于阈值的恶意软件对,得到恶意软件相似子图,这样可以使参与社区划分的节点之间具有更强的关联性。
[0102]
应理解,以上相似度阈值和/或自适应的视角权重也可以是人工配置的,或者可以
是根据经验获得的,例如是根据社区划分的结果学习得到的。以相似度阈值为例,为确定最佳的恶意软件对的相似度阈值,本技术中可使用带有家族标签的恶意软件数据进行交叉验证以评估在当前相似度阈值下的社区发现准确率,由此得到社区发现效果最好的相似度阈值。同时,s403中视角的权重也会影响社区发现的效果,因此,对于自适应的视角权重(非人工设置的权重)也基于社区发现准确率进行动态调整,以获取一组最优的多视角权重。
[0103]
可选的,s302中可使用louvain社区发现算法对恶意软件相似子图进行社区划分,得到至少一个社区。
[0104]
可选的,可以对筛选出目标社区进行命名,命名方式可以是:使用形如“恶意软件家族名称
‑
id”的格式对每个候选社区进行命名,其中恶意软件家族名称来自已知的家族标签,id则是同家族中的唯一编号,用于唯一标识同家族的不同社区,由此得到恶意软件的家族细粒度类别。该命名可作为家族细粒度类别的名称。
[0105]
可选的,可由社区发现和社区筛选模块执行s302。
[0106]
s303:根据至少一个目标社区中的恶意软件的特征,确定第一特征集合。
[0107]
可选的,目标社区可以是s302中确定的至少一个恶意软件所属的社区。
[0108]
可选的,上述筛选策略可以是:对得到的社区按社区规模进行筛选,只选取社区规模达到指定值的社区作为目标社区,可以避免规模较小的社区(包含的恶意软件较少的社区)作为一个家族类别带来家族特征的稀疏性和片面性,并减少家族类别的总数量。
[0109]
随着恶意软件的不断演变,同家族的恶意软件可能有多个变种,或同家族的恶意软件有不同的类型(如木马型、蠕虫型等),同家族的同一变种/类型的相似度会比较高,同家族的不同变种/类型的相似度会有所减弱,因此会存在多个社区对应同一个家族的情况。所以有必要对目标社区进行命名。
[0110]
基于与上述风险评估方法的同一构思本技术实施例还提供一种恶意软件分类装置(或设备),用于实现上述方法。
[0111]
图7示出了本技术实施例提供的一种恶意软件分类装置(或设备)结构示意图。
[0112]
本技术实施例中的电子设备可包括处理器701。处理器701是该装置的控制中心,可以利用各种接口和线路连接该装置的各个部分,通过运行或执行存储在存储器702内的指令以及调用存储在存储器702内的数据。可选的,处理器701可包括一个或多个处理单元,处理器701可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器701中。在一些实施例中,处理器701和存储器702可以在同一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
[0113]
处理器701可以是通用处理器,例如中央处理器(cpu)、数字信号处理器、专用集成电路、现场可编程门阵列或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件,可以实现或者执行本技术实施例中公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者任何常规的处理器等。结合本技术实施例所公开的风险评估系统台所执行的步骤可以直接由硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。
[0114]
在本技术实施例中,存储器702存储有可被至少一个处理器701执行的指令,至少一个处理器701通过执行存储器702存储的指令,可以用于执行前述恶意软件分类装置所执
行的步骤,或具备恶意软件分类装置的功能。
[0115]
存储器702作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块。存储器702可以包括至少一种类型的存储介质,例如可以包括闪存、硬盘、多媒体卡、卡型存储器、随机访问存储器(random access memory,ram)、静态随机访问存储器(static random access memory,sram)、可编程只读存储器(programmable read only memory,prom)、只读存储器(read only memory,rom)、带电可擦除可编程只读存储器(electrically erasable programmable read
‑
only memory,eeprom)、磁性存储器、磁盘、光盘等等。存储器702是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。本技术实施例中的存储器702还可以是电路或者其它任意能够实现存储功能的装置,用于存储程序指令和/或数据。
[0116]
本技术实施例中,该装置还可以包括通信接口703,该通信接口703例如是网口,可用于接收第一特征集合。
[0117]
可选的,图8所示为本技术实施例提供的另一种恶意软件分类装置(或设备)的模块化结构示意图。其中,图8所示模块化结构中,处理模块可用于执行处理动作,收发模块可用于实现通信动作,以实现上述方法实施例中由恶意软件分类装置实施的动作。该收发模块可用于获取第一特征集合,因此收发模块也可被称为获取模块。处理模块可用于根据所述第一特征集合与待分类恶意软件的特征,确定所述待分类恶意软件所属的家族和社区。由处理模块和收发模块执行的动作可参见前述方法实施例部分的说明,这里不再赘述。
[0118]
可选的,可由图7所示处理器701(或处理器701和存储器702)实现图8所示的处理模块801,和/或,由通信接口703实现图8所示的收发模块802。
[0119]
另外,本技术实施例提供的恶意软件分类装置(或设备)可具备图1所示结构,以实现上述方法实施例中由恶意软件分类装置实施的动作。
[0120]
基于相同的发明构思,本技术实施例还提供一种计算机可读存储介质,其中可存储有指令,当该指令在计算机上运行时,使得计算机执行上述方法实施例提供的操作步骤。该计算机可读存储介质可以是图7所示的存储器702。
[0121]
本领域内的技术人员应明白,本技术的实施例可提供为方法、系统、或计算机程序产品。因此,本技术可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本技术可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd
‑
rom、光学存储器等)上实施的计算机程序产品的形式。
[0122]
本技术是参照根据本技术的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0123]
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指
令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0124]
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。显然,本领域的技术人员可以对本技术进行各种改动和变型而不脱离本技术的精神和范围。这样,倘若本技术的这些修改和变型属于本技术权利要求及其等同技术的范围之内,则本技术也意图包含这些改动和变型在内。