CN109284610B - 一种病毒程序检测方法、装置及检测服务器 - Google Patents

一种病毒程序检测方法、装置及检测服务器 Download PDF

Info

Publication number
CN109284610B
CN109284610B CN201811058107.6A CN201811058107A CN109284610B CN 109284610 B CN109284610 B CN 109284610B CN 201811058107 A CN201811058107 A CN 201811058107A CN 109284610 B CN109284610 B CN 109284610B
Authority
CN
China
Prior art keywords
behavior
vector
program
virus
feature vector
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.)
Active
Application number
CN201811058107.6A
Other languages
English (en)
Other versions
CN109284610A (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 CN201811058107.6A priority Critical patent/CN109284610B/zh
Publication of CN109284610A publication Critical patent/CN109284610A/zh
Application granted granted Critical
Publication of CN109284610B publication Critical patent/CN109284610B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/561Virus type analysis
    • 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

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)
  • Debugging And Monitoring (AREA)
  • Storage Device Security (AREA)

Abstract

本发明提出一种病毒程序检测方法、装置及检测服务器,该方法包括:获取待检测程序的行为特征向量,其中,行为特征是表示程序运行过程中触发的行为的特征;分别将所述行为特征向量与预置的病毒行为特征向量库中的病毒行为特征向量进行相似性比对;在所述行为特征向量与所述病毒行为特征向量库中的任意一个病毒行为特征向量的相似度超过预置的相似度阈值的情况下,确定所述待检测程序为病毒程序。上述技术方案通过待检测程序的行为特征判断其是否为病毒程序,相对于提取程序的特征码来代表程序属性,本发明利用程序的实际行为来检测程序是否为病毒程序的检测准确度更高。

Description

一种病毒程序检测方法、装置及检测服务器
技术领域
本发明涉及病毒检测技术领域,具体涉及一种病毒程序检测方法、装置及检测服务器。
背景技术
软件应用市场的丰富发展给用户带来便利的同时,也给用户设备的安全运行带来极大威胁。不法开发者开发的病毒程序通过各种途径隐蔽安装到用户设备,当用户设备不能及时地检测或识别到病毒程序而将其运行时,病毒程序会通过执行特定的操作,破坏用户设备的正常运行,甚至可以通过病毒程序的运行获取用户信息,盗窃用户财产等,给用户带来直接的利益损失。因此,准确地检测、识别病毒程序并加以控制,是保障用户利益的重要手段。
常用的病毒程序检测方法中,工作人员根据经验,从病毒样本中抽取连续的二进制片段作为病毒程序的特征码,进行存储。当接收到待检测程序时,工作人员再根据经验,从待检测程序中抽取连续的二进制片段构成特征码,将其与存储的病毒程序的特征码进行比对,如果待检测程序的特征码与病毒程序特征码相同,则认为待检测程序为病毒程序。
上述二进制代码的抽取过程依赖于工作人员的经验,因此抽取特征码的处理过程具有较强的主观性,对同一待检测程序进行特征码抽取的结果会因为工作人员经验积累程度不同或对程序的理解不同而不同,进而导致检测结果出现差异,也就是说,同一待检测程序通过不同工作人员的检测,可能会得到截然相反的两个结果,这种情况极大的影响了病毒程序检测结果的准确性。
发明内容
基于上述现有技术的缺陷和不足,本发明提出一种病毒程序检测方法、装置及检测服务器,能够更准确地检测病毒程序。
为了实现上述目的,本发明提出如下技术方案:
一种病毒程序检测方法,包括:
获取待检测程序的行为特征向量,其中,所述行为特征是表示程序运行过程中触发的行为的特征;
分别将所述行为特征向量与预置的病毒行为特征向量库中的病毒行为特征向量进行相似性比对;
在所述行为特征向量与所述病毒行为特征向量库中的任意一个病毒行为特征向量的相似度超过预置的相似度阈值的情况下,确定所述待检测程序为病毒程序。
本发明还提出一种病毒程序检测装置,包括:
特征向量获取模块,用于获取待检测程序的行为特征向量,其中,所述行为特征是表示程序运行过程中触发的行为的特征;
特征向量比对模块,用于分别将所述行为特征向量与预置的病毒行为特征向量库中的病毒行为特征向量进行相似性比对;
检测结果确定模块,用于在所述行为特征向量与所述病毒行为特征向量库中的任意一个病毒行为特征向量的相似度超过预置的相似度阈值的情况下,确定所述待检测程序为病毒程序。
本发明还提出一种检测服务器,其特征在于,包括:至少一个存储器和至少一个处理器;所述存储器存储有程序,所述处理器执行所述程序,以实现上述病毒程序检测方法。
本发明提出的病毒程序检测方法在检测应用程序是否为病毒程序时,首先获取待检测程序的行为特征向量,其中,所述行为特征是表示程序运行过程中触发的行为的特征;然后分别将所述行为特征向量与预置的病毒行为特征向量库中的病毒行为特征向量进行相似性比对;在所述行为特征向量与所述病毒行为特征向量库中的任意一个病毒行为特征向量的相似度超过预置的相似度阈值的情况下,确定所述待检测程序为病毒程序。上述技术方案通过待检测程序的行为特征判断其是否为病毒程序,即以程序的实际行为来判断程序是否为病毒程序,相对于提取程序的特征码来代表程序属性,程序的实际行为更能突出程序是否具有破坏性的行为属性,因此本发明利用程序的实际行为来检测程序是否为病毒程序的检测准确度更高。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1是本发明实施例提供的一种病毒程序检测系统架构示意图;
图2是本发明实施例提供的一种病毒程序检测方法的流程示意图;
图3是本发明实施例提供的病毒程序检测方法的另一种流程示意图;
图4是本发明实施例提供的病毒程序检测方法的又一种流程示意图;
图5是本发明实施例提供的病毒程序检测方法的再一种流程示意图;
图6是本发明实施例提供的病毒程序检测方法的还一种流程示意图;
图7是本发明实施例提供的病毒程序检测装置的一种结构示意图;
图8是本发明实施例提供的病毒程序检测装置的另一种结构示意图;
图9是本发明实施例提供的检测服务器的硬件结构示意图。
具体实施方式
本发明实施例提供的病毒程序检测方法可适用于对病毒程序进行检测、识别的应用场景;示例性的,本发明实施例提供的病毒程序检测方法可针对游戏应用、社交软件、电子商务等各种类型的应用程序进行病毒程序检测,也可以针对运行于智能通讯终端、个人计算机、系统服务器等硬件设备上的例如操作系统等系统程序,进行病毒程序的检测、识别。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
作为一种可选示例,本发明实施例提供的病毒程序检测方法可针对运行于终端设备上的应用程序,进行病毒程序的检测、识别。可以理解,本发明实施例并不限定仅可以实现对运行于终端设备的应用程序是否为病毒程序进行检测、识别,事实上对于任意的可在硬件设备上运行的程序是否为病毒程序的检测,都可以参照本发明实施例执行。
基于对终端设备上运行的应用程序进行病毒程序检测的应用情境,图1示出了本发明实施例适用的一种病毒程序检测系统架构示意图。
如图1所示,终端设备、数据库和检测服务器通过数据链路相互连接。
其中,终端设备是指可以装载、运行操作系统,以及在装载的操作系统的上运行具体的应用程序的硬件设备,例如可以是智能手机、个人计算机、平板电脑等。上述终端设备还可以是大型的服务型硬件设备,例如可以是大型服务器、处理器等。
操作系统是管理和控制硬件设备与软件资源的计算机程序,是直接运行在“裸机”上的最基本的系统软件,任何其它的应用程序软件都必须在操作系统的支持下才能运行。常见的计算机操作系统包括Linux、Unix、Windows等,而用于移动终端设备的操作系统则以Android和iOS为主。用户可以根据功能需求,选择性地为硬件设备装载操作系统,或者根据功能需求选定操作系统后再选择可以装载该操作系统的硬件设备。进一步的,在装载操作系统的终端设备上,可以安装、运行应用程序,实现具体的应用功能。
在图1所示的系统架构中,代表性地展示了一个终端设备,用于表示任意的运行应用程序的终端设备。由于运行应用程序的终端设备除了操作系统和所运行的应用程序以及产品形态等存在差别外,其存在实质并无本质区别,都是在硬件装置上运行软件程序,因此本发明实施例以一个运行应用程序的终端设备概括性地表示各种不同类型的运行应用程序的终端设备。事实上,本发明实施例提出的如图1所示的系统架构可以实现对任意类型,任意数量的终端设备上的应用程序的病毒程序检测,并不限定只用于某一种类型或某一个特定的终端设备上运行的应用程序是否为病毒程序的检测和识别。
上述的数据库,是指具有数据存储功能的存储设备。在本发明实施例中,上述数据库可以是具有数据存储功能的存储介质,用于存储应用程序的相关数据信息。上述应用程序的相关数据信息,具体是指能够表示应用程序特征的数据信息,该数据信息可以是直接从应用程序代码中提取的数据信息,也可以是根据应用程序的属性信息而提取的数据信息,例如应用程序的功能信息、格式信息等。
在图1所示的系统架构中,作为示例性地将数据库单独设置,当终端设备或检测服务器需要利用应用程序的相关数据信息时,直接通过与数据库之间的数据链路从数据库中读取即可。可以理解,上述数据库也可以设置在终端设备或检测服务器内部,或者将上述数据库设置为云数据库等,本发明实施例不对上述数据库的具体存在形式做严格限定。
本发明实施例技术方案的目的,是以数据库中存储的应用程序的相关数据信息作为参考,检测终端设备中运行的应用程序是否为病毒程序。作为一种示例,本发明实施例设定,由图1所示的系统架构中的检测服务器来实现本发明实施例提出的病毒程序检测方法。
上述检测服务器,具体是指用于对终端设备中运行的应用程序进行分析,结合数据库中的数据检测终端设备中运行的应用程序是否为病毒程序的服务器。检测服务器可以主动获取在终端设备中运行的应用程序的相关数据信息,以及读取数据库中存储的数据信息,实施本发明实施例提出的病毒程序检测方法,判断终端设备中运行的应用程序是否为病毒程序。
需要说明的是,上述检测服务器,可以如图1所示独立存在并且与终端设备和数据库通过数据链路连接,也可以内置于数据库或终端设备中。上述检测服务器可以以软件或硬件的形式应用于病毒程序检测设备中。
当以软件形式应用于病毒程序检测设备中时,上述检测服务器可为独立的软件,也可以作为大型系统(例如操作系统)的子系统(子组件),提供病毒程序检测服务。
当以硬件形式应用于病毒程序检测设备中时,上述检测服务器示例性的可为服务器的控制器或处理器。
现有技术中检测病毒程序的方法可以概括为:工作人员根据经验,从病毒样本程序中抽取连续的二进制片段作为病毒程序的特征码,并进行存储。当接收到待检测程序时,工作人员再根据工作经验,基于对待检测程序的理解,从待检测程序中抽取连续的二进制片段构成待检测程序的特征码,将其与存储的病毒样本程序的特征码进行对比,如果待检测程序的特征码与存储的病毒样本程序的特征码相同,则可以确定该待检测程序就是病毒程序。
结合图1所示的系统架构,上述病毒程序检测方法的一种示例性的实施方式可以是:工作人员搜集大量的病毒样本程序,根据对每个病毒样本程序的理解,分别从每个病毒样本程序的代码中抽取连续的二进制片段,作为病毒样本程序的特征码,并将其存储到数据库中。也就是说,在图1所示的数据库中存储的,是大量的病毒样本程序的特征码。
当收到待检测程序,需要检测该待检测程序是否为病毒程序时,工作人员再次根据对待检测程序的理解,从待检测程序的源代码中抽取连续的二进制片段作为该待检测程序的特征码。然后工作人员通过检测服务器,将待检测程序的特征码与数据库中存储的病毒样本程序的特征码分别进行对比,判断待检测程序的特征码与病毒库中存储的病毒样本程序的特征码是否相同。如果待检测程序的特征码与数据库中某一个病毒样本程序的特征码相同,则可以确定该待检测程序就是病毒程序;如果待检测程序的特征码与数据库中存储的所有病毒样本程序的特征码均不相同,则可以确定该待检测程序不是病毒程序。
上述的病毒程序检测方法依赖于工作人员的工作经验,抽取程序特征码的过程具有较强的主观性。可以理解,不同的工作人员由于工作经验不同、对程序的理解不同,对同一程序的特征码的抽取结果可能会不同,进而导致对程序是否为病毒程序的检测结果不同。例如,假设工作人员甲对某一应用程序抽取的特征码为A,工作人员乙对于该应用程序抽取的特征码为B,则甲通过将特征码A与数据库中的病毒样本程序的特征码进行对比时发现特征码A与数据库中某一病毒样本程序的特征码相同,则可以判断该应用程序为病毒程序;而乙将其抽取的特征码B与数据库中的病毒样本程序的特征码进行对比时就可能发现特征码B与数据库中所有的病毒样本程序的特征码都不相同,从而判断该应用程序不是病毒程序。在甲和乙的判断结果中,如果有一个人的判断结果是正确的,那么另一个人的判断结果就肯定是错误的,即发生检测结果出现差异的情况,此时是无法准确判断该应用程序到底是否为病毒程序的,导致对病毒程序的检测准确度不够高。
为了解决上述主观因素对病毒程序检测准确度的影响,本领域技术人员提出将抽取程序特征码的规则进行统一,工作人员按照统一的规则从待检测程序中抽取特征码,保证对程序特征码的抽取不会因为工作人员的工作经验积累程度或对程序的理解不同而发生差异,使不同工作人员对同一应用程序抽取的特征码都相同。此时,再将抽取的待检测程序的特征码与数据库中存储的病毒样本程序的特征码进行对比,可以相对较准确地判断待检测程序是否为病毒程序,一定程度上提高了病毒程序检测的准确性。
但是,当上述病毒程序检测方法被病毒程序制造者知晓后,病毒程序制造者可以根据程序特征码抽取规则,更改病毒程序特征码抽取部分的源代码,例如可以更改其程序语句形式、适当更改参数等,从而使得从病毒程序中抽取的特征码与病毒样本程序的特征码不同,此时就无法通过抽取待检测程序的特征码,再将待检测程序的特征码与病毒样本程序的特征码进行对比判断待检测程序是否为病毒程序。也就是说,上述统一的特征码抽取规则很容易被病毒程序制造者绕过,而使病毒检测失效。
为了防止统一的特征码抽取规则很容易地被病毒程序制造者绕过,本领域技术人员很容易地想到通过增加特征码抽取规则的方法,提高抽取特征码的可靠性。即,设定通过多种不同的特征码抽取规则,从病毒样本程序中抽取多个不同的特征码作为病毒样本程序的特征码,并存储到数据库。当接收到待检测程序时,按照相同的多种不同的特征码抽取规则,从待检测程序中抽取多个不同的特征码作为待检测程序的特征码。然后将待检测程序的多个不同的特征码分别与数据库中存储的病毒样本程序的多个不同的特征码进行对比,当待检测程序的多个不同的特征码中的任意一个特征码与某一个病毒样本程序的某一个特征码相同时,判断该待检测程序为病毒程序。
可以理解,只有当病毒程序制造者获取所有的特征码抽取规则时,才可以完全绕过所有的特征码抽取规则,从而防止工作人员通过抽取病毒程序的特征码检测病毒程序。上述处理过程通过增加特征码抽取规则的方式,增加了病毒程序制造者绕过特征码抽取规则的难度,从而提高了病毒程序检测准确度。
但是,得力于处理器处理速度和处理能力的不断提升,病毒程序制造者通过大量计算和试验获取上述病毒程序检测策略的特征码抽取规则变得越来越轻松,病毒程序制造者通过长期积累和不断地计算、验证,总是可以破解特征码抽取规则,从而绕过特征码抽取规则对病毒程序进行伪装。病毒程序检测工作人员只能通过不断地增加特征码抽取规则,提高病毒制造者破解难度,但始终不能完全防止病毒制造者破解,而且不断增加特征码抽取规则也使得病毒程序检测工作人员的工作量不断提升。
可见,上述的一系列通过抽取程序的特征码来检测病毒程序的方法,虽然都取得了一定程度的技术进步,但对于提高病毒程序检测准确度始终存在瓶颈,无法完全避免病毒程序制造者规避。
本发明实施例通过不断地探索发现,上述不断改进的病毒程序检测方法始终是利用程序的静态特征来判断程序是否为病毒程序,即不论如何制定特征码抽取规则,或者抽取多大数量的特征码,都是从程序代码本身抽取出的代码内容,所抽取出的始终是程序的静态特征。而一段程序成为病毒程序,其本质是该程序的行为具有破坏性,例如其肆意执行非法功能、肆意更改数据、调用非法数据接口等,并不是说程序具有怎样的代码就具有破坏性,或者就应该被认定为病毒程序。试想,一段程序代码可能完全不符合病毒程序代码形式,但是其运行时的行为却是具有破坏性的行为,那么该程序就是病毒程序,如果不加以制止,很可能会给用户带来损失;而一段程序虽然其部分代码与病毒程序的部分代码相同,但是该程序运行时所执行的功能正是满足用户需求的正常功能,如果根据其部分代码而将其判断为病毒程序,必定会影响用户的正常使用。
因此,本发明实施例提出从程序的行为特征入手,判断其是否为病毒程序,也就是从程序运行过程中的行为本身来判断程序是否为病毒程序。可以理解,如果病毒程序制造者想要绕过本发明实施例提出的病毒检测方法,伪装病毒程序使其不被识别,只能通过更改病毒程序的行为过程而实现。当病毒程序制造者更改病毒程序的行为时,如果将其行为更改为合法行为,则该病毒程序本身就已经成为执行合法行为的程序,已经不再具有破坏性而成为了正常程序,此时不能准确识别其为病毒程序,也是合理的,并不会因为漏检而给用户带来损失。
如果病毒程序制造者将病毒程序的行为更改为其他类型的破坏行为,则可以通过加大识别病毒程序行为的力度,识别该病毒程序的行为是否为上述其他类型的破坏行为而判断该病毒程序是否为病毒程序。例如,假设病毒程序制造者为了对程序1的行为A进行伪装,而将其行为A更改为同样具有破坏性的行为B,则本发明实施例可能通过检测程序1的行为是否为行为A来判断其是否为病毒程序时,不能确定该程序1是执行行为A的病毒程序,但是,当本发明实施例检测程序1的行为是否为行为B来判断其是否为病毒程序时,可以很容易地识别到程序1执行行为B,进而确认程序1是执行破坏行为B的病毒程序。
通过上述介绍可见,通过应用程序的行为特征来判断应用程序是否为病毒程序,是更加客观、更加准确的病毒程序检测方法。利用应用程序的行为特征来检测病毒程序,才是真正的利用病毒程序的本质特征来检测病毒程序。相对于通过静态特征来检测病毒程序,利用应用程序的行为特征来检测病毒程序具有极大的规避难度,可以大幅提高病毒程序检测准确性。
基于上述理论介绍,本发明实施例提出基于行为特征的病毒程序检测方法。下面具体介绍本发明实施例提出的病毒程序检测方法的具体处理过程。
结合图1所示的系统架构,图2示出了本发明实施例提出的病毒程序检测方法的一种可选流程,该方法流程可应用于图1所示的检测服务器,参见图2所示,该流程可以包括:
S200、获取待检测程序的行为特征向量。
上述的待检测程序,是指需要检测是否为病毒程序的软件程序。在本发明实施例中,基于针对运行于图1所示的终端设备上的应用程序进行病毒程序的检测、识别的应用情境,上述待检测程序具体是指在如图1所示的终端设备上运行的应用程序,该应用程序可能是用户安装的正常功能的应用程序,也可能是非法安装的病毒应用程序,有待于通过执行本发明实施例技术方案识别其是否为病毒应用程序。
上述行为特征,是指表示程序运行过程中触发的行为的特征。具体的,应用程序在运行过程中,通过触发某种行为而实现某种功能,例如通过触发数据读取行为,实现对某一数据的读取等。应用程序的整个运行过程,就是通过触发、执行一系列的行为,来实现各种不同的功能,从而完成某种处理过程。本发明实施例记录待检测程序在运行过程中所触发的行为,并将记录的待检测程序在运行过程中所触发的行为作为待检测程序的行为特征。进一步的,将上述待检测程序的行为特征以向量形式表示,得到待检测程序的行为特征向量。
可以理解,要想获取待检测程序的行为特征向量,需要首先确定待检测程序在运行过程中分别触发了哪些行为,然后根据待检测程序在运行过程中所触发的行为,确定待检测程序的行为特征向量。
作为一种可选的获取待检测程序的行为特征向量的实现方式,图3示出了上述步骤S200的具体实现过程。参见图3所示,上述获取待检测程序的行为特征向量,具体包括:
S201、调用应用程序模拟器,运行待检测程序。
上述应用程序模拟器,是指可以模拟应用程序运行过程,并且对其运行过程进行记录的虚拟设备,通常用于应用程序运行过程预览、应用程序开发和测试。该应用程序模拟器,本质上也是一套程序,需要装载到硬件设备上运行,因此,上述调用应用程序模拟器,其实是调用硬件设备运行应用程序模拟器程序,再由运行的应用程序模拟器程序加载、运行上述的待检测程序。
作为一种可选示例,在本发明实施例中,基于图1所示的系统架构,设定由图1中的终端设备装载上述应用程序模拟器并运行。由于本发明实施例技术方案是对图1中所示的终端设备上运行的应用程序是否为病毒程序进行检测,因此设置应用程序模拟器装载在终端设备上,可以方便应用程序模拟器加载待检测的应用程序运行。
可选的,上述的程序模拟器也可以独立设置,或设置于图1所示的检测服务器内部,本发明实施例并不对应用程序模拟器的具体存在形式进行限定,仅以示例方式说明检测服务器通过调用终端设备上装载的应用程序模拟器来运行待检测程序。
S202、记录待检测程序在运行过程中的行为日志。
其中,上述行为日志是指记录待检测程序在上述应用程序模拟器中运行时的行为的日志,本发明实施例通过记录待检测程序在运行过程中所触发的一系列行为,得到待检测程序在运行过程中的行为日志。
示例性的,本发明实施例以行为的标识(identification,id)来表示待检测程序在运行过程中所触发的行为,因此,上述行为日志至少包括:程序运行过程中触发的行为的标识,也就是行为日志中的每一项记录至少包括一个字段,即行为的id。
例如,假设图1所示的终端设备上的待检测的应用程序在应用程序模拟器上运行过程中,共触发了5个行为,5个行为的id分别为id-1、id-2、id-3、id-4和id-5,则记录该应用程序在应用程序模拟器上运行过程中的行为日志后,得到的行为日志为:
id-1;id-2;id-3;id-4;id-5。
需要说明的是,上述记录待检测程序在运行过程中的行为日志,具体是通过应用程序模拟器所具有的记录程序运行过程的功能而实现,在此功能基础上,一种示例性的行为日志记录方式是,为应用程序模拟器设置行为id识别功能,即在应用程序模拟器记录应用程序运行过程中所触发的行为后,进一步识别所触发的行为的id并进行记录,得到包括行为id的行为日志。
另一种可选的方式是,在应用程序模拟器记录应用程序运行过程中所触发的行为的信息后,由图1所示的检测服务器根据该行为的信息,识别该行为的id并进行记录得到行为日志。
上述可选的行为日志记录方式在记录得到待检测程序的行为日志后,可以将行为日志存储到图1所示的数据库中,或者直接在终端设备或检测服务器中缓存,供后期处理过程使用。
另外需要说明的是,上述的应用程序模拟器所具有的对应用程序运行过程进行记录的功能,依托于应用程序模拟器所在的操作系统而实现。对于某些操作系统来说,例如iOS操作系统,由于其具有严密的封闭性,无法对程序运行相关信息进行获取、记录,因此无法实现对应用程序的运行过程的记录;而对于Android操作系统来说,由于其开源性,可以允许对程序代码进行开发、改造,以及允许对程序运行过程进行干预、记录,因此可以采用应用程序模拟器进行应用程序运行过程的记录。也就是说,当本发明实施例应用于对移动终端上的病毒应用程序进行检测时,具体是应用于装载Android操作系统的移动终端上,通过记录Android应用程序的运行过程,得到Android应用程序运行过程的行为日志,即上述调用应用程序模拟器运行待检测程序,具体是调用Android应用程序模拟器,来运行待检测的Android应用程序。
对于其他类型的终端设备,相应的也应当具备记录应用程序运行过程的条件,然后借助相应的应用程序模拟器,参照步骤S201、S202,记录程序运行日志。如果终端设备所装载的操作系统本身不支持记录程序运行过程相关信息,则在该系统之上运行的应用程序模拟器就无法记录应用程序运行过程,即无法通过步骤S201、S202记录得到应用程序运行过程中的行为日志,此时应当考虑采取其他实现方式获取待检测程序的行为特征向量。也就是说,图3所示的获取待检测程序的行为特征向量的实施方式,是适用于开源操作系统(允许记录应用程序运行过程的操作系统)中的行为特征向量获取方式。
S203、将行为日志与预设的参考集合进行比对,并根据比对结果生成待检测程序的行为特征向量。
上述预设的参考集合,是指预先设置的,在病毒程序中经常出现的行为的集合,为了保持对行为的表示方式统一,本发明实施例设定上述参考集合中的行为同样以行为的id表示,即在上述参考集合中至少包括预设的至少一个行为的标识。
一般情况下,对于某一类型的病毒程序,或者对于某一领域常见的病毒程序来说,其在运行过程中所触发的行为在大量样本统计中是相对固定的,也就是说,对于某一类型的病毒程序,或者对于某一领域常见的病毒程序来说,在运行过程中所触发的行为,一般都是通过大量样本统计确定的行为中的一种或几种。本发明实施例将上述通过大量样本统计确定的,某一类型或某一领域常见的病毒程序所执行的行为归集到一起,构成参考集合。示例性的,上述参考集合可以根据包含的行为对应的病毒程序类型而单独设置,或者将所有类型的病毒程序对应的行为归集为同一个参考集合。
例如,假设某种类型的病毒程序在运行过程中可能出现的行为包括行为id-1~id-5对应的行为,则可以建立对应该类型的病毒程序的参考集合[id-1,id-2,id-3,id-4,id-5];假设另一种类型的病毒程序在运行过程中可能出现的行为包括行为id-6~id-10对应的行为,则可以建立对应该类型的病毒程序的参考集合[id-6,id-7,id-8,id-9,id-10]。
需要说明的是,一般在检测病毒程序之前,都可以明确知道待检测程序的类型,因此可以选择相应的参考集合用于提取待检测程序的行为特征向量。因此,在本发明实施例中,上述预设的参考集合,还可以具体指与上述待检测程序的程序类型对应的,包含病毒程序行为id的集合。
可以确定,上述待检测程序在运行过程中的行为日志记录的是待检测程序在运行过程中触发的行为的id,而上述参考集合中的行为也是以行为id的形式存储,两者对行为的表示方式统一,本发明实施例通过将上述行为日志与上述预设的参考集合进行比对,根据比对结果生成上述待检测程序的行为特征向量。
为了能够直接地得到待检测程序的行为特征向量,一种示例性的实现方式是,本发明实施例事先设置与上述预设的参考集合对应的向量,然后基于上述行为日志与上述预设的参考集合的比对结果对该向量的元素进行赋值,得到待检测程序的行为特征向量。
作为一种可选方式,将上述预设的参考集合中的每个行为的标识分别对应设置一个向量元素,上述预设的参考集合中的所有的行为的标识对应的所有向量元素组成一个向量,做为与上述参考集合对应的向量。
例如,假设参考集合为[id-1,id-2,id-3,id-4,id-5],则为参考集合中的每个行为id分别对应设置一个向量元素:id-1对应向量元素1,id-2对应向量元素2,id-3对应向量元素3,id-4对应向量元素4,id-5对应向量元素5,将向量元素1-5进行归集组成向量,即得到与参考集合[id-1,id-2,id-3,id-4,id-5]对应的向量[向量元素1,向量元素2,向量元素3,向量元素4,向量元素5]。
然后,本发明实施例通过将上述参考集合中的各个行为的标识与上述行为日志中的行为的标识进行比对,分别判断参考集合中的各个行为的标识是否在上述行为日志中出现,并根据判断结果对与上述参考集合对应的向量的向量元素进行赋值,得到上述待检测程序的行为特征向量。
一种可选的方式是,将上述参考集合中的每个行为id,分别与上述行为日志中的行为id进行比对,通过判断参考集合中的行为id与上述行为日志中的行为di是否相同,来判断参考集合中的行为id是否在上述行为日志中出现。如果参考集合中的行为id与上述行为日志中的某一个行为id相同,则可以确定参考集合中的该行为id在上述行为日志中出现;如果参考集合中的行为id与上述行为日志中的所有行为id均不同,则可以确定参考集合中的该行为id在上述行为日志中没有出现。
按照上述判断方法,对于上述参考集合中的,在上述行为日志中出现的行为id对应的向量元素的值,设定为第一数值;对于上述参考集合中的,在上述行为日志中没有出现的行为id对应的向量元素的值,设定为第二数值,即实现了对于上述参考集合对应的向量的所有向量元素的赋值,得到的该向量即作为上述的待检测程序的行为特征向量。
例如,假设参考集合为[id-1,id-2,id-3,id-4,id-5],通过将该参考集合中的每一个行为id与行为日志中的行为id进行比对,最终确认id-1、id-2、id-4在行为日志中出现,id-3、id-5没有在行为日志中出现。同时,假设设定将参考集合中的,在上述行为日志中出现的行为id对应的向量元素的值置为1,将参考集合中的,没有在上述行为日志中出现的行为id对应的向量元素的值置为0,则可以确定id-1对应的向量元素的值为1,id-2对应的向量元素的值为1,id-3对应的向量元素的值为0,id-4对应的向量元素的值为1,id-5对应的向量元素的值为0,即得到待检测程序的行为特征向量为[1,1,0,1,0]。
按照上述方法得到的待检测程序的行为特征向量的向量元素的值为第一数值,表示该向量元素对应的行为id在上述行为日志中出现,也就是说上述待检测程序在运行过程中触发了该行为id对应的行为;而如果得到的待检测程序的行为特征向量的向量元素的值为第二数值,则表示该向量元素对应的行为id在上述行为日志中没有出现,也就是说上述待检测程序在运行过程中没有触发该行为id对应的行为。因此,上述的待检测程序的行为特征向量,表示出了待检测程序在运行过程中触发了参考集合中的哪些行为,以及没有触发参考集合中的哪些行为。而参考集合中存储的行为,又是某一类型的病毒程序在运行过程中可能触发的行为的集合,因此,上述待检测程序的行为特征向量,表征了待检测程序在运行过程中触发了哪些病毒程序可能触发的行为。
另外需要说明的是,图3所示的病毒程序检测方法中的各个处理步骤的具体处理过程,以及各处理步骤之间的预处理过程,都可以参照图2介绍的病毒程序检测方法中的内容,各实施例之前可以相互参照执行,此处不再详细赘述。
S210、分别将行为特征向量与预置的病毒行为特征向量库中的病毒行为特征向量进行相似性比对。
上述病毒行为特征向量库,是指存储于图1所示的数据库中的,病毒程序行为特征向量数据库,该病毒程序行为特征向量数据库中,存储一定数量的病毒程序的行为特征向量。
上述一定数量的病毒程序的行为特征向量,是在执行本发明实施例技术方案,检测待检测程序是否为病毒程序之前,通过提取大量病毒样本程序的行为特征向量而得到的。
提取病毒样本程序的行为特征向量的一种可选的处理过程,可以参照图3所示的步骤S201~S203执行,即参照步骤S201~S203介绍的提取待检测程序的行为特征向量的处理过程,分别提取病毒样本程序的行为特征向量,并将提取得到的病毒样本程序的行为特征向量存储到数据库中。
可选的,从便于执行的目的考虑,还可以将图3所示的步骤S201~S203的处理过程模块化或装置化,即将图3所示的步骤S201~S203的处理过程设定为单独的功能模块或装置,当需要提取病毒样本程序的行为特征向量或提取待检测程序的行为特征向量时,直接调用该功能模块或装置即可。该功能模块或装置,可以单独设置,也可以作为图1中所示的终端设备或检测服务器的一部分存在,本发明实施例不做严格限定。
在本发明实施例中,上述病毒行为特征向量库中的病毒行为特征向量,以及上述待检测程序的行为特征向量,都是按照图3所示的步骤S201~S203的行为特征向量提取方法提取得到的。也就是说,病毒样本程序的行为特征向量,以及待检测程序的行为特征向量,都是基于将程序的行为日志与同一个参考集合进行比对,根据比对结果生成的行为特征向量。因此可以确定,待检测程序的行为特征向量与病毒行为特征向量库中存储的病毒样本程序的行为特征向量,两者的维数、向量元素取值形式等都是相同的,所不同的仅仅是向量元素的具体取值,因此两者之间具有高度的可比性。
本发明实施例通过将上述提取得到的待检测程序的行为特征向量,分别与上述预置的病毒行为特征向量库中的病毒行为特征向量进行相似性比对,来计算上述待检测程序的行为特征向量与病毒行为特征向量库中的各个病毒行为特征向量的相似度,也就是计算上述待检测程序的行为,与病毒行为特征向量库中各个病毒行为特征向量对应的病毒程序的行为的相似度。
作为一种可选的实现方式,将行为特征向量与预置的病毒行为特征向量库中的病毒行为特征向量进行相似性比对,包括:
统计待检测程序的行为特征向量与预置的病毒行为特征向量库中的病毒行为特征向量的相同位置的向量元素的值都为第一数值的向量元素数量,以及统计上述待检测程序的行为特征向量与上述病毒行为特征向量中的相同位置处的向量元素的值至少有一个为第一数值的向量元素总数。
通过上述介绍已经明确,由于待检测程序的行为特征向量,与病毒样本程序的行为特征向量的提取方法相同,都是按照图3所示的步骤S201~S203实现的,因此得到的待检测程序的行为特征向量,与病毒样本程序的行为特征向量的维数、向量元素取值形式均相同。由于待检测程序的行为特征向量与病毒样本程序的行为特征向量的维数相同,待检测程序的行为特征向量,与病毒样本程序的行为特征向量的向量元素可以实现在向量位置上的一一对应,同时待检测程序的行为特征向量与病毒样本程序的行为特征向量的向量元素的取值都是第一数值,或第二数值。因此,在将待检测程序的行为特征向量与病毒样本程序的行为特征向量进行比对时,可以根据两个向量的向量元素的对应关系,对比相对应的向量元素的取值异同,统计两个向量的相同位置的向量元素的值都为第一数值的向量元素数量,以及统计两个向量中,相同位置处的向量元素的值至少有一个为第一数值的所有向量元素的总数。
可选的,将上述待检测程序的行为特征向量与病毒行为特征向量相同位置的向量元素的值都为第一数值的向量元素数量记为same,将待检测程序的行为特征向量与上述病毒行为特征向量中的相同位置处的向量元素的值至少有一个为第一数值的向量元素总数记为total。
例如,假设待检测程序的行为特征向量为[1,1,1,1,0,1],病毒行为特征向量为[1,1,0,1,0,1],则可以确定,两个向量的相互对应的第1、2、4、6个向量元素的值都为1,因此两个向量的相同位置的向量元素的值都为1的向量元素数量same=4。同时可以确定,两个向量中,相互对应的第1、2、3、4、6个向量元素的值至少有一个为1,因此,两个向量中的相同位置处的向量元素的值至少有一个为1的向量元素的总数total=5
在分别确定所对比的两个向量的,相同位置的向量元素的值都为第一数值的向量元素数量,以及相同位置处的向量元素的值至少有一个为第一数值的向量元素总数后,本发明实施例进一步计算上述相同位置的向量元素的值都为第一数值的向量元素数量,与上述相同位置处的向量元素的值至少有一个为第一数值的向量元素总数的比值,将计算结果作为计算得到的两个向量的相似度。
仍以上述实现方式说明,在分别计算得到待检测程序的行为特征向量与病毒行为特征向量的相同位置的向量元素的值都为1的向量元素数量same=4,以及两个向量中的相同位置处的向量元素的值至少有一个为1的向量元素的总数total=5后,计算same与total的比值,sim1=same/total,得到上述待检测特征向量与病毒行为特征向量的相似度:sim1=4/5=0.8。
特别说明,本发明实施例提出的上述将待检测程序的行为特征向量与病毒行为特征向量进行相似性比对的具体实现方案,是将待检测程序在运行过程中所触发的行为的种类,与病毒程序在运行过程中所触发的行为的种类进行对比并计算相似度,并不是对每一次触发行为进行相似度计算,可以排除单个行为被多次触发而在行为特征向量中多次出现带来的干扰,有一定的泛化能力,实际验证相似度度量效果比较好。
参照上述相似性比对方法,可以进行上述的待检测程序的行为特征向量,与上述预置的病毒行为特征向量库中的每一个病毒行为特征向量之间的相似度计算,本发明实施例不再赘述。
需要说明的是,由于上述的相似性比对过程,是对向量之间进行相似性比对,因此在执行本发明实施例技术方案时,也可以选择一般性的向量距离计算方法,通过计算向量距离,衡量向量的相似度,例如计算向量之间的欧氏距离、曼哈顿距离等。
S220、在行为特征向量与病毒行为特征向量库中的任意一个病毒行为特征向量的相似度超过预置的相似度阈值的情况下,确定待检测程序为病毒程序。
在通过执行步骤S210,分别将待检测程序的行为特征向量与预置的病毒行为特征向量库中的各个病毒行为特征向量进行相似性比对,并且计算得到上述待检测程序的行为特征向量与上述病毒行为特征向量库中的各个病毒行为特征向量之间的相似度后,本发明实施例通过判断上述待检测程序的行为特征向量与病毒行为特征向量库中的各个病毒行为特征向量之间的相似度是否超过预置的相似度阈值,来确定上述待检测程序是否为病毒程序。
当上述待检测程序的行为特征向量与病毒行为特征向量库中的任意一个病毒行为特征向量的相似度超过预置的相似度阈值时,可以认为该待检测程序的行为特征向量与该病毒行为特征向量的相似度很高,从而可以认为该待检测程序在运行过程中的行为,与上述病毒行为特征向量对应的病毒程序在运行过程中的行为的相似度很高,因此可以判断该待检测程序为病毒程序。
相反,如果上述待检测程序的行为特征向量与病毒行为特征向量库中的所有病毒行为特征向量的相似度均不超过预置的相似度阈值,则可以认为该待检测程序的行为特征向量与该病毒行为特征向量库中的所有病毒行为特征向量的相似度都很低,从而可以认为该待检测程序在运行过程中的行为,与上述病毒行为特征向量库中的所有病毒行为特征向量对应的病毒程序在运行过程中的行为相似度都很低,因此可以判断该待检测程序不是病毒程序。
上述预置的相似度阈值,是指预先设置的,用于判定待检测程序的行为特征向量与病毒行为特征向量库中的病毒行为特征向量是否足够相似的相似度阈值。在实际应用本发明实施例技术方案时,可以根据实际需求,灵活设置上述相似度阈值的大小。
通过上述介绍可见,本发明实施例提出的病毒程序检测方法在检测应用程序是否为病毒程序时,首先获取待检测程序的行为特征向量;然后分别将行为特征向量与预置的病毒行为特征向量库中的病毒行为特征向量进行相似性比对;在行为特征向量与病毒行为特征向量库中的任意一个病毒行为特征向量的相似度超过预置的相似度阈值的情况下,确定待检测程序为病毒程序。上述技术方案通过待检测程序的行为特征判断其是否为病毒程序,即以程序的实际行为来判断程序是否为病毒程序,相对于提取程序的特征码来代表程序属性,程序的实际行为更能突出程序是否具有破坏性的行为属性,因此本发明利用程序的实际行为来检测程序是否为病毒程序的检测准确度更高。
本发明实施例在对大量程序(包括正常程序和病毒程序)的运行过程进行研究时发现,程序在运行过程中触发的一系列行为,并不是随意触发的,而是时序性地、有先后顺序地依次触发一系列的行为,执行一系列的功能,最终完成某种处理过程。例如当程序开始运行后,运行到t1时刻时,触发行为id-1对应的行为,运行到t2时刻时,触发行为id-2对应的行为,以此类推,其中t2>t1。
对比不同的程序运行过程,本发明实施例发现,即使不同的程序在运行过程中所触发的行为的种类和数量是相同的,但是如果程序触发各个行为的时间不同,那么最终实现的功能也不同。
例如,假设应用程序A在开始运行后,分别在t1时刻触发了行为id-1对应的行为,在t2时刻触发了行为id-2对应的行为,在t3时刻触发了行为id-3对应的行为;而应用程序B在开始运行后,分别在t1时刻触发了行为id-2对应的行为,在t2时刻触发了行为id-3对应的行为,在t3时刻触发了行为id-1对应的行为,其中t1<t2<t3,虽然应用程序A和应用程序B在运行过程中都是分别触发了行为id-1、行为id-2、行为id-3对应的行为,但是由于两者运行过程中触发各个行为的时序是不同的,也就是两种运行过程中触发各个行为的时间是不同的,导致两者最终实现的功能,所完成的处理是不同的。
因此,可以理解,程序在运行过程中触发行为的时间,应当也成为表征程序运行过程的行为特征的一方面,如果只记录程序在运行过程中所触发的行为的id,而不记录程序在运行过程中触发各个行为id对应的行为的时间,则可能导致对于虽然触发的行为的id相同,但是触发行为的id对应的行为的时间不同的不同程序,不能准确区分其运行过程的不同点,进而导致对程序的行为特征向量提取不准确,造成对病毒程序的检测准确度不高。
为了更准确地记录程序运行过程中的行为日志,在本发明技术方案的另一个实施例中还公开了,在上述图3所示的步骤S202中,记录待检测程序在运行过程中触发的行为的标识,得到待检测程序在运行过程中的行为日志时,还记录待检测程序在运行过程中触发行为的时间,即在本发明实施例中,上述图3所示的步骤S202记录的待检测程序在运行过程中的行为日志中,还包括程序运行过程中的行为触发时间。
其中,上述行为触发时间,表示触发行为的标识对应的行为的时刻,与开始运行程序的时刻之间的时间。
可以理解,程序在开始运行之后,随着与程序开始运行的时刻之间的时间增长,程序会陆续触发一系列的行为,直到程序运行完毕时,执行完最后一个行为。记录程序运行过程中所触发的行为的行为id的同时,记录触发所记录的行为id对应的行为的时刻距离开始运行程序的时刻之间的时间,实现了完整记录程序在开始运行多长时间后触发了哪个行为,对程序的行为日志记录更全面。
示例性的,在本发明实施例中,记录待检测程序的在运行过程中的行为日志时,设置该行为日志中的每一项记录包括两个字段,即:触发的行为的标识,触发该行为的时间。
例如,假设图1所示的终端设备上的待检测的应用程序在应用程序模拟器上运行过程中,共触发了5个行为,5个行为的id分别为t1时刻触发的id-1、t2时刻触发的id-2、t3时刻触发的id-3、t4时刻触发的id-4和t5时刻触发的id-5,则按照本发明实施例提出的行为日志记录方法记录该应用程序在应用程序模拟器上运行过程中的行为日志后,得到的行为日志为:
id-1,t1;id-2,t2;id-3,t3;id-4,t4;id-5,t5。
进一步的,由于本发明实施例在通过将待检测程序的行为日志和预设的参考集合进行比对,并根据比对结果生成待检测程序的行为特征向量时,实际上是将上述预设的参考集合中的每个元素与待检测程序的行为日志中的每一项记录进行对比,判断预设的参考集合中的元素在上述行为日志中是否出现,从而生成待检测程序的行为特征向量。
为了保持上述预设的参考集合中的元素与待检测程序的行为日志中的记录的可比性,当本发明实施例在记录待检测程序在运行过程中触发的行为的行为id的同时还记录触发行为id对应的行为的时间时,本发明实施例同时设定上述预设的参考集合中的每一个元素在记录病毒程序运行过程中常触发的行为的行为id的同时,也记录病毒程序在运行过程中,触发上述常触发的行为的时间。也就是说,在上述预置的参考集合中,每一元素不仅记录病毒程序在运行过程中常触发的行为的行为id,还同时记录病毒程序在运行过程中触发所记录的行为id对应的行为的行为触发时间,并且,该行为触发时间同样表示触发行为的标识对应的行为的时刻,与开始运行程序的时刻之间的时间。
示例性的,上述预设的参考集合中的元素也包括两个字段:病毒程序常触发的行为的标识,病毒程序触发该行为的行为触发时间。
基于本发明实施例的上述处理,由于上述预设的参考集合中的元素,以及上述待检测程序的行为日志中的每项记录所包含的字段都变为两个字段,因此,图3所示的步骤S203所介绍的将待检测程序的行为日志与预设的参考集合进行比对,并根据比对结果生成待检测程序的行为特征向量的处理过程,也有所改进。
参见图4所示,当记录的待检测程序的行为日志还包括待检测程序运行过程中的行为触发时间时,图3所示的步骤S203介绍的处理步骤:将行为日志与预设的参考集合进行比对,并根据比对结果生成待检测程序的行为特征向量,具体包括:
S2031、将预设的参考集合中的行为的标识与行为日志中的行为的标识进行比对,判断参考集合中的行为的标识是否在行为日志中出现。
在上述预设的参考集合和上述行为日志中,每一项元素都包括两个字段:行为的标识,行为触发时间。并且,上述同一元素中的行为的标识与行为触发时间,是相互对应的。
在具体将上述预设的参考集合中与上述待检测程序的行为日志进行比对时,首先将上述参考集合中的行为id,与上述待检测程序的行为日志中的行为id进行比对,判断参考集合中的行为id是否在上述行为日志中出现。
如果上述参考集合中的行为id没有在上述行为日志中出现,则可以直接确定上述参考集合中包含该行为id的元素,没有在上述行为日志中出现,此时执行步骤S2035、读取参考集合中的下一个行为的标识,并再次返回执行步骤S2031将读取到的参考集合中的行为的标识与行为日志中的行为的标识进行比对,判断该行为的标识是否在行为日志中出现。
如果参考集合中的行为的标识在行为日志中出现,则执行步骤S2032、判断参考集合中的行为的标识对应的行为触发时间,与行为日志中出现的行为的标识对应的行为触发时间之间的差值是否在预置的时间误差范围内;
具体而言,如果上述参考集合中的行为id在上述待检测程序的行为日志中出现,那么针对上述参考集合中的该行为id,以及对应的在上述待检测程序的行为日志中出现的该行为id,继续判断两者对应的行为触发时间是否接近,也就是判断上述参考集合中的该行为id,以及对应的在上述待检测程序的行为日志中出现的该行为id,两者是不是在各自所在的程序运行大概相同时间后被触发的。
一种示例性的判断方式是,对于步骤S2031中确定的,在上述参考集合中出现,以及同时在上述待检测程序的行为日志中出现的行为id后,判断上述参考集合中的该行为id对应的行为触发时间,与上述待检测程序的行为日志中出现的该行为id对应的行为触发时间之间的差值是否在预置的时间误差范围内。
由于运行程序的硬件设备的处理能力不能保证完全相同,因此,上述判断过程并不要求判断上述参考集合中的该行为id对应的行为触发时间,与上述待检测程序的行为日志中出现的该行为id对应的行为触发时间是否完全相同,而是允许一定量的时间误差。可以理解,在严格要求比对精度,以及能够保证运行病毒样本程序和运行待检测程序的硬件设备对程序处理能力完全相同等情况下,也可以直接判断上述参考集合中的该行为id对应的行为触发时间,与上述待检测程序的行为日志中出现的该行为id对应的行为触发时间是否完全相同。
如果参考集合中的行为的标识对应的行为触发时间,与行为日志中出现的行为的标识对应的行为触发时间之间的差值在预置的时间误差范围内,则执行步骤S2033、将与参考集合对应的向量中的,与参考集合中的行为的标识对应的向量元素的值设置为第一数值;
可以理解,如果上述参考集合中的该行为id对应的行为触发时间,与上述待检测程序的行为日志中出现的该行为id对应的行为触发时间之间的差值不在预置的时间范围内,则认为上述参考集合中的,包括该行为id的元素,与上述待检测程序的行为日志中的,包括该行为id的记录是不同的,也就相当于上述参考集合中的,包含该行为id的元素,在上述待检测程序的行为日志中没有出现,此时执行步骤S2035、读取参考集合中的下一个行为的标识,并再次返回执行步骤S2031将读取到的参考集合中的行为的标识与行为日志中的行为的标识进行比对,判断该行为的标识是否在行为日志中出现。
相反,如果上述参考集合中的该行为id对应的行为触发时间,与上述待检测程序的行为日志中出现的该行为id对应的行为触发时间之间的差值在预置的时间范围内,则可以认为上述参考集合中的,包括该行为id的元素,与上述待检测程序的行为日志中的,包括该行为id的记录是相同的,也就相当于上述参考集合中的,包含该行为id的元素,在上述待检测程序的行为日志中出现,按照本发明实施例提出的生成待检测程序的行为特征向量的技术思想,此时应当将与上述参考集合对应的向量中的,与参考集合中的包含该行为id的元素对应的向量元素的值设置为第一数值。
然后执行步骤S2034、判断是否遍历完参考集合中的所有行为的标识,如果还没有遍历完,则执行步骤S2035,读取参考集合中的下一个行为的标识,并返回执行步骤S2031,按照上述步骤S2031~S2035,可以分别识别出上述参考集合中的,在上述待检测程序的行为日志中出现的元素,并将这些元素对应的,与上述参考集合对应的向量中的向量元素的值设置为第一数值;如果在执行步骤S2034时判断已遍历完参考集合中的所有行为的标识,则执行步骤S2036、将与参考集合对应的向量中的,未被设置为第一数值的向量元素的值设置为第二数值,得到待检测程序的行为特征向量。
在按照上述步骤S2031~S2035,分别识别出上述参考集合中的,在上述待检测程序的行为日志中出现的元素,并将与上述参考集合对应的向量中的,与这些元素对应的向量元素的值设置为第一数值后,在与上述参考集合对应的向量中,没有被设置为第一数值的向量元素,本发明实施例直接将其值设置为第二数值,这样与上述参考集合对应的向量中的每个向量元素都被赋值,得到的向量即作为上述待检测程序的行为特征向量。
例如,假设上述参考集合为[id-1,0.2s;id-2,0.3s;id-4,0.5s],上述待检测程序的行为日志为:id-1,0.3s;id-3,0.4s;id-4,0.7s,设置预置的时间误差范围为0.1s。那么按照上述实施例介绍,在生成待检测程序的行为特征向量时,可参照如下程序进行:
对于参考集合中的元素id-1,0.2s,其行为的标识id-1在上述行为日志中出现,同时,id-1在参考集合中的行为触发时间为0.2s,在上述行为日志中的行为触发时间为0.3s,两个行为触发时间差值为0.1s,在预置的时间误差范围0.1s内,因此可以确定参考集合中的元素id-1,0.2s在上述行为日志中出现,将其对应的向量元素的值置为1。
对于参考集合中的元素id-2,0.3s,其行为的标识id-2并没有在上述行为日志中出现,因此可以直接确定上述参考集合中的元素id-2,0.3s没有在上述行为日志中出现,将其对应的向量元素的值置为0。
对于参考集合中的元素id-4,0.5s,其行为的标识id-4在上述行为日志中出现,同时,id-4在参考集合中的行为触发时间为0.5s,在上述行为日志中的行为触发时间为0.7s,两个行为触发时间差值为0.2s,不在预置的时间误差范围0.1s内,因此可以确定参考集合中的元素id-4,0.5s没有在上述行为日志中出现,将其对应的向量元素的值置为0。
至此,对于上述参考集合对应的向量的向量元素,都已完成赋值,得到的与上述参考集合对应的向量为[1,0,0],即得到上述待检测程序的行为特征向量为[1,0,0]。
另外需要说明的是,图4所示的病毒程序检测方法中的各个处理步骤的具体处理过程,以及各处理步骤之间的预处理过程,都可以参照图3介绍的病毒程序检测方法中的内容,各实施例之前可以相互参照执行,此处不再详细赘述。
在本发明实施例技术方案研究过程中还发现,在程序运行过程中,一方面程序会触发一系列的行为,实现一系列功能;另一方面,程序运行过程中可能会重复地触发某一个行为。通过对大量样本程序的运行过程中的行为触发情况进行统计发现,程序运行过程中重复触发某一个或某几个行为,也是程序区别于其他程序的特征。试想,假如图1所示的终端设备上的应用程序A在运行过程中触发了行为id-1、行为id-2对应的行为,而应用程序B在运行过程中,重复多次触发了行为id-1、行为id-2对应的行为,则应用程序A和应用程序B应当是不同的应用程序,否则,应用程序A和应用程序B的运行过程应该是相同的单次触发行为id-1、行为id-2对应的行为,或重复多次触发行为id-1、行为id-2对应的行为,不可能发生相同的应用程序在运行过程中触发行为的次数不同的情况。
而应用程序触发同一行为的次数不同,必定会使应用程序的运行进程发生变化,或者使应用程序的整个运行过程中,先后触发行为的过程不同。因此,可以确定,程序运行过程中触发行为的次数,也是可以表征程序运行过程的行为特征的重要参量。以此为基础,本发明实施例对上述各实施例介绍的病毒程序检测方法进一步进行改进。
上述各实施例中,例如图3中步骤S203、以及图4中步骤S2031~S2036介绍的生成待检测程序的行为特征向量的处理过程,都是通过将参考集合中的各个元素(仅包括行为id,或同时包括行为id和行为触发时间)与待检测程序的行为日志中的各项记录进行对比,判断参考集合中的各个元素是否在待检测程序的行为日志中出现,从而为与参考集合对应的向量的向量元素赋值,得到待检测程序的特征向量。
可以明确,在上述生成待检测程序的行为特征向量的处理过程中,只考虑到参考集合中的元素是否在待检测程序的行为日志中出现,而没有考虑到参考集合中的元素在待检测程序的行为日志中出现的次数。在本发明实施例中,将参考集合中的元素在待检测程序的行为日志中出现的次数也作为待检测程序的特征之一,用作病毒程序检测之中。
在本发明实施例中,参照图3或图4所示的方法,将待检测程序的行为日志与预设的参考集合进行比对,并根据比对结果生成待检测程序的行为特征向量后,还进一步分别统计生成的行为特征向量中的每一个向量元素对应的行为的标识在上述待检测程序的行为日志中出现的次数,得到上述待检测程序的行为特征向量的附加特征向量。
一种示例性的实现方式是,在按照图3或图4所示的方法,将待检测程序的行为日志与预设的参考集合进行比对,并根据比对结果生成待检测程序的行为特征向量后,对于生成的行为特征向量中,取值为第一数值的向量元素对应的参考集合元素(行为id,或行为id及其对应的行为触发时间),统计其在上述待检测程序的行为日志中出现的次数,得到与该参考集合元素对应的附加特征向量的向量元素的值。对于生成的行为特征向量中,取值为第二数值的向量元素对应的参考集合元素(行为id,或行为id及其对应的行为触发时间),由于其根本没有在上述待检测程序的行为日志中出现,因此可以直接将该参考集合元素对应的附加特征向量的向量元素的值设置为0。
例如,假设参考集合为[id-1,id-2,id-3,id-4,id-5,id-6],通过将该参考集合中的每个元素与待检测程序的行为日志中的每项记录进行比对,确定id-1、id-2、id-4、id-6在上述待检测程序的行为日志中出现,则按照上述实施例技术方案,可以确定上述待检测程序的行为特征向量为[1,1,0,1,0,1]。在此基础上,进一步统计上述参考集合中的id-1、id-2、id-4、id-6在上述待检测程序的行为日志中出现的次数,确定id-1在上述行为日志中出现了2次,id-2在上述行为日志中出现了5次,id-4在上述行为日志中出现了5次,id-6在上述行为日志中出现了8次,而剩余的id-3、id-5根本没有在上述行为日志中出现,因此可以确定其在上述行为日志中均出现了0次。最终,将上述参考集合中的各元素对应的附加特征向量的向量元素的值,设置为参考集合中的各元素在上述待检测程序的行为日志中出现的次数,得到上述待检测程序的行为特征向量的附加特征向量为[2,5,0,5,0,8]。
可以理解,通过上述改进后,生成的表示待检测程序的行为的特征向量,其实为2个向量,一个是表征待检测程序在运行过程中触发了哪些行为的行为特征向量,另一个是表征待检测程序在运行过程中,触发行为的次数信息的向量,即上述行为特征向量的附加特征向量。
由于表示待检测程序的行为的特征的向量发生变化,因此,当将待检测程序的行为特征向量与预置的病毒行为特征向量库中的病毒行为特征向量进行相似性比对的处理过程,也会发生相应改变。
需要说明的是,本发明实施例需要通过将待检测程序的行为特征向量与预置的病毒行为特征向量库中的病毒行为特征向量进行相似性比对,来判断待检测程序的行为特征向量是否与病毒程序的病毒行为特征向量相似,从而判断待检测程序的行为与病毒程序的行为是否相同,进而确定待检测程序是否为病毒程序。因此,为了保证待检测程序的行为特征向量与预置的病毒行为特征向量库中的病毒行为特征向量的可比性,当本发明实施例技术方案在获取待检测程序的行为特征向量时如果同时获取行为特征向量的附加特征向量,则应当在建立病毒行为特征向量库时,保证病毒行为特征向量库中的病毒行为特征向量,也包括病毒行为特征向量的附加特征向量。即,病毒行为特征向量库中的病毒行为特征向量的获取,应当与待检测程序的行为特征向量的获取方式相同,两者行为特征向量的形式也应当相同,以便保证可比性。
以图3所示的病毒程序检测方法为例说明,当通过执行步骤S201~S203生成待检测程序的行为特征向量后,参见图5所示,继续执行步骤S204、分别统计行为特征向量中的每一个向量元素对应的行为的标识在行为日志中出现的次数,得到行为特征向量的附加特征向量;
此时,图3中步骤S210、将行为特征向量与预置的病毒行为特征向量库中的病毒行为特征向量进行相似性比对,改进为图5所示的如下处理步骤:
S211、度量行为特征向量的附加特征向量与预置的病毒行为特征向量库中的病毒行为特征向量的附加特征向量的相似度。
S212、判断行为特征向量的附加特征向量与病毒行为特征向量的附加特征向量的相似度是否大于预置的第一相似度阈值。
如果行为特征向量的附加特征向量与病毒行为特征向量的附加特征向量的相似度不大于预置的第一相似度阈值,则执行步骤S213、读取下一个病毒行为特征向量的附加特征向量,并返回执行步骤S211、判断行为特征向量的附加特征向量与读取的病毒行为特征向量的附加特征向量的相似度是否大于预置的第一相似度阈值。
如果行为特征向量的附加特征向量与病毒行为特征向量的附加特征向量的相似度大于预置的第一相似度阈值,则执行步骤S214、确定行为特征向量与病毒行为特征向量的相似度超过预置的相似度阈值。
上述的行为特征向量的附加特征向量作为行为特征向量的一部分,可以作为判断行为特征向量是否相同的依据。
作为一种可选示例,本发明实施例在对比待检测程序的行为特征向量与预置的病毒行为特征向量库中的病毒行为特征向量的相似度时,直接对比待检测程序的行为特征向量的附加特征向量,与预置的病毒行为特征向量库中的病毒行为特征向量的附加特征向量的相似度。
如果上述待检测程序的行为特征向量的附加特征向量与预置的病毒行为特征向量库中的病毒行为特征向量的附加特征向量的相似度大于预置的第一相似度阈值,则可以确定上述待检测程序的行为特征向量与病毒行为特征向量库中的上述病毒行为特征向量的相似度超过预置的相似度阈值。
如果上述待检测程序的行为特征向量的附加特征向量与预置的病毒行为特征向量库中的病毒行为特征向量的附加特征向量的相似度不大于预置的第一相似度阈值,则可以确定上述待检测程序的行为特征向量与病毒行为特征向量库中的上述病毒行为特征向量的相似度不超过预置的相似度阈值。
参照上述方法,可以分别确定上述待检测程序的行为特征向量与上述预置的病毒行为特征向量库中的各个病毒行为特征向量的相似度是否超过预置的相似度阈值。
需要说明的是,图5所示的病毒程序检测方法中的步骤S201~S203、S204、S220的具体处理内容,请参见图3所示的实施例以及上述相关实施例的具体处理过程介绍,各实施例之间可以相互参照执行,本发明实施例不再一一详细介绍。
另一种可选的将上述待检测程序的行为特征向量与预置的病毒行为特征向量库中的病毒行为特征向量进行相似性比对的实现方式是,以图3所示的病毒程序检测方法为例说明,当通过执行步骤S201~S203生成待检测程序的行为特征向量后,参见图6所示,继续执行步骤S204、分别统计行为特征向量中的每一个向量元素对应的行为的标识在行为日志中出现的次数,得到行为特征向量的附加特征向量。
此时,图3中步骤S210、将行为特征向量与预置的病毒行为特征向量库中的病毒行为特征向量进行相似性比对,改进为图6所示的如下处理步骤:
S211、度量行为特征向量与预置的病毒行为特征向量库中的病毒行为特征向量的相似度。
对于待检测程序的行为特征向量与预置的病毒行为特征向量库中的病毒行为特征向量的相似度度量,可以参照图2所示的病毒程序检测方法中的步骤S210所介绍的处理过程进行处理,此处不再详细说明。
S212、判断行为特征向量与预置的病毒行为特征向量库中的病毒行为特征向量的相似度是否超过预置的第二相似度阈值。
当通过执行步骤S212判断待检测程序的行为特征向量与预置的病毒行为特征向量库中的病毒行为特征向量的相似度不超过预先设置的第二相似度阈值时,可以确定待检测程序的行为特征向量与预置的病毒行为特征向量库中的该病毒行为特征向量不相似,此时可以直接确定该待检测程序的行为特征向量与预置的病毒行为特征向量库中的该病毒行为特征向量不相似,执行步骤S213、读取下一个病毒行为特征向量,并返回执行步骤S211、度量行为特征向量与读取到的病毒行为特征向量的相似度。
如果行为特征向量与病毒行为特征向量的相似度超过预置的第二相似度阈值,则执行步骤S214、度量行为特征向量的附加特征向量与病毒行为特征向量的附加特征向量的相似度。
当通过执行步骤S212判断待检测程序的行为特征向量与预置的病毒行为特征向量库中的病毒行为特征向量的相似度超过预先设置的第二相似度阈值时,可以确定待检测程序的行为特征向量与预置的病毒行为特征向量库中的该病毒行为特征向量足够相似,此时进一步度量待检测程序的行为特征向量的附加特征向量与该病毒行为特征向量的附加特征向量的相似度。
S215、判断行为特征向量的附加特征向量与病毒行为特征向量的附加特征向量的相似度是否大于预置的第三相似度阈值。
在已经确定上述待检测程序的行为特征向量与预置的病毒行为特征向量库中的病毒行为特征向量的相似度超过预置的第二相似度阈值的情况下,如果进一步判断确定待检测程序的行为特征向量的附加特征向量与上述病毒行为特征向量的附加特征向量的相似度不大于预置的第三相似度阈值,则可以确定上述待检测程序的行为特征向量与上述病毒行为特征向量的相似度不超过预置的相似度阈值。此时执行步骤S213并返回执行步骤S211。
如果行为特征向量的附加特征向量与病毒行为特征向量的附加特征向量的相似度大于预置的第三相似度阈值,则执行步骤S216、确定行为特征向量与病毒行为特征向量的相似度超过预置的相似度阈值。
在已经确定上述待检测程序的行为特征向量与预置的病毒行为特征向量库中的病毒行为特征向量的相似度超过预置的第二相似度阈值的情况下,如果进一步度量确定待检测程序的行为特征向量的附加特征向量与上述病毒行为特征向量的附加特征向量的相似度大于预置的第三相似度阈值,则可以确定上述待检测程序的行为特征向量与上述病毒行为特征向量的相似度超过预置的相似度阈值。
需要说明的是,图6所示的病毒程序检测方法中的步骤S201~S203、S204、S220的具体处理内容,请参见图3所示的实施例以及上述相关实施例的具体处理过程介绍,各实施例之间可以相互参照执行,本发明实施例不再一一详细介绍。
作为一种可选的实施示例,上述图5以或图6所示的病毒程序检测方法中的步骤S211或S212所涉及的度量行为特征相连的附加特征向量与病毒行为特征向量的附加特征向量的相似度,具体包括:
根据行为特征向量的附加特征向量和病毒行为特征向量的附加特征向量的差,以及行为特征向量的附加特征向量和病毒行为特征向量的附加特征向量的和,计算得到行为特征向量的附加特征向量和病毒行为特征向量的附加特征向量的差异值。
待检测程序的行为特征向量的附加特征向量,以及病毒行为特征向量的附加特征向量,两者本质上就是两个向量。对于两个向量的差异,一般利用两个向量的差,比上两个向量的和的比值进行衡量。
作为一种示例,假设待检测程序的行为特征向量的附加特征向量,以及病毒行为特征向量的附加特征向量分别为[a1,a2,a3]和[b1,b2,b3],则这两个向量的差为sub=[a1-b1,a2-b2,a3-b3],这两个向量的和为sum=[a1+b1,a2+b2,a3+b3],这两个向量的差异值为
Figure BDA0001796340100000291
其中,上述公式的分子表示将上述两个向量的差向量的各元素进行平方求和再开方运算,表示了两个向量的差向量的坐标与差向量所在的坐标系原点的距离;上述公式的分母表示将上述两个向量的和向量的各元素进行平方求和再开方,表示两个向量的和向量的坐标与和向量所在的坐标系原点的距离。
上述公式用两个向量的差向量与坐标系原点的距离,除以两个向量的和向量与坐标系原点的距离,作为两个向量的差异表示。上述运算利用了向量坐标之间的关系,可以最大化向量间的差异,使向量之间的差异对向量的每一维都敏感,从而使得对向量的差异感知能力更强,可以更准确地度量向量之间的差异。
根据行为特征向量的附加特征向量和病毒行为特征向量的附加特征向量的差异值,计算得到行为特征向量的附加特征向量和病毒行为特征向量的附加特征向量的相似度。
在计算得到待检测程序的行为特征向量的附加特征向量和病毒行为特征向量的附加特征向量的差异值diff后,用1减去待检测程序的行为特征向量的附加特征向量和病毒行为特征向量的附加特征向量的差异值diff,即得到待检测程序的行为特征向量的附加特征向量和病毒行为特征向量的附加特征向量的相似度,即:
sim2=1-diff
需要说明的是,上述度量待检测程序的行为特征向量的附加特征向量和病毒行为特征向量的附加特征向量的相似度的方法,是本发明实施例提出的一种作为示例的度量待检测程序的行为特征向量的附加特征向量和病毒行为特征向量的附加特征向量的相似度的方法,在具体实施本发明实施例技术方案时,可以根据需求和具体场景,灵活选择可用于度量向量相似度的计算方法,本发明实施例不做严格限定。
下面以具体举例,说明本发明实施例提出的检测病毒程序的方法的优选执行过程,可以理解,以下举例只是作为示例性的举例说明,在具体实施本发明实施例技术方案时,可以视情况进行优化调整。
S1、通过应用程序模拟器,运行一定数量的病毒样本程序,以及提取得到病毒样本程序的行为特征向量及行为特征向量的附加特征向量,构成病毒行为特征向量库。例如得到病毒行为特征向量为[1,1,0,1,0,1],该病毒行为特征向量的附加特征向量为[2,4,0,5,0,7]。
S2、通过应用程序模拟器运行待检测程序,记录待检测程序的行为日志;
记录的行为日志形式如下:
行为id_1,触发时间1;
行为id_2,触发时间2:
行为…
S3、将待检测程序的行为日志转化为待检测程序的行为特征向量。
统计预设的参考集合中的各行为id是否在上述行为日志中出现,如果出现则将该行为id对应的向量元素赋值为1,如果没有出现则将该行为id对应的向量元素赋值为0,得到待检测程序的行为特征向量。
统计待检测程序的行为特征向量中,值为1的元素对应的行为id在上述行为日志中出现的次数,得到该行为特征向量的附加特征向量。
例如,得到的待检测程序的行为特征向量为[1,1,1,1,0,1],附加特征向量为[2,4,2,5,0,7]。
S4、将待检测程序的行为特征向量以及行为特征向量的附加特征向量,与上述病毒行为特征向量库中的病毒行为特征向量,以及病毒行为特征向量的附加特征向量进行相似性度量。
假设将待检测程序的行为特征向量[1,1,1,1,0,1]以及附加特征向量[2,4,2,5,0,7],与病毒行为特征向量[1,1,0,1,0,1]和病毒行为特征向量的附加特征向量[2,5,0,5,0,8]进行相似性度量:
计算sim1=same/total=4/9=0.44,sim1>相似度阈值1(0.3),则进一步计算sim2,这两个附加特征向量的和向量sum=[4,9,2,10,0,15],差向量sub=[0,-1,2,0,0,-1],则
Figure BDA0001796340100000311
sim2>相似度阈值2(0.85),因此可以确定待检测程序的行为特征向量与上述病毒行为特征向量的相似度超过设定的相似度阈值。
S5、如果待检测程序的行为特征向量与病毒行为特征向量的相似度超过设定的相似度阈值,跳转到步骤S7,否则执行步骤S6。
S6、判断病毒行为特征向量库中的病毒行为特征向量是否遍历完毕,如果是跳转到步骤S7,如果否,跳转回步骤S4。
S7、判断待检测程序是否为病毒程序,结束。
下面对本发明实施例提供的病毒程序检测装置进行介绍,下文描述的病毒程序检测装置可以认为是检测服务器为实现本发明实施例提出的病毒程序检测方法,所需设置的程序模块。下文描述的病毒程序检测装置的内容,尤其是病毒程序检测装置的各部分的具体工作内容,可与上文描述的病毒程序检测方法的内容相互对应参照。
图7为本发明实施例提供的病毒程序检测装置的结构示意图,该装置包括:
特征向量获取模块100,用于获取待检测程序的行为特征向量,其中,行为特征是表示程序运行过程中触发的行为的特征。
特征向量比对模块110,用于分别将行为特征向量与预置的病毒行为特征向量库中的病毒行为特征向量进行相似性比对。
检测结果确定模块120,用于在行为特征向量与病毒行为特征向量库中的任意一个病毒行为特征向量的相似度超过预置的相似度阈值的情况下,确定待检测程序为病毒程序。
可选的,图8示出了本发明实施例提供的病毒程序检测装置的另一种结构示意图,该病毒程序检测装置的特征向量获取模块100,包括:
程序运行模块1001,用于调用应用程序模拟器,运行待检测程序。
行为记录模块1002,用于记录待检测程序在运行过程中的行为日志;其中,行为日志至少包括:程序运行过程中触发的行为的标识。
比对处理模块1003,用于将行为日志与预设的参考集合进行比对,并根据比对结果生成待检测程序的行为特征向量,参考集合中至少包括预设的至少一个行为的标识。
可选的,参考集合中的每个行为的标识分别对应一个向量元素,参考集合中所有的行为的标识对应的向量元素组成与参考集合对应的向量。
比对处理模块1003将行为日志与预设的参考集合进行比对,并根据比对结果生成待检测程序的行为特征向量时,具体用于:
将参考集合中的各个行为的标识与行为日志中的行为的标识进行比对,分别判断参考集合中的各个行为的标识是否在行为日志中出现,并根据判断结果对向量的向量元素进行赋值,得到待检测程序的行为特征向量。
其中,待检测程序的行为特征向量的向量元素为第一数值,表示向量元素对应的行为的标识在行为日志中出现;待检测程序的行为特征向量的向量元素为第二数值,表示向量元素对应的行为的标识在行为日志中没有出现。
可选的,行为记录模块1002记录的待检测程序在运行过程中的行为日志还包括程序运行过程中的行为触发时间,其中,行为触发时间表示触发行为的标识对应的行为的时刻,与开始运行程序的时刻之间的时间。
可选的,参考集合中的每个行为的标识分别对应一个向量元素,参考集合中所有的行为的标识对应的向量元素组成与参考集合对应的向量。
比对处理模块1003将行为日志与预设的参考集合进行比对,并根据比对结果生成待检测程序的行为特征向量时,具体用于:
将预设的参考集合中的行为的标识与行为日志中的行为的标识进行比对,判断参考集合中的行为的标识是否在行为日志中出现。
如果参考集合中的行为的标识在行为日志中出现,则判断参考集合中的行为的标识对应的行为触发时间,与行为日志中出现的行为的标识对应的行为触发时间之间的差值是否在预置的时间误差范围内。
如果参考集合中的行为的标识对应的行为触发时间,与行为日志中出现的行为的标识对应的行为触发时间之间的差值在预置的时间误差范围内,则将与参考集合对应的向量中的,与参考集合中的行为的标识对应的向量元素的值设置为第一数值。
将与参考集合对应的向量中的,未被设置为第一数值的向量元素的值设置为第二数值,得到待检测程序的行为特征向量。
可选的,特征向量比对模块110将行为特征向量与预置的病毒行为特征向量库中的病毒行为特征向量进行相似性比对时,具体用于:
统计行为特征向量与预置的病毒行为特征向量库中的病毒行为特征向量的相同位置的向量元素的值都为第一数值的向量元素数量,以及统计行为特征向量与病毒行为特征向量中的相同位置处的向量元素的值至少有一个为第一数值的向量元素总数。
计算相同位置的向量元素的值都为第一数值的向量元素数量,与相同位置处的向量元素的值至少有一个为第一数值的向量元素总数的比值,得到行为特征向量与病毒行为特征向量的相似度。
可选的,比对处理模块1003将行为日志与预设的参考集合进行比对,并根据比对结果生成待检测程序的行为特征向量时,还用于:
分别统计行为特征向量中的每一个向量元素对应的行为的标识在行为日志中出现的次数,得到行为特征向量的附加特征向量。
可选的,特征向量比对模块110将行为特征向量与预置的病毒行为特征向量库中的病毒行为特征向量进行相似性比对时,具体用于:
度量行为特征向量的附加特征向量与预置的病毒行为特征向量库中的病毒行为特征向量的附加特征向量的相似度。
如果行为特征向量的附加特征向量与病毒行为特征向量的附加特征向量的相似度大于预置的第一相似度阈值,则确定行为特征向量与病毒行为特征向量的相似度超过预置的相似度阈值。
可选的,特征向量比对模块110将行为特征向量与预置的病毒行为特征向量库中的病毒行为特征向量进行相似性比对时,具体用于:
度量行为特征向量与预置的病毒行为特征向量库中的病毒行为特征向量的相似度。
如果行为特征向量与病毒行为特征向量的相似度超过预置的第二相似度阈值,则度量行为特征向量的附加特征向量与病毒行为特征向量的附加特征向量的相似度。
如果行为特征向量的附加特征向量与病毒行为特征向量的附加特征向量的相似度大于预置的第三相似度阈值,则确定行为特征向量与病毒行为特征向量的相似度超过预置的相似度阈值。
可选的,特征向量比对模块110度量行为特征向量的附加特征向量与病毒行为特征向量的附加特征向量的相似度时,具体用于:
根据行为特征向量的附加特征向量和病毒行为特征向量的附加特征向量的差,以及行为特征向量的附加特征向量和病毒行为特征向量的附加特征向量的和,计算得到行为特征向量的附加特征向量和病毒行为特征向量的附加特征向量的差异值。
根据行为特征向量的附加特征向量和病毒行为特征向量的附加特征向量的差异值,计算得到行为特征向量的附加特征向量和病毒行为特征向量的附加特征向量的相似度。
本发明实施例还提供一种检测服务器,检测服务器可选的硬件结构可如图9所示,包括:至少一个处理器1,至少一个通信接口2,至少一个存储器3和至少一个通信总线4;
在本发明实施例中,处理器1、通信接口2、存储器3、通信总线4的数量为至少一个,且处理器1、通信接口2、存储器3通过通信总线4完成相互间的通信;
可选的,处理器1可能是一个中央处理器CPU,或者是特定集成电路ASIC(Application Specific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。
存储器3可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatilememory),例如至少一个磁盘存储器。
其中,存储器3存储有程序,处理器1调用存储3所存储的程序,以实现本发明前述实施例中的病毒程序检测方法的步骤。
本发明实施例还提供一种存储介质,存储介质存储有适于处理器执行的程序,以实现上文描述的病毒程序检测方法。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件单元,或者二者的结合来实施。软件单元可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (7)

