CN103116724B - 探测程序样本危险行为的方法及装置 - Google Patents
探测程序样本危险行为的方法及装置 Download PDFInfo
- Publication number
- CN103116724B CN103116724B CN201310081869.9A CN201310081869A CN103116724B CN 103116724 B CN103116724 B CN 103116724B CN 201310081869 A CN201310081869 A CN 201310081869A CN 103116724 B CN103116724 B CN 103116724B
- Authority
- CN
- China
- Prior art keywords
- sample
- program sample
- suspicious actions
- application programming
- program
- 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
Links
- 231100001261 hazardous Toxicity 0.000 title claims abstract description 74
- 238000000034 method Methods 0.000 title claims abstract description 73
- 230000009471 action Effects 0.000 claims abstract description 80
- 238000012544 monitoring process Methods 0.000 claims abstract description 71
- 230000026676 system process Effects 0.000 claims description 58
- 230000008569 process Effects 0.000 claims description 52
- 230000006399 behavior Effects 0.000 claims description 30
- 230000002155 anti-virotic effect Effects 0.000 claims description 22
- 230000003247 decreasing effect Effects 0.000 claims description 7
- 238000005516 engineering process Methods 0.000 abstract description 9
- 230000009286 beneficial effect Effects 0.000 abstract description 3
- 238000004891 communication Methods 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 42
- 230000003542 behavioural effect Effects 0.000 description 10
- 208000031973 Conjunctivitis infective Diseases 0.000 description 3
- 201000001028 acute contagious conjunctivitis Diseases 0.000 description 3
- 230000008901 benefit Effects 0.000 description 3
- 239000008186 active pharmaceutical agent Substances 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 235000012907 honey Nutrition 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 230000013011 mating Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 239000000243 solution Substances 0.000 description 1
- 230000009897 systematic effect Effects 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明涉及网络通信技术领域,其公开了一种探测程序样本危险行为的方法及相应的装置。该方法包括:检测程序样本是否具有查找攻击点的第一可疑行为,并在检测到第一可疑行为的前提下,监测程序样本是否执行对象比较的第二可疑行为;当监测到第二可疑行为时,确定程序样本执行第二可疑行为时所比较的对象是否与预先存储的黑名单中的内容匹配,黑名单中预先存储有被攻击对象的名称;当确定程序样本所比较的对象与预先存储的黑名单中的内容匹配时,确定程序样本的行为是危险行为。由此解决了现有技术中仅通过二进制文件进行判断时存在的容易误报及漏报的问题,取得了能够准确可靠地识别出危险行为的有益效果。
Description
技术领域
本发明涉及网络通信技术领域,具体涉及一种探测程序样本危险行为的方法及装置。
背景技术
目前,黑客经常会通过木马或外挂来进行一些危险行为。例如,木马会查找***中的杀毒软件,并强行将杀毒软件关闭;外挂会注入游戏进程,修改游戏的相关设置。
为了探测上述的危险行为,金山公司推出了金山火眼。金山火眼能够执行程序样本的自动化分析,并根据分析结果来确定程序样本的危险行为。其中,金山火眼在进行自动化分析时,采用的方法主要是对程序样本的二进制文件进行分析,查看二进制文件中是否存在一些包含常见的被攻击对象(例如,360tray.exe、ksafetray.exe、mpsvc.exe等杀毒软件进程,和/或dnf.exe等游戏进程)名称的字符串,如果存在,就认为该程序样本的行为是危险行为。
上述方式的原理在于,一般情况下,程序样本在发起攻击之前,首先要查找被攻击对象,因此,如果程序样本的二进制文件中存在被攻击对象的名称,则很有可能是要查找该被攻击对象并发起攻击。
但是,这种方式存在着很多弊端:首先,在程序样本的二进制文件中,有时会出现一些被攻击对象的名称,但该程序样本其实并不是为了攻击该对象,而仅仅是出于一些并无恶意的目的,在这种情况下,上述方式很容易出现误报;其次,如果程序样本不是在“堆”上分配内存,而是在“栈”上分配内存,则程序样本的二进制文件中并不会出现包含被攻击对象名称的字符串,因此,当程序样本在“栈”上分配内存时,上述方法则无法应用。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的探测程序样本危险行为的方法及相应的装置。
依据本发明的一个方面,提供了一种探测程序样本危险行为的方法,包括:检测程序样本是否具有查找攻击点的第一可疑行为,并在检测到第一可疑行为的前提下,监测程序样本是否执行对象比较的第二可疑行为;当监测到第二可疑行为时,确定程序样本执行第二可疑行为时所比较的对象是否与预先存储的黑名单中的内容匹配,黑名单中预先存储有被攻击对象的名称;当确定程序样本所比较的对象与预先存储的黑名单中的内容匹配时,确定程序样本的行为是危险行为。
可选地,确定程序样本的行为是危险行为的步骤之后,进一步包括:将程序样本的名称以及比较的对象的名称关联存储在预设的危险行为记录文件中。
可选地,该方法进一步包括:预先通过多台虚拟机并行运行的方式获取程序样本。
可选地,第一可疑行为是枚举***进程的行为,则检测程序样本是否具有查找攻击点的第一可疑行为进一步包括:分别对程序样本的第一应用程序接口和第二应用程序接口进行监测,以确定程序样本是否枚举***进程,其中,第一应用程序接口用于通过返回句柄值的方式枚举***进程,第二应用程序接口用于通过关闭句柄值的方式关闭枚举的***进程。
可选地,分别对程序样本的第一应用程序接口和第二应用程序接口进行监测,以确定程序样本是否枚举***进程的步骤进一步包括:当第一应用程序接口返回句柄值时,将第一应用程序接口返回的句柄值存储在一个链表中,并将预设的初始值为零的变量递增;当确定第二应用程序接口要关闭的句柄值存储在链表中时,从链表中删除句柄值,并将变量递减;则在检测到第一可疑行为的前提下,监测程序样本是否执行对象比较的第二可疑行为的步骤进一步包括:确定变量的值是否大于预设的变量阈值,当确定结果为是时,监测程序样本是否执行对象比较的第二可疑行为;当确定结果为否时,不监测程序样本是否执行对象比较的第二可疑行为。
可选地,监测程序样本是否执行第二可疑行为的步骤进一步包括:对程序样本中的每一个用于执行对象比较功能的函数进行监测,以确定程序样本是否执行对象比较操作。
可选地,黑名单中预先存储的被攻击对象包括:杀毒软件进程和/或游戏进程。
可选地,当监测到第二可疑行为时,进一步执行以下步骤:确定程序样本所比较的对象是否与预先存储的白名单中的内容匹配,其中,白名单中预先存储有非攻击对象的名称;当确定程序样本所比较的对象与预先存储的白名单中的内容不匹配时,确定程序样本的行为是可疑行为。
依据本发明的另一方面,提供了一种探测程序样本危险行为的装置,包括:第一监测模块,适于检测程序样本是否具有查找攻击点的第一可疑行为;第二监测模块,适于在第一监测模块检测到第一可疑行为的前提下,监测程序样本是否执行对象比较的第二可疑行为;匹配比较模块,适于在当第二监测模块监测到程序样本执行第二可疑行为时,确定程序样本执行第二可疑行为时所比较的对象是否与预先存储的黑名单中的内容匹配,当确定程序样本所比较的对象与预先存储的黑名单中的内容匹配时,确定程序样本的行为是危险行为;其中,黑名单中预先存储有被攻击对象的名称。
可选地,该装置进一步包括:记录模块,适于在匹配比较模块确定程序样本的行为是危险行为时,将程序样本的名称以及比较的对象的名称关联存储在预设的危险行为记录文件中。
可选地,该装置进一步包括:程序样本获取模块,适于预先通过多台虚拟机并行运行的方式获取程序样本。
可选地,第一监测模块进一步适于:分别对程序样本的第一应用程序接口和第二应用程序接口进行监测,以确定程序样本是否枚举***进程,其中,第一应用程序接口用于通过返回句柄值的方式枚举***进程,第二应用程序接口用于通过关闭句柄值的方式关闭枚举的***进程。
可选地,第一监测模块进一步包括:第一挂钩模块,适于当第一应用程序接口返回句柄值时,将第一应用程序接口返回的句柄值存储在一个链表中,并将预设的初始值为零的变量递增;第二挂钩模块,适于当确定第二应用程序接口要关闭的句柄值存储在链表中时,从链表中删除句柄值,并将变量递减;则第二监测模块进一步适于:确定变量的值是否大于预设的变量阈值,当确定结果为是时,监测程序样本是否执行对象比较的第二可疑行为;当确定结果为否时,不监测程序样本是否执行对象比较的第二可疑行为。
可选地,第二监测模块进一步适于:对程序样本中的每一个用于执行对象比较功能的函数进行监测,以确定程序样本是否执行对象比较操作。
可选地,黑名单中预先存储的被攻击对象包括:杀毒软件进程和/或游戏进程。
可选地,匹配比较模块,适于在当第二监测模块监测到程序样本执行第二可疑行为时,进一步用于:确定程序样本所比较的对象是否与预先存储的白名单中的内容匹配,其中,白名单中预先存储有非攻击对象的名称;当确定程序样本所比较的对象与预先存储的白名单中的内容不匹配时,确定程序样本的行为是可疑行为。
本发明提供的探测程序样本危险行为的方法及装置是根据程序样本执行危险行为时的行为特征制定的,通常情况下,样本程序执行危险行为时的行为特征表现为:首先,查找攻击点(例如,枚举***进程);然后,执行对象比较操作(例如字符串比较操作)来确定潜在的攻击点(例如枚举的***进程)中是否存在着要攻击对象的名称,当确定存在要攻击对象时则可能发起攻击。根据上述行为特征,本发明提供的探测程序样本危险行为的方法及装置在监测到程序样本查找了攻击点的前提下,监测程序样本是否执行对象比较操作;然后在监测到程序样本执行对象比较操作时,进一步确定程序样本所比较的对象是否与预先存储的黑名单中的内容匹配,从而识别出样本程序的危险行为。由于本发明中的方案只有在样本程序同时执行了上述的第一可疑行为和第二可疑行为时才会被认定为危险行为,由此解决了现有技术中仅通过二进制文件进行判断时存在的容易误报及漏报的问题,取得了能够准确可靠地识别出危险行为的有益效果。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明实施例提供的探测程序样本危险行为的方法流程图;以及
图2示出了根据本发明实施例提供的探测程序样本危险行为的装置结构图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本发明实施例提供了一种探测程序样本危险行为的方法及装置,用以解决现有技术中仅通过二进制文件判断危险行为时存在的容易误报及漏报的问题。
由于本发明实施例提供的方法及装置主要是根据程序样本执行危险行为时的行为特征来探测危险行为的,因此,为了便于理解本发明,在介绍本发明的技术方案之前,先介绍一下程序样本执行危险行为时的行为特征:
根据发明人的研究发现,具备攻击特点的程序样本(例如木马或外挂)在执行危险行为时,通过需要依次执行两种可疑行为。例如,首先需要确定潜在的被攻击对象,例如木马的攻击对象可能是诸如360tray.exe、ksafetray.exe、mpsvc.exe等的杀毒软件进程,外挂的攻击对象可能是诸如dnf.exe等的游戏进程。为了能够对被攻击对象发起攻击,程序样本在执行危险行为之前,首先需要查找到上述潜在的被攻击对象。在查找被攻击对象时,程序样本通常会先枚举当前***中的进程,然后根据枚举的结果做出相应的反应。其中,程序样本在枚举***进程时一般是通过直接调用操作***提供的名为toolhelp32的应用程序接口API来实现的,通过该API,可以将当前***中运行的所有进程一一枚举出来。枚举完***进程之后,程序样本通常会通过字符串的运行时库函数,即字符串比较函数(例如stricmp函数)对枚举出的***进程一一进行比较,确定枚举出的***进程中是否存在与被攻击对象的名称匹配的进程。如果发现枚举出的***进程中存在与被攻击对象的名称匹配的进程,则根据该进程的特点对其执行相应的危险行为。例如,如果该进程为杀毒软件进程,则程序样本通常会采取如下处理方式:如果程序样本发现该杀毒软件进程存在一些易被攻击的漏洞,则该程序样本会强行将该杀毒软件进程关闭;如果程序样本没有发现该杀毒软件进程的漏洞,为了避免强行关闭该杀毒软件进程时被杀毒软件进程发现而提示用户,则该程序样本会不执行任何操作而直接退出。如果该进程为游戏进程,则该程序样本可能会通过进一步的注入行为来检测该游戏进程的位置,以便对该游戏进程执行一些非法操作。
通过上面的描述可以看出,程序样本在执行危险行为之前,首先需要通过第一可疑行为来查找攻击点(例如通过枚举***进程)以及通过第二可疑行为(例如字符串比较等操作)来确定被攻击对象。因此,本发明可以基于上述的行为特征来探测程序样本的危险行为。
另外,本发明实施例可以应用于蜜罐***,蜜罐主要用于进行程序样本的检测。上述的程序样本可以预先通过多台虚拟机并行运行的方式来获取。其中,每台虚拟机可以运行多台xp对应的实体机,由此可以提升样本收集的效率。当程序样本收集进来之后,虚拟机关闭,当需要再次收集程序样本时,再打开虚拟机即可。
图1示出了本发明实施例提供的探测程序样本危险行为的方法流程图。如图1所示,该方法始于步骤S110,在步骤S110中,检测程序样本是否具有查找攻击点的第一可疑行为。
其中,查找攻击点的第一可疑行为通常是由枚举***进程的方式来实现的,通过枚举***进程,就可以得知当前运行了哪些***进程,并从中确定出攻击点。
下面以第一可疑行为是枚举***进程的行为为例详细介绍一下步骤S110的实现细节:分别对程序样本的第一应用程序接口(例如CreateToolhelp32Snapshot接口)和第二应用程序接口(例如CloseHandle接口)进行监测,以确定程序样本是否枚举***进程。其中,第一应用程序接口CreateToolhelp32Snapshot用于通过返回句柄值(handle值)的方式枚举***进程,也就是说,当程序样本调用第一应用程序接口CreateToolhelp32Snapshot时,该第一应用程序接口会返回一些handle值,根据这些handle值,就可以确定出当前***中运行有哪些进程,从而将这些进程枚举到一个枚举列表里。第二应用程序接口CloseHandle用于通过关闭句柄值的方式关闭枚举的***进程。也就是说,当程序样本通过第一应用程序接口枚举出***进程所对应的handle值之后,如果程序样本进一步调用第二应用程序接口,则第二应用程序接口会将程序样本指定的handle值关闭,从而关闭枚举的***进程,这里所说的关闭枚举的***进程,并不是指真正地将该***进程关闭,而是指将该***进程从上述的枚举列表中删除,这时该***进程可能仍然运行在***中,只是没有被程序样本枚举到枚举列表中而已。
下面详细介绍一下上述对程序样本的第一应用程序接口和第二应用程序接口进行监测的具体实现过程。例如,可以通过动态链接库与挂钩技术的结合来实现上述监测过程:首先,创建一个动态链接库ATPuser DLL,将该动态链接库注入到每一个程序样本中,当程序样本包括当前***中所有正在运行的进程时,也就是将该动态链接库注入到当前***中每一个启动的***进程中。其中,将动态链接库注入***进程的方式可通过本领域技术人员熟知的各种技术实现,本发明对具体的注入方式不做限定。将动态链接库注入到***进程的目的主要是为了实现挂钩技术的使用。因此,接下来,在每个进程中的指定位置设置挂钩(HOOK),以实现对指定位置的运行状态的监测。为了实现对程序样本的第一应用程序接口和第二应用程序接口进行监测的目的,上面提到的指定位置可以包括程序样本的第一应用程序接口和第二应用程序接口,通过对第一应用程序接口和第二应用程序接口分别设置挂钩,可以在程序样本运行到第一应用程序接口和第二应用程序接口时,首先执行该接口对应的挂钩函数中的逻辑功能,从而实现对第一应用程序接口和第二应用程序接口进行监测的目的。
下面再详细介绍一下通过挂钩技术对第一应用程序接口和第二应用程序接口进行监测的实现细节。上述的第一应用程序接口对应的挂钩函数的逻辑功能为:当程序样本运行到第一应用程序接口时,该挂钩函数用于将第一应用程序接口返回的句柄值存储在一个自定义的链表中,同时将预设的初始值为零的变量count的值递增(例如递增一)。上述的第二应用程序接口对应的挂钩函数的逻辑功能为:当程序样本运行到第二应用程序接口时,确定第二应用程序接口要关闭的句柄值是否已存储在上述链表中,如果判断结果为是,则从该链表中删除该要关闭的句柄值,并将上述变量count的值递减(例如递减一)。在上述操作链表的过程中,为了确保链表中的内容的准确性,还会通过同步操作来同步链表中的内容。
通过第一应用程序接口和第二应用程序接口的挂钩函数的逻辑功能可以看出,当程序样本运行到第一应用程序接口并通过第一应用程序接口枚举***进程时,变量count的值将从零开始递增;而当程序样本运行到第二应用程序接口并通过第二应用程序接口关闭枚举的***进程时,变量count的值将又开始递减。由此可见,当程序样本运行在第一应用程序接口和第二应用程序接口之间时,表示程序样本当前正在枚举***进程,而此时变量count的值应该大于或等于预设的变量阈值(例如变量阈值为一)。
由此可见,在上述方式中,当变量count的值大于或等于变量阈值的情况下,即可确定程序样本枚举了***进程;而当变量count的值小于变量阈值的情况下,即可确定程序样本没有枚举***进程。
第一可疑行为也可以是其他的可疑行为,只要能够实现查找攻击点的目的即可。因此,除了上面介绍的方式之外,本领域技术人员在步骤S110中还可以灵活采取其他方式来检测程序样本是否具有查找攻击点的第一可疑行为,例如,检测程序样本是否具有逐个查找当前运行程序或文件的可疑行为。
本发明在步骤S110中持续进行监测,在监测到程序样本枚举了***进程的前提下(即变量count的值大于或等于变量阈值时),继续执行步骤S120,在步骤S120中,监测程序样本是否执行对象比较的第二可疑行为,当监测到程序样本执行对象比较的第二可疑行为时,确定程序样本所比较的对象是否与预先存储的黑名单中的内容匹配。
具体地,程序样本所比较的对象例如可以是字符串、文件名称等。当程序样本所比较的对象是字符串时,在监测程序样本是否执行对象比较的第二可疑行为时,可以对程序样本中的每一个用于执行字符串比较功能的函数进行监测,以确定程序样本是否执行字符串比较的可疑操作。常见的用于执行字符串比较功能的函数包括但不限于以下函数:_strcmpi、_stricmp、_wcsicmp、_mbsicmp、_stricmp_l、_wcsicmp_l、_mbsicmp_l、StrCmp、strcmp、wcscmp、_mbscmp、_strnicmp、_wcsnicmp、_mbsnicmp、_strnicmp_l、_wcsnicmp_l、_mbsnicmp_l、strncmp、wcsncmp、_mbsncmp和_mbsncmp_l。
为了对上述执行字符串比较功能的函数进行监测,可以参照步骤S110中的挂钩技术实现。例如,可以在步骤S110中将动态链接库ATPuser DLL注入到每一个程序样本之后,在每个程序样本的指定位置设置挂钩时,除了对程序样本的第一应用程序接口和第二应用程序接口分别设置挂钩之外,还进一步对每一个程序样本所包含的每个用于执行字符串比较功能的函数设置挂钩,也就是说,步骤S110中提到的指定位置进一步包括程序样本所包含的每个用于执行字符串比较功能的函数所处的位置。其中,为每个用于执行字符串比较功能的函数所设置的挂钩函数的逻辑功能为:当程序样本运行到该用于执行字符串比较功能的函数时,其挂钩函数确定程序样本执行了字符串比较操作,并进一步确定该执行字符串比较功能的函数所比较的字符串是否与预先存储的黑名单中的内容匹配。其中,黑名单中预先存储有被攻击对象的名称,该被攻击对象例如可以是常见的杀毒软件(如360tray.exe、ksafetray.exe、mpsvc.exe等)和/或游戏进程(如dnf.exe等)。
当确定程序样本所比较的字符串与预先存储的黑名单中的内容匹配时,则执行步骤S130,在步骤S130中,确定程序样本的行为是危险行为。
具体原因在于,如果程序样本所比较的字符串与预先存储的黑名单中的内容匹配,例如,程序样本通过执行字符串比较功能的函数比较了360tray.exe的字符串,则可以确定程序样本是在查找360tray.exe的进程,因而很可能是要对360tray.exe这一杀毒软件进行强制关闭等危险行为,因此,可以确定该程序样本的行为是危险行为。
可选地,在步骤S130之后,还可以进一步包括步骤S140。在步骤S140中,将上述程序样本的名称以及程序样本所比较的字符串的名称关联存储在预设的危险行为记录文件中。
具体地,步骤S140可通过如下方式实现:在确定程序样本的行为是危险行为后,触发一个预定的事件(event),并在该事件发生时,由预设的线程传递该事件所对应的信息。其中,该事件所对应的信息包括上述程序样本的名称以及程序样本所比较的字符串的名称。随后,由底层的驱动程序接收到该事件所对应的信息并将其记录到预设的危险行为记录文件,例如action.log文件中。其中,action.log文件专门用于记录***的各种行为。
另外,在本发明实施例中,当确定程序样本的行为是危险行为后,还可以进一步向用户弹出提示框,以提示用户。在该提示框中,可以显示该程序样本的名称和/或其查找的与黑名单内容相匹配的字符串的名称。
而且,为了更好地区分危险行为的类型,上述的黑名单可以进一步细分为不同类型的黑名单,例如,杀毒软件的名称存储在杀毒软件类型的黑名单中,游戏进程的名称存储在游戏进程类型的黑名单中。相应地,在步骤S130和S140中确定程序样本的行为是危险行为时,进一步根据程序样本所比较的字符串与匹配的黑名单的类型确定该程序样本的危险行为的类型。例如,如果程序样本所比较的字符串与杀毒软件类型的黑名单匹配,则确定该程序样本的行为是针对杀毒软件的危险行为;如果程序样本所比较的字符串与游戏进程类型的黑名单匹配,则确定该程序样本的行为是针对游戏进程的危险行为。
在上述实施例中,主要利用了程序样本在执行危险行为之前先要通过枚举***进程以及字符串比较等操作来确定被攻击对象的行为特征。其中,上述的步骤S110主要针对程序样本枚举***进程的这一特点进行检测,上述的步骤S120主要针对程序样本所执行的字符串比较操作进行检测。由于字符串比较操作在程序样本中比较常见,许多地方都可能出现字符串比较操作,如果单单针对字符串比较操作进行监测来确定危险行为是很容易出现误报情况的。因此,在本实施例中,只在程序样本枚举了***进程的前提下,才监测程序样本是否执行字符串比较操作,由此避免了当程序样本仅仅出于非恶意的目的执行字符串比较操作时被误报的情况。具体地,在本实施例中,只有在第一应用程序接口和第二应用程序接口之间执行的字符串比较操作才会被监测。其中,第一应用程序接口和第二应用程序接口代表与程序样本枚举***进程相关的接口,因此,第一应用程序接口和第二应用程序接口的名称和数量并不限于本实施例中描述的CreateToolhelp32Snapshot接口和CloseHandle接口,在其他***中,可能会有其他的接口也能实现枚举***进程的功能,因此,本领域技术人员还可以灵活选用其他的接口进行监测,只要能够实现监测枚举***进程这一行为的目的即可。
由于本发明实施例并不是仅仅在程序样本的二进制文件中直接查找被攻击对象的名称,因此本发明实施例在危险行为探测方面的准确性更好。而且,即使程序样本不是在“堆”上分配内存,而是在“栈”上分配内存,本发明实施例中的方法也依然适用。
另外,为了更充分地检测程序样本的危险行为,在本发明实施例中还可以进一步设置一个白名单,在该白名单中预先存储非攻击对象的名称。其中,非攻击对象是一些预先确定的安全的对象,例如,可以是在除了上述黑名单中的杀毒软件进程和游戏进程之外的进程中,进一步确定的不会被攻击的进程。相应地,在本发明实施例中,当监测到程序样本执行字符串比较操作时,进一步执行以下步骤:确定程序样本所比较的字符串是否与预先存储的白名单中的内容匹配;当确定程序样本所比较的字符串与预先存储的白名单中的内容不匹配时,确定程序样本的行为是可疑行为。其中,确定程序样本所比较的字符串是否与预先存储的白名单中的内容匹配的具体方式可参照步骤S120中的方式实现,此处不再赘述。在确定出程序样本的行为是可疑行为之后,可以进一步向用户弹出提示框,提示用户该程序样本比较了某一个白名单中不存在的字符串,由用户来确定是否需要关闭该程序样本。
本发明实施例还提供了一种探测程序样本危险行为的装置200,如图2所示,该装置包括:第一监测模块210、第二监测模块220以及匹配比较模块230。其中,第一监测模块210监测程序样本是否具有查找攻击点的第一可疑行为。第二监测模块220在第一监测模块210检测到第一可疑行为的前提下,监测程序样本是否执行对象比较的第二可疑行为。匹配比较模块230在当第二监测模块220监测到程序样本执行第二可疑行为时,确定程序样本执行第二可疑行为时所比较的对象是否与预先存储的黑名单中的内容匹配,当确定程序样本所比较的对象与预先存储的黑名单中的内容匹配时,确定程序样本的行为是危险行为;其中,黑名单中预先存储有被攻击对象的名称(例如杀毒软件进程和/或游戏进程)。
可选地,该装置进一步包括:记录模块240,适于在匹配比较模块230确定程序样本的行为是危险行为时,将程序样本的名称以及比较的对象(例如字符串)的名称关联存储在预设的危险行为记录文件中。可选地,该装置还包括:程序样本获取模块,适于预先通过多台虚拟机并行运行的方式获取程序样本。
其中,第一监测模块210进一步适于:分别对程序样本的第一应用程序接口和第二应用程序接口进行监测,以确定程序样本是否枚举***进程,其中,第一应用程序接口用于通过返回句柄值的方式枚举***进程,第二应用程序接口用于通过关闭句柄值的方式关闭枚举的***进程。其中,第一监测模块210进一步包括:第一挂钩模块,适于当第一应用程序接口返回句柄值时,将第一应用程序接口返回的句柄值存储在一个链表中,并将预设的初始值为零的变量递增;第二挂钩模块,适于当确定第二应用程序接口要关闭的句柄值存储在链表中时,从链表中删除句柄值,并将变量递减;则第二监测模块进一步适于:确定变量的值是否大于预设的变量阈值,当确定结果为是时,监测程序样本是否执行对象比较的第二可疑行为;当确定结果为否时,不监测程序样本是否执行对象比较的第二可疑行为。
可选地,第二监测模块220进一步适于:对程序样本中的每一个用于执行对象比较功能的函数进行监测,以确定程序样本是否执行字符串比较操作。
可选地,匹配比较模块230,适于在当第二监测模块监测到程序样本执行第二可疑行为时,进一步用于:确定程序样本所比较的对象是否与预先存储的白名单中的内容匹配,其中,白名单中预先存储有非攻击对象的名称;当确定程序样本所比较的对象与预先存储的白名单中的内容不匹配时,确定程序样本的行为是可疑行为。
其中,上述的第一监测模块210、第二监测模块220以及匹配比较模块230的具体实现细节可参照方法实施例中相应步骤的描述,此处不再赘述。
本发明提供的探测程序样本危险行为的方法及装置是根据程序样本执行危险行为时的行为特征制定的,通常情况下,样本程序执行危险行为时的行为特征表现为:首先,查找攻击点,例如,枚举***进程;然后,进行对象比较,例如字符串比较操作来确定枚举的***进程中是否存在着要攻击对象的名称,当确定***进程中存在要攻击对象时则可能发起攻击。根据上述行为特征,本发明提供的探测程序样本危险行为的方法及装置在监测到程序样本枚举了***进程的前提下,监测程序样本是否执行字符串比较操作;然后在监测到程序样本执行字符串比较操作时,进一步确定程序样本所比较的字符串是否与预先存储的黑名单中的内容匹配,从而识别出样本程序的危险行为。由于本发明中的方案只有在样本程序同时执行了枚举进程以及比较与黑名单匹配的字符串的操作时才会被认定为危险行为,由此解决了现有技术中仅通过二进制文件进行判断时存在的容易误报及漏报的问题,取得了能够准确可靠地识别出危险行为的有益效果。
在此提供的算法和显示不与任何特定计算机、虚拟***或者其它设备固有相关。各种通用***也可以与基于在此的示教一起使用。根据上面的描述,构造这类***所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
Claims (14)
1.一种探测程序样本危险行为的方法,包括:
检测程序样本是否具有查找攻击点的第一可疑行为,并在检测到所述第一可疑行为的前提下,监测程序样本是否执行对象比较的第二可疑行为;
当监测到所述第二可疑行为时,确定程序样本执行第二可疑行为时所比较的对象是否与预先存储的黑名单中的内容匹配,所述黑名单中预先存储有被攻击对象的名称;
当确定程序样本所比较的对象与预先存储的黑名单中的内容匹配时,确定程序样本的行为是危险行为;
其中,所述第一可疑行为是枚举***进程的行为,则所述检测程序样本是否具有查找攻击点的第一可疑行为的步骤进一步包括:
分别对程序样本的第一应用程序接口和第二应用程序接口进行监测,以确定程序样本是否枚举***进程,其中,所述第一应用程序接口用于通过返回句柄值的方式枚举***进程,所述第二应用程序接口用于通过关闭所述句柄值的方式关闭枚举的***进程。
2.如权利要求1所述的方法,所述确定程序样本的行为是危险行为的步骤之后,进一步包括:
将所述程序样本的名称以及所述比较的对象的名称关联存储在预设的危险行为记录文件中。
3.如权利要求1或2所述的方法,进一步包括:预先通过多台虚拟机并行运行的方式获取程序样本。
4.如权利要求1所述的方法,所述分别对程序样本的第一应用程序接口和第二应用程序接口进行监测,以确定程序样本是否枚举***进程的步骤进一步包括:
当所述第一应用程序接口返回句柄值时,将所述第一应用程序接口返回的句柄值存储在一个链表中,并将预设的初始值为零的变量递增;
当确定所述第二应用程序接口要关闭的句柄值存储在所述链表中时,从所述链表中删除所述句柄值,并将所述变量递减;
则所述在检测到所述第一可疑行为的前提下,监测程序样本是否执行对象比较的第二可疑行为的步骤进一步包括:确定所述变量的值是否大于或等于预设的变量阈值,当确定结果为是时,监测程序样本是否执行对象比较的第二可疑行为;当确定结果为否时,不监测程序样本是否执行对象比较的第二可疑行为。
5.如权利要求1或2或4所述的方法,所述监测程序样本是否执行对象比较的第二可疑行为的步骤进一步包括:
对程序样本中的每一个用于执行对象比较功能的函数进行监测,以确定程序样本是否执行对象比较操作。
6.如权利要求1或2或4所述的方法,所述黑名单中预先存储的被攻击对象包括:预设的杀毒软件进程和/或游戏进程。
7.如权利要求1所述的方法,所述当监测到所述第二可疑行为时,进一步执行以下步骤:
确定程序样本所比较的对象是否与预先存储的白名单中的内容匹配,其中,所述白名单中预先存储有非攻击对象的名称;
当确定程序样本所比较的对象与预先存储的白名单中的内容不匹配时,确定程序样本的行为是可疑行为。
8.一种探测程序样本危险行为的装置,包括:
第一监测模块,适于检测程序样本是否具有查找攻击点的第一可疑行为;
第二监测模块,适于在所述第一监测模块检测到所述第一可疑行为的前提下,监测程序样本是否执行对象比较的第二可疑行为;
匹配比较模块,适于在当第二监测模块监测到程序样本执行所述第二可疑行为时,确定程序样本执行第二可疑行为时所比较的对象是否与预先存储的黑名单中的内容匹配,当确定程序样本所比较的对象与预先存储的黑名单中的内容匹配时,确定程序样本的行为是危险行为;其中,所述黑名单中预先存储有被攻击对象的名称;
其中,所述第一监测模块进一步适于:分别对程序样本的第一应用程序接口和第二应用程序接口进行监测,以确定程序样本是否枚举***进程,其中,所述第一应用程序接口用于通过返回句柄值的方式枚举***进程,所述第二应用程序接口用于通过关闭所述句柄值的方式关闭枚举的***进程。
9.如权利要求8所述的装置,进一步包括:
记录模块,适于在所述匹配比较模块确定程序样本的行为是危险行为时,将所述程序样本的名称以及所述比较的对象的名称关联存储在预设的危险行为记录文件中。
10.如权利要求8或9所述的装置,进一步包括:
程序样本获取模块,适于预先通过多台虚拟机并行运行的方式获取程序样本。
11.如权利要求8所述的装置,所述第一监测模块进一步包括:
第一挂钩模块,适于当所述第一应用程序接口返回句柄值时,将所述第一应用程序接口返回的句柄值存储在一个链表中,并将预设的初始值为零的变量递增;
第二挂钩模块,适于当确定所述第二应用程序接口要关闭的句柄值存储在所述链表中时,从所述链表中删除所述句柄值,并将所述变量递减;
则所述第二监测模块进一步适于:确定所述变量的值是否大于或等于预设的变量阈值,当确定结果为是时,监测程序样本是否执行对象比较的第二可疑行为;当确定结果为否时,不监测程序样本是否执行对象比较的第二可疑行为。
12.如权利要求8或9或11所述的装置,所述第二监测模块进一步适于:对程序样本中的每一个用于执行对象比较功能的函数进行监测,以确定程序样本是否执行对象比较操作。
13.如权利要求8或9或11所述的装置,所述黑名单中预先存储的被攻击对象包括:杀毒软件进程和/或游戏进程。
14.如权利要求8所述的装置,所述匹配比较模块,适于在当第二监测模块监测到程序样本执行第二可疑行为时,进一步用于:
确定程序样本所比较的对象是否与预先存储的白名单中的内容匹配,其中,所述白名单中预先存储有非攻击对象的名称;
当确定程序样本所比较的对象与预先存储的白名单中的内容不匹配时,确定程序样本的行为是可疑行为。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310081869.9A CN103116724B (zh) | 2013-03-14 | 2013-03-14 | 探测程序样本危险行为的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310081869.9A CN103116724B (zh) | 2013-03-14 | 2013-03-14 | 探测程序样本危险行为的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103116724A CN103116724A (zh) | 2013-05-22 |
CN103116724B true CN103116724B (zh) | 2015-08-12 |
Family
ID=48415097
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310081869.9A Active CN103116724B (zh) | 2013-03-14 | 2013-03-14 | 探测程序样本危险行为的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103116724B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP3635603A4 (en) * | 2017-05-30 | 2021-03-03 | Cyemptive Technologies, Inc. | REAL TIME DETECTION AND PROTECTION AGAINST MALWARE AND STEGANOGRAPHY IN ONE CORE MODE |
CN109522714A (zh) * | 2018-09-05 | 2019-03-26 | 航天信息股份有限公司 | 一种基于外挂防护软件对目标软件进行防护的方法及*** |
CN109939443A (zh) * | 2019-03-27 | 2019-06-28 | 努比亚技术有限公司 | 防止游戏作弊的方法、装置、终端及计算机可读存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101034974A (zh) * | 2007-03-29 | 2007-09-12 | 北京启明星辰信息技术有限公司 | 基于时间序列和事件序列的关联分析攻击检测方法和装置 |
CN102156834B (zh) * | 2011-04-18 | 2013-04-24 | 北京思创银联科技股份有限公司 | 实现进程防杀的方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI435236B (zh) * | 2010-12-15 | 2014-04-21 | Inst Information Industry | 惡意程式偵測裝置、惡意程式偵測方法及其電腦程式產品 |
-
2013
- 2013-03-14 CN CN201310081869.9A patent/CN103116724B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101034974A (zh) * | 2007-03-29 | 2007-09-12 | 北京启明星辰信息技术有限公司 | 基于时间序列和事件序列的关联分析攻击检测方法和装置 |
CN102156834B (zh) * | 2011-04-18 | 2013-04-24 | 北京思创银联科技股份有限公司 | 实现进程防杀的方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103116724A (zh) | 2013-05-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106709325B (zh) | 一种监控程序的方法及装置 | |
US8763128B2 (en) | Apparatus and method for detecting malicious files | |
CN103077353B (zh) | 主动防御恶意程序的方法和装置 | |
US7913305B2 (en) | System and method for detecting malware in an executable code module according to the code module's exhibited behavior | |
KR101265173B1 (ko) | 비실행 파일 검사 장치 및 방법 | |
CN107992751B (zh) | 一种基于分支行为模型的实时威胁检测方法 | |
US20120151586A1 (en) | Malware detection using feature analysis | |
Trickel et al. | Everyone is different: Client-side diversification for defending against extension fingerprinting | |
CN103473501A (zh) | 一种基于云安全的恶意软件追踪方法 | |
CN103279707A (zh) | 一种用于主动防御恶意程序的方法、设备及*** | |
CN112380542B (zh) | 基于错误场景生成的物联网固件漏洞挖掘方法及*** | |
CN104331663A (zh) | web shell的检测方法以及web服务器 | |
CN102999720A (zh) | 程序鉴别方法和*** | |
CN103559447A (zh) | 一种基于病毒样本特征的检测方法、检测装置及检测*** | |
CN103810428A (zh) | 一种宏病毒检测方法及装置 | |
CN105117644A (zh) | 采集Android外挂程序方法及*** | |
CN103679027A (zh) | 内核级恶意软件查杀的方法和装置 | |
EP3800570A1 (en) | Methods and systems for genetic malware analysis and classification using code reuse patterns | |
CN103116724B (zh) | 探测程序样本危险行为的方法及装置 | |
CN103530561A (zh) | 防止木马程序基于社会工程学攻击方法和装置 | |
Ladisa et al. | Towards the detection of malicious java packages | |
CN105205398A (zh) | 一种基于apk加壳软件动态行为的查壳方法 | |
CN103713945B (zh) | 游戏的识别方法和装置 | |
CN109472135B (zh) | 一种检测进程注入的方法、装置及存储介质 | |
CN110135163A (zh) | 一种基于目标应用的安全检测方法、装置及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220725 Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015 Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd. Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park) Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd. Patentee before: Qizhi software (Beijing) Co.,Ltd. |
|
TR01 | Transfer of patent right |