CN108334781A - 病毒检测方法、装置、计算机可读存储介质和计算机设备 - Google Patents

病毒检测方法、装置、计算机可读存储介质和计算机设备 Download PDF

Info

Publication number
CN108334781A
CN108334781A CN201810186009.4A CN201810186009A CN108334781A CN 108334781 A CN108334781 A CN 108334781A CN 201810186009 A CN201810186009 A CN 201810186009A CN 108334781 A CN108334781 A CN 108334781A
Authority
CN
China
Prior art keywords
detected
viral
trained
behavioral characteristics
application packet
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201810186009.4A
Other languages
English (en)
Other versions
CN108334781B (zh
Inventor
罗元海
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Tencent Technology Shenzhen Co Ltd
Original Assignee
Tencent Technology Shenzhen Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Tencent Technology Shenzhen Co Ltd filed Critical Tencent Technology Shenzhen Co Ltd
Priority to CN201810186009.4A priority Critical patent/CN108334781B/zh
Publication of CN108334781A publication Critical patent/CN108334781A/zh
Application granted granted Critical
Publication of CN108334781B publication Critical patent/CN108334781B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Virology (AREA)
  • Health & Medical Sciences (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请涉及一种病毒检测方法、装置、计算机可读存储介质和计算机设备,所述方法包括:获取待检测应用包;提取所述待检测应用包的静态特征,所述静态特征是根据所述待检测应用包的代码文件得到的操作码序列;提取所述待检测应用包的动态特征,所述动态特征是在所述待检测应用包上模拟用户行为产生的行为特征;将所述静态特征与所述动态特征输入到训练好的病毒检测模型中,输出所述待检测应用包的病毒标签。通过病毒检测模型对待检测应用包的分析,大幅度提升了检测的效率,同时运用预先对病毒检测模型进行训练,再投入至使用,也大幅度提升了对待检测应用携带病毒种类检测的准确率。

Description

病毒检测方法、装置、计算机可读存储介质和计算机设备
技术领域
本申请涉及计算机技术领域,特别是涉及一种病毒检测方法、装置、计算机可读存储介质和计算机设备。
背景技术
应用病毒,是指在应用使用者不知情的情况下植入使用者使用的应用中的病毒,应用病毒会造成应用使用者的利益损失。
传统技术中,应用病毒的检测技术主要有两种,一种是基于特征码的静态检测技术,另一种是基于动态行为规则的检测技术。基于特征码的静态检测是将被检测文件的特征代码与特征数据库中的病毒代码特征字符串进行匹配,当匹配成功时代表被检测文件是病毒,否则认为被检测文件不是病毒。基于特征码的静态检测技术需要技术人员第一时间发现并获取到病毒样本,并且能够提取出对应病毒的唯一标识特征码,此外还需及时将特征码更新到病毒特征码库中,以便能够在该病毒大规模传播和爆发前将该病毒检测出来。基于动态行为规则的检测技术,是依据专家预先定义的病毒常见行为规则来检测病毒,基于动态行为规则的检测技术的主要原理是,病毒的运行行为经常伴随发送短信、访问网络、动态加载等行为序列。该技术需要预先采集病毒的运行行为,容易漏掉一些需要符合特定条件才能触发的病毒,并且需要专家人工提取规则,效率很低。
上述两种检测技术都需要人工参与检测规则的制定,严重依赖于专家的经验和水平,效率较低,依赖于专家也造成了检测的准确率低下的问题。
发明内容
基于此,有必要针对上述效率较低、准确率低下的技术问题,提供一种能够提高检测效率且能提高检测准确率的病毒检测方法、装置、计算机可读存储介质和计算机设备。
一种病毒检测方法,包括:
获取待检测应用包;
提取所述待检测应用包的静态特征,所述静态特征是根据所述待检测应用包的代码文件得到的操作码序列;
提取所述待检测应用包的动态特征,所述动态特征是在所述待检测应用包上模拟用户行为产生的行为特征;
将所述静态特征与所述动态特征输入到训练好的病毒检测模型中,输出所述待检测应用包的病毒标签。
一种病毒检测装置,所述装置包括:
应用包获取模块,用于获取待检测应用包;
静态特征提取模块,用于提取所述待检测应用包的静态特征,所述静态特征是根据所述待检测应用包的代码文件得到的操作码序列;
动态特征提取模块,用于提取所述待检测应用包的动态特征,所述动态特征是在所述待检测应用包上模拟用户行为产生的行为特征;
病毒标签检测模块,用于将所述静态特征与所述动态特征输入到训练好的病毒检测模型中,输出所述待检测应用包的病毒标签。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
获取待检测应用包;
提取所述待检测应用包的静态特征,所述静态特征是根据所述待检测应用包的代码文件得到的操作码序列;
提取所述待检测应用包的动态特征,所述动态特征是在所述待检测应用包上模拟用户行为产生的行为特征;
将所述静态特征与所述动态特征输入到训练好的病毒检测模型中,输出所述待检测应用包的病毒标签。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
获取待检测应用包;
提取所述待检测应用包的静态特征,所述静态特征是根据所述待检测应用包的代码文件得到的操作码序列;
提取所述待检测应用包的动态特征,所述动态特征是在所述待检测应用包上模拟用户行为产生的行为特征;
将所述静态特征与所述动态特征输入到训练好的病毒检测模型中,输出所述待检测应用包的病毒标签。
上述病毒检测方法、装置、计算机可读存储介质和计算机设备,通过将获取到的待检测应用包的静态特征与动态特征提取出来,将该待检测应用包的静态特征与动态特征输入到预先训练好的病毒检测模型中,输出该待检测应用包的病毒标签,从而可根据输出的病毒标签获知该待检测应用所携带的病毒种类。通过病毒检测模型对待检测应用包的分析,大幅度提升了检测的效率,同时运用预先对病毒检测模型进行训练,再投入至使用,也大幅度提升了对待检测应用携带病毒种类检测的准确率。
附图说明
图1为一个实施例中病毒检测方法的应用环境图;
图2为一个实施例中病毒检测方法的流程示意图;
图3为一个实施例中提取待检测应用包的静态特征的流程示意图;
图4为一个实施例中提取待检测应用包的静态特征的过程示意图;
图5为一个实施例中提取待检测应用包的动态特征的流程示意图;
图6为另一个实施例中提取待检测应用包的动态特征的流程示意图;
图7为一个实施例中提取待检测应用包的动态特征的过程示意图;
图8为一个实施例中将静态特征与动态特征输入到训练好的病毒检测模型中,输出待检测应用包的病毒标签步骤的流程示意图;
图9为一个实施例中将待检测应用的静态特征和动态特征输入到病毒检测模型中后,病毒检测模型的数据处理示意图;
图10为一个实施例中病毒检测模型的生成方式的流程示意图;
图11为一个实施例中步骤1006的流程示意图;
图12为另一个实施例中病毒检测方法的流程示意图;
图13为一个实施例中病毒检测模型训练的流程示意图;
图14为一个实施例中病毒检测装置的结构框图;
图15为一个实施例中病毒标签检测模块的结构框图;
图16为一个实施例中计算机设备的结构框图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
图1为一个实施例中病毒检测方法的应用环境图。参照图1,该病毒检测方法应用于病毒检测系统。该病毒检测系统包括终端110和服务器120。终端110和服务器120通过网络连接。终端110具体可以是台式终端或移动终端,移动终端具体可以手机、平板电脑、笔记本电脑等中的至少一种。服务器120可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
如图2所示,在一个实施例中,提供了一种病毒检测方法。本实施例主要以该方法应用于上述图1中的服务器120来举例说明。参照图2,该病毒检测方法具体包括如下步骤:
步骤202,获取待检测应用包。
待检测应用包是指需要检测是否携带有病毒以及携带的病毒种类的应用包,应用包可以是移动终端的软件应用包,也可以是电脑(PC)端的软件应用包,如后缀为apk或exe的安装包。待检测应用包可以通过终端上传,也可以从网络上获取得到。
步骤204,提取待检测应用包的静态特征,静态特征是根据待检测应用包的代码文件得到的操作码序列。
获取到待检测应用包后,需要先提取出该待检测应用包的静态特征,静态特征是指根据该待检测应用包的代码文件得到的操作码序列,操作码为该待检测应用包的代码文件中的部分代码,可以是具备功能逻辑的代码。获取到多个操作码后,将全部的操作码进行排序后可得到操作码序列。
步骤206,提取待检测应用包的动态特征,动态特征是在待检测应用包上模拟用户行为产生的行为特征。
获取到待检测应用后也需要提取出该待检测应用的动态特征,动态特征是指运行待检测应用后,在待检测应用上模拟用户行为,比如使用Monkey(一种命令行工具)等工具在该待检测应用上模拟用户的操作,使得待检测应用包对应的应用能够产生行为特征。Monkey模拟器是Google为Android应用开发者提供的一款压力测试软件,它通过随机产生用户的触摸和键盘操作来测试应用在高压力使用环境下的抗压能力,在本实施例中可使用Monkey模拟器模拟普通的用户输入。行为特征可以是日志记录等。
步骤208,将静态特征与动态特征输入到训练好的病毒检测模型中,输出待检测应用包的病毒标签。
在提取出该待检测应用的静态特征与动态特征后,将待检测应用对应的静态特征与动态特征全部输入到训练好的病毒检测模型中,训练好的病毒检测模型即可输出该待检测模型对应的病毒标签。训练好的病毒检测模型是指,预先根据本项目或目前的实际需求对病毒检测模型进行了对应的训练,使得病毒检测模型符合实际需要。
通过预先对病毒检测模型进行训练,并将待检测应用包的静态特征与动态特征提取出来并输入到预先训练好的病毒检测模型中,使得预先训练好的病毒检测模型对输入的待检测应用包的静态特征与动态特征的分析与检测,输出对该待检测应用包的预测结果,即病毒标签,通过训练好的病毒检测模型能够更为准确的对输入的待检测应用包是否携带有病毒,携带病毒的种类进行预测,在提高了检测准确率的同时也能够大幅度的提升检测效率。
在一个实施例中,提取待检测应用包的静态特征,如图3所示,包括以下步骤:
步骤302,对待检测应用包进行反汇编,得到汇编文件。
当获取到待检测应用包后,需要提取出待检测应用包的静态特征。先对待检测应用包进行反汇编操作,即可得到汇编文件。通常情况下,待检测应用包是开发人员利用高级语言进行编程编写的代码,代码可经过编译程序生成可以被计算机系统直接执行的文件,即机器语言,那么反汇编则是指将这些执行文件反编译还原成汇编语言或者其他语言。对待检测应用包进行反汇编时,可利用反汇编工具,如baksmali(一种反汇编工具),对待检测应用包中的代码文件进行反汇编操作。
步骤304,按照顺序从汇编文件提取操作码,得到操作码序列作为静态特征。
对待检测应用包进行反汇编得到汇编文件后,可按照顺序从汇编文件中提取出操作码,操作码为汇编文件中的代码。在提取操作码时,可以按照操作码在汇编文件中的运行顺序对操作码进行提取,从而得到由多个操作码组成的操作码序列,操作码序列即作为该待检测应用包的静态特征。
如图4所示,提取静态特征的过程为:获取待检测应用包、进行反汇编操作、得到反汇编后的smali(一种文件格式)文件、提取出opcode(操作码)、得到操作码序列。假设待检测应用包为apk文件,在apk文件中存在格式为dex的代码文件,dex文件是安卓平台上或Dalvik(一种虚拟机的名称)虚拟机上的可执行文件,相当于windows(一种操作系统)平台中的格式为exe的文件。在每个apk安装包中都包含有dex文件,dex文件中包含有该apk安装包对应的应用的所有源码,通过反汇编工具可以获取到相应的Java(一门面向对象编程语言)编码。在进行反汇编时,可使用basksmail等反汇编工具对dex文件进行反汇编操作,反汇编后即可得到格式为smali的文件,每个smali文件代表dex文件中的一个类,每个类由函数组成,每个函数则由指令组成,每个指令由一个操作码和多个操作数组成,操作数是运算符作用的实体,是表达式中的一个组成部分,它规定了指令中进行数字运算的量。
因此,可按照操作码的运行顺序提取出函数的操作码,此处可忽略操作数,再将提取出的操作码组成一个序列,将所有函数的操作码序列进行拼接后即可得到此apk安装包的操作码序列,即待检测应用的操作码序列,得到的操作码序列即为此待检测应用的静态特征。
利用待检测应用包的代码文件,提取出操作码序列作为待检测应用包的静态特征,再将静态特征与动态特征作为待检测应用包的特征输入到病毒检测模型中,使得病毒检测模型能够更为透彻的对待检测应用包是否携带病毒进行检测,提高了检测效率与准确率。
在一个实施例中,提取所述待检测应用包的动态特征,如图5所示,包括以下步骤:
步骤502,获取待检测应用包在模拟器中运行产生的行为日志,行为日志中包含有运行过程中调用的应用程序编程接口API标识。
模拟器是指透过软件模拟硬件处理器的功能和指令系统的程序使计算机或者其他多媒体平台(比如手机)能够运行其他平台上的软件。模拟器分为安卓模拟器、iOS模拟器等,比如安卓模拟器是指能在电脑上模拟安卓操作系统,又叫Android(一种操作系统)沙箱,是一个可以运行在电脑上的虚拟设备,可以不需使用物理设备即可运行Android应用程序,并采集Android程序运行过程中的行为数据。当待检测应用包是后缀为apk的安装包时,则可将待检测应用包在安卓模拟器上运行。
待检测应用包在模拟器上运行时,会产生多条行为日志的记录,在行为日志中包含有待检测应用包的运行过程中调用的API标识,API(Application ProgrammingInterface,应用程序编程接口)是指开发人员在编写程序时定义的函数,通常也可将api称为接口。待检测应用包中预先配置有多个API,待检测应用包在运行时,会触发预先配置的API从而产生不同的行为日志。在预先配置待检测应用包中的API时,每个API都配置有唯一的API标识,根据行为日志中包含的API标识即可获知产生此行为记录对应的API。API标识是开发人员为了便于对API进行区分与管理,预先为每个API编的序号,根据唯一的API标识即可获知与该API标识对应的API。
步骤504,从每条行为日志中提取API标识,形成行为日志序列。
待检测应用包在运行过程中会触发API产生行为日志,行为日志中包含有API标识,因此可从每条行为日志中提取出API标识,将提取到的API标识进行排列即可得到行为日志序列。
步骤506,将行为日志序列转换成行为向量,作为动态特征。
在得到行为日志序列后,可将行为日志序列转换成行为向量,并将行为向量作为动态特征。
获取到待检测应用包的动态特征后,与提取的静态特征共同作为待检测应用包的特征输入到病毒检测模型中,使得病毒检测模型可直接对输入的特征进行分析与提取,得到对待检测应用包的预测结果,提升了检测效率与准确率。
在一个实施例中,行为日志中还包含与API标识对应的API调用时间。将行为日志序列转换成行为向量,包括:按照API调用时间的先后顺序对行为日志序列中的API标识进行排序后转换为行为向量。
在行为日志中不仅包含有API标识,还包括有与API标识对应的API调用时间。在将行为日志序列转换成行为向量时,可根据行为日志中包含的API调用时间对API标识进行排序,比如按照API调用时间的先后顺序对行为日志序列中的API标识进行排序,得到排序后的行为日志序列,再将排序后的行为日志序列转换成行为向量,作为该待检测应用包的动态特征。通过API调用时间的先后顺序对行为日志序列中的API标识进行排序强调了时序性,使得病毒检测模型在对待检测应用包进行病毒检测时,能够对带有时序性的动态特征的分析得到更为准确的病毒检测结果。
在一个实施例中,获取每个API标识对应的行为日志的数量为API调用次数。将行为日志序列转换成行为向量,包括:按照API调用次数对行为日志序列中的API标识进行排序后转换为行为向量。
待检测应用包在模拟器上运行时,每次触发API均会产生一条对应的行为日志,在运行过程中,每个API被触发的次数可以是多次,因此每个API可对应多条行为日志。在获取到全部的行为日志后,可根据行为日志中包含的API标识对行为日志进行统计,统计出每个API标识对应的行为日志的数量,即行为日志的出现次数即为API的调用次数。在获取到每个API的调用次数后,可根据API的调用次数对行为日志序列进行排序,比如按照API调用次数,从大到小依次对行为日志序列中的API标识进行排序,即可得到排序后的行为日志序列,再将排序后的行为日志序列转换成行为向量,作为该待检测应用包的动态特征。
根据API的调用次数对行为日志序列中的API标识进行排序可较为直观的获知哪个API被调用的次数较多,病毒检测模型对于输入的动态特征进行分析时也可参考API的调用次数,可更为迅速的对待检测应用包进行病毒检测,提升了病毒检测效率。
在一个实施例中,提取所述待检测应用包的动态特征,如图6所示,包括以下步骤:
步骤602,获取待检测应用包在模拟器中运行产生的行为日志,行为日志中包含有运行过程中调用的应用程序编程接口API标识。
模拟器是一种运行环境,比如安卓模拟器即模拟安卓系统的环境,因此当待检测应用包为apk包时,可将待检测应用包在安卓模拟器上运行。在将待检测应用包安装到模拟器中运行之前,可以通过自定义ROM(ROM image的简称,只读内存镜像)的方式在待检测应用包的各个API处预先植入一些可记录日志的代码,因此在模拟器上运行待检测应用包时,可获取到每次触发API时产生的行为日志记录。在运行待检测应用包时,可以使用Monkey等工具随机地模拟用户的操作,遍历待检测应用包对应的应用的全部功能,因此待检测应用包中的API则会被触发,即API会被调用,同时预先植入的可记录日志的代码也会被执行,从而生成每次调用API时对应的行为日志。
每次调用一个API均会产生一个行为日志,在每个行为日志中均包含有对应的API标识。每个API对应一个API标识,根据API标识可获知对应的API。在行为日志中还包括有待检测应用对应的编号,即待检测应用标识(uid),待检测应用标识是开发人员预先为待检测应用进行编号得到的标识,根据待检测应用标识即可获知产生该行为日志对应的待检测应用包。
步骤604,从每条行为日志中提取API标识,形成行为日志序列。
在待检测应用包运行过程中,每个API可能被触发多次,因此每个API标识可以对应多条行为日志。在每条行为日志中都包含有API标识,可从每条行为日志中提取出API标识,形成行为日志序列。比如有6条行为日志,提取出这6条行为日志中的API标识,即可得到行为日志序列{5,4,5,2,1,3},其中,每个数字对应一个API标识。
步骤606,按照API调用时间的先后顺序对行为日志序列中的API标识进行排序后转换为行为向量,作为待检测应用包的动态特征。
在行为日志中还包括有API的触发时间,即API的调用时间。在从每条行为日志中提取出API标识后,还可以提取出该API标识对应的调用时间,可根据API的调用时间对行为日志序列中的API标识进行排序。比如行为日志序列{5,4,5,2,1,3}中,按照被调用的时间排序应该是{3,1,4,5,2,5},则按照调用时间对行为日志序列进行排序后得到的行为日志序列即为{3,1,4,5,2,5}。再将排序后的行为日志序列转换为行为向量,即可得到待检测应用包的动态特征。
在其他实施例中,除步骤606中的排序方式外,还可以根据API调用次数对行为日志序列进行排序。每一次调用API均会产生一条行为日志,因此当同一个API被调用多次时则会产生与API对应的多条行为日志。获取到全部的行为日志后,可提取出每个API标识,并统计出每个API标识对应的行为日志的数量即为API的调用次数,可根据API调用次数对行为日志序列进行排列。
假设API标识为1-6,提取出API标识后得到行为日志序列{5,4,5,2,1,2,2,4,1},根据API调用次数对此行为日志序列进行排序后,可得到排序后的行为日志序列为{3,1,2,1,1,0},其中第一个位置上的数字3代表API标识为1的API的调用次数为3,第二个位置上的数字1代表API标识为2的API的调用次数为1,以此类推。再将排序后的行为日志序列转换成行为向量,即可得到待检测应用包的动态特征。
如图7所示,提取动态特征的过程为:获取待检测应用包、在模拟器上运行,获取产生的行为日志、得到行为日志序列、将行为日志序列转换成行为向量、得到行为向量。假设待检测应用包为apk文件,将apk文件安装到安卓模拟器中,安卓模拟器是一种运行环境,可通过自定义ROM的方式在apk的各个API处埋下一些可记录日志的代码,如此,每当apk在运行时有API被调用则会对日志进行记录,即产生行为日志。当apk文件在安卓模拟器上运行时,可使用Monkey等工具随机地模拟用户的操作,使得apk文件对应的应用所包含的功能能尽量被全部遍历。因此在此过程中,apk文件中包含的API会被触发,预先植入的记录日志的代码则会运行,根据此API的调用记录生成一条对应的行为日志,在每条行为日志中都包含有API标识及该API的触发时间。
在apk文件对应的应用程序运行一段时间后,可得到多条行为日志,并提取出每条行为日志中的API标识,形成行为日志序列。在得到行为日志序列后,可按照API调用时间的先后顺序对行为日志序列中的API标识进行排序,或者按照API调用次数对行为日志序列中的API标识进行排序,再将排序后的行为日志序列转换为行为向量,得到的行为向量即为此apk文件的动态特征,即待检测应用的动态特征。提取出动态特征后再将动态特征输入到病毒检测模型中进行病毒检测,提升了病毒检测效率与准确率。
在一个实施例中,训练好的病毒检测模型包括训练好的第一神经网络和训练好的第二神经网络。
病毒检测模型在投入实际的使用之前,需要根据实际的测试项目对检测模型进行针对性的训练,训练好的病毒检测模型才能投入实际使用对待检测应用的病毒类型进行检测。在病毒检测模型中包含有第一神经网络与第二神经网络,在实际使用时,第一神经网络与第二神经网络均已预先训练完毕,因此训练好的病毒检测模型中包含有训练好的第一神经网络和训练好的第二神经网络。神经网络,即人工神经网络(Artificial NeuralNetwork,即ANN),人工神经网络从信息处理角度对人脑神经元网络进行抽象,建立某种简单模型,按不同的连接方式组成不同的网络,在工程与学术界也常直接简称为神经网络或类神经网络。神经网络是一种运算模型,由大量的节点(或称神经元)之间相互联接构成。
将静态特征与动态特征输入到训练好的病毒检测模型中,输出待检测应用包的病毒标签,如图8所示,包括如下步骤:
步骤802,将静态特征输入训练好的第一神经网络,得到训练好的第一神经网络对静态特征进行提取得到的静态向量。
步骤804,将动态特征输入训练好的第二神经网络,得到训练好的第二神经网络对动态特征进行提取得到的动态向量。
当提取出待检测应用包的静态特征和动态特征后,将静态特征与动态特征输入到训练好的病毒检测模型中,实际上是将待检测应用包的静态特征输入到训练好的病毒检测模型中包含的训练好的第一神经网络中,将待检测应用包的动态特征输入到训练好的第二神经网络中。训练好的第一神经网络与训练好的第二神经网络则分别对输入的静态特征与动态特征进行提取,第一神经网络对输入的静态特征进行提取得到静态向量,第二神经网络则对输入的动态特征进行提取得到动态向量。
步骤806,将静态向量与动态向量进行拼接后输入到全连接层进行分类,输出待检测应用包的病毒标签。
全连接层是卷积神经网络中某一个神经层,通常情况下,全连接层会将卷积输出的二维特征图转化成一维的向量,全连接层的作用在于对特征进行高度提纯,便于将数据传递给最后的分类器或者回归。当训练好的第一神经网络与训练好的第二神经网络对输入的静态特征和动态特征进行提取分别得到静态向量与动态向量后,则可以将提取得到的静态向量与动态向量进行拼接后再输入到全连接层中,由全连接层对拼接后的向量进行分类,即可输出对待检测应用包的预测病毒标签。
预先针对实际的检测项目对病毒检测模型进行训练再投入实际的使用,大幅度的提升了病毒检测模型对于待检测应用包的检测准确率。
在一个实施例中,第一神经网络为卷积神经网络,第二神经网络为递归神经网络。
卷积神经网络(Convolutional Neural Network,CNN)是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。卷积神经网络包括卷积层(convolutional layer)和池化层(pooling layer)。对于待检测应用的静态特征,是由第一神经网络进行处理的。静态特征即操作码序列,是从程序文件反汇编得到的,类似于图片的像素列表,因此第一神经网络可采用在图片分类方面效果较好的CNN网络,因此第一神经网络为卷积神经网络。
递归神经网络,是两种人工神经网络的总称,一种是时间递归神经网络(recurrent neural network),另一种是结构递归神经网络(recursive neuralnetwork)。由于第二神经网络处理的是动态特征,动态特征是通过提取行为日志中的API标识,并对API标识进行排序后的行为日志序列进行转换得到的行为向量,具备一定的时序性,因此为了效率更高,可使用递归神经网络。具体地,为了进一步提高效率性,可使用递归神经网络中的时间递归神经网络,比如LSTM网络(Long Short-Term Memory,长短期记忆网络),适合处理和预测时间序列中间隔和延迟相对较长的重要事件。
如图9所示,在将待检测应用的静态特征和动态特征输入到病毒检测模型中后,第一神经网络即卷积神经网络,会对输入的静态特征,即操作码序列进行处理。卷积神经网络的Embedding层(卷积神经网络的神经层,一般为第一层)对输入的静态特征进行处理后将数据传输至卷积神经网络的卷积层、池化层等依次进行数据提取与处理,卷积层和池化层是CNN的标准层,卷积层可以提取特征,池化层则主要是对输入的特征图进行压缩,降低运算复杂性。最终卷积神经网络将对静态特征进行处理后得到静态向量。同样地,病毒检测模型中的第二神经网络,即递归神经网络则对输入的动态特征进行处理,比如LSTM神经网络对输入的行为向量进行处理,得到动态向量。再将卷积神经网络与递归神经网络的处理数据进行拼接,即将静态向量与动态向量进行拼接,再将拼接后的数据传输至全连接层,从而可得到整个病毒检测模型输出的待检测应用包的病毒携带标签,根据输出的病毒标签即可获知该待检测应用包是否携带有病毒以及携带的病毒类型。
针对不同的特征使用不同的神经网络进行数据处理,大幅度的提升了对待检测应用包的病毒检测效率,也提升了对病毒检测的准确率。
在一个实施例中,如图10所示,病毒检测模型的生成方式包括以下步骤:
步骤1002,获取多个带病毒标签的应用包样本。
应用包样本可来源于病毒数据库,也可来源于网络。应用包样本携带有病毒标签,比如应用包样本的病毒标签有0,1,2,3,那么标签为0则代表该应用包样本未携带有病毒,标签为1代表该应用包样本携带有病毒类型为1的病毒,以此类推。病毒标签一般由开发人员设定,因此病毒标签的实际代表意义可由开发人员根据实际需求而定。
为了确保训练的准确性,一般应用包样本为多个,在获取到多个应用包样本后,会先确认每个应用包样本是否携带有病毒以及携带的病毒类型,确认后可为每个应用包样本添加对应的病毒标签,以此得到带病毒标签的应用包样本。
步骤1004,逐个提取多个应用包样本的静态特征和动态特征。
在训练过程中对于应用包样本的静态特征与动态特征的提取方式,与实际检测过程中对待检测应用包的静态特征与动态特征的提取方式是一致的。逐个提取出每个应用包样本的静态特征和动态特征,即可得到每个应用包样本对应的静态特征与动态特征,由于每个应用包样本都携带有病毒标签,因此每个应用包样本对应的静态特征与动态特征也会携带有对应的病毒标签。
步骤1006,将每个应用包样本对应的静态特征样本与动态特征样本输入到病毒检测模型中进行训练,得到训练好的病毒检测模型。
在提取出每个应用包样本的静态特征和动态特征后,可依次将每个应用包样本对应的静态特征样本与动态特征样本输入到病毒检测模型中进行训练。为了避免混乱,可将每个应用包样本的静态特征与动态特征进行合并,这样每个应用包样本则只会对应一条特征,该特征携带有对应的病毒标签,再依次将每个应用包样本对应的特征输入到病毒检测模型中进行训练,训练完毕后即可得到训练好的病毒检测模型。运用预先训练好的病毒检测模型投入实际对待检测应用包的病毒检测,大幅度的提升了病毒检测模型对于待检测应用包的检测准确率。
在一个实施例中,如图11所示,上述步骤1006,包括:
步骤1102,获取病毒检测模型输出的对每个应用包样本的病毒预测标签。
步骤1104,根据病毒预测标签得到病毒检测模型的预测准确率。
当依次将每个应用包样本对应的静态特征样本与动态特征样本输入到病毒检测模型中进行训练时,病毒检测模型会输出对每个应用包样本的病毒预测标签。输入的静态特征样本与动态特征样本携带有病毒标签,因此可根据每个应用包样本的病毒预测标签得到病毒检测模型的预测准确率。
比如,应用包样本的数量为50,当将50个应用包样本对应的静态特征样本与动态特征样本全部输入到病毒检测模型中进行训练后,得到50个病毒预测标签,其中病毒预测标签与应用包样本原本携带的病毒标签一致的数量为25,则预测准确率为25/50=0.5,即病毒检测模型的预测准确率为50%。
步骤1106,检测病毒检测模型的预测准确率是否达到预设阈值,若是,则执行步骤1108;若否,则执行步骤1110。
步骤1108,得到训练好的病毒检测模型。
步骤1110,返回步骤1002。
在训练时,开发人员会预先设定一个准确率的阈值,即预设阈值。当病毒检测模型的预测准确率达到预设阈值时,则判定病毒检测模型训练完毕,即可得到训练好的病毒检测模型。若是病毒检测模型的预测准确率未达到预设阈值,则需要继续对病毒检测模型进行训练,即重新获取新的一批带病毒标签的应用包样本,并提取出每个应用包样本的静态特征样本与动态特征,再将提取出的静态特征与动态特征输入到病毒检测模型中进行训练,直到病毒检测模型的预测准确率达到预设阈值时,即判定训练完毕,得到训练好的病毒检测模型。
比如,当预设阈值为98%时,当病毒检测模型的预测准确率为95%时,则仍然需要继续对病毒检测模型进行训练;当病毒检测模型的预测准确率高于或等于98%时,即可认为训练完毕,得到训练好的病毒检测模型,训练好的病毒检测模型即可投入至实际预测项目中,对待检测应用进行病毒预测。
为了进一步确保训练的病毒检测模型的准确率,当病毒检测模型的预测准确率达到了预设阈值后,还可以对病毒检测模型进行测试,测试通过率达到预设测试准确率则认为训练后的病毒检测模型是真正训练完毕的,否则需要继续对病毒检测模型进行训练。比如,获取一批与应用包样本不同的应用包,将应用包添加对应的病毒标签后,并提取出应用包的静态特征与动态特征并输入到病毒检测模型中,再获取病毒检测模型对输入的应用包的病毒预测标签,当全部的应用包都输入完毕后,可得到对病毒检测模型的测试通过率。
比如输入20个带有病毒标签的应用包输入至已经训练完毕的病毒检测模型中进行测试,可得到病毒检测模型输出的20个病毒预测标签。假设病毒预测标签与应用包自带的病毒标签相同的数量为18,则测试通过率为18/20=0.9,当开发人员预先设置的预设测试准确率为0.95时,则说明该病毒检测模型的测试未通过,需要继续训练,直到病毒检测模型的预测准确率超过预设阈值并且测试通过率也超过预设测试准确率后,该病毒检测模型才算是真正训练好的训练模型。通过对训练后的病毒检测模型进行验证与测试,验证以及测试通过的训练模型才算是真正完成了训练,通过这种方式确保了训练后的病毒检测模型的检测准确率,在实际使用过程中则能大幅度的提升病毒检测模型对待检测应用包的检测准确率,也提升了检测效率。
在一个实施例中,提供了一种病毒检测方法。本实施例主要以该方法应用于上述图1中的服务器120来举例说明。参照图12,该病毒检测方法具体包括如下步骤:
步骤1202,对病毒检测模型进行训练,得到训练好的病毒检测模型。
在实际使用病毒检测模型之前,需要根据实际需要对病毒检测模型进行训练,训练完毕的病毒检测模型才能够投入使用。如图13所示的病毒检测模型训练的流程示意图,获取多个带病毒标签的应用包样本后,逐个提取出每个应用包样本的静态特征与动态特征,再将每个应用包样本对应的静态特征与动态特征合并为一个特征后依次输入到病毒检测模型中进行训练,病毒检测模型会输出对每个应用包样本的病毒预测标签。
当将全部的应用包样本对应的静态特征与动态特征输入完毕后,则可以根据全部的病毒预测标签与应用包样本自带的病毒标签计算得到病毒检测模型的预测准确率,当预测准确率未达到预设阈值时,则继续对病毒检测模型进行训练;当预测准确率达到预设阈值时,则对病毒检测模型进行测试。将一批带有病毒标签的应用包的静态特征与动态特征输入到病毒检测模型中进行测试,获取病毒检测模型输出的对每个应用包的预测标签,再根据全部的预测标签与应用包自带的病毒标签计算得到测试通过率。当病毒检测模型的测试通过率未通过预设测试准确率时,则需要继续对病毒检测模型进行训练;当病毒检测模型的测试通过率通过预设测试准确率时,则得到训练好的病毒检测模型。
病毒检测模型的训练过程实际上也是模型的权重不断调整的过程,当权重调整到某个数值时,病毒检测模型的预测准确率与测试通过率都能够达到预设标准时,则将该权重作为病毒检测模型的权重,即得到了训练好的病毒检测模型。
步骤1204,获取待检测应用包,提取出待检测应用包的静态特征与动态特征。
步骤1206,将静态特征与动态特征输入到训练好的病毒检测模型中,输出待检测应用包的病毒标签。
待检测应用包可以来源于终端上传,也可以从网络上获取得到。当获取到待检测应用包后,可以将待检测应用包的静态特征与动态特征提取得到,静态特征是根据待检测应用包的代码文件得到的操作码序列,而动态特征则是在待检测应用包上模拟用户行为产生的行为特征,具体可以是从待检测应用包在模拟器上运行产生的行为日志中提取出的API标识组成的行为日志序列。
在提取出待检测应用包的静态特征与动态特征后,可以将待检测应用包的静态特征与动态特征输入到训练好的病毒检测模型中,训练好的病毒检测模型即可输出待检测应用包的病毒标签。比如当训练好的病毒检测模型输出标签0时,则说明该待检测应用包未携带有病毒;当输出标签1时,则说明该待检测应用包携带有类型为1的病毒。
对待检测应用包的病毒检测也可以在终端上进行,终端可以下载训练好的病毒检测模型,并配置有检测引擎,检测引擎用于接收待检测应用包的静态特征与动态特征,即可通过训练好的病毒检测模型输出对待检测应用包的病毒检测结果。
在本实施例中,首先先对病毒检测模型进行训练得到训练好的病毒检测模型,再对待检测应用包的文件进行动静态分析,分别得到静态特征与动态特征,即操作码(opcode)序列与行为日志序列。然后将静态特征与动态特征输入至预先训练好的病毒检测模型中进行病毒检测,得到病毒检测结果。本实施例中的病毒检测方法,结合了静态特征与动态特征来表征待检测应用包的文件,并利用病毒检测模型对输入的静态特征与动态特征进行分析与提取,从而对输入的待检测应用包进行病毒检测。一方面可以避免单独使用静态检测和动态检测方法的缺陷,另一方面不需要人工参与提取特征能够使得病毒检测的结果更为准确,效率更高。因此,本实施例中的病毒检测方法在提高了检测准确率的同时也能够大幅度的提升检测效率。
图2-图13各自为一个实施例中的流程示意图或过程示意图。应该理解的是,虽然各个图的流程图或过程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,各个图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
在一个实施例中,如图14所示,提供了一种病毒检测装置,包括:
应用包获取模块1402,用于获取待检测应用包。
静态特征提取模块1404,用于提取待检测应用包的静态特征,静态特征是根据待检测应用包的代码文件得到的操作码序列。
动态特征提取模块1406,用于提取待检测应用包的动态特征,动态特征是在待检测应用包上模拟用户行为产生的行为特征。
病毒标签检测模块1408,用于将静态特征与动态特征输入到训练好的病毒检测模型中,输出待检测应用包的病毒标签。
在一个实施例中,上述静态特征提取模块1404还用于对待检测应用包进行反汇编,得到汇编文件;按照顺序从汇编文件提取操作码,得到操作码序列作为静态特征。
在一个实施例中,上述动态特征提取模块1406还用于获取待检测应用包在模拟器中运行产生的行为日志,行为日志中包含有运行过程中调用的应用程序编程接口API标识;从每条行为日志中提取API标识,形成行为日志序列;将行为日志序列转换成行为向量,作为动态特征。
在一个实施例中,上述行为日志中还包含与API标识对应的API调用时间。上述动态特征提取模块1406还用于按照API调用时间的先后顺序对行为日志序列中的API标识进行排序后转换为行为向量。
在一个实施例中,上述动态特征提取模块1406还用于获取每个API标识对应的行为日志的数量为API调用次数;按照API调用次数对行为日志序列中的API标识进行排序后转换为行为向量。
在一个实施例中,上述训练好的病毒检测模型包括训练好的第一神经网络和训练好的第二神经网络。如图15所示,上述病毒标签检测模块1408包括:
第一检测模块1502,用于将静态特征输入训练好的第一神经网络,得到训练好的第一神经网络对静态特征进行提取得到的静态向量。
第二检测模块1504,用于将动态特征输入训练好的第二神经网络,得到训练好的第二神经网络对动态特征进行提取得到的动态向量。
分类模块1506,用于将静态向量与动态向量进行拼接后输入到全连接层进行分类,输出待检测应用包的病毒标签。
在一个实施例中,上述第一神经网络为卷积神经网络,上述第二神经网络为递归神经网络。
在一个实施例中,上述病毒检测装置还包括病毒检测模型生成模块(图中未示出),用于获取多个带病毒标签的应用包样本;逐个提取多个应用包样本的静态特征和动态特征;将每个应用包样本对应的静态特征样本与动态特征样本输入到病毒检测模型中进行训练,得到训练好的病毒检测模型。
在一个实施例中,上述病毒检测模型生成模块还用于获取病毒检测模型输出的对每个应用包样本的病毒预测标签;根据病毒预测标签得到病毒检测模型的预测准确率;当病毒检测模型的预测准确率达到预设阈值时,则得到训练好的病毒检测模型;当病毒检测模型的预测准确率未达到预设阈值时,则返回获取多个带病毒标签的应用包样本的步骤。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图16所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储待检测应用的检测结果以及病毒种类等数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种病毒检测方法。
本领域技术人员可以理解,图16中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,本申请提供的病毒检测装置可以实现为一种计算机程序的形式,计算机程序可在如图16所示的计算机设备上运行。计算机设备的存储器中可存储组成该病毒检测装置的各个程序模块,比如,图14所示的应用包获取模块、静态特征提取模块、动态特征提取模块和病毒标签检测模块。各个程序模块构成的计算机程序使得处理器执行本说明书中描述的本申请各个实施例的病毒检测方法中的步骤。
例如,图16所示的计算机设备可以通过如图14所示的病毒检测装置中的应用包获取模块执行获取待检测应用包。计算机设备可通过静态特征提取模块执行提取待检测应用包的静态特征,静态特征是根据待检测应用包的代码文件得到的操作码序列。计算机设备可通过动态特征提取模块执行提取待检测应用包的动态特征,动态特征是在待检测应用包上模拟用户行为产生的行为特征。计算机设备可通过病毒标签检测模块执行将静态特征与动态特征输入到训练好的病毒检测模型中,输出待检测应用包的病毒标签。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:获取待检测应用包;提取待检测应用包的静态特征,静态特征是根据待检测应用包的代码文件得到的操作码序列;提取待检测应用包的动态特征,动态特征是在待检测应用包上模拟用户行为产生的行为特征;将静态特征与动态特征输入到训练好的病毒检测模型中,输出待检测应用包的病毒标签。
在一个实施例中,提取待检测应用包的静态特征的步骤,包括:对待检测应用包进行反汇编,得到汇编文件;按照顺序从汇编文件提取操作码,得到操作码序列作为静态特征。
在一个实施例中,提取待检测应用包的动态特征的步骤,包括:获取待检测应用包在模拟器中运行产生的行为日志,行为日志中包含有运行过程中调用的应用程序编程接口API标识;从每条行为日志中提取API标识,形成行为日志序列;将行为日志序列转换成行为向量,作为动态特征。
在一个实施例中,行为日志中还包含与API标识对应的API调用时间。将行为日志序列转换成行为向量的步骤,包括:按照API调用时间的先后顺序对行为日志序列中的API标识进行排序后转换为行为向量。
在一个实施例中,获取每个API标识对应的行为日志的数量为API调用次数。将行为日志序列转换成行为向量的步骤,包括:按照API调用次数对行为日志序列中的API标识进行排序后转换为行为向量。
在一个实施例中,处理器执行计算机程序时训练好的病毒检测模型包括训练好的第一神经网络和训练好的第二神经网络。将静态特征与动态特征输入到训练好的病毒检测模型中,输出待检测应用包的病毒标签的步骤,包括:将静态特征输入训练好的第一神经网络,得到训练好的第一神经网络对静态特征进行提取得到的静态向量;将动态特征输入训练好的第二神经网络,得到训练好的第二神经网络对动态特征进行提取得到的动态向量;将静态向量与动态向量进行拼接后输入到全连接层进行分类,输出待检测应用包的病毒标签。
在一个实施例中,处理器执行计算机程序时第一神经网络为卷积神经网络,第二神经网络为递归神经网络。
在一个实施例中,处理器执行计算机程序时还实现病毒检测模型的生成方式的步骤:获取多个带病毒标签的应用包样本;逐个提取多个应用包样本的静态特征和动态特征;将每个应用包样本对应的静态特征样本与动态特征样本输入到病毒检测模型中进行训练,得到训练好的病毒检测模型。
在一个实施例中,将每个应用包样本对应的静态特征样本与动态特征样本输入到病毒检测模型中进行训练,得到训练好的病毒检测模型的步骤,包括:获取病毒检测模型输出的对每个应用包样本的病毒预测标签;根据病毒预测标签得到病毒检测模型的预测准确率;当病毒检测模型的预测准确率达到预设阈值时,则得到训练好的病毒检测模型;当病毒检测模型的预测准确率未达到预设阈值时,则返回获取多个带病毒标签的应用包样本的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:获取待检测应用包;提取待检测应用包的静态特征,静态特征是根据待检测应用包的代码文件得到的操作码序列;提取待检测应用包的动态特征,动态特征是在待检测应用包上模拟用户行为产生的行为特征;将静态特征与动态特征输入到训练好的病毒检测模型中,输出待检测应用包的病毒标签。
在一个实施例中,计算机程序被处理器执行提取待检测应用包的静态特征的步骤时,包括:对待检测应用包进行反汇编,得到汇编文件;按照顺序从汇编文件提取操作码,得到操作码序列作为静态特征。
在一个实施例中,计算机程序被处理器执行提取待检测应用包的动态特征的步骤时,包括:获取待检测应用包在模拟器中运行产生的行为日志,行为日志中包含有运行过程中调用的应用程序编程接口API标识;从每条行为日志中提取API标识,形成行为日志序列;将行为日志序列转换成行为向量,作为动态特征。
在一个实施例中,计算机程序被处理器执行时行为日志中还包含与API标识对应的API调用时间。计算机程序被处理器执行将行为日志序列转换成行为向量的步骤时,包括:按照API调用时间的先后顺序对行为日志序列中的API标识进行排序后转换为行为向量。
在一个实施例中,计算机程序被处理器执行时还包括获取每个API标识对应的行为日志的数量为API调用次数。计算机程序被处理器执行将行为日志序列转换成行为向量的步骤时,包括:按照API调用次数对行为日志序列中的API标识进行排序后转换为行为向量。
在一个实施例中,计算机程序被处理器执行时训练好的病毒检测模型包括训练好的第一神经网络和训练好的第二神经网络。计算机程序被处理器执行将静态特征与动态特征输入到训练好的病毒检测模型中,输出待检测应用包的病毒标签的步骤时,包括:将静态特征输入训练好的第一神经网络,得到训练好的第一神经网络对静态特征进行提取得到的静态向量;将动态特征输入训练好的第二神经网络,得到训练好的第二神经网络对动态特征进行提取得到的动态向量;将静态向量与动态向量进行拼接后输入到全连接层进行分类,输出待检测应用包的病毒标签。
在一个实施例中,计算机程序被处理器执行时第一神经网络为卷积神经网络,第二神经网络为递归神经网络。
在一个实施例中,计算机程序被处理器执行时还实现病毒检测模型的生成方式的步骤:获取多个带病毒标签的应用包样本;逐个提取多个应用包样本的静态特征和动态特征;将每个应用包样本对应的静态特征样本与动态特征样本输入到病毒检测模型中进行训练,得到训练好的病毒检测模型。
在一个实施例中,计算机程序被处理器执行将每个应用包样本对应的静态特征样本与动态特征样本输入到病毒检测模型中进行训练,得到训练好的病毒检测模型的步骤时,包括:获取病毒检测模型输出的对每个应用包样本的病毒预测标签;根据病毒预测标签得到病毒检测模型的预测准确率;当病毒检测模型的预测准确率达到预设阈值时,则得到训练好的病毒检测模型;当病毒检测模型的预测准确率未达到预设阈值时,则返回获取多个带病毒标签的应用包样本的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一非易失性计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (15)

1.一种病毒检测方法,包括:
获取待检测应用包;
提取所述待检测应用包的静态特征,所述静态特征是根据所述待检测应用包的代码文件得到的操作码序列;
提取所述待检测应用包的动态特征,所述动态特征是在所述待检测应用包上模拟用户行为产生的行为特征;
将所述静态特征与所述动态特征输入到训练好的病毒检测模型中,输出所述待检测应用包的病毒标签。
2.根据权利要求1所述的方法,其特征在于,所述提取所述待检测应用包的静态特征,包括:
对所述待检测应用包进行反汇编,得到汇编文件;
按照顺序从所述汇编文件提取操作码,得到操作码序列作为所述静态特征。
3.根据权利要求1所述的方法,其特征在于,所述提取所述待检测应用包的动态特征,包括:
获取所述待检测应用包在模拟器中运行产生的行为日志,所述行为日志中包含有运行过程中调用的应用程序编程接口API标识;
从每条所述行为日志中提取API标识,形成行为日志序列;
将所述行为日志序列转换成行为向量,作为所述动态特征。
4.根据权利要求3所述的方法,其特征在于,所述行为日志中还包含与所述API标识对应的API调用时间;所述将所述行为日志序列转换成行为向量,包括:
按照所述API调用时间的先后顺序对所述行为日志序列中的API标识进行排序后转换为所述行为向量。
5.根据权利要求3所述的方法,其特征在于,获取每个API标识对应的行为日志的数量为API调用次数;所述将所述行为日志序列转换成行为向量,包括:
按照所述API调用次数对所述行为日志序列中的API标识进行排序后转换为所述行为向量。
6.根据权利要求1所述的方法,其特征在于,所述训练好的病毒检测模型包括训练好的第一神经网络和训练好的第二神经网络;
所述将所述静态特征与所述动态特征输入到训练好的病毒检测模型中,输出所述待检测应用包的病毒标签,包括:
将所述静态特征输入所述训练好的第一神经网络,得到所述训练好的第一神经网络对所述静态特征进行提取得到的静态向量;
将所述动态特征输入所述训练好的第二神经网络,得到所述训练好的第二神经网络对所述动态特征进行提取得到的动态向量;
将所述静态向量与所述动态向量进行拼接后输入到全连接层进行分类,输出所述待检测应用包的病毒标签。
7.根据权利要求6所述的方法,其特征在于,所述第一神经网络为卷积神经网络,所述第二神经网络为递归神经网络。
8.根据权利要求1所述的方法,其特征在于,所述病毒检测模型的生成方式包括:
获取多个带病毒标签的应用包样本;
逐个提取所述多个应用包样本的静态特征和动态特征;
将每个所述应用包样本对应的静态特征样本与动态特征样本输入到病毒检测模型中进行训练,得到所述训练好的病毒检测模型。
9.根据权利要求8所述的方法,其特征在于,所述将每个所述应用包样本对应的静态特征样本与动态特征样本输入到病毒检测模型中进行训练,得到所述训练好的病毒检测模型,包括:
获取所述病毒检测模型输出的对每个所述应用包样本的病毒预测标签;
根据所述病毒预测标签得到所述病毒检测模型的预测准确率;
当所述病毒检测模型的预测准确率达到预设阈值时,则得到训练好的病毒检测模型;
当所述病毒检测模型的预测准确率未达到预设阈值时,则返回所述获取多个带病毒标签的应用包样本的步骤。
10.一种病毒检测装置,其特征在于,所述装置包括:
应用包获取模块,用于获取待检测应用包;
静态特征提取模块,用于提取所述待检测应用包的静态特征,所述静态特征是根据所述待检测应用包的代码文件得到的操作码序列;
动态特征提取模块,用于提取所述待检测应用包的动态特征,所述动态特征是在所述待检测应用包上模拟用户行为产生的行为特征;
病毒标签检测模块,用于将所述静态特征与所述动态特征输入到训练好的病毒检测模型中,输出所述待检测应用包的病毒标签。
11.根据权利要求10所述的装置,其特征在于,所述静态特征提取模块还用于对所述待检测应用包进行反汇编,得到汇编文件;按照顺序从所述汇编文件提取操作码,得到操作码序列作为所述静态特征。
12.根据权利要求10所述的装置,其特征在于,所述动态特征提取模块还用于获取所述待检测应用包在模拟器中运行产生的行为日志,所述行为日志中包含有运行过程中调用的应用程序编程接口API标识;从每条所述行为日志中提取API标识,形成行为日志序列;将所述行为日志序列转换成行为向量,作为所述动态特征。
13.根据权利要求10所述的装置,其特征在于,所述训练好的病毒检测模型包括训练好的第一神经网络和训练好的第二神经网络,所述病毒标签检测模块包括:
第一检测模块,用于将所述静态特征输入所述训练好的第一神经网络,得到所述训练好的第一神经网络对所述静态特征进行提取得到的静态向量;
第二检测模块,用于将所述动态特征输入所述训练好的第二神经网络,得到所述训练好的第二神经网络对所述动态特征进行提取得到的动态向量;
分类模块,用于将所述静态向量与所述动态向量进行拼接后输入到全连接层进行分类,输出所述待检测应用包的病毒标签。
14.一种计算机可读存储介质,存储有计算机程序,所述计算机程序被处理器执行时,使得所述处理器执行如权利要求1至9中任一项所述方法的步骤。
15.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至9中任一项所述方法的步骤。
CN201810186009.4A 2018-03-07 2018-03-07 病毒检测方法、装置、计算机可读存储介质和计算机设备 Active CN108334781B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810186009.4A CN108334781B (zh) 2018-03-07 2018-03-07 病毒检测方法、装置、计算机可读存储介质和计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810186009.4A CN108334781B (zh) 2018-03-07 2018-03-07 病毒检测方法、装置、计算机可读存储介质和计算机设备

Publications (2)

Publication Number Publication Date
CN108334781A true CN108334781A (zh) 2018-07-27
CN108334781B CN108334781B (zh) 2020-04-14

Family

ID=62930558

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810186009.4A Active CN108334781B (zh) 2018-03-07 2018-03-07 病毒检测方法、装置、计算机可读存储介质和计算机设备

Country Status (1)

Country Link
CN (1) CN108334781B (zh)

Cited By (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109117635A (zh) * 2018-09-06 2019-01-01 腾讯科技(深圳)有限公司 应用程序的病毒检测方法、装置、计算机设备及存储介质
CN109240929A (zh) * 2018-09-18 2019-01-18 百度在线网络技术(北京)有限公司 软件质量预测方法、装置、终端和计算机可读存储介质
CN109284610A (zh) * 2018-09-11 2019-01-29 腾讯科技(深圳)有限公司 一种病毒程序检测方法、装置及检测服务器
CN109583475A (zh) * 2018-11-02 2019-04-05 阿里巴巴集团控股有限公司 异常信息的监测方法及装置
CN109711160A (zh) * 2018-11-30 2019-05-03 北京奇虎科技有限公司 应用程序检测方法、装置及神经网络系统
CN109753794A (zh) * 2018-11-30 2019-05-14 北京奇虎科技有限公司 一种恶意应用的识别方法、系统、训练方法、设备及介质
CN109858239A (zh) * 2019-01-16 2019-06-07 四川大学 一种动静态结合的容器内cpu漏洞攻击程序检测方法
CN110232277A (zh) * 2019-04-23 2019-09-13 平安科技(深圳)有限公司 网页后门的检测方法、装置和计算机设备
CN110472415A (zh) * 2018-12-13 2019-11-19 成都亚信网络安全产业技术研究院有限公司 一种恶意程序的确定方法及装置
CN110502900A (zh) * 2019-08-26 2019-11-26 Oppo广东移动通信有限公司 一种检测方法、终端、服务器及计算机存储介质
CN110618854A (zh) * 2019-08-21 2019-12-27 浙江大学 基于深度学习与内存镜像分析的虚机行为分析系统
CN110781081A (zh) * 2019-10-12 2020-02-11 南京信息职业技术学院 一种移动应用回调强制触发方法、系统及存储介质
CN110837638A (zh) * 2019-11-08 2020-02-25 鹏城实验室 一种勒索软件的检测方法、装置、设备及存储介质
CN111027062A (zh) * 2019-03-29 2020-04-17 哈尔滨安天科技集团股份有限公司 一种靶场应用失陷状态的评估方法及装置
CN111262818A (zh) * 2018-11-30 2020-06-09 北京奇虎科技有限公司 病毒检测方法、系统、装置、设备及存储介质
CN111259385A (zh) * 2018-11-30 2020-06-09 北京奇虎科技有限公司 应用程序识别方法、装置及神经网络系统
CN111625825A (zh) * 2020-05-22 2020-09-04 苏州浪潮智能科技有限公司 一种病毒检测方法、装置、设备及存储介质
CN113449297A (zh) * 2020-03-24 2021-09-28 中移动信息技术有限公司 恶意代码识别模型的训练方法、恶意代码识别方法及装置
WO2021207874A1 (zh) * 2020-04-13 2021-10-21 华为技术有限公司 一种非安全软件检测装置、检测方法以及存储介质
CN114254319A (zh) * 2021-12-13 2022-03-29 安天科技集团股份有限公司 网络病毒的识别方法、装置、计算机设备及存储介质
CN114266045A (zh) * 2021-12-13 2022-04-01 安天科技集团股份有限公司 网络病毒的识别方法、装置、计算机设备及存储介质
CN114297645A (zh) * 2021-12-03 2022-04-08 深圳市木浪云科技有限公司 在云备份系统中识别勒索家族的方法、装置和系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TH84458A (th) * 2005-07-08 2007-05-09 นางสาวรตินุช ก้าวหน้าชัยมงคล ระบบสำหรับส่งและรับข้อมูลเสียง/วีดิทัศน์และลายมือในเวลาจริง
CN103870754A (zh) * 2010-11-29 2014-06-18 北京奇虎科技有限公司 恶意程序识别及训练模型生成方法和装置
CN105205396A (zh) * 2015-10-15 2015-12-30 上海交通大学 一种基于深度学习的安卓恶意代码检测系统及其方法
CN107590388A (zh) * 2017-09-12 2018-01-16 南方电网科学研究院有限责任公司 恶意代码检测方法和装置
CN107659570A (zh) * 2017-09-29 2018-02-02 杭州安恒信息技术有限公司 基于机器学习与动静态分析的Webshell检测方法及系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TH84458A (th) * 2005-07-08 2007-05-09 นางสาวรตินุช ก้าวหน้าชัยมงคล ระบบสำหรับส่งและรับข้อมูลเสียง/วีดิทัศน์และลายมือในเวลาจริง
CN103870754A (zh) * 2010-11-29 2014-06-18 北京奇虎科技有限公司 恶意程序识别及训练模型生成方法和装置
CN105205396A (zh) * 2015-10-15 2015-12-30 上海交通大学 一种基于深度学习的安卓恶意代码检测系统及其方法
CN107590388A (zh) * 2017-09-12 2018-01-16 南方电网科学研究院有限责任公司 恶意代码检测方法和装置
CN107659570A (zh) * 2017-09-29 2018-02-02 杭州安恒信息技术有限公司 基于机器学习与动静态分析的Webshell检测方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
王涛等: "基于深度学习的Android恶意软件检测系统的设计与实现", 《信息安全研究》 *

Cited By (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109117635A (zh) * 2018-09-06 2019-01-01 腾讯科技(深圳)有限公司 应用程序的病毒检测方法、装置、计算机设备及存储介质
CN109284610A (zh) * 2018-09-11 2019-01-29 腾讯科技(深圳)有限公司 一种病毒程序检测方法、装置及检测服务器
CN109284610B (zh) * 2018-09-11 2023-02-28 腾讯科技(深圳)有限公司 一种病毒程序检测方法、装置及检测服务器
CN109240929A (zh) * 2018-09-18 2019-01-18 百度在线网络技术(北京)有限公司 软件质量预测方法、装置、终端和计算机可读存储介质
CN109583475A (zh) * 2018-11-02 2019-04-05 阿里巴巴集团控股有限公司 异常信息的监测方法及装置
CN111262818A (zh) * 2018-11-30 2020-06-09 北京奇虎科技有限公司 病毒检测方法、系统、装置、设备及存储介质
CN109711160A (zh) * 2018-11-30 2019-05-03 北京奇虎科技有限公司 应用程序检测方法、装置及神经网络系统
CN109753794A (zh) * 2018-11-30 2019-05-14 北京奇虎科技有限公司 一种恶意应用的识别方法、系统、训练方法、设备及介质
CN111259385B (zh) * 2018-11-30 2023-10-31 北京奇虎科技有限公司 应用程序识别方法、装置及神经网络系统
CN109711160B (zh) * 2018-11-30 2023-10-31 北京奇虎科技有限公司 应用程序检测方法、装置及神经网络系统
CN111262818B (zh) * 2018-11-30 2023-08-15 三六零科技集团有限公司 病毒检测方法、系统、装置、设备及存储介质
CN111259385A (zh) * 2018-11-30 2020-06-09 北京奇虎科技有限公司 应用程序识别方法、装置及神经网络系统
CN110472415A (zh) * 2018-12-13 2019-11-19 成都亚信网络安全产业技术研究院有限公司 一种恶意程序的确定方法及装置
CN110472415B (zh) * 2018-12-13 2021-08-10 成都亚信网络安全产业技术研究院有限公司 一种恶意程序的确定方法及装置
CN109858239B (zh) * 2019-01-16 2020-01-17 四川大学 一种动静态结合的容器内cpu漏洞攻击程序检测方法
CN109858239A (zh) * 2019-01-16 2019-06-07 四川大学 一种动静态结合的容器内cpu漏洞攻击程序检测方法
CN111027062A (zh) * 2019-03-29 2020-04-17 哈尔滨安天科技集团股份有限公司 一种靶场应用失陷状态的评估方法及装置
CN110232277A (zh) * 2019-04-23 2019-09-13 平安科技(深圳)有限公司 网页后门的检测方法、装置和计算机设备
CN110618854A (zh) * 2019-08-21 2019-12-27 浙江大学 基于深度学习与内存镜像分析的虚机行为分析系统
CN110618854B (zh) * 2019-08-21 2022-04-26 浙江大学 基于深度学习与内存镜像分析的虚机行为分析系统
CN110502900A (zh) * 2019-08-26 2019-11-26 Oppo广东移动通信有限公司 一种检测方法、终端、服务器及计算机存储介质
CN110502900B (zh) * 2019-08-26 2022-07-05 Oppo广东移动通信有限公司 一种检测方法、终端、服务器及计算机存储介质
CN110781081A (zh) * 2019-10-12 2020-02-11 南京信息职业技术学院 一种移动应用回调强制触发方法、系统及存储介质
CN110781081B (zh) * 2019-10-12 2024-04-09 南京信息职业技术学院 一种移动应用回调强制触发方法、系统及存储介质
CN110837638B (zh) * 2019-11-08 2020-09-01 鹏城实验室 一种勒索软件的检测方法、装置、设备及存储介质
CN110837638A (zh) * 2019-11-08 2020-02-25 鹏城实验室 一种勒索软件的检测方法、装置、设备及存储介质
CN113449297A (zh) * 2020-03-24 2021-09-28 中移动信息技术有限公司 恶意代码识别模型的训练方法、恶意代码识别方法及装置
WO2021207874A1 (zh) * 2020-04-13 2021-10-21 华为技术有限公司 一种非安全软件检测装置、检测方法以及存储介质
CN111625825B (zh) * 2020-05-22 2022-07-08 苏州浪潮智能科技有限公司 一种病毒检测方法、装置、设备及存储介质
CN111625825A (zh) * 2020-05-22 2020-09-04 苏州浪潮智能科技有限公司 一种病毒检测方法、装置、设备及存储介质
CN114297645B (zh) * 2021-12-03 2022-09-27 深圳市木浪云科技有限公司 在云备份系统中识别勒索家族的方法、装置和系统
CN114297645A (zh) * 2021-12-03 2022-04-08 深圳市木浪云科技有限公司 在云备份系统中识别勒索家族的方法、装置和系统
CN114266045A (zh) * 2021-12-13 2022-04-01 安天科技集团股份有限公司 网络病毒的识别方法、装置、计算机设备及存储介质
CN114254319A (zh) * 2021-12-13 2022-03-29 安天科技集团股份有限公司 网络病毒的识别方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
CN108334781B (zh) 2020-04-14

Similar Documents

Publication Publication Date Title
CN108334781A (zh) 病毒检测方法、装置、计算机可读存储介质和计算机设备
CN108304720B (zh) 一种基于机器学习的安卓恶意程序检测方法
Paiva et al. Automated assessment in computer science education: A state-of-the-art review
CN105069355B (zh) webshell变形的静态检测方法和装置
CN105653956B (zh) 基于动态行为依赖图的Android恶意软件分类方法
Shokry et al. Model-Based Verification of Embedded Software.
Walkinshaw et al. Reverse engineering state machines by interactive grammar inference
Zimmermann et al. Improving bug tracking systems
CN110008113B (zh) 一种测试方法、装置、电子设备
CN106326107B (zh) 基于仿真环境的非侵入式嵌入式软件异常处理验证方法
CN110287702A (zh) 一种二进制漏洞克隆检测方法及装置
CN111538668B (zh) 基于强化学习的移动端应用测试方法、装置、设备及介质
CN110162457A (zh) 用户界面的测试方法、装置、设备及存储介质
CN109783365A (zh) 自动化测试方法、装置、计算机设备及存储介质
CN111045927A (zh) 性能测试评估方法、装置、计算机设备及可读存储介质
CN105653946A (zh) 基于组合事件行为触发的Android恶意行为检测系统及其检测方法
CN110532776B (zh) 基于运行时数据分析的Android恶意软件高效检测方法、系统及介质
Khanna et al. Performance comparison of multi-objective algorithms for test case prioritization during web application testing
CN116383833A (zh) 软件程序代码的测试方法及其装置、电子设备、存储介质
Molnar et al. Using static analysis tools to assist student project evaluation
CN113778890B (zh) 代码测试方法、装置、电子设备及存储介质
CN106126225B (zh) 一种基于程序演进模型的目标代码逆向工程方法
CN110633199A (zh) 用于支持智能合约的区块链的测试装置、方法及介质
Haile et al. Identifying ubiquitious third-party libraries in compiled executables using annotated and translated disassembled code with supervised machine learning
Perez et al. A theoretical and empirical analysis of program spectra diagnosability

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant