病毒检测方法、模型训练方法、装置、设备及存储介质

文档序号:153386 发布日期:2021-10-26 浏览:16次 >En<

阅读说明:本技术 病毒检测方法、模型训练方法、装置、设备及存储介质 (Virus detection method, model training method, device, equipment and storage medium ) 是由 闫华 位凯志 古亮 于 2021-06-16 设计创作,主要内容包括:本申请实施例公开了一种病毒检测方法、模型训练方法、装置、设备及存储介质,该方法包括:获取待检测程序;对待检测程序进行转化处理,生成至少一组待检测图片;根据预设模型对至少一组待检测图片进行病毒检测,获得检测结果;基于检测结果,确定待检测程序是否为病毒程序。这样,通过将待检测程序转化为图片,并通过预设模型对其进行检测,强化了病毒程序和正常程序在编辑器中的视觉差异,从而能够有效鉴别其是否为病毒程序,提高病毒的检出准确度,为计算机安全提供有效保障。(The embodiment of the application discloses a virus detection method, a model training method, a device, equipment and a storage medium, wherein the method comprises the following steps: acquiring a program to be detected; converting the program to be detected to generate at least one group of pictures to be detected; performing virus detection on at least one group of pictures to be detected according to a preset model to obtain a detection result; and determining whether the program to be detected is a virus program or not based on the detection result. Therefore, the program to be detected is converted into the picture, and is detected through the preset model, so that the visual difference between the virus program and the normal program in the editor is strengthened, whether the virus program is the virus program can be effectively identified, the virus detection accuracy is improved, and the computer safety is effectively guaranteed.)

病毒检测方法、模型训练方法、装置、设备及存储介质

技术领域

本申请涉及计算机安全技术领域,尤其涉及一种病毒检测方法、模型训练 方法、装置、设备及存储介质。

背景技术

计算机病毒(Computer Virus)是编制者在计算机程序中插入的破坏计算机 功能或者数据的代码,能影响计算机使用,能自我复制的一组计算机指令或者 程序代码。计算机病毒具有传播性、隐蔽性和破坏性等。计算机病毒不是独立 存在的,而是隐蔽在其他可执行的程序之中。计算机中病毒后,轻则影响机器 运行速度,重则死机系统破坏;因此,病毒给用户带来很大的损失。

目前业内已有的病毒检测方法均存在各种不足,对于病毒及其未知变形/ 变种,现有技术往往存在大量错报、漏报,导致检测结果不准确。

发明内容

有鉴于此,本申请提供了一种病毒检测方法、模型训练方法、装置、设备 及存储介质,能够准确检测出病毒,为计算机安全提供有效保障。

本申请的技术方案是这样实现的:

第一方面,本申请实施例提供了一种病毒检测方法,该方法包括:

获取待检测程序;

对所述待检测程序进行转化处理,生成至少一组待检测图片;

根据预设模型对所述至少一组待检测图片进行病毒检测,获得检测结果;

基于所述检测结果,确定所述待检测程序是否为病毒程序。

这样,通过将待检测程序转化为待检测图片,模拟人类在阅读代码时识别 病毒程序和正常程序的过程,使得计算机视觉领域的成熟深度学习算法能够快 速区分正常程序和病毒程序。

在一些实施例中,在所述获取待检测程序之后,所述方法还包括:

对所述待检测程序的关键信息进行高亮处理,得到高亮处理后的待检测程 序;其中,所述关键信息的类型至少包括下述之一:数字、关键字、敏感字符 串和普通字符串。

这样,由于对待检测程序进行了高亮处理,强化了正常程序和病毒程序二 者在编辑器中的视觉差异。

在一些实施例中,所述对所述待检测程序进行转化处理,生成至少一组待 检测图片,包括:

根据至少一个预设尺寸对所述高亮处理后的待检测程序进行剪裁,得到至 少一组程序片段;

对所述至少一组程序片段进行转化处理,生成所述至少一组待检测图片; 其中,每一组待检测图片对应一个预设尺寸,且每一组待检测图片包括至少一 张待检测图片。

这样,通过对高亮处理后的待检测程序按照预设尺寸进行剪裁,来生成至 少一组预设尺寸的待检测图片,由于按照预设尺寸对待检测程序进行了剪裁, 使得在低密度混淆类病毒检测这种特殊应用场景下,也能够保持有效检测效果。

在一些实施例中,所述对所述待检测程序的关键信息进行高亮处理,包括:

对不同类型的关键信息分别按照不同颜色进行高亮处理。

这样,由于对不同类型的关键信息分别按照不同颜色进行高亮处理,使得 模型能够快速区分病毒程序图片和正常程序图片,同时模型能够较快收敛,得 到检测结果。

在一些实施例中,所述预设模型包括至少一个子预设模型;

相应地,所述根据预设模型对所述至少一组待检测图片进行宏病毒检测, 获得检测结果,包括:

根据第一子预设模型对第一组待检测图片进行病毒检测,得到所述第一组 待检测图片中每一张待检测图片的检测结果;其中所述第一子预设模型为所述 至少一个子预设模型中的任一子预设模型,所述第一组待检测图片为所述至少 一组待检测图片中与所述第一子预设模型相对应的一组待检测图片。

这样,通过对按照不同预设尺寸剪裁得到的不同组待检测图片分别按照其 对应的子预设模型进行检测,由于每一个子预设模型和每一组待检测图片都是 相对应的,因此,在检测时,模型更具有针对性,检测效果更好。

在一些实施例中,所述至少一组待检测图片包括:小图尺寸图片、中图尺 寸图片以及大图尺寸图片,所述预设模型包括小图模型、中图模型以及大图模 型;

相应地,所述根据预设模型对所述至少一组待检测图片进行病毒检测,获 得检测结果,包括:

利用所述小图模型对所述小图尺寸图片进行病毒检测,得到每一张小图尺 寸的图片的检测结果;

利用所述中图模型对所述中图尺寸图片进行病毒检测,得到每一张中图尺 寸的图片的检测结果;

利用所述大图模型对所述大图尺寸图片进行病毒检测,得到每一张大图尺 寸的图片的检测结果。

这样,通过将待检测图片分为小图尺寸图片、中图尺寸图片以及大图尺寸 图片,并分别根据对应的小图模型、中图模型以及大图模型进行检测,得到每 一张图片的检测结果,在进行检测时,不同的模型有针对性的进行检测,多个 模型共同得到检测结果,还避免了一个模型检测存在遗漏的问题。

在一些实施例中,所述基于所述检测结果,确定所述待检测程序是否为病 毒程序,包括:

若所述检测结果指示所述至少一组待检测图片中的其中一张待检测图片为 病毒图片,则确定所述待检测程序为病毒程序;

若所述检测结果指示所述至少一组待检测图片中的所有检测图片均为正常 程序图片,则确定所述待检测程序为正常程序。

这样,通过对待检测图片进行检测的检测结果来确定待检测程序是否为病 毒程序,只要检测结果指示待检测图片中的其中一张待检测图片为病毒图片, 就能够确定待检测程序为病毒程序;同时,只有在检测结果指示所有的待检测 图片均为正常程序图片时,才确定待检测程序为正常程序。如此,能够降低病 毒检测中的漏检率,还能够提高在低密度混淆场景下混淆病毒的检出准确度, 为计算机安全提供有效保障。

在一些实施例中,该方法还包括:

确定所述病毒图片对应的程序片段在所述待检测程序的剪裁位置;

根据所述病毒图片以及所述剪裁位置,确定所述病毒在所述待检测程序中 的混淆位置。

这样,通过病毒图片和病毒图片对应的程序片段在待检测程序中的剪裁位 置,就能够确定出病毒在待检测程序中的具体混淆位置。如此,在检测到病毒 程序之后,为后续对病毒程序进行处理提供了可靠依据。

第二方面,本申请实施例提供了一种模型训练方法,该方法包括:

获取样本程序集;其中,所述样本程序集包括至少一个正常程序样本和至 少一个混淆程序样本;

对所述样本程序集中的样本程序进行转化处理,生成样本图片集;

利用所述样本图片集对初始模型进行训练,得到预设模型。

这样,通过将样本程序转化为样本图片,并使用生成的样本图片来训练模 型,将程序转为图像实体,使得得到的预设模型可以针对转化为图片的程序是 否为病毒程序进行有效检测。

在一些实施例中,所述至少一个混淆程序样本包括第一类混淆程序样本和 第二类混淆程序样本;其中,所述第一类混淆程序样本为从已知病毒程序中提 取到的混淆程序,所述第二类混淆程序样本为利用混淆工具对正常程序进行处 理生成的混淆程序。

这样,由于混淆程序样本不仅包括了从已知病毒程序中提取的混淆程序, 还包括了利用混淆工具对正常程序进行处理生成的混淆程序,使得样本范围更 广,模型泛化能力更强。

在一些实施例中,所述对所述样本程序集中的样本程序进行转化处理,生 成样本图片集,包括:

对所述样本程序集中的样本程序的关键信息进行高亮处理,得到目标样本 程序集;其中,所述关键信息的类型至少包括下述之一:数字、关键字、敏感 字符串和普通字符串;

对所述目标样本程序集中的样本程序进行转化处理,生成样本图片集。

这样,由于对样本程序进行了高亮处理,从而强化了正常程序和病毒程序 二者在编辑器中的视觉差异。

在一些实施例中,所述对所述样本程序集中的样本程序的关键信息进行高 亮处理,包括:

对不同类型的关键信息分别按照不同颜色进行高亮处理。

这样,由于对不同类型的关键信息分别按照不同颜色进行高亮处理,使得 训练得到的预设模型能够快速区分病毒程序图片和正常程序图片,同时还可以 实现模型训练过程中的快速收敛。

在一些实施例中,所述利用所述样本图片集对初始模型进行训练,得到预 设模型,包括:

利用所述至少一组样本图片分别对初始模型进行训练,得到至少一个子预 设模型,将所述至少一个子预设模型确定为所述预设模型;其中,所述至少一 组样本图片是根据至少一个预设尺寸对所述样本图片集中的样本图片进行分类 得到的。

这样,由于用于训练模型的样本图片是按照预设尺寸对样本宏程序进行分 类得到的,使得训练得到的预设模型,在低密度混淆类病毒检测这种特殊应用 场景下,也能够保持有效检测效果。

在一些实施例中,所述至少一个预设尺寸包括小图尺寸、中图尺寸和大图 尺寸;所述方法还包括:

根据小图尺寸、中图尺寸以及大图尺寸对所述样本图片集中的样本图片进 行分类,得到小图尺寸样本图片组、中图尺寸样本图片组以及大图尺寸样本图 片组;

相应地,所述利用至少一组样本图片分别对初始模型进行训练,得到至少 一个子预设模型,包括:

利用所述小图尺寸样本图片组对所述初始模型进行训练,得到小图模型;

利用所述中图尺寸样本图片组对所述初始模型进行训练,得到中图模型;

利用所述大图尺寸样本图片组对所述初始模型进行训练,得到大图模型。

这样,由于优选了小图尺寸、中图尺寸和大图尺寸对样本图片集中的样本 图片进行分类,并最终通过训练得到了小图模型、中图模型和大图模型,使得 这三种子预设模型可以针对三种尺寸的图片进行检测,提高了方案的检测效果。

第三方面,本申请实施例提供了一种病毒检测装置,该宏病毒检测装置包 括:第一获取单元、第一转化单元、检测单元和确定单元;其中,

所述第一获取单元,用于获取待检测程序;

所述第一转化单元,用于对所述待检测程序进行转化处理,生成至少一组 待检测图片;

所述检测单元,用于根据预设模型对所述至少一组待检测图片进行病毒检 测,获得检测结果;

所述确定单元,用于基于所述检测结果,确定所述待检测程序是否为病毒 程序。

这样,利用病毒检测装置将待检测程序转化为待检测图片,并模拟人类在 阅读代码时识别混淆变形的病毒程序和正常程序的过程,使得预设模型能够快 速区分正常程序和病毒程序。

第四方面,本申请实施例提供了一种模型训练装置,该模型训练装置包括: 第二获取单元、第二转化单元和训练单元;其中,

所述第二获取单元,用于获取样本程序集;其中,所述样本程序集包括至 少一个正常程序样本和至少一个混淆程序样本;

所述第二转化单元,用于对所述样本程序集中的样本程序进行转化处理, 生成样本图片集;

所述训练单元,用于利用所述样本图片集对初始模型进行训练,得到预设 模型。

这样,利用模型训练装置将样本程序转化为样本图片,并使用生成的样本 图片来训练模型,将程序转为图像实体,使得得到的预设模型可以针对转化为 图片的程序是否为病毒程序进行有效检测。

第五方面,本申请实施例还提供了一种电子设备,包括:存储器和处理器, 所述存储器存储有可在所述处理器上运行的计算机程序,其特征在于,所述处 理器执行所述程序时实现第一方面任一项所述病毒检测方法中的步骤,或者实 现第二方面任一项所述模型训练方法中的步骤。

第六方面,本申请实施例提供了一种计算机可读存储介质,其上储存有计 算机程序,所述计算机程序被处理器执行时实现第一方面任一项所述病毒检测 方法中的步骤,或者实现第二方面任一项所述模型训练方法中的步骤。

本申请实施例提供一种病毒检测方法、模型训练方法、装置、设备及存储 介质,通过获取待检测程序;对所述待检测程序进行转化处理,生成至少一组 待检测图片;根据预设模型对所述至少一组待检测图片进行病毒检测,获得检 测结果;基于所述检测结果,确定所述待检测程序是否为病毒程序。这样,通 过将待检测程序转化为图片,并通过预设模型对其进行检测,强化了病毒程序 和正常程序在编辑器中的视觉差异,从而能够有效鉴别其是否为病毒程序,提 高病毒的检出准确度,为计算机安全提供有效保障。

附图说明

图1A为相关技术提供的一种全文混淆代码的结构示意图;

图1B为相关技术提供的一种低密度混淆代码的结构示意图;

图2为本申请实施例病毒检测方法的实现流程示意图;

图3为本申请实施例病毒检测方法的实现流程示意图;

图4为本申请实施例模型训练方法的实现流程示意图;

图5为本申请实施例模型训练方法的实现流程示意图;

图6为本申请实施例模型训练方法的实现流程示意图;

图7为本申请实施例病毒检测方法的实现流程示意图;

图8为本申请实施例病毒检测装置的组成结构示意图;

图9为本申请实施例模型训练装置的组成结构示意图;

图10为本申请实施例模型训练装置的组成结构示意图;

图11为本申请实施例电子设备的硬件实体示意图。

具体实施方式

下面结合附图和实施例对本申请的技术方案进一步详细阐述。显然,所描 述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请的实 施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他 实施例,都属于本申请保护的范围。

在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集, 但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集, 并且可以在不冲突的情况下相互结合。

在后续的描述中,使用用于表示元件的诸如“模块”、“部件”或“单元” 的后缀仅为了有利于本申请的说明,其本身没有特定的意义。因此,“模块”、 “部件”或“单元”可以混合地使用。

需要指出,本申请实施例所涉及的术语“第一\第二\第三”仅仅是是区别类 似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允 许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能 够以除了在这里图示或描述的以外的顺序实施。

对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词 和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释:

Visual Basic宏语言(Visual Basic for Applications,VBA),是一种基于Visual Basic编程语言(简称VB)的脚本语言扩展,主要用于扩展Windows应用程序 的功能,常用于Microsoft Office软件中。

宏病毒(Macro Malware),是指能够对计算机或网络造成侵害的恶意宏程 序或内嵌恶意宏程序的文件,其中宏程序一般指Microsoft Office软件中使用的 VBA程序。

混淆(Obfuscation),是将计算机程序转换成功能上等价但难以阅读和理解 的形式的一种技术手段,常被黑客用于绕过反病毒系统。

低密度混淆(Low-Density Obfuscation),是指程序中的混淆部分占比较低。 典型的,通过向混淆程序中增加非混淆的垃圾代码,可降低混淆的密度,形成 低密度混淆程序。

高级持续性威胁(Advanced Persistent Threat,APT),是有组织地对特定对 象展开的持续有效的攻击活动。

机器学习(Machine Learning),是用数据和经验自动改进的计算机算法。

神经网络(Neural Network),是一种模仿动物神经网络行为特征,进行分 布式并行信息处理的算法模型。

深度学习(Deep Learning),是机器学习研究的分支,它是用多层神经网络 的非线性变换对复杂数据建模的算法。

卷积神经网络(Convolutional Neural Networks,CNN),是一种包含卷积计 算的深度学习算法。代表算法实现可以包括:AlexNet、ZFNet、VGGNet、 GoogLeNet和ResNet等。

计算机病毒种类繁多,以宏病毒为例,宏病毒检测是当前反病毒研究的重 点,也是反病毒系统的关键技术。由于Office文件被广泛使用,其宏程序扩展 功能暴露的攻击面较大。从攻击者制作成本和攻击成功的几率考虑,宏病毒的 是性价比极高的攻击手段,因而被频繁使用。

病毒检测的难度在于其混淆变形。例如宏病毒,宏程序作为一种脚本程序, 其混淆变形的成本较低,因此,混淆类的宏病毒十分常见,极大地增加了病毒 检测的难度。一些安全厂商采用机器学习等方法能够准确识别混淆特征明显的 宏病毒。但其中一个重要的挑战是,如果宏病毒的混淆特征被弱化或稀释,即, 通过加入正常代码或非混淆的垃圾代码降低混淆的密度,则业界现有的机器学 习方案将产生大量误报漏报。如图1A所示,其中,全文为混淆代码,所以容 易检出;如图1B所示,混淆代码嵌入在大量正常代码中,不容易检出。

