CN104252594B - 病毒检测方法和装置 - Google Patents

病毒检测方法和装置 Download PDF

Info

Publication number
CN104252594B
CN104252594B CN201310263922.7A CN201310263922A CN104252594B CN 104252594 B CN104252594 B CN 104252594B CN 201310263922 A CN201310263922 A CN 201310263922A CN 104252594 B CN104252594 B CN 104252594B
Authority
CN
China
Prior art keywords
function
calling
virus
sequence
called
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
CN201310263922.7A
Other languages
English (en)
Other versions
CN104252594A (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.)
Beijing Kingsoft Internet Security Software Co Ltd
Conew Network Technology Beijing Co Ltd
Zhuhai Juntian Electronic Technology Co Ltd
Beijing Cheetah Mobile Technology Co Ltd
Beijing Cheetah Network Technology Co Ltd
Original Assignee
Beijing Kingsoft Internet Security Software Co Ltd
Conew Network Technology Beijing Co Ltd
Shell Internet Beijing Security Technology Co Ltd
Zhuhai Juntian Electronic Technology Co Ltd
Beijing Kingsoft Internet Science and Technology 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 Beijing Kingsoft Internet Security Software Co Ltd, Conew Network Technology Beijing Co Ltd, Shell Internet Beijing Security Technology Co Ltd, Zhuhai Juntian Electronic Technology Co Ltd, Beijing Kingsoft Internet Science and Technology Co Ltd filed Critical Beijing Kingsoft Internet Security Software Co Ltd
Priority to CN201310263922.7A priority Critical patent/CN104252594B/zh
Publication of CN104252594A publication Critical patent/CN104252594A/zh
Application granted granted Critical
Publication of CN104252594B publication Critical patent/CN104252594B/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/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Abstract

本申请公开了一种病毒检测方法和装置,其中,该方法包括:获取被检测文件运行时调用应用程序编程接口的信息;根据该信息确定被检测文件调用的函数和调用函数的顺序;根据调用的函数和调用函数的顺序确定被检测文件中是否存在病毒。通过本申请,解决了根据文件的静态信息识别病毒容易受到干扰的问题,从而能够更全面和更准确的对病毒进行识别。

Description

病毒检测方法和装置
技术领域
本发明涉及计算机安全领域,具体而言,涉及病毒检测方法和装置。
背景技术
计算机(例如,个人电脑,简称为PC)的安全一直是用户关注的重点,目前病毒对PC及用户的危害越来越大,并且,病毒技术也向越来越隐蔽的趋势发展,例如“鬼影”病毒,以至于很多用户的PC已经中毒但是用户却并不知晓。“鬼影”病毒在成功运行后,在进程中、系统启动加载项里找不到任何异常,这是由于该病毒驻留在PC的引导区内,该病毒的运行先于操作系统的运行,即使格式化磁盘并重装系统,也无法将该病毒彻底清除。因此,对于“鬼影”病毒的防范应该是在其将自身写入到引导区之前进行。
在相关技术中,防病毒的主要方法就是杀毒软件,有一种杀毒软件查杀病毒的方法是基于文件的静态信息或者二进制内容。该杀毒方法是将已有的病毒的特征信息与文件的静态信息或者二进制内容进行比较,如果发现有与已有的特征信息相符合的内容,则认为该文件中存在病毒,此时可以采用删除文件等方式来防止病毒的运行,这种方法称为静态处理法。这样就可以阻止“鬼影”病毒将其自身写入到引导区中。但是,该方法容易受到干扰,例如对病毒文件进行加密、加壳、代码混淆等干扰手段后,该方法就无法确认出文件中是否包含病毒。
针对相关技术中的静态处理法识别病毒所存在的问题,目前尚未提出有效的解决方案。
发明内容
本申请提供了一种病毒检测方法和装置,以至少解决相关技术中的静态处理法识别病毒所存在的问题。
根据本申请的一个方面,提供了一种病毒检测方法,包括:获取被检测文件运行时调用应用程序编程接口的信息;根据所述信息确定所述被检测文件调用的函数和调用所述函数的顺序;根据调用的所述函数和调用所述函数的顺序确定所述被检测文件中是否存在病毒。
优选地,根据调用的所述函数和调用所述函数的顺序确定所述被检测文件中是否存在病毒包括:判断调用的所述函数是否包括第一函数、第二函数和第三函数,以及调用所述函数的顺序是否为:在调用所述第一函数之后调用所述第二函数、在调用所述第二函数之后调用所述第三函数;其中,所述第一函数用于得到系统函数的调用信息,所述第二函数用于操作系统的内核,所述第三函数用于安装或更新驱动程序;在判断结果均为是的情况下,确定所述被检测文件中存在病毒。
优选地,根据调用的所述函数和调用所述函数的顺序确定所述被检测文件中是否存在病毒包括:判断调用的所述函数是否包括第四函数和第五函数,以及调用所述函数的顺序是否为:在调用所述第四函数之后调用所述第五函数;其中,所述第四函数用于将代码写入进程中,所述第五函数用于修改进程的执行流程以执行所述代码;在判断结果均为是的情况下,确定所述被检测文件中存在病毒。
优选地,根据调用的所述函数和调用所述函数的顺序确定所述被检测文件中是否存在病毒包括:判断调用的所述函数是否还包括第六函数,以及调用所述函数的顺序是否为:在调用所述第六函数之后调用所述第四函数、在调用所述第四函数之后调用所述第五函数;其中,所述第六函数用于打开已有进程或创建新进程;在判断结果均为是的情况下,确定所述被检测文件中存在病毒。
优选地,根据调用的所述函数和调用所述函数的顺序确定所述被检测文件中是否存在病毒包括:判断调用的所述函数是否包括第七函数和第八函数,以及调用所述函数的顺序是否为:在调用所述第七函数之后调用所述第八函数;其中,所述第七函数用于查询进程信息,第八函数用于将代码映射到进程中;在判断结果均为是的情况下,确定所述被检测文件中存在病毒。
优选地,根据调用的所述函数和调用所述函数的顺序确定所述被检测文件中是否存在病毒包括:判断调用的所述函数是否还包括第九函数,以及调用所述函数的顺序是否为:在调用所述第七函数之后调用所述第八函数、在调用所述第八函数之后调用所述第九函数;其中,第九函数用于将挂起的进程恢复;在判断结果均为是的情况下,确定所述被检测文件中存在病毒。
根据本申请的另一方面,还提供了一种病毒检测装置,包括:获取模块,用于获取被检测文件运行时调用应用程序编程接口的信息;第一确定模块,用于根据所述信息确定所述被检测文件调用的函数和调用所述函数的顺序;第二确定模块,用于根据调用的所述函数和调用所述函数的顺序确定所述被检测文件中是否存在病毒。
优选地,所述第二确定模块,用于判断调用的所述函数是否包括第一函数、第二函数和第三函数,以及调用所述函数的顺序是否为:在调用所述第一函数之后调用所述第二函数、在调用所述第二函数之后调用所述第三函数;其中,所述第一函数用于得到系统函数的调用信息,所述第二函数用于操作系统的内核,所述第三函数用于安装或更新驱动程序;以及在判断结果均为是的情况下,确定所述被检测文件中存在病毒。
优选地,所述第二确定模块,用于判断调用的所述函数是否包括第四函数和第五函数,以及调用所述函数的顺序是否为:在调用所述第四函数之后调用所述第五函数;其中,所述第四函数用于将代码写入进程中,所述第五函数用于修改进程的执行流程以执行所述代码;以及在判断结果均为是的情况下,确定所述被检测文件中存在病毒。
优选地,所述第二确定模块,用于判断调用的所述函数是否还包括第六函数,以及调用所述函数的顺序是否为:在调用所述第六函数之后调用所述第四函数、在调用所述第四函数之后调用所述第五函数;其中,所述第六函数用于打开已有进程或创建新进程;以及在判断结果均为是的情况下,确定所述被检测文件中存在病毒。
优选地,所述第二确定模块,用于判断调用的所述函数是否包括第七函数和第八函数,以及调用所述函数的顺序是否为:在调用所述第七函数之后调用所述第八函数;其中,所述第七函数用于查询进程信息,第八函数用于将代码映射到进程中;以及在判断结果均为是的情况下,确定所述被检测文件中存在病毒。
优选地,所述第二确定模块,用于判断调用的所述函数是否还包括第九函数,以及调用所述函数的顺序是否为:在调用所述第七函数之后调用所述第八函数、在调用所述第八函数之后调用所述第九函数;其中,所述第九函数用于将挂起的进程恢复;以及在判断结果均为是的情况下,确定所述被检测文件中存在病毒。
通过本申请,采用了获取被检测文件运行时调用应用程序编程接口的信息;根据该信息确定被检测文件调用的函数和调用函数的顺序;根据调用的函数和调用函数的顺序确定被检测文件中是否存在病毒的方式,解决了根据文件的静态信息识别病毒容易受到干扰的问题,从而能够更全面和更准确的对病毒进行识别。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本申请实施例的病毒检测方法的流程图;
图2是根据本申请实施例的病毒检测装置的结构框图;
图3是根据本申请优选实施例的病毒检测方法的流程图。
具体实施方式
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
以下实施例可以应用到计算机中,例如应用到PC中。也可以应用到目前采用了智能操作系统的移动终端中,并且并不限于此。对于计算机或移动终端的操作系统并没有特殊要求,只要能够得到代码、程序、或者文件调用的应用程序编程接口(ApplicationProgramming Interface,简称为API)的信息即可。例如,以下实施例可以应用到Windows操作系统中。
本实施例提供了一种病毒检测方法,图1是根据本申请实施例的病毒检测方法的流程图,如图1所示,该方法包括如下步骤:
步骤S102,获取被检测文件运行时调用API的信息;
步骤S104,根据该信息确定被检测文件调用的函数和调用函数的顺序;
步骤S106,根据调用的函数和调用函数的顺序确定被检测文件中是否存在病毒。
在上述步骤中,判断了文件运行时都调用了哪些API,并且根据调用这些API的顺序来进行判断,从而可以识别出是否存在病毒。例如,如果一个文件在运行时其调用了特定的几个API,并且调用的这些API的顺序与已经获知的病毒的调用顺序相同,就可以确认该文件中存在病毒。由于病毒的运行是必须调用相应的API的,无论病毒如何掩盖自己的代码,其均无法掩盖运行时对API的调用痕迹。因此,上述步骤相比于静态处理法,其识别的准确率更高。
根据调用的函数和调用函数的顺序确定被检测文件中存在病毒的方式有很多种,下列例举几种优选的方式进行说明。
在介绍以下几种优选实施方式之前,首先对以下几种优选的实施方式中涉及的函数进行说明:第一函数,用于得到系统函数的调用信息;第二函数,用于操作系统的内核;第三函数,用于安装或更新驱动程序;第四函数,用于将代码写入进程中;第五函数,用于修改进程的执行流程;第六函数,用于打开已有进程或创建新进程;第七函数用于查询进程信息;第八函数用于将代码映射到进程中;第九函数,用于将挂起的进程恢复。
优选方式一
判断调用的函数是否包括第一函数、第二函数和第三函数,以及调用函数的顺序是否为:在调用第一函数之后调用第二函数、在调用第二函数之后调用第三函数;其中,第一函数用于得到系统函数调用信息,第二函数用于操作系统的内核,第三函数用于安装或更新驱动程序;在判断结果均为是的情况下,确定被检测文件中存在病毒。
对于某些病毒,例如“鬼影”病毒,其一般通过安装或更新驱动程序的形式将自身安装到计算机中,通过该优选方式,就可以判断出待检测文件中是否存在“鬼影”病毒。
优选方式二
判断调用的函数是否包括第四函数和第五函数,以及调用函数的顺序是否为:在调用第四函数之后调用第五函数;其中,第四函数用于将代码写入进程中,第五函数用于修改进程执行流程以执行代码;在判断结果均为是的情况下,确定被检测文件中存在病毒。
对于某些病毒,为了能够运行,其可能会采用将病毒代码写入到进程,然后通过修改进程流程的方式使该写入的代码被执行,通过该优选方式,就可以检测出是否存在这种病毒。
优选地,在上述方式中,判断调用的函数是否还包括第六函数,以及调用函数的顺序是否为:在调用第六函数之后调用第四函数、在调用第四函数之后调用第五函数;其中,第六函数用于打开已有进程或创建新进程;在判断结果均为是的情况下,确定被检测文件中存在病毒。
对于通过修改进程流程方式而获得运行的病毒,其也有可能采用创建新进程或者打开已有进程的方式,通过加入第六函数的判断,可以更加准确的识别这种类型的病毒。
优选方式三
判断调用的函数是否包括第七函数和第八函数,以及调用函数的顺序是否为:在调用第七函数之后调用第八函数;其中,第七函数用于查询进程信息、,第八函数用于将代码映射到进程中,例如,第八函数将代码映射到根据进程信息获取的进程中;在判断结果均为是的情况下,确定被检测文件中存在病毒。
对于某些病毒,其也有可能采用进程映射的方式,通过该优选实施方式就可以判断出这种病毒。
优选地,上述方式中,判断调用的函数是否还包括第九函数,以及调用函数的顺序是否为:在调用第七函数之后调用第八函数,在调用第八函数之后调用第九函数;其中,第九函数用于进程恢复,例如,第九函数将挂起的进程恢复;在判断结果均为是的情况下,确定被检测文件中存在病毒。
对于采用进程映射方式的病毒,其一般会先将要映射的进程挂起,在映射之后再将进程恢复,因此,加入第九函数的判断可以更加准确的识别这种病毒。
上述的三种不同的优选方式,也可以理解为是规则的不同,该规则包括调用的函数以及调用函数的顺序,即不同的病毒调用哪些函数以及调用函数的顺序可能存在不同,以及可能需要多个规则来匹配不同的病毒。下面例举了三个优选的预定规则,这三个预定规则中所涉及到的函数以及调用顺序是很多病毒都会采用的,因此,采用了这些规则中的至少之一就可以识别出一些病毒。但是,用于匹配病毒的预定规则并不限于这三种,例如,有可能随着病毒技术的发展,出现了新的调用函数的顺序,此时,只要相应地更新预定规则即可。
下面对上述优选方式对应的预定规则进行说明。
优选的预定规则一
该优选的预定规则包括:调用的函数包括:用于得到系统函数调用信息的第一函数、用于操作系统内核的第二函数、用于安装或更新驱动程序的第三函数;调用第一函数、第二函数、第三函数的顺序包括:在调用第一函数之后调用第二函数、在调用第二函数之后调用第三函数。
病毒会调用系统函数,在调用系统函数之前必须得到调用这些系统函数所需要的信息,在操作系统中一般会有这样的函数,通过该函数就可以得到系统函数的调用信息。然后,病毒会对系统的内核进行操作。再然后会调用安装或更新驱动程序的函数,将自己安装到操作系统中。通过该预定规则就可以识别出一些种类的病毒,例如,“鬼影”病毒。该优选的预定规则中,只是限定了在调用第一函数之后调用第二函数,并没有限定在调用第一函数之后立即调用第二函数,这是因为有些病毒可能为了掩盖自己的行为,在调用第一函数和第二函数之间调用一些无关紧要的函数来破坏杀毒工具的处理逻辑。在本优选规则中,无论在调用第一函数之后立即调用第二函数,还是在调用第一函数之后又调用了其他的函数之后再调用的第二函数都可以认为符合函数的调用顺序。在优选的预定规则二和预定规则三中所涉及到的顺序也是此含义,在此不再赘述。
优选的预定规则二
该优选的预定规则包括:调用的函数包括:用于将代码写入进程中的第四函数、用于修改进程执行流程以执行写入的代码的第五函数;调用第四函数、第五函数的顺序包括:在调用第四函数之后调用第五函数。
有些注入式病毒会通过操作系统中的进程来使该病毒得到运行,这些病毒一般会将代码写入到进程中,然后通过修改进程的执行方式,以使得该写入的代码得到运行。通过该优选的预定规则可以识别具有这种行为的病毒。
优选地,这种病毒调用的函数还可能包括:用于打开已有进程或创建新进程的第六函数;此时的调用顺序包括:在调用第六函数之后调用第四函数、在调用第四函数之后调用第五函数。
优选的预定规则三
该优选的预定规则包括:调用的函数包括:用于查询进程信息的第七函数、用于将代码映射到根据进程信息获取的进程中的第八函数;调用第七函数、第八函数顺序包括:在调用第七函数之后调用第八函数。
有些注入式病毒会采用进程映射的方式,此时,这种病毒需要调用查询调用信息的函数以及进行进程映射的函数。通过该优选的预定规则可以识别具有这种行为的病毒。
优选地,这种病毒还有可能将映射的进程挂起,此时,调用的函数还包括:用于将挂起的进程恢复的第九函数;调用第七函数、第八函数、第九函数顺序包括:在调用第七函数之后调用第八函数,在调用第八函数之后调用第九函数。
上述优选方式或预定规则中涉及到了第一函数至第九函数,其中的“第一”、“第二”等,仅仅是为了对相应的函数进行标记,并不是表示上述函数的排列顺序,也不构成对该函数的其他限定。
需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本实施例还提供了一种病毒检测装置,该装置可以用于实现上述病毒检测方法。本实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。以下所描述的模块也可以在处理器中,例如,一种处理器包括获取模块22、第一确定模块24和第二确定模块26。其中,这些模块的名称在某些情况下并不构成对该模块本身的限定,例如,获取模块还可以描述为“用于获取被检测文件运行时调用应用程序编程接口API的信息的模块”。
图2是根据本申请实施例的病毒检测装置的结构框图,如图2所示,该装置包括:获取模块22、第一确定模块24和第二确定模块26,其中,获取模块22,用于获取被检测文件运行时调用API的信息;第一确定模块24,耦合至获取模块22,用于根据信息确定被检测文件调用的函数和调用函数的顺序;第二确定模块26,耦合至第一确定模块24,用于根据调用的函数和调用函数的顺序确定被检测文件中是否存在病毒。
通过上述装置,采用获取模块22获取被检测文件运行时调用API的信息;第一确定模块24根据信息确定被检测文件调用的函数和调用函数的顺序;第二确定模块26根据调用的函数和调用函数的顺序确定被检测文件中是否存在病毒的方式,解决了根据文件的静态信息识别病毒容易受到干扰的问题,从而能够更全面和更准确的对病毒进行识别。
该装置中也可以采用上述的优选方式一、优选方式二、优选方式三,以及优选的预定规则一、优选的预定规则二和优选的预定规则三中的至少之一,例如:
优选地,第二确定模块26用于判断调用的函数是否包括第一函数、第二函数和第三函数,以及调用函数的顺序是否为:在调用第一函数之后调用第二函数、在调用第二函数之后调用第三函数;其中,第一函数用于得到系统函数的调用信息,第二函数用于操作系统的内核,第三函数用于安装或更新驱动程序;以及在判断结果均为是的情况下,确定被检测文件中存在病毒。
优选地,第二确定模块26用于判断调用的函数是否包括第四函数和第五函数,以及调用函数的顺序是否为:在调用第四函数之后调用第五函数;其中,第四函数用于将代码写入进程中,第五函数用于修改进程的执行流程以执行代码;以及在判断结果均为是的情况下,确定被检测文件中存在病毒。
优选地,第二确定模块26用于判断调用的函数是否还包括第六函数,以及调用函数的顺序是否为:在调用第六函数之后调用第四函数、在调用第四函数之后调用第五函数;其中,第六函数用于打开已有进程或创建新进程;以及在判断结果均为是的情况下,确定被检测文件中存在病毒。
优选地,第二确定模块26用于判断调用的函数是否包括第七函数和第八函数,以及调用函数的顺序是否为:在调用第七函数之后调用第八函数;其中,第七函数用于查询进程信息,第八函数用于将代码映射到进程中;以及在判断结果均为是的情况下,确定被检测文件中存在病毒。
优选地,第二确定模块26用于判断调用的函数是否还包括第九函数,以及调用函数的顺序是否为:在调用第七函数之后调用第八函数、在调用第八函数之后调用第九函数;其中,第九函数用于将挂起的进程恢复;以及在判断结果均为是的情况下,确定被检测文件中存在病毒。
需要说明的是,上述优选方式中涉及到了第一函数至第九函数,其中的“第一”、“第二”等,仅仅是为了对相应的函数进行标记,并不是表示上述函数的排列顺序,也不构成对该函数的其他限定。
下面结合一个优选实施例进行说明,该优选实施例也可以结合上述描述过的实施方式。
本优选实施例提供了一种病毒检测方法,图3是根据本申请优选实施例的病毒检测方法的流程图,如图3所示,该方法包括如下步骤:
步骤S302,采用挂钩(Hook)。
在本步骤中,在病毒调用系统API函数前进行Hook,一种优选的Hook是将API函数的入口代码修改,这部分代码的功能是记录API信息。
步骤S304,运行待检测的文件。为了减轻人工分析病毒的成本,提高病毒分析的效率,此处应用一个自动的机制,实时监控某个本地文件夹或者文件传输协议(FileTransfer Protocol,简称为FTP)地址,或者是网络上的一些下载链接。如果发现在这些位置存在文件,就运行该文件,经过后续的分析给出一个识别后的效果。
步骤S306,记录该文件运行时传入的参数和/或返回值信息。例如,将API信息包括参数、返回值有序的记录到文本文件,以便于后续分析。
步骤S308,分析记录的API信息。
该步骤例子中所涉及到的函数是Windows系统中的函数,对于其他系统,调用执行相应功能的函数即可。在此不再一一列举。
例如,“鬼影”病毒运行时的特征API信息(又称为关键API信息)包括:
1、通过函数(例如GetProcAddress),得到用于获取系统服务描述符表(SystemServices Descriptor Table,简称为SSDT)信息以便于安装驱动程序的函数(例如KeServiceDescriptorTable)。
2、进入系统内核(例如NtSystemDebugControl,该函数常被用于访问内核空间),进入系统内核是对系统内容进行操作的一种方式。
3、安装驱动(例如UpdateDriverForPlugAndPlayDevicesA)。“鬼影”病毒通过用于安装驱动的函数将自己释放的驱动程序安装到系统中。
例如,基于注入行为的病毒运行时的特征API信息包括:
第一种方法:
1、调用函数(例如CreateProcessA、CreateProcessAsUserA),打开已有进程或创建新进程用于注入代码隐藏自身,此类进程常被称作僵尸进程。
2、调用函数(例如NtWriteVirtualMemory、WriteProcessMemory等),用于向创建的僵尸进程写入病毒代码。
3、调用函数(例如NtSetContextThread、SetThreadContext等),修改代码执行流程,修改函数可以修改系统寄存器,通过修改寄存器可以改变代码执行流程。
又例如,基于注入行为的病毒运行时的特征API信息包括:
1、调用函数(例如NtQueryInformationProcess)查询进程相关信息,一般用于查询被注入的进程信息。
2、调用函数(例如NtMapViewOfSection)将自身进程映射到僵尸进程中。
3、调用函数(例如ResumeThread)恢复被注入的进程,一般注入前要把要注入的进程挂起,也就是让其处于暂停状态,代码注入后,恢复线程来执行病毒代码。
步骤S310,判断是否存在被病毒利用的API流,其中,API流为按照一定顺序调用的多个API函数的集合;在判断结果为是的情况下,执行步骤S312,否则执行步骤S314。如果发现文件的API信息包含如上所举例的关键API信息,则可以认为该文件存在对应病毒行为。例如,如发现API流中调用API函数的顺序执行如下操作,可以判定为“鬼影”:获取系统SSDT信息;进入系统内核;安装驱动。
步骤S312,匹配到恶意行为。
步骤S314,退出,并准备检测其他文件。
综上所述,由于“鬼影”病毒及注入型病毒所使用的方法非常具有聚类型,所以根据病毒运行的API流能够分析出文件是否存在鬼影病毒的行为和注入恶意代码的行为。在本优选实施例中根据病毒运行时常用的方法,总结出以病毒的行为特征、API流等识别病毒的恶意行为;通过拦截病毒调用的API序列,并根据API参数返回值等信息,识别病毒恶意行为。上述实施例从动态行为出发,结合文件的动态特征(包括API信息)详细分析“鬼影”病毒或有注入恶意代码行为的病毒,避免了根据文件静态信息识别时受到的加密或者混淆带来的干扰,提高了病毒识别的准确度。
显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (12)

1.一种病毒检测方法,其特征在于,包括:
获取被检测文件运行时调用应用程序编程接口的信息;
根据所述信息确定所述被检测文件调用的函数和调用所述函数的顺序;
根据调用的所述函数和调用所述函数的顺序确定所述被检测文件中是否存在病毒;
其中,根据调用的所述函数和调用所述函数的顺序确定所述被检测文件中是否存在病毒,包括:
根据调用的所述函数是否为特定的应用程序编程接口,以及调用所述应用程序编程接口的顺序是否与已经获知的病毒的调用顺序相同,来确定所述被检测文件中是否存在病毒。
2.根据权利要求1所述的方法,其特征在于,根据调用的所述函数和调用所述函数的顺序确定所述被检测文件中是否存在病毒包括:
判断调用的所述函数是否包括第一函数、第二函数和第三函数,以及调用所述函数的顺序是否为:在调用所述第一函数之后调用所述第二函数、在调用所述第二函数之后调用所述第三函数;其中,所述第一函数用于得到系统函数的调用信息,所述第二函数用于操作系统的内核,所述第三函数用于安装或更新驱动程序;
在判断结果均为是的情况下,确定所述被检测文件中存在病毒。
3.根据权利要求1所述的方法,其特征在于,根据调用的所述函数和调用所述函数的顺序确定所述被检测文件中是否存在病毒包括:
判断调用的所述函数是否包括第四函数和第五函数,以及调用所述函数的顺序是否为:在调用所述第四函数之后调用所述第五函数;其中,所述第四函数用于将代码写入进程中,所述第五函数用于修改进程的执行流程以执行所述代码;
在判断结果均为是的情况下,确定所述被检测文件中存在病毒。
4.根据权利要求3所述的方法,其特征在于,根据调用的所述函数和调用所述函数的顺序确定所述被检测文件中是否存在病毒包括:
判断调用的所述函数是否还包括第六函数,以及调用所述函数的顺序是否为:在调用所述第六函数之后调用所述第四函数、在调用所述第四函数之后调用所述第五函数;其中,所述第六函数用于打开已有进程或创建新进程;
在判断结果均为是的情况下,确定所述被检测文件中存在病毒。
5.根据权利要求1所述的方法,其特征在于,根据调用的所述函数和调用所述函数的顺序确定所述被检测文件中是否存在病毒包括:
判断调用的所述函数是否包括第七函数和第八函数,以及调用所述函数的顺序是否为:在调用所述第七函数之后调用所述第八函数;其中,所述第七函数用于查询进程信息,第八函数用于将代码映射到进程中;
在判断结果均为是的情况下,确定所述被检测文件中存在病毒。
6.根据权利要求5所述的方法,其特征在于,根据调用的所述函数和调用所述函数的顺序确定所述被检测文件中是否存在病毒包括:
判断调用的所述函数是否还包括第九函数,以及调用所述函数的顺序是否为:在调用所述第七函数之后调用所述第八函数、在调用所述第八函数之后调用所述第九函数;其中,所述第九函数用于将挂起的进程恢复;
在判断结果均为是的情况下,确定所述被检测文件中存在病毒。
7.一种病毒检测装置,其特征在于,包括:
获取模块,用于获取被检测文件运行时调用应用程序编程接口的信息;
第一确定模块,用于根据所述信息确定所述被检测文件调用的函数和调用所述函数的顺序;
第二确定模块,用于根据调用的所述函数和调用所述函数的顺序确定所述被检测文件中是否存在病毒;
其中,根据调用的所述函数和调用所述函数的顺序确定所述被检测文件中是否存在病毒,包括:
根据调用的所述函数是否为特定的应用程序编程接口,以及调用所述应用程序编程接口的顺序是否与已经获知的病毒的调用顺序相同,来确定所述被检测文件中是否存在病毒。
8.根据权利要求7所述的装置,其特征在于,
所述第二确定模块,用于判断调用的所述函数是否包括第一函数、第二函数和第三函数,以及调用所述函数的顺序是否为:在调用所述第一函数之后调用所述第二函数、在调用所述第二函数之后调用所述第三函数;其中,所述第一函数用于得到系统函数的调用信息,所述第二函数用于操作系统的内核,所述第三函数用于安装或更新驱动程序;
以及在判断结果均为是的情况下,确定所述被检测文件中存在病毒。
9.根据权利要求7所述的装置,其特征在于,
所述第二确定模块,用于判断调用的所述函数是否包括第四函数和第五函数,以及调用所述函数的顺序是否为:在调用所述第四函数之后调用所述第五函数;其中,所述第四函数用于将代码写入进程中,所述第五函数用于修改进程的执行流程以执行所述代码;以及在判断结果均为是的情况下,确定所述被检测文件中存在病毒。
10.根据权利要求9所述的装置,其特征在于,
所述第二确定模块,用于判断调用的所述函数是否还包括第六函数,以及调用所述函数的顺序是否为:在调用所述第六函数之后调用所述第四函数、在调用所述第四函数之后调用所述第五函数;其中,所述第六函数用于打开已有进程或创建新进程;以及在判断结果均为是的情况下,确定所述被检测文件中存在病毒。
11.根据权利要求7所述的装置,其特征在于,
所述第二确定模块,用于判断调用的所述函数是否包括第七函数和第八函数,以及调用所述函数的顺序是否为:在调用所述第七函数之后调用所述第八函数;其中,所述第七函数用于查询进程信息,第八函数用于将代码映射到进程中;以及在判断结果均为是的情况下,确定所述被检测文件中存在病毒。
12.根据权利要求11所述的装置,其特征在于,
所述第二确定模块,用于判断调用的所述函数是否还包括第九函数,以及调用所述函数的顺序是否为:在调用所述第七函数之后调用所述第八函数、在调用所述第八函数之后调用所述第九函数;其中,所述第九函数用于将挂起的进程恢复;以及在判断结果均为是的情况下,确定所述被检测文件中存在病毒。
CN201310263922.7A 2013-06-27 2013-06-27 病毒检测方法和装置 Active CN104252594B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201310263922.7A CN104252594B (zh) 2013-06-27 2013-06-27 病毒检测方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310263922.7A CN104252594B (zh) 2013-06-27 2013-06-27 病毒检测方法和装置

Publications (2)

Publication Number Publication Date
CN104252594A CN104252594A (zh) 2014-12-31
CN104252594B true CN104252594B (zh) 2019-04-02

Family

ID=52187480

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310263922.7A Active CN104252594B (zh) 2013-06-27 2013-06-27 病毒检测方法和装置

Country Status (1)

Country Link
CN (1) CN104252594B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105095754A (zh) * 2015-05-11 2015-11-25 北京奇虎科技有限公司 一种处理病毒应用的方法、和装置和移动终端
CN106709335B (zh) * 2015-11-17 2020-12-04 阿里巴巴集团控股有限公司 漏洞检测方法和装置
CN105893845B (zh) * 2016-04-05 2019-05-10 珠海豹趣科技有限公司 一种数据处理方法及装置
CN106169044B (zh) * 2016-06-29 2019-12-10 珠海豹趣科技有限公司 一种保护线程数据的方法、装置及电子设备
CN109472135B (zh) * 2017-12-29 2022-02-22 北京安天网络安全技术有限公司 一种检测进程注入的方法、装置及存储介质
CN110866248B (zh) * 2018-11-28 2022-06-10 北京安天网络安全技术有限公司 一种勒索病毒识别方法、装置、电子设备及存储介质
CN111597101B (zh) * 2019-02-21 2023-09-08 上海哔哩哔哩科技有限公司 Sdk接入状态检测方法、计算机设备及计算机可读存储介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100504903C (zh) * 2007-09-18 2009-06-24 北京大学 一种恶意代码自动识别方法
JP2010009269A (ja) * 2008-06-26 2010-01-14 Iwate Univ コンピュータウィルス検出装置、コンピュータウィルス検出方法及びコンピュータウィルス検出プログラム
CN102314561B (zh) * 2010-07-01 2014-07-23 电子科技大学 基于api hook的恶意代码自动分析方法和系统
CN102034042B (zh) * 2010-12-13 2012-10-03 四川大学 基于函数调用关系图特征的恶意代码检测新方法
CN103136471B (zh) * 2011-11-25 2015-12-16 中国科学院软件研究所 一种恶意Android应用程序检测方法和系统
CN103136475B (zh) * 2011-11-29 2017-07-04 姚纪卫 一种检查计算机病毒的方法和装置
CN102930210B (zh) * 2012-10-14 2015-11-25 江苏金陵科技集团有限公司 恶意程序行为自动化分析、检测与分类系统及方法