1.一种病毒程序检测方法,其特征在于,包括:
调用应用程序模拟器,运行待检测程序;
记录所述待检测程序在运行过程中的行为日志;其中,所述行为日志至少包括:程序运行过程中触发的行为的标识和程序运行过程中的行为触发时间,其中,所述行为触发时间表示触发行为的标识对应的行为的时刻,与开始运行所述程序的时刻之间的时间;
将预设的参考集合中的行为的标识与所述行为日志中的行为的标识进行比对,判断所述参考集合中的行为的标识是否在所述行为日志中出现;其中,所述参考集合中至少包括预设的至少一个行为的标识,所述参考集合中的每个行为的标识分别对应一个向量元素,所述参考集合中所有的行为的标识对应的向量元素组成与所述参考集合对应的向量;
如果所述参考集合中的行为的标识在所述行为日志中出现,则判断所述参考集合中的所述行为的标识对应的行为触发时间,与所述行为日志中出现的所述行为的标识对应的行为触发时间之间的差值是否在预置的时间误差范围内;
如果所述参考集合中的所述行为的标识对应的行为触发时间,与所述行为日志中出现的所述行为的标识对应的行为触发时间之间的差值在预置的时间误差范围内,则将与所述参考集合对应的向量中的,与所述参考集合中的所述行为的标识对应的向量元素的值设置为第一数值,并将与所述参考集合对应的向量中的,未被设置为第一数值的向量元素的值设置为第二数值,得到所述待检测程序的行为特征向量;其中,所述行为特征是表示程序运行过程中触发的行为的特征;所述行为特征向量中的向量元素表征所述参考集合中的各个行为的标识是否在所述行为日志中出现;
分别统计所述行为特征向量中的每一个向量元素对应的行为的标识在所述行为日志中出现的次数,得到所述行为特征向量的附加特征向量,所述行为特征向量的附加特征向量中向量元素的顺序与所述行为特征向量中向量元素的顺序,均与所述参考集合中相应的行为的标识的顺序相一致;所述附加特征向量中的向量元素的值为所述行为特征向量中的向量元素对应的行为的标识在所述行为日志中出现的次数;
度量所述行为特征向量与预置的病毒行为特征向量库中的病毒行为特征向量的相似度;
根据两个附加特征向量的差向量与所述差向量所在坐标系原点的距离,与所述两个附加特征向量的和向量与所述和向量所在坐标系原点的距离,计算所述两个附加特征向量的差异值,并根据所述差异值得到所述两个附加特征向量的相似度;所述两个附加特征向量为所述行为特征向量的附加特征向量与预置的病毒行为特征向量库中的病毒行为特征向量的附加特征向量;
在所述行为特征向量与所述病毒行为特征向量库中的任意一个病毒行为特征向量的相似度超过预置的相似度阈值,以及所述行为特征向量的附加特征向量与所述病毒行为特征向量库中的病毒行为特征向量的附加特征向量的相似度超过预置的相似度阈值的情况下,确定所述待检测程序为病毒程序。
2.根据权利要求1所述的方法,其特征在于,所述度量所述行为特征向量与预置的病毒行为特征向量库中的病毒行为特征向量的相似度,包括:
统计所述行为特征向量与预置的病毒行为特征向量库中的病毒行为特征向量的相同位置的向量元素的值都为第一数值的向量元素数量,以及统计所述行为特征向量与所述病毒行为特征向量中的相同位置处的向量元素的值至少有一个为第一数值的向量元素总数;
计算所述相同位置的向量元素的值都为第一数值的向量元素数量,与所述相同位置处的向量元素的值至少有一个为第一数值的向量元素总数的比值,得到所述行为特征向量与所述病毒行为特征向量的相似度。
3.根据权利要求2所述的方法,其特征在于,所述度量所述行为特征向量与预置的病毒行为特征向量库中的病毒行为特征向量的相似度,包括:
如果所述行为特征向量的附加特征向量与所述病毒行为特征向量的附加特征向量的相似度大于预置的第一相似度阈值,则确定所述行为特征向量与所述病毒行为特征向量的相似度超过预置的相似度阈值。
4.根据权利要求2所述的方法,其特征在于,所述度量所述行为特征向量与预置的病毒行为特征向量库中的病毒行为特征向量的相似度,包括:
如果所述行为特征向量与所述病毒行为特征向量的相似度超过预置的第二相似度阈值,则度量所述行为特征向量的附加特征向量与所述病毒行为特征向量的附加特征向量的相似度;
如果所述行为特征向量的附加特征向量与所述病毒行为特征向量的附加特征向量的相似度大于预置的第三相似度阈值,则确定所述行为特征向量与所述病毒行为特征向量的相似度超过预置的相似度阈值。
5.一种病毒程序检测装置,其特征在于,包括:
特征向量获取模块,用于
调用应用程序模拟器,运行待检测程序;
记录所述待检测程序在运行过程中的行为日志;其中,所述行为日志至少包括:程序运行过程中触发的行为的标识和程序运行过程中的行为触发时间,其中,所述行为触发时间表示触发行为的标识对应的行为的时刻,与开始运行所述程序的时刻之间的时间;
将预设的参考集合中的行为的标识与所述行为日志中的行为的标识进行比对,判断所述参考集合中的行为的标识是否在所述行为日志中出现;其中,所述参考集合中至少包括预设的至少一个行为的标识,所述参考集合中的每个行为的标识分别对应一个向量元素,所述参考集合中所有的行为的标识对应的向量元素组成与所述参考集合对应的向量;
如果所述参考集合中的行为的标识在所述行为日志中出现,则判断所述参考集合中的所述行为的标识对应的行为触发时间,与所述行为日志中出现的所述行为的标识对应的行为触发时间之间的差值是否在预置的时间误差范围内;
如果所述参考集合中的所述行为的标识对应的行为触发时间,与所述行为日志中出现的所述行为的标识对应的行为触发时间之间的差值在预置的时间误差范围内,则将与所述参考集合对应的向量中的,与所述参考集合中的所述行为的标识对应的向量元素的值设置为第一数值,并将与所述参考集合对应的向量中的,未被设置为第一数值的向量元素的值设置为第二数值,得到所述待检测程序的行为特征向量;其中,所述行为特征是表示程序运行过程中触发的行为的特征;
分别统计所述行为特征向量中的每一个向量元素对应的行为的标识在所述行为日志中出现的次数,得到所述行为特征向量的附加特征向量,所述行为特征向量的附加特征向量中向量元素的顺序与所述行为特征向量中向量元素的顺序,均与所述参考集合中相应的行为的标识的顺序相一致;所述行为特征向量中的向量元素表征所述参考集合中的各个行为的标识是否在所述行为日志中出现;所述附加特征向量中的向量元素的值为所述行为特征向量中的向量元素对应的行为的标识在所述行为日志中出现的次数;
特征向量比对模块,用于:
度量所述行为特征向量与预置的病毒行为特征向量库中的病毒行为特征向量的相似度;
根据两个附加特征向量的差向量与所述差向量所在坐标系原点的距离,与所述两个附加特征向量的和向量与所述和向量所在坐标系原点的距离,计算所述两个附加特征向量的差异值,并根据所述差异值得到所述两个附加特征向量的相似度;所述两个附加特征向量为所述行为特征向量的附加特征向量与预置的病毒行为特征向量库中的病毒行为特征向量的附加特征向量;
检测结果确定模块,用于:
在所述行为特征向量与所述病毒行为特征向量库中的任意一个病毒行为特征向量的相似度超过预置的相似度阈值,以及所述行为特征向量的附加特征向量与所述病毒行为特征向量库中的病毒行为特征向量的附加特征向量的相似度超过预置的相似度阈值的情况下,确定所述待检测程序为病毒程序。
6.一种检测服务器,其特征在于,包括:至少一个存储器和至少一个处理器;所述存储器存储有程序,所述处理器执行所述程序,以实现权利要求1-4任一项所述的病毒程序检测方法。
7.一种存储介质,其特征在于,所述存储介质存储有适于处理器执行的程序,以实现权利要求1-4任一项所述的病毒程序检测方法。
CN201811058107.6A 2018-09-11 2018-09-11 一种病毒程序检测方法、装置及检测服务器 Active CN109284610B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201811058107.6A CN109284610B (zh) 2018-09-11 2018-09-11 一种病毒程序检测方法、装置及检测服务器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201811058107.6A CN109284610B (zh) 2018-09-11 2018-09-11 一种病毒程序检测方法、装置及检测服务器