可以理解,准确检测出病毒对于保障计算机安全具有重要意义,然而目前 业内已有的病毒检测方案均存在不足之处。例如目前业内已有的三种常用方案:

第一种方案,是基于病毒规则的方案。具体地,通过病毒分析师或自动化 工具,人工或自动地提取病毒规则至病毒规则库。该方法的缺点主要有两点: 第一,人工提取规则的成本较高,而自动化工具提取的规则质量较低;第二, 病毒规则库持续膨胀将严重降低反病毒系统的性能;第三,该方法难以应对经 过混淆技术处理的病毒变形和变种,容易漏报。

第二种方案,是基于传统机器学习算法的方案。具体地,首先做特征工程 —对大量病毒文件和正常文件提取特征向量,抽象地表示文件样本;然后以特 征向量为训练数据,用传统机器学习算法训练模型;最后,模型预测被测文件 是否为宏病毒文件。由于机器学习算法所产生模型的固有泛化能力,该方案有 检测混淆宏病毒的能力。该方案的缺点有两方面:第一,特征工程需要人工实 施,即,需要人工确定将文件的哪些内容、哪些数据做何种加工才能产生特征 向量;第二,该方案无法应对低密度混淆,将产生漏报。

第三种方案,是基于计算机视觉领域的深度神经网络的方案。具体地,将 病毒文件和正常文件都转换为图片像素矩阵,然后将训练集中文件的图片像素 矩阵作为输入,用计算机视觉领域中的成熟算法训练模型,然后用该模型识别 病毒文件和正常文件。这种方案利用神经网络的性质,无需人工实施特征工程, 克服了传统机器学习算法在特征工程中需要人工参与的缺点。这种方案的缺点 在于:将病毒文件转换为图片像素矩阵过程中,出于考虑便捷性考虑,只利用 图片的抽象概念而不产生实际图片,直接生成像素矩阵;这样生成的像素矩阵 只是格式或形式上满足神经网络算法输入的要求,并不能体现代码审计时人工 看到的混淆宏病毒和正常代码在视觉上的区别。例如,就代码中的换行符而言, 人类在实际文本编辑器或集成开发环境中看到的是视觉上的换行效果;而现有 方法一般对换行符和其他字符同等对待,因而在生成的像素矩阵中不能体现换 行效果。这种局限性导致基于计算机视觉领域的深度神经网络的方案在实践中 效果不佳。

基于此,本申请实施例提供了一种病毒检测方法,该方法的基本思想是: 获取待检测程序;对所述待检测程序进行转化处理,生成至少一组待检测图片; 根据预设模型对所述至少一组待检测图片进行病毒检测,获得检测结果;基于 所述检测结果,确定所述待检测程序是否为病毒程序。这样,通过将待检测程 序转化为图片,并通过预设模型对其进行检测,强化了病毒程序和正常程序在 编辑器中的视觉差异,从而能够有效鉴别其是否为病毒程序,提高病毒的检出 准确度,为计算机安全提供有效保障。

本申请实施例提供一种病毒检测方法,该方法应用于电子设备,该方法所 实现的功能可以通过所述电子设备中的处理器调用程序代码来实现,当然程序 代码可以保存在所述电子设备的存储介质中。图2为本申请实施例宏病毒检测 方法的实现流程示意图。如图2所示,所述方法包括:

步骤S101、获取待检测程序;

需要说明的是,本申请实施例提供了一种静态检测程序是否为病毒程序的 方法,可以通过在不执行程序的情况下,准确检测程序是否为病毒程序。这里, 被检测的程序可以是任何有可能感染计算机病毒的程序。

示例性地,本申请实施例可以针对于带有宏功能的文件,检测其是否感染 宏病毒。带有宏功能的文件的一个典型例子是Microsoft Office文件,Microsoft Office文件通常采用宏语言实现对表格进行动态计算、设计交互窗口等宏功能。 当然,MicrosoftOffice为本申请实施例的示例性应用场景,并不构成对本申请 的限定。在本实施例中,可以从这些带有宏功能的文件中获取待检测程序,也 可以以其它方式获取待检测程序,另外,在一种具体的示例中,待检测程序可 以为宏程序,但是本申请实施例提供的病毒检测方法并不局限于检测宏程序。 在实际应用中,需要结合具体应用场景确定待检测程序获取方式以及待检测程 序的类型,本申请实施例对此不作具体限定。

步骤S102、对所述待检测程序进行转化处理,生成至少一组待检测图片;

本申请实施例通过将程序转为图像实体,来对程序进行病毒检测。因此, 在进行病毒检测之前,首先对待检测程序进行转化处理,将待检测程序转化为 图片,得到至少一组待检测图片。示例性地,可以通过例如carbon,polacode, codezen等转换工具进行转换,将程序的代码转换为图片。

步骤S103、根据预设模型对所述至少一组待检测图片进行病毒检测,获得 检测结果;

其中,预设模型为预先训练的可以根据待检测图片对其进行病毒检测以确 定待检测图片是否为病毒图片的模型。预设模型可以是多种形式的模型,例如 长短期记忆人工神经网络(Long Short-Term Memory,LSTM)模型、双向长短 时记忆神经网络(Bidirectional Long Short-Term Memory,Bi-LSTM)模型、卷 积神经网络(Convolutional Neural Networks,CNN)模型等,甚至也可以是非 神经网络模型。

其中,在进行病毒检测之前,需要根据样本程序集对预设模型进行训练。 即,所述预设模型是利用样本程序集对预设模型进行训练后得到的;其中,所 述样本程序集包括至少一个正常程序样本和至少一个混淆宏程序样本,混淆宏 程序样本也即病毒程序样本。具体地,对所述样本程序集中的样本程序进行转 化处理,生成样本图片集;利用所述样本图片集对预设模型进行训练,得到预 设模型。

这样,利用该预设模型对步骤S102生成的至少一组待检测图片进行检测, 确定该至少一组待检测图片中的图片为病毒程序图片还是正常程序图片。由于 预设模型是通过将样本程序转化为图片进行训练得到的,强化了病毒程序和正 常程序在编辑器中的视觉差异,使得该预设模型对病毒进行检测时的检测结果 更准确。

步骤S104、基于所述检测结果,确定所述待检测程序是否为病毒程序。

这里,通过预设模型对至少一组待检测图片进行病毒检测,确定至少一组 待检测图片是否为病毒图片之后,就可以根据检测结果来确定待检测程序是否 为病毒程序。具体地,如果检测结果表明至少一组待检测图片中至少有一张图 片为病毒程序图片,就说明待检测程序为病毒程序;如果检测结果表明待检测 图片均为正常程序图片,说明待检测程序为正常程序。

本申请实施例中,通过获取待检测程序;然后对所述待检测程序进行转化 处理,生成至少一组待检测图片;再根据预设模型对所述至少一组待检测图片 进行病毒检测,获得检测结果;最后基于所述检测结果,确定所述待检测程序 是否为病毒程序。这样,通过将待检测程序转化为图片,并通过预设模型对其 进行检测,强化了病毒程序和正常程序在编辑器中的视觉差异,从而能够有效 鉴别待检测程序是否为病毒程序。

基于前述实施例,本申请实施例再提供一种病毒检测方法,图3为本申请 实施例病毒检测方法的实现流程示意图。如图3所示,所述方法包括:

步骤S201、获取待检测程序;

需要说明的是,本步骤的具体实施过程与前述实施例的步骤S101一致,具 体详见上述内容,此处不再赘述。

步骤S202、对所述待检测程序的关键信息进行高亮处理,得到高亮处理后 的待检测程序;

其中,所述关键信息的类型至少包括下述之一:数字、关键字、敏感字符 串和普通字符串。

在一些实施例中,所述对所述待检测程序的关键信息进行高亮处理,包括:

对不同类型的关键信息分别按照不同颜色进行高亮处理。

其中,对所述待检测程序进行高亮处理可以为:用预设工具对程序的关键 信息按照类型分别采用不同颜色进行高亮处理,可以对包括对数字、关键字、 字符串和病毒分析师根据经验确定的敏感字符串按不同颜色做高亮显示。这里 对程序进行高亮显示的方式与在训练预设模型时对样本程序进行高亮处理的方 式相同,例如,在训练预设模型时,对样本程序中的数字以红色高亮处理,则 在进行病毒检测时,对待检测程序中的数字也是以红色高亮处理的。

其中,敏感字符串可能与某一字符串完全相同,也可能为某一字符串的一 部分。可以理解,在对敏感字符串进行高亮处理时,由于其本身就是字符串, 所以对于敏感字符串实际上采用了两种颜色先后对其进行高亮处理,而敏感字 符串最终呈现的高亮颜色为将其视为敏感字符串时对其进行高亮处理的颜色。 因此,也可以将字符串分为敏感字符串和普通字符串,分别采用不同的颜色进 行高亮处理。

步骤S203、根据至少一个预设尺寸对所述高亮处理后的待检测程序进行剪 裁,得到至少一组程序片段;

在本申请实施例中,可以按照不同的预设尺寸将高亮处理后的待检测程序 剪裁,按照剪裁时使用的预设尺寸分类,生成待检测程序不同尺寸的程序片段。 对待检测程序进行剪裁时,至少一个预设尺寸可以为一种、两种、三种、四种、 五种以及更多种的预设尺寸。示例性地,预设尺寸可以为具体的尺寸值,例如 可以将待检测程序按照以下三种尺寸进行剪裁,为20k、100k、1M等;预设尺 寸也可以为预设的尺寸范围,本领域技术人员可以根据实际需求进行设置,上 述示例性尺寸并不构成对本申请的限定。

示例性地,按照一个预设尺寸对待检测程序进行剪裁,则能够得到一组预 设尺寸的程序片段。

示例性地,按照三个预设尺寸(定义为小图尺寸、中图尺寸和大图尺寸) 对待检测程序进行剪裁,则能够得到三组预设尺寸的程序片段,分别为小图程 序片段、中图程序片段和大图程序片段。

其中,在根据多个预设尺寸对待检测程序进行剪裁时,如果待检测程序自 身的尺寸小于某一预设尺寸,则无需根据该尺寸对待检测程序进行剪裁,只根 据小于或者等于程序自身的尺寸的预设尺寸分别对待检测程序进行剪裁。可以 理解的是,当程序自身的尺寸等于预设尺寸时,无需对该程序进行剪裁,直接 执行步骤S204。还可以理解,经过剪裁后的程序片段即为该程序的代码片段。

在一些实施例中,所述根据至少一个预设尺寸对所述高亮处理后的待检测 程序进行剪裁,得到至少一组程序片段,可以包括:

根据至少一个预设尺寸以及预设粒度对所述高亮处理后的待检测程序进行 滑动剪裁,迭代地得到至少一组程序片段。

其中,预设粒度可以为程序的一行、程序的两行、甚至程序的多行等,本 申请实施例对此不做具体限定。

示例性地,以程序的一行作为预设粒度,在对待检测程序进行剪裁时,具 体可以是:将待检测程序在编辑器中显示的内容,以某一预设尺寸为剪裁窗口, 以程序的一行为粒度,对待检测程序自程序开始至结束剪裁。优选地,本申请 实施例对待检测程序进行剪裁的方式为以某一粒度滑动剪裁。示例性地,如果 待检测程序为六行代码:A、B、C、D、E和F,优选地,以一行为粒度,假设 两行对应一预设尺寸,则该待检测程序会被剪裁为AB、BC、CD、DE和EF 五段程序片段,该五段程序片段为一组程序片段。上述剪裁方式为本申请实施 例的优选剪裁方式,本领域技术人员也可以按照其它方式对待检测程序进行剪 裁,例如将其分割为AB、CD和EF三段程序片段。

这里,对于步骤S202和S203,还可以是,先根据至少一个预设尺寸对所 述待检测程序进行剪裁,得到至少一组程序片段(未进行高亮处理);再对所述 至少一组程序片段进行高亮处理,得到至少一组高亮处理后的程序片段。剪裁 方式和高亮处理的方式同前述步骤S202和S203,两种处理顺序均可以得到经 过高亮处理的程序片段,本申请实施例对此不作具体限定。

步骤S204、对所述至少一组程序片段进行转化处理,生成所述至少一组待 检测图片;

本申请实施例是通过对经高亮处理后的待检测程序进行转化处理后生成的 图片进行检测来确定待检测程序是否为病毒程序。因此,在得到至少一组程序 片段之后,可以通过代码转图片的转换工具,迭代地得到多个预设尺寸的图片。

其中,每一组待检测图片对应一个预设尺寸,且每一组待检测图片包括至 少一张待检测图片。

示例性地,对应于步骤S203举例的得到一组预设尺寸的程序片段,对应生 成一组待检测图片。

示例性地,对应于步骤S203举例的得到三组预设尺寸的程序片段:小图程 序片段、中图程序片段和大图程序片段,对应生成小图尺寸图片、中图尺寸图 片和大图尺寸图片。

步骤S205、根据预设模型对所述至少一组待检测图片进行病毒检测,获得 检测结果;

在将待检测程序转化为至少一组待检测图片之后,就可以根据预设模型对 至少一组待检测图片进行病毒检测。

在一些实施例中,所述预设模型包括至少一个子预设模型;

相应地,所述根据预设模型对所述至少一组待检测图片进行病毒检测,获 得检测结果,包括:

根据第一子预设模型对第一组待检测图片进行病毒检测,得到所述第一组 待检测图片中每一张待检测图片的检测结果;其中所述第一子预设模型为所述 至少一个子预设模型中的任一子预设模型,所述第一组待检测图片为所述至少 一组待检测图片中与所述第一子预设模型相对应的一组待检测图片。

其中,每一个子预设模型可以是基于一组满足预设尺寸且高亮处理后的样 本图片训练得到的。

也就是说,在本申请实施例中,每一个子预设模型和每一组待检测图片之 间具有对应关系,一个子预设模型检测与其对应的一组待检测图片,以得到这 一组待检测图片中每一张图片的检测结果。

示例性地,对应于步骤S203举例的根据一组预设尺寸的程序片段生成的一 组待检测图片,则使用对应于该尺寸的预设模型来进行病毒检测,以确定该一 组待检测图片中是否存在病毒图片。

所述至少一组待检测图片包括:小图尺寸图片、中图尺寸图片以及大图尺 寸图片,所述预设模型包括小图模型、中图模型以及大图模型;

相应地,所述根据预设模型对所述至少一组待检测图片进行病毒检测,获 得检测结果,包括:

利用所述小图模型对所述小图尺寸图片进行病毒检测,得到每一张小图尺 寸的图片的检测结果;

利用所述中图模型对所述中图尺寸图片进行病毒检测,得到每一张中图尺 寸的图片的检测结果;

利用所述大图模型对所述大图尺寸图片进行病毒检测,得到每一张大图尺 寸的图片的检测结果。

这里,可以对应于步骤S203举例的根据三组预设尺寸(小图尺寸、中图尺 寸和大图尺寸)的程序片段:小图程序片段、中图程序片段和大图程序片段, 生成的小图尺寸图片、中图尺寸图片和大图尺寸图片,则使用对应于小图尺寸 的小图模型来对小图尺寸图片进行病毒检测,使用对应于中图尺寸的中图模型 来对中图尺寸图片进行病毒检测,使用对应于大图尺寸的大图模型来对大图尺 寸图片进行病毒检测,分别得到三组不同尺寸的图片中,每一张图片的检测结 果,以分别确定该三组待检测图片中是否存在病毒图片。

步骤S206、若所述检测结果指示所述至少一组待检测图片中的其中一张待 检测图片为病毒图片,则确定所述待检测程序为病毒程序;

其中,在根据至少一个子预设模型对至少一组待检测图片进行病毒检测, 获得检测结果后,如果检测结果表明该至少一组待检测图片中存在任意一张图 片为病毒图片,就说明待检测程序为病毒程序。

步骤S207、若所述检测结果指示所述至少一组待检测图片中的所有待检测 图片均为正常程序图片,则确定所述待检测程序为正常程序。

这里,在根据预设模型对至少一组待检测图片进行病毒检测,获得检测结 果后,如果检测结果表明至少一组待检测图片中的所有图片均为正常程序图片, 就说明待检测程序为正常程序。

步骤S208、确定所述病毒的位置。

在本申请实施例中,确定待检测程序为病毒程序时,还可以进一步确定病 毒的位置。

在一些实施例中,所述方法还可以包括:

确定所述病毒图片对应的程序片段在所述待检测程序的剪裁位置;

根据所述病毒图片以及所述剪裁位置,确定所述病毒在所述待检测程序中 的混淆位置。

示例性的,对应于步骤S203举例的将待测程序剪裁为AB、BC、CD、DE 和EF五段程序片段,如果确定DE段生成的图片为病毒图片,则说明病毒所在 的位置为程序的DE行。

本申请实施例中,通过对前述实施例的具体实现进行了详细阐述,从中可 以看出,本实施例提出的病毒检测方法,先对待检测程序进行高亮处理,然后 按照至少一个预设尺寸对高亮处理后的待检测程序进行剪裁得到待检测程序片 段,并将其转化为图片,生成至少一组预设尺寸的待检测图片,然后根据至少 一个预设尺寸对应的至少一个子预设模型对生成的至少一组待检测图片进行病 毒检测,不仅能够准确鉴别程序是否为病毒程序,还能进一步确定病毒的位置。 如此,本申请实施例通过这种图像识别的静态病毒检测方法,能够检测病毒及 其未知变形/变种,不仅对于大量混淆病毒的程序有很好的检测效果,并且还能 够在低密度场景下(例如,少量混淆代码嵌入到大量正常代码中)保持有效。

本申请的一实施例中,提供了一种模型训练方法,该方法应用于电子设备, 该方法所实现的功能可以通过所述电子设备中的处理器调用程序代码来实现, 当然程序代码可以保存在所述电子设备的存储介质中。图4为本申请实施例模 型训练方法的实现流程示意图。如图4所示,所述方法包括:

步骤S301、获取样本程序集;

这里,在进行模型训练时,需要首先获取用于训练的样本数据。本申请实 施例中,训练模型是为了使模型能够进行病毒检测,即通过模型准确鉴别程序 为病毒程序还是正常程序。因此,本申请实施例的样本数据为样本程序,且所 述样本程序集包括至少一个正常程序样本和至少一个混淆程序样本,这里,混 淆程序样本也就是病毒程序样本。

步骤S302、对所述样本程序集中的样本程序进行转化处理,生成样本图片 集;

这里,本申请实施例通过对将程序进行转化后生成的样本图片进行训练以 得到预设模型。因此,在获取样本程序之后,先对该样本程序进行处理将其转 化为样本图片。

步骤S303、利用所述样本图片集对初始模型进行训练,得到预设模型。

这里,得到样本图片之后,就可以利用样本图片训练初始模型,以得到预 设模型。

示例性地,利用神经网络作为机器学习算法,例如AlexNet、ZFNet、VGGNet、GoogLeNet和ResNet等,对样本图片进行训练,从而得到预设模型。也可以利 用其它机器学习算法,本申请实施例对此不作具体限定。

本申请实施例中,通过获取样本程序集;然后对所述样本程序集中的样本 程序进行转化处理,生成样本图片集;最后利用所述样本图片集对初始模型进 行训练,得到预设模型。这样,通过将样本程序转化为样本图片,并对样本图 片进行模型训练,强化了病毒程序和正常程序在编辑器中的视觉差异,从而使 得训练得到的预设模型能够有效鉴别程序是否为病毒程序。

基于前述实施例,本申请实施例再提供一种模型训练方法。图5为本申请 实施例模型训练方法的实现流程示意图。如图5所示,所述方法包括:

步骤S401、获取样本程序集;

这里,样本程序表示用于训练模型的样本数据,所述样本程序集包括至少 一个正常程序样本和至少一个混淆宏程序样本。

其中,所述至少一个混淆程序样本包括第一类混淆程序样本和第二类混淆 程序样本;其中,所述第一类混淆程序样本为从已知病毒程序中提取到的混淆 程序,所述第二类混淆程序样本为利用混淆工具对正常程序进行处理生成的混 淆程序。

其中,已知病毒程序即为现有的、已经确定其为病毒程序的程序,例如: 在大量正常代码中嵌入了少量混淆代码的病毒程序。在本步骤中,可以通过人 工提取,将混淆代码提取出来作为样本程序。

另外,将正常程序进行转换生成混淆程序可以使用混淆工具来进行,例如 macro_pack、Macroshop、vba-obfuscator、VBad、Veil Framework、Generate-Macro 等混淆工具。另外,由于混淆工具生成后的代码尺寸一般与其输入成正比,因 此其尺寸可通过对已知程序的选择调节,即通过调整用于进行转换的正常程序 的尺寸可以生成不同尺寸的混淆程序。

可以理解,样本程序集还包括正常程序样本,以使得经过训练的模型能够 区分正常程序和病毒程序。

步骤S402、对所述样本程序集中的样本程序的关键信息进行高亮处理,得 到目标样本程序集;

其中,所述关键信息的类型至少包括下述之一:数字、关键字、敏感字符 串和普通字符串。

在一些实施例中,所述对所述样本程序集中的样本程序的关键信息进行高 亮处理,包括:

对不同类型的所述关键信息分别按照不同颜色进行高亮处理。

其中,对样本程序集中的样本程序进行高亮处理可以通过采用工具对程序 做高亮处理,对程序中的数字、关键字、字符串以及病毒分析师根据经验确定 的敏感字符串按不同颜色做高亮显示。其中,敏感字符串可能与某一字符串完 全相同,也可能为某一字符串的一部分。可以理解,在对敏感字符串进行高亮 处理时,由于其本身就是字符串,所以对于敏感字符串实际上采用了两种颜色 先后对其进行高亮处理,而敏感字符串最终呈现的高亮颜色为将其视为敏感字 符串时对其进行高亮处理的颜色。因此,也可以将字符串分为敏感字符串和普 通字符串,分别采用不同的颜色进行高亮处理。

步骤S403、对所述目标样本程序集中的样本程序进行转化处理,生成样本 图片集;

在本步骤中,可以使用代码转图片的转换工具例如carbon,polacode,codezen等将高亮处理后的程序转化为图片,从而生成样本图片。其中,所述样 本图片集包括至少一张样本图片,且所述样本图片是由所述目标样本程序集中 的样本程序进行转化得到的。

步骤S404、根据至少一个预设尺寸对所述样本图片集中的样本图片进行分 类,得到至少一组样本图片;

这里,可以按照不同的预设尺寸将样本图片集中的样本图片进行分类。在 进行分类时,至少一个预设尺寸可以为一种、两种、三种、四种、五种以及更 多种的预设尺寸。示例性地,预设尺寸可以为具体的尺寸值,例如可以将样本 图片以下三种尺寸进行分类:20k、100k、1M;预设尺寸也可以为预设的尺寸 范围,本领域技术人员可以根据实际需求进行设置,上述示例性尺寸并不构成 对本申请的限定。

示例性地,只有一个预设尺寸时,则能够得到一组预设尺寸的样本。可以 理解的是,样本程序来源于人工提取的已知病毒程序中的混淆片段,以及通过 混淆工具生成的混淆程序,混淆程序的尺寸可以通过输入的正常程序的尺寸调 节,因此,可以通过人工调节使样本图片为同一尺寸或者同一尺寸范围。

在一些实施例中,所述至少一个预设尺寸包括小图尺寸、中图尺寸和大图 尺寸;所述方法还可以包括:

根据小图尺寸、中图尺寸以及大图尺寸对所述样本图片集中的样本图片进 行分类,得到小图尺寸样本图片组、中图尺寸样本图片组以及大图尺寸样本图 片组。

在本申请实施例中,按照三个预设尺寸(小图尺寸、中图尺寸和大图尺寸) 将样本图片进行分类,则能够得到三组样本图片,即小图尺寸样本图片组、中 图尺寸样本图片组和大图尺寸样本图片组。可以理解,如前述,可以通过人工 调整提取的混淆片段尺寸和输入的正常宏程序的尺寸得到三组不同尺寸或者不 同尺寸范围的样本图片。还可以理解,对于更多组的分类方式,同样可以进行 调整分类。

步骤S405、利用至少一组样本图片分别对初始模型进行训练,得到至少一 个子预设模型,将所述至少一个子预设模型确定为所述预设模型。

其中,所述至少一组样本图片是根据至少一个预设尺寸对所述样本图片集 中的样本图片进行分类得到的。

这里,在将样本图片按尺寸分类之后,对不同尺寸分类下的图片分别训练 模型,从而得到预设模型。

在一些具体的实施例中,所述初始模型为神经网络模型。另外,初始模型 也可以为其它类型的模型,本申请实施例对此不作具体限定。

示例性地,对应于步骤S404,当预设尺寸只有一个尺寸时,则能够得到一 个预设模型。

在一些实施例中,可以对应于步骤S404中,根据小图尺寸、中图尺寸以及 大图尺寸对所述样本图片集中的样本图片进行分类,得到小图尺寸样本图片组、 中图尺寸样本图片组以及大图尺寸样本图片组;

相应地,所述利用至少一组样本图片分别对初始模型进行训练,得到至少 一个子预设模型,可以包括:

利用所述小图尺寸样本图片组对初始模型进行训练,得到小图模型;

利用所述中图尺寸样本图片组对初始模型进行训练,得到中图模型;

利用所述大图尺寸样本图片组对初始模型进行训练,得到大图模型。

即产出三个子预设模型:一个小图模型、一个中图模型和一个大图模型, 并将其确定为预设模型。示例性地,采用计算机视觉领域的成熟深度神经网络 作为机器学习算法,例如AlexNet、ZFNet、VGGNet、GoogLeNet和ResNet等 训练模型。

在本申请实施例中,预设模型存在不断更新的过程,因此,当检测到新的 病毒类型时,还可以根据所述新的病毒类型,更新所述预设模型,通过不断更 新来提高预设模型的泛化能力。示例性的,人工加入新的数据样本来进行更新, 或者模型训练装置实时检测是否存在新的程序样本,来对预设模型进行更新。

本申请实施例中,通过对前述实施例的具体实现进行了详细阐述,从中可 以看出,本实施例提出的模型训练方法将样本程序进行高亮处理后生成样本图 片,并将样本图片按照至少一个预设尺寸进行分类,分别进行训练,从而得到 了对应于不同预设尺寸的多个预设模型。如此,通过本申请实施例得到的预设 模型,能够检测混淆病毒及其未知变形/变种,并且还能够在低密度场景下(例 如,少量混淆代码嵌入到大量正常代码中)保持有效。

基于前述的实施例,本申请实施例提供了一种图像识别的病毒静态检测方 法,目的是检测病毒及其未知变形/变种,并且还能够在低密度场景下(例如, 少量混淆代码嵌入到大量正常代码中)保持有效。

在本申请实施例中,以针对宏病毒的检测为例,首先提供了一种机器学习 算法,可以包括训练和预测两个阶段;其次,可以利用计算机视觉领域的成熟 深度学习算法,对正常宏程序和宏病毒做分类;再次,可以模拟人类在阅读代 码时识别混淆变形的宏病毒和正常宏程序的过程,强化二者在编辑器中的视觉 差异。为此,将宏程序的数字、关键字、字符串和敏感字符串在编辑器分别做 不同颜色的高亮显示,并将显示效果分段做截图,本申请实施例对这些截图做 训练和预测。也就是说,本申请实施例主要是用以解决如何表示宏程序,使得 计算机视觉领域的深度学习算法能够有效地鉴别宏程序是否为病毒的问题。

下面将结合附图对本申请实施例中的训练阶段和预测阶段分别作详细阐述。

针对训练阶段而言,参见图6,其示出了本申请实施例模型训练方法的实 现流程示意图。如图6所示,该模型训练方法主要包括:

步骤S501、获取已知宏病毒程序;

步骤S502、获取已知正常宏程序;

这里,在得到预设模型之前,需要首先获取用于训练预设模型的样本数据。 在本申请实施例中,用于训练预设模型的样本数据包括:已知宏病毒程序和已 知正常宏程序,其中,已知宏病毒程序既可以包括全文为混淆代码的已知宏病 毒程序,也可以包括将混淆代码嵌入大量正常代码中的部分混淆的宏病毒程序, 以及其它类型的已知宏病毒程序。

需要说明的是,步骤S501和步骤S502可以同时进行,也可以按照任一步 骤先进行,步骤序号并不限定其进行顺序。

步骤S503、人工提取混淆片段;

步骤S504、混淆工具生成不同尺寸的混淆宏程序;

其中,步骤S503对应于步骤S501,即人工提取混淆片段为对已知宏病毒 程序进行混淆片段提取。示例性地,以已知宏病毒程序为输入,病毒分析师人 工提取其中的混淆程序片段,丢弃其他非混淆的程序部分。

其中,步骤S504对应于步骤S502,即混淆工具生成不同尺寸的混淆宏程 序是对已知正常宏程序进行混淆处理。示例性地,使用混淆工具(例如 macro_pack、Macroshop、vba-obfuscator、VBad、Veil Framework、Generate-Macro 等),生成混淆宏程序。由于混淆工具生成后的代码尺寸一般与其输入成正比, 因此其尺寸可通过对已知宏程序的选择调节。

需要说明的是,使用混淆工具生成混淆类程序能够提高对模型训练的效果, 任何可以对程序进行混淆处理的混淆工具都在本申请实施例的选择范围之内, 上述举例的混淆工具并不构成对本申请的限定。

还需要说明的是,步骤S503和步骤S504可以同时进行,也可以按照任一 步骤先进行,步骤序号并不限定其进行顺序。还可以是先执行S501和S503, 再执行S502和5S04,或者相反的顺序,或者同时进行。在不影响模型训练结 果时,本申请实施例不对执行顺序做具体限定。

步骤S505、用工具对宏程序做高亮处理后生成图片;

这里,对宏程序做高亮处理包括对步骤S503和S504中提取的混淆片段和 生成的混淆宏程序、以及已知的正常宏程序进行高亮处理。示例性的,正常宏 程序可以为步骤S502中获取的正常宏程序。高亮处理可以为对数字、关键字、 字符串和病毒分析师根据经验确定的敏感字符串按不同颜色做高亮显示。然后 用代码转图片的转换工具(例如carbon,polacode,codezen等)生成图片。可 以理解的是,生成的图片包括前述混淆片段、混淆宏程序的图片,以及正常宏 程序的图片。

其中,对数字、关键字、字符串和病毒分析师根据经验确定的敏感字符串 按不同颜色做高亮显示是指对作为样本的混淆宏程序和正常宏程序,即所有样 本的数字、关键字、字符串和病毒分析师根据经验确定的敏感字符串按不同颜 色做高亮显示,例如,对所有数字用红色高亮显示,对所有关键字用绿色高亮 显示,对所有字符串用蓝色高亮显示,对所有敏感字符串用黄色高亮显示。可 以理解的是,存在这种可能,某一字符串整体为敏感字符串或者部分为敏感字 符串,则该敏感字符串或敏感字符串部分实际上既用了蓝色又用了黄色对其进 行高亮处理,但最终呈现的是黄色高亮处理的效果。还需要说明的是,在使用 本申请实施例训练的模型检测待检测宏程序时,对宏程序进行高亮处理的方式 与本步骤相同。

可以理解,上述高亮处理的颜色仅为示例性的,并不构成对本申请的限定。

需要说明的是,将代码转换为图片是成熟技术,有很多开源实现方案,任 何可以将代码转换为图片的转换工具或者技术都在本申请实施例的选择范围之 内,上述举例的转换工具并不构成对本申请的限定。

步骤S506、按照尺寸将图片分类;

这里,对由宏程序转化得到的图片按照尺寸进行分类。示例性地,定义三 个尺寸,分别是小图尺寸、中图尺寸和大图尺寸。需要说明的是,定义三个尺 寸仅为本申请实施例的示例性的对图片进行分类的方式,本领域技术人员可以 根据实际需求定义一种、两种、三种、四种、五种以及更多种尺寸来对图片进 行分类,本申请实施例对此不做具体限定。

步骤S507、按不同类图片训练模型;

这里,对分类后的图片分别进行模型训练。可以理解,在前述步骤S305 中,将图片按尺寸分为几类,本步骤就按照几类模型来训练。示例性的,对应 于将图片分为小图尺寸、中图尺寸和大图尺寸,分别按照小图尺寸图片、中图 尺寸图片和大图尺寸图片来训练模型。示例性地,本步骤可以采用计算机视觉 领域的成熟深度神经网络作为机器学习算法,例如AlexNet、ZFNet、VGGNet、 GoogLeNet和ResNet。

需要说明的是,计算机视觉领域的成熟深度神经网络很多,而且不断推陈 出新,只要能够达到本申请实施例的训练目的,任何种类的深度神经网络都在 本申请实施例的选择范围之内,上述举例的机器学习算法为示例性的,并不构 成对本申请的限定。

步骤S508、得到小图模型;

步骤S509、得到中图模型;

步骤S5010、得到大图模型。

这里,在按不同类图片训练模型之后,就能够得到对应于不同类尺寸的预 设模型。示例性的,对应于将图片分为小图尺寸、中图尺寸和大图尺寸,在对 不同尺寸分类下的图片分别训练模型后,会产出三个模型,即一个小图模型、 一个中图模型和一个大图模型。可以理解,如果是按照其它尺寸来对图片进行 分类,则会得到对应数量的预设模型。

在得到预设模型之后,本申请实施例还提供了一种图像识别的对混淆宏病 毒的静态检测方法,目的是检测混淆宏病毒及其未知变形/变种,即需要针对待 检测宏程序(也可以称之为“被测宏程序”)进行宏病毒检测/预测处理。

具体地,针对预测阶段而言,图7为本申请实施例宏病毒检测方法的的实 现流程示意图。如图7所示,该宏病毒预测方法包括:

步骤S601、获取被测宏程序;

需要说明的是,本步骤的具体实施过程与前述实施例的步骤S101一致,故 此处不再赘述。

步骤S602、按小图尺寸滑动剪裁;

其中,按小图尺寸滑动剪裁可以是,将被测宏程序在编辑器中显示的内容, 以上一实施例定义的小图尺寸为剪裁窗口,以程序的一行为粒度,对被测宏程 序自程序开始至结束剪裁;通过上一实施例步骤S505中使用的代码转图片的转 换工具,迭代地得到多个小图尺寸的图片。

步骤S603、按中图尺寸滑动剪裁;

其中,按中图尺寸滑动剪裁可以是,将被测宏程序在编辑器中显示的内容, 以上一实施例定义的中图尺寸为剪裁窗口,以程序的一行为粒度,对被测宏程 序自程序开始至结束剪裁;通过上一实施例步骤S505中使用的代码转图片的转 换工具,迭代地得到多个中图尺寸的图片。需要注意的是,若被测宏程序较短, 尺寸不足中图尺寸,则跳过此步骤。

步骤S604、按大图尺寸滑动剪裁;

其中,按大图尺寸滑动剪裁可以是,将被测宏程序在编辑器中显示的内容, 以上一实施例定义的大图尺寸为剪裁窗口,以程序的一行为粒度,对被测宏程 序自程序开始至结束剪裁;通过上一实施例步骤S505中使用的代码转图片的转 换工具,迭代地得到多个大图尺寸的图片。需要注意的是,若被测宏程序较短, 尺寸不足大图尺寸,则跳过此步骤。