Also Published As

Publication number Publication date
CN104252594A (zh) 2014-12-31

Similar Documents

Publication Publication Date Title
CN104252594B (zh) 病毒检测方法和装置
Xu et al. Iccdetector: Icc-based malware detection on android
US10534906B1 (en) Detection efficacy of virtual machine-based analysis with application specific events
Zhauniarovich et al. Stadyna: Addressing the problem of dynamic code updates in the security analysis of android applications
Spreitzenbarth et al. Mobile-sandbox: having a deeper look into android applications
US11363061B2 (en) Runtime detection of injection attacks on web applications via static and dynamic analysis
US20190180036A1 (en) Deterministic method for detecting and blocking of exploits on interpreted code
US10581879B1 (en) Enhanced malware detection for generated objects
US11012449B2 (en) Methods and cloud-based systems for detecting malwares by servers
Sikorski et al. Practical malware analysis: the hands-on guide to dissecting malicious software
Bläsing et al. An android application sandbox system for suspicious software detection
CN103559446B (zh) 一种基于安卓系统的设备的动态病毒检测方法和装置
JP6700351B2 (ja) プロセスのアドレス空間内の悪意のあるコードの検出のためのシステムおよび方法
CN106557701B (zh) 基于虚拟机的内核漏洞检测方法及装置
Somarriba et al. Detection and visualization of android malware behavior
US10917435B2 (en) Cloud AI engine for malware analysis and attack prediction
WO2019133637A1 (en) Detection of exploitative program code
Hahn et al. Robust static analysis of portable executable malware
Druffel et al. Davinci: Android app analysis beyond frida via dynamic system call instrumentation
JP5613000B2 (ja) アプリケーション特性解析装置およびプログラム
Choi et al. Large-scale analysis of remote code injection attacks in android apps
Reeves Autoscopy Jr.: Intrusion detection for embedded control systems
Thomas Backdoor detection systems for embedded devices
KR101053470B1 (ko) 유해 트래픽 제어 및 해킹을 차단하는 장치 및 방법
Lin et al. Mobile malware detection in sandbox with live event feeding and log pattern analysis

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
CP01 Change in the name or title of a patent holder