Publications (2)

Publication Number Publication Date
CN109284610A CN109284610A (zh) 2019-01-29
CN109284610B true CN109284610B (zh) 2023-02-28

Family

ID=65180605

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201811058107.6A Active CN109284610B (zh) 2018-09-11 2018-09-11 一种病毒程序检测方法、装置及检测服务器

Country Status (1)

Country Link
CN (1) CN109284610B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115203699B (zh) * 2022-09-16 2022-12-27 北京网藤科技有限公司 一种基于行为特征的病毒识别方法和系统

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104598824A (zh) * 2015-01-28 2015-05-06 国家计算机网络与信息安全管理中心 一种恶意程序检测方法及其装置
CN105488406A (zh) * 2014-12-29 2016-04-13 哈尔滨安天科技股份有限公司 一种基于特征向量的相似恶意样本匹配方法及系统
CN105825129A (zh) * 2015-01-04 2016-08-03 中国移动通信集团设计院有限公司 一种融合通信中恶意软件鉴别方法和系统
CN105893848A (zh) * 2016-04-27 2016-08-24 南京邮电大学 一种基于代码行为相似度匹配的Android恶意应用程序防范方法
CN108334781A (zh) * 2018-03-07 2018-07-27 腾讯科技(深圳)有限公司 病毒检测方法、装置、计算机可读存储介质和计算机设备

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101281571B (zh) * 2008-04-22 2010-12-22 白杰 防御未知病毒程序的方法
US20100235909A1 (en) * 2009-03-13 2010-09-16 Silver Tail Systems System and Method for Detection of a Change in Behavior in the Use of a Website Through Vector Velocity Analysis
EP3227820A1 (en) * 2014-12-05 2017-10-11 Permissionbit Methods and systems for encoding computer processes for malware deteection

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105488406A (zh) * 2014-12-29 2016-04-13 哈尔滨安天科技股份有限公司 一种基于特征向量的相似恶意样本匹配方法及系统
CN105825129A (zh) * 2015-01-04 2016-08-03 中国移动通信集团设计院有限公司 一种融合通信中恶意软件鉴别方法和系统
CN104598824A (zh) * 2015-01-28 2015-05-06 国家计算机网络与信息安全管理中心 一种恶意程序检测方法及其装置
CN105893848A (zh) * 2016-04-27 2016-08-24 南京邮电大学 一种基于代码行为相似度匹配的Android恶意应用程序防范方法
CN108334781A (zh) * 2018-03-07 2018-07-27 腾讯科技(深圳)有限公司 病毒检测方法、装置、计算机可读存储介质和计算机设备