这里,对于上述步骤S602、S603以及S604,在对被测宏程序进行滑动剪 裁时,还可以以程序的两行或者多行为粒度来进行剪裁。可以理解,当以较细 粒度进行剪裁时,训练和预测宏程序的准确度会更高,相应地耗时增加;当以 较粗粒度进行剪裁时,训练和预测宏程序的速度会更快,相应地准确率会不如 细粒度剪裁。

示例性的,以被测宏程序有十行程序代码,分别为A、B、C、D、E、F、 G、H、I以及J为例,当按小图尺寸滑动剪裁时,若以程序的一行为粒度对被 测宏程序自开始至结束剪裁,如果定义的小图尺寸对应四行代码,则可以得到 ABCD、BCDE、CDEF、DEFG、EFGH、FGHI以及GHIJ共七个程序片段,然 后使用代码转图片的转换工具,从而迭代地得到七个小图尺寸的图片。当按中 图尺寸滑动剪裁时,若以程序的一行为粒度对被测宏程序自开始至结束剪裁, 如果定义的小图尺寸对应八行代码,则可以得到ABCDEFGH、BCDEFGHI以 及CDEFGHIJ共三个程序片段,然后使用代码转图片的转换工具,从而迭代地 得到三个中图尺寸的图片。当按大图尺寸滑动剪裁时,若以程序的一行为粒度 对被测宏程序自开始至结束剪裁,如果定义的小图尺寸对应十二行代码,则由 于被测宏程序的尺寸并不能达到大图尺寸,因此跳过此步骤,不对该被测宏程 序进行大图剪裁。

需要说明的是,上述对被测宏程序剪裁方式的说明仅为示例性的,本领域 技术人员可以结合实际需求来设置粒度、程序尺寸等,本申请实施例对此不作 具体限定。

还需要说明的是,定义三个尺寸仅为本申请实施例的示例性的对图片进行 分类的方式,本领域技术人员可以根据实际需求定义一种、两种、三种、四种、 五种以及更多种尺寸来对图片进行分类,本申请实施例对此不做具体限定。

这里,通过步骤S602、S603以及S604对被测宏程序进行剪裁,可以分别 得到小图尺寸的图片、中图尺寸的图片以及大图尺寸的图片。可以理解的是, 如果被测程序尺寸不足中图尺寸或者大图尺寸,则只会得到小图尺寸的图片, 或者小图尺寸的图片和中图尺寸的图片。

步骤S605、用小图模型预测;

其中,用小图模型预测可以是,用上一实施例训练得到的小图模型对步骤 S605产生的小图尺寸的图片做预测。此步采用计算机视觉领域的成熟深度神经 网络作为机器学习算法,例如AlexNet、ZFNet、VGGNet、GoogLeNet和ResNet, 采用的算法与上一实施例步骤S307保持一致。

步骤S606、用中图模型预测;

其中,用中图模型预测可以是,用上一实施例训练得到的中图模型对步骤 S605产生的大图尺寸的图片做预测。此步采用计算机视觉领域的成熟深度神经 网络作为机器学习算法,例如AlexNet、ZFNet、VGGNet、GoogLeNet和ResNet, 采用的算法与上一实施例步骤S507保持一致。

步骤S607、用大图模型预测;

其中,用大图模型预测可以是,用上一实施例训练得到的大图模型对步骤 S405产生的大图尺寸的图片做预测。此步采用计算机视觉领域的成熟深度神经 网络作为机器学习算法,例如AlexNet、ZFNet、VGGNet、GoogLeNet和ResNet, 采用的算法与上一实施例步骤S307保持一致。

步骤S608、根据预测结果进行判断。

这里,在使用步骤S608、S608和S6010的不同模型做预测后,就可以得 到预测结果,并根据预测结果来判断被测宏程序是正常宏程序,还是混淆的宏 病毒。在进行预测时,步骤S605、S606和S607可以同时进行,也可以以任意 顺序进行,本申请实施例对此不做具体限定。

示例性的,若在采用三种(或一种、两种、多种)模型都进行预测后,将 预测结果进行汇总,存在任意一次被测图片为混淆宏病毒代码的图片,则判定 被测宏程序整体为经过混淆技术处理的宏病毒,同时,根据步骤S602、S603 和S604的剪裁位置,确定宏病毒的具体混淆位置;否则(所有预测均预测图片 为正常宏程序的图片),判定被测宏程序为正常宏程序。

示例性的,若按照先执行步骤S605的顺序进行预测,如果用小图模型确定 出该宏程序为宏病毒程序,则可以停止预测,不再使用其它模型进行预测。如 此,还可以有效节省能耗。

这里,对于上述步骤S602~S607,在得到预测结果以前,可以先同时或者 按照某种顺序将被测宏程序转为不同尺寸图片,再同时或者按照某种顺序用不 同模型来预测;还可以是,先将被测宏程序转为某一尺寸图片,再使用对应的 模型做预测,如果预测到了宏病毒就可以停止预测,也可以,和某一预测到宏 病毒一样,继续将被测宏程序转为另一尺寸图片,再使用对应的模型做预测, 以提高准确率和覆盖率。也就是说,在能得到预测结果的前提下,本申请实施 例不对执行顺序作具体限定。

本申请实施例提供了一种预设模型的模型训练方法和对应的宏病毒预测方 法,在模型训练阶段,通过对已知宏病毒程序的混淆片段、混淆工具生成的混 淆宏程序以及正常宏程序进行高亮处理后生成图片,然后将生成的图片按照尺 寸分类(例如分为小图尺寸图片、中图尺寸图片和大图尺寸图片),对分类后的 不同尺寸图片分贝训练模型,产出对应于不同尺寸的模型(例如小图模型、中 图模型和大图模型)。在预测阶段,通过将被测宏程序按照不同尺寸剪裁并生成 图片,通过模型对生成的图片进行预测,判断其是否为宏病毒的图片,并在任 意一次预测图片为混淆宏病毒代码的图片时,判定被测宏程序整体为经过混淆 技术处理的宏病毒,并通过剪裁位置确定宏病毒的具体混淆位置。如此,本申 请实施例模拟人类在阅读代码时识别混淆变形的宏病毒和正常宏程序的过程, 强化二者在编辑器中的视觉差异,将宏程序的数字、关键字、字符串和敏感字 符串在编辑器分别做不同颜色的高亮显示,并将显示效果分段做截图(即生成 图片)。本申请对这些截图进行训练。这样,通过采用高亮处理后的宏程序图片 来表示宏程序,使得计算机视觉领域的深度学习算法能够有效地鉴别宏程序是 否为病毒,而且,由于对被测宏程序按尺寸进行剪裁,使得该预测方法能够在 低密度场景下仍保持有效。

综上所述,还需要说明的是,第一,计算机视觉领域的成熟深度神经网络 很多,而且不断推陈出新,例如AlexNet、ZFNet、VGGNet、GoogLeNet和ResNet。 本申请实施例的创新点不在于某种深度神经网络,而是在于其在低密度混淆类 宏病毒检测这种特殊应用场景下的应用方式。因此,本申请实施例的深度神经 网络选型不是唯一确定的,是可以替代的。

第二,将代码转换为图片是成熟技术,有很多开源实现方案,例如carbon,polacode,codezen等。该部分的实现方案亦非本申请实施例的创新点,因此也 是可以用任意代码转图片技术替代的。

第三,本申请实施例为了提高效果,使用混淆工具生成混淆类宏程序,其 中所采用的的各种混淆工具亦不作为本申请实施例的创新点;这些混淆工具也 是可替代的。

第四,本申请实施例将图片尺寸定位大、中、小三种,这部分在实际操作 中可按需分为其他类别,例如按尺寸分为四种、五种等等。

本申请实施例提供一种宏病毒检测方法,可以包括模型训练和预测两个阶 段,利用计算机视觉领域的成熟深度学习算法,对正常宏程序和宏病毒做分类; 提供模拟人类在阅读代码时识别混淆变形的宏病毒和正常宏程序的过程,强化 二者在编辑器中的视觉差异,将宏程序的数字、关键字、字符串和敏感字符串 在编辑器分别做不同颜色的高亮显示,并将显示效果分段做截图,本申请实施 例对这些截图做训练和预测。这样,本申请实施例通过将宏程序转化为图片进 行表示,使得计算机视觉领域的深度学习算法能够有效地鉴别宏程序是否为病 毒。也就是说,不仅是针对一般的混淆类宏病毒检测场景,在低密度混淆类宏 病毒检测这种特殊应用场景下,本申请实施例将宏程序转为图像实体,通过计 算机视觉领域的成熟深度神经网络进行训练和预测;在低密度混淆类宏病毒检 测这种特殊应用场景下,本申请实施例还可以按照尺寸分类,生成宏程序不同 尺寸的图像片段,并分别做训练和预测,以提高方案效果;另外,在低密度混 淆类宏病毒检测这种特殊应用场景下,本申请实施例还可以对关键字做高亮处 理,以区分混淆和非混淆样本,以提高方案效果。

基于前述的病毒检测方法实施例,本申请实施例提供一种病毒检测装置, 该装置包括所包括的各单元可以是部分电路、部分处理器、部分程序或软件等 等,均可以通过电子设备中的处理器来实现;当然也可通过具体的逻辑电路实 现;在实施的过程中,处理器可以为CPU(Central Processing Unit,中央处理 器)、MPU(Microprocessor Unit,微处理器)、DSP(Digital Signal Processing, 数字信号处理器)或FPGA(Field ProgrammableGate Array,现场可编程门阵 列)等。

图8为本申请实施例病毒检测装置的组成结构示意图。如图8所示,所述 病毒检测装置700包括第一获取单元701、第一转化单元702、检测单元703 和确定单元704;其中,

第一获取单元701,用于获取待检测程序;

第一转化单元702,用于对所述待检测程序进行转化处理,生成至少一组 待检测图片;

检测单元703,用于根据预设模型对所述至少一组待检测图片进行病毒检 测,获得检测结果;

确定单元704,用于基于所述检测结果,确定所述待检测程序是否为病毒 程序。

在一些实施例中,所述第一转化单元702,还用于对所述待检测程序的关 键信息进行高亮处理,得到高亮处理后的待检测程序;其中,所述关键信息的 类型至少包括下述之一:数字、关键字、敏感字符串和普通字符串

在一些实施例中,所述第一转化单元702,还用于根据至少一个预设尺寸 对所述高亮处理后的待检测程序进行剪裁,得到至少一组程序片段;以及对所 述至少一组程序片段进行转化处理,生成所述至少一组待检测图片;其中,每 一组待检测图片对应一个预设尺寸,且每一组待检测图片包括至少一张待检测 图片。

在一些实施例中,所述第一转化单元702,还用于对不同类型的关键信息 分别按照不同颜色进行高亮处理。

在一些实施例中,所述预设模型包括至少一个子预设模型;相应地,所述 检测单元703,还用于根据第一子预设模型对第一组待检测图片进行病毒检测, 得到所述第一组待检测图片中每一张待检测图片的检测结果;其中所述第一子 预设模型为所述至少一个子预设模型中的任一子预设模型,所述第一组待检测 图片为所述至少一组待检测图片中与所述第一子预设模型相对应的一组待检测 图片。

在一些实施例中,所述至少一组待检测图片包括:小图尺寸图片、中图尺 寸图片以及大图尺寸图片,所述预设模型包括小图模型、中图模型以及大图模 型;相应地,所述检测单元703,还用于利用所述小图模型对所述小图尺寸图 片进行病毒检测,得到每一张小图尺寸的图片的检测结果;以及利用所述中图 模型对所述中图尺寸图片进行病毒检测,得到每一张中图尺寸的图片的检测结 果;以及利用所述大图模型对所述大图尺寸图片进行病毒检测,得到每一张大 图尺寸的图片的检测结果。

在一些实施例中,所述确定单元704,还用于若所述检测结果指示所述至 少一组待检测图片中的其中一张待检测图片为病毒图片,则确定所述待检测程 序为病毒程序;以及若所述检测结果指示所述至少一组待检测图片中的所有待 检测图片均为正常程序图片,则确定所述待检测程序为正常程序。

在一些实施例中,所述确定单元704,还用于确定所述病毒图片对应的程 序片段在所述待检测程序的剪裁位置;以及根据所述病毒图片以及所述剪裁位 置,确定所述病毒在所述待检测程序中的混淆位置。

以上病毒检测装置实施例的描述,与上述病毒检测方法实施例的描述是类 似的,具有同方法实施例相似的有益效果。对于本申请病毒检测装置实施例中 未披露的技术细节,请参照本申请方法实施例的描述而理解。

基于前述的模型训练方法实施例,本申请实施例提供一种模型训练装置, 该装置包括所包括的各单元可以是部分电路、部分处理器、部分程序或软件等 等,均可以通过电子设备中的处理器来实现;当然也可通过具体的逻辑电路实 现;在实施的过程中,处理器可以为CPU、MPU、DSP或FPGA等。

图9为本申请实施例提供模型训练装置800的组成结构示意图,如图9所 示,所述模型训练装置800包括第二获取单元801、第二转化单元802和训练 单元803;其中,

第二获取单元801,用于获取样本程序集;其中,所述样本程序集包括至 少一个正常程序样本和至少一个混淆程序样本。

第二转化单元802,用于对所述样本程序集中的样本程序进行转化处理, 生成样本图片集;

训练单元803,用于利用所述样本图片集对初始模型进行训练,得到预设 模型。

在一些实施例中,所述至少一个混淆宏程序样本包括第一类混淆宏程序样 本和第二类混淆宏程序样本;其中,所述第一类混淆宏程序样本为从已知宏病 毒程序中读取到的混淆宏程序,所述第二类混淆宏程序样本为利用混淆工具对 正常宏程序进行处理生成的混淆宏程序。

在一些实施例中,所述第二转化单元802,还用于对所述样本程序集中的 样本程序的关键信息进行高亮处理,得到目标样本宏程序集;其中,所述关键 信息的类型至少包括下述之一:数字、关键字、敏感字符串和普通字符串;以 及对所述目标样本宏程序集中的样本宏程序进行转化处理,生成样本图片集。

在一些实施例中,所述第二转化单元802,还用于对不同类型的所述关键 信息分别按照不同颜色进行高亮处理。

在一些实施例中,所述训练单元803,还用于利用至少一组样本图片分别 对初始模型进行训练,得到至少一个子预设模型,将所述至少一个子预设模型 确定为所述预设模型;其中,所述至少一组样本图片是根据至少一个预设尺寸 对所述样本图片集中的样本图片进行分类得到的。

在一些实施例中,所述至少一个预设尺寸包括小图尺寸、中图尺寸和大图 尺寸,所述第二转化单元802,还用于根据小图尺寸、中图尺寸以及大图尺寸 对所述样本图片集中的样本图片进行分类,得到小图尺寸样本图片组、中图尺 寸样本图片组以及大图尺寸样本图片组。

所述训练单元803,还用于利用所述小图尺寸样本图片组对初始模型进行 训练,得到小图模型;以及利用所述中图尺寸样本图片组对初始模型进行训练, 得到中图模型;以及利用所述大图尺寸样本图片组对初始模型进行训练,得到 大图模型。

在一些实施例中,如图10所示,所述模型训练装置800还包括:更新单元 804,用于当检测到新的病毒类型时,根据所述新的病毒类型,更新所述至少一 个预设模型。

以上模型训练装置实施例的描述,与上述模型训练方法实施例的描述是类 似的,具有同方法实施例相似的有益效果。对于本申请模型训练装置实施例中 未披露的技术细节,请参照本申请模型训练方法实施例的描述而理解。

需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的 方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储 介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对现有技术 做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一 个存储介质中,包括若干指令用以使得一台电子设备(可以是个人计算机、服 务器等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包 括:U盘、移动硬盘、ROM(Read Only Memory,只读存储器)、磁碟或者光 盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的 硬件和软件结合。

对应地,本申请实施例提供一种电子设备,包括存储器和处理器,所述存 储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现 上述实施例中提供的病毒检测方法或者模型训练方法中的步骤。

对应地,本申请实施例提供一种可读存储介质,其上存储有计算机程序, 该计算机程序被处理器执行时实现上述病毒检测方法或者模型训练方法中的步 骤。

这里需要指出的是:以上存储介质和电子设备实施例的描述,与上述宏病 毒检测方法或者模型训练方法实施例的描述是类似的,具有同方法实施例相似 的有益效果。对于本申请存储介质和电子设备实施例中未披露的技术细节,请 参照本申请病毒检测方法或者模型训练方法实施例的描述而理解。

需要说明的是,图11为本申请实施例电子设备的一种硬件实体示意图,如 图11所示,该电子设备900的硬件实体包括:处理器901、通信接口902和存 储器903,其中

处理器901通常控制电子设备900的总体操作。

通信接口902可以使电子设备900通过网络与其他终端或服务器通信。

存储器903配置为存储由处理器901可执行的指令和应用,还可以缓存待 处理器901以及电子设备900中各模块待处理或已经处理的数据(例如,图像 数据、音频数据、语音通信数据和视频通信数据),可以通过FLASH(闪存) 或RAM(Random Access Memory,随机访问存储器)实现。

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

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

另外,在本申请各实施例中的各功能单元可以全部集成在一个处理模块 中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集 成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用 硬件加软件功能单元的形式实现。本领域普通技术人员可以理解:实现上述 方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的 程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上 述方法实施例的步骤;而前述的存储介质包括:移动存储设备、ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

本申请所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可 以任意组合,得到新的方法实施例。

本申请所提供的几个产品实施例中所揭露的特征,在不冲突的情况下可 以任意组合,得到新的产品实施例。

本申请所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情 况下可以任意组合,得到新的方法实施例或设备实施例。

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

35页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种文件检测方法、装置、设备及可读存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类