Address after: 100022 the 12 level of Fuxing International Center, 237 Chaoyang North Road, Chaoyang District, Beijing.

Patentee after: Beijing Cheetah Mobile Technology Co.,Ltd.

Patentee after: Beijing Cheetah Network Technology Co.,Ltd.

Patentee after: BEIJING KINGSOFT INTERNET SECURITY SOFTWARE Co.,Ltd.

Patentee after: ZHUHAI JUNTIAN ELECTRONIC TECHNOLOGY Co.,Ltd.

Patentee after: CONEW NETWORK TECHNOLOGY (BEIJING) Co.,Ltd.

Address before: 100022 the 12 level of Fuxing International Center, 237 Chaoyang North Road, Chaoyang District, Beijing.

Patentee before: SHELL INTERNET (BEIJING) SECURITY TECHNOLOGY Co.,Ltd.

Patentee before: BEIJING KINGSOFT NETWORK TECHNOLOGY Co.,Ltd.

Patentee before: BEIJING KINGSOFT INTERNET SECURITY SOFTWARE Co.,Ltd.

Patentee before: ZHUHAI JUNTIAN ELECTRONIC TECHNOLOGY Co.,Ltd.

Patentee before: CONEW NETWORK TECHNOLOGY (BEIJING) Co.,Ltd.

CP01 Change in the name or title of a patent holder