Also Published As

Publication number Publication date
CN109284610A (zh) 2019-01-29

Similar Documents

Publication Publication Date Title
CN108427613B (zh) 异常接口定位方法、装置、计算机设备和存储介质
CN110414222B (zh) 一种基于组件关联的应用隐私泄露问题检测方法和装置
CN108491321B (zh) 测试用例范围确定方法、装置及存储介质
CN108763951B (zh) 一种数据的保护方法及装置
US10496842B1 (en) Multi-pronged file anomaly detection based on violation counts
CN114116496A (zh) 自动化测试方法、装置、设备及介质
CN109284610B (zh) 一种病毒程序检测方法、装置及检测服务器
CN110378118B (zh) 高效准确的安卓应用第三方库检测方法
CN112433936A (zh) 测试方法、装置及存储介质
CN114328168A (zh) 异常检测方法、装置、计算机设备和存储介质
CN110691090B (zh) 网站检测方法、装置、设备及存储介质
CN108763092B (zh) 一种基于交叉验证的代码缺陷检测方法及装置
CN109614844B (zh) 一种链路验证方法、装置及设备
CN106446687B (zh) 恶意样本的检测方法及装置
CN108628744B (zh) 故障诊断方法、装置及电子设备
CN110990202A (zh) 识别Android模拟器的方法及相关设备
CN112884258A (zh) 检测应用风险的方法和装置
US20190156024A1 (en) Method and apparatus for automatically classifying malignant code on basis of malignant behavior information
CN114021115A (zh) 恶意应用程序的检测方法、装置、存储介质及处理器
CN113779589A (zh) 一种安卓智能手机应用误配置检测方法
CN113434826A (zh) 一种仿冒移动应用的检测方法,系统及相关产品
CN109840417B (zh) 一种恶意软件检测方法及装置
CN111444093A (zh) 项目开发过程质量的确定方法、装置、计算机设备
CN111027062A (zh) 一种靶场应用失陷状态的评估方法及装置
CN111125692B (zh) 反爬虫方法及装置

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