CN108959938B - 检测漏洞利用的方法、装置、存储介质及设备 - Google Patents
检测漏洞利用的方法、装置、存储介质及设备 Download PDFInfo
- Publication number
- CN108959938B CN108959938B CN201810732942.7A CN201810732942A CN108959938B CN 108959938 B CN108959938 B CN 108959938B CN 201810732942 A CN201810732942 A CN 201810732942A CN 108959938 B CN108959938 B CN 108959938B
- Authority
- CN
- China
- Prior art keywords
- software
- behavior
- data
- vulnerability
- chain
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请实施例公开了一种检测漏洞利用的方法、装置、存储介质及设备,属于计算机技术领域。所述方法包括:获取软件在内存中运行时产生的运行数据;根据所述运行数据确定所述软件的行为链,所述行为链是所述软件在内存中运行时按照时间顺序产生的行为的集合;检测所述行为链中是否存在超出预期的行为;当所述行为链中存在超出预期的行为时,确定所述软件中存在漏洞且该漏洞被利用。本申请实施例解决了软件中未被发现的漏洞被攻击者利用的问题,达到了提高软件的安全性的效果。
Description
技术领域
本申请实施例涉及计算机技术领域,特别涉及一种检测漏洞利用的方法、装置、存储介质及设备。
背景技术
漏洞是指软件的实现上存在的缺陷。攻击者可以在未授权的情况下,利用漏洞访问或破坏系统。由于漏洞被利用后可能会对系统造成损失,所以,需要检测漏洞是否被利用。
相关技术中,提供软件的厂商会对用户在使用软件的过程中反馈的漏洞进行记录,再生成相应的安全更新文件进行发布,终端在获取到发布的安全更新文件后,运行安全更新文件来修复软件中相应的漏洞。
虽然厂商可以发布安全更新文件来修复软件中已经被发现的漏洞,但是,软件中未被发现的漏洞仍然可能会被攻击者利用。
发明内容
本申请实施例提供了一种检测漏洞利用的方法、装置、存储介质及设备,用于解决软件中未被发现的漏洞被攻击者利用的问题。所述技术方案如下:
一方面,提供了一种检测漏洞利用的方法,所述方法包括:
获取软件在内存中运行时产生的运行数据;
根据所述运行数据确定所述软件的行为链,所述行为链是所述软件在内存中运行时按照时间顺序产生的行为的集合;
检测所述行为链中是否存在超出预期的行为;
当所述行为链中存在超出预期的行为时,确定所述软件中存在漏洞且所述漏洞被利用。
一方面,提供了一种检测漏洞利用的装置,其特征在于,所述装置包括:
获取模块,用于获取软件在内存中运行时产生的运行数据;
确定模块,用于根据所述获取模块得到的所述运行数据确定所述软件的行为链,所述行为链是所述软件在内存中运行时按照时间顺序产生的行为的集合;
检测模块,用于检测所述确定模块得到的所述行为链中是否存在超出预期的行为;
所述确定模块,还用于在所述检测模块检测出所述行为链中存在超出预期的行为时,确定所述软件中存在漏洞且所述漏洞被利用。
一方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上所述的检测漏洞利用的方法。
一方面,提供了一种检测漏洞利用的设备,所述检测漏洞利用的设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如上所述的检测漏洞利用的方法。
本申请实施例提供的技术方案的有益效果至少包括:
当漏洞被利用时,可以控制软件执行一些软件不应该产生的行为,即超出预期的行为,所以,通过分析软件的行为链,在确定行为链中存在超出预期的行为时,即可确定软件中的漏洞被利用。由于技术原理相同的漏洞具有相同的行为链,所以,根据行为链确定漏洞是否被利用可以识别出一系列具有相同技术原理的漏洞,即使软件中存在未被发现的漏洞,只要该漏洞的技术原理与已被发现的漏洞的技术原理相同,即可识别出该漏洞,从而解决了软件中未被发现的漏洞被攻击者利用的问题,达到了提高软件的安全性的效果。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请一个实施例提供的检测漏洞利用的方法的方法流程图;
图2是本申请另一实施例提供的检测漏洞利用的方法的方法流程图;
图3是本申请另一实施例提供的检测Flash中漏洞利用的过程的示意图;
图4是本申请另一实施例提供的检测漏洞利用的方法的方法流程图;
图5是本申请另一实施例提供的检测漏洞利用的方法的方法流程图;
图6是本申请另一实施例提供的检测漏洞利用的方法的方法流程图;
图7是本申请另一实施例提供的检测漏洞利用的方法的方法流程图;
图8是本申请另一实施例提供的检测公式编辑器中漏洞利用的过程的示意图;
图9是本申请另一实施例提供的检测漏洞利用的方法的方法流程图;
图10是本申请一个实施例提供的检测漏洞利用的装置的结构框图;
图11是本申请再一实施例提供的终端的结构框图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
在对本申请实施例进行详细地解释说明之前,先对本申请实施例涉及到的名词进行解释。
漏洞利用:漏洞利用可以是一段对漏洞如何利用的详细说明,或者,也可以是一段演示的漏洞攻击代码。根据漏洞利用,黑客可以很容易利用软件中的漏洞攻击系统。
运行数据:软件在内存中运行时会在内存中缓存数据,本实施例中将这些数据称为运行数据。本实施例中,运行数据包括但不限于:软件的栈内调用函数的输入输出数据、软件读写的数据、软件调用的参数、栈或代码段中的指令执行序列、非代码段中被执行的指令。
代码段:代码段用于存储软件可以执行的指令。
非代码段:非代码段用于存储除指令之外的数据,包括资源数据、字符串数据等等,本实施例不作限定。
行为链:行为链是软件在内存中运行时按照时间顺序产生的行为的集合。行为链中的行为可以由软件调用一个调用函数进行数据的输入输出产生,也可以由软件读写数据产生,也可以由软件调用参数产生,也可以由软件执行指令执行序列中的一个指令产生,也可以由软件执行非代码段中的指令产生。
下面对本申请实施例的应用场景进行说明。
在介绍应用场景之前,先对漏洞的两种修复方式进行介绍。第一种修复方式是终端运行安全更新文件来修改软件的二进制文件,以达到修复漏洞的目的。第二种修复方式是终端阻断软件中漏洞的行为来阻止漏洞被利用,即跳过漏洞而不是修改二进制文件,以达到修复漏洞的目的。本申请实施例涉及的是第二种修复方式,该第二种修复方式也可以称为主防技术。
本申请实施例应用于第三方的漏洞防护场景中,可以通过第三方在内存中获取软件的运行数据,再根据运行数据确定软件的行为链,再根据行为链确定软件中的漏洞是否被利用,在漏洞被利用时跳过漏洞,从而在不改变原有的二进制文件的基础上,通过主防技术对软件的漏洞进行防护,从而提高软件的安全性。
在一种可能的应用场景中,可以将本申请实施例包装成一种防御技术,将该防御技术部署在第三方的安全软件中,从而为第三方的安全软件的用户群提供有效的漏洞防护效果。这里,可以将防御技术命名为“女娲石”,此时第三方的安全软件可以是xx电脑管家、xx安全卫士、xx毒霸。
本申请实施例中,由于技术原理相同的漏洞具有相同的行为链,所以,根据行为链确定漏洞是否被利用可以识别出一系列具有相同技术原理的漏洞,即使软件中存在未被发现的漏洞,只要该漏洞的技术原理与已被发现的漏洞的技术原理相同,即可识别出该漏洞,从而可以有效识别出一系列技术原理相同的漏洞。另外,由于不需要安装安全更新文件,所以,对于一些无法安装安全更新文件的软件来说,也可以得到漏洞防护的目的。且由于本申请实施例不改变二进制文件,不但可以有效的防护特定环境下的漏洞攻击,还可以防护不同厂商、不同环境下存在的相似漏洞。
请参考图1,其示出了本申请一个实施例提供的检测漏洞利用的方法的方法流程图,该检测漏洞利用的方法可以应用于终端中,该终端可以是智能电视、智能手机或者平板电脑等等。该检测漏洞利用的方法,包括:
步骤101,获取软件在内存中运行时产生的运行数据。
运行数据详见上述描述,此处不作赘述。
其中,终端可以在软件启动时开始获取运行数据,也可以在被触发时获取运行数据,本实施例不对获取运行数据的时机作限定。
步骤102,根据运行数据确定软件的行为链,该行为链是软件在内存中运行时按照时间顺序产生的行为的集合。
软件在内存中运行时会产生一些行为,这些行为会体现为运行数据缓存在内存中,所以,终端可以根据运行数据确定软件的行为链。
比如,软件的运行数据分别是:一个内存区域的状态修改为可读可写可执行状态、调用下载API(Application Programming Interface,应用程序接口)从网络上下载一个程序、启动下载的程序,则可以得到软件的行为链为:修改内存区域的状态、下载程序、启动程序。
步骤103,检测行为链中是否存在超出预期的行为。
预期的行为是指软件在漏洞未被利用时产生的行为,超出预期的行为是漏洞被利用时产生的行为。
比如,软件是计算器且计算器产生了启动打印机的行为,由于通常计算器是用来进行数值计算的,并不需要打印计算结果,所以,若计算器产生了启动打印机的行为,则可以将启动打印机的行为称为超出预期的行为。
步骤104,当行为链中存在超出预期的行为时,确定软件中存在漏洞且该漏洞被利用。
当确定软件中存在漏洞且该漏洞被利用时,终端可以禁止软件执行该超出预期的行为,以跳过漏洞;和/或,终端可以关闭软件,以避免漏洞被利用时对系统造成的破坏。
综上所述,本申请实施例提供的检测漏洞利用的方法,当漏洞被利用时,可以控制软件执行一些软件不应该产生的行为,即超出预期的行为,所以,通过分析软件的行为链,在确定行为链中存在超出预期的行为时,即可确定软件中的漏洞被利用。由于技术原理相同的漏洞具有相同的行为链,所以,根据行为链确定漏洞是否被利用可以识别出一系列具有相同技术原理的漏洞,即使软件中存在未被发现的漏洞,只要该漏洞的技术原理与已被发现的漏洞的技术原理相同,即可识别出该漏洞,从而解决了软件中未被发现的漏洞被攻击者利用的问题,达到了提高软件的安全性的效果。
本申请实施例中运行数据包括但不限于:软件的栈内调用函数的输入输出数据、软件读写的数据、软件调用的参数、栈或代码段中的指令执行序列、非代码段中被执行的指令,下面在以五个实施例分别对上述五种运行数据进行解释说明。
请参考图2,其示出了本申请另一实施例提供的检测漏洞利用的方法的方法流程图,该检测漏洞利用的方法可以应用于终端中,该终端可以是智能电视、智能手机或者平板电脑等等,本实施例中的运行数据包括软件的栈内调用函数的输入输出数据。该检测漏洞利用的方法,包括:
步骤201,在预设指令被触发时,获取软件在内存中运行时产生的栈内调用函数的输入输出数据,预设指令是软件中的漏洞被利用时所执行的指令。
开发人员可以预先对漏洞被利用时所执行的指令进行分析,将漏洞被利用时执行频率超过预设阈值的指令作为预设指令。比如,漏洞被利用时大多都需要从网络下载恶意程序,则可以将下载指令作为预设指令。或者,漏洞被利用时大多都需要启动恶意程序,则可以将程序启动指令作为预设指令。当然,开发人员还可以分析出其他指令作为预设指令,此处不作限定。
在预设指令被触发时,终端获取运行数据,此时的运行数据是栈内调用函数的输入输出数据。这里的输入输出数据包括输入数据和输出数据。
本实施例中,终端可以通过栈回溯的方式采集分析当前软件的所运行的栈内的调用函数序列,再读取调用函数序列中每个调用函数的输入输出数据。其中,调用函数序列是按照调用顺序排列的多个调用函数的集合。
步骤202,根据栈内调用函数的输入输出数据确定软件的行为链,该行为链是软件在内存中运行时按照时间顺序产生的行为的集合。
其中,行为链中的行为由软件调用一个调用函数进行数据输入输出产生,则终端可以根据调用函数序列中的调用函数确定各个行为,再按照各个调用函数的排序对各个行为进行排序,得到行为链。
比如,状态修改函数中输入数据为可读可写可执行状态、下载函数中输入数据为下载的程序、启动函数中输入数据为程序的名称,则可以得到软件的行为链为:修改内存区域的状态、下载程序、启动程序。
步骤203,检测调用函数的输入输出数据是否是漏洞行为特征数据,该漏洞行为特征数据是软件中的漏洞被利用时产生的行为特征数据。
其中,检测调用函数的输入输出数据是否是漏洞行为特征数据,可以包括如下几个子步骤:
步骤2031,当调用函数的输入输出数据是预设数据时,通过回溯算法确定调用该调用函数的软件,并获取预设数据对应的软件白名单,该软件白名单用于记录漏洞未被利用时调用该调用函数进行预设数据的输入或输出的软件。
预设数据是既能够在漏洞被利用时调用一个调用函数进行输入或输出的数据,也能够在漏洞未被利用时调用一个调用函数进行输入或输出的数据。比如,除了软件中的漏洞被利用时可能调用状态修改函数将内存区域设置为可读可写可执行状态,诸如Office、Flash等软件在漏洞未被利用时也可能调用状态修改函数将内存区域设置为可读可写可执行状态,所以,可以将调用状态修改函数将内存区域设置为可读可写可执行状态的数据称为预设数据。
本实施例中,开发人员可以预先对调用函数的输入输出数据进行分析,将既可以在漏洞未被利用时进行输入或输出,也可以在漏洞被利用时进行输入或输出的数据作为预设数据进行存储。可选的,开发人员还可以对漏洞未被利用时输入或输出预设数据的软件进行记录,得到软件白名单。
终端可以将调用函数的输入输出数据与预先存储的预设数据进行比较,当该输入输出数据是预设数据时,执行步骤2031;当该输入输出数据不是预设数据时,确定输入输出数据不是漏洞行为特征数据,继续执行步骤201。
本实施例中,当输入输出数据是预设数据时,终端可以确定此时调用该调用函数进行预设数据的输入或输出的软件,根据该软件确定预设数据是漏洞未被利用时进行输入或输出的数据,还是漏洞被利用时进行输入或输出的数据。
其中,终端可以通过回溯算法确定此时调用该调用函数进行预设数据的输入或输出的软件。当输入输出数据是栈内的数据时,该回溯算法可以是栈回溯算法,本实施例不作限定。
步骤2032,检测软件是否位于软件白名单中。
步骤2033,当软件不在软件白名单中时,确定调用函数的输入输出数据是漏洞行为特征数据。
当软件在软件白名单中时,继续执行步骤201;当软件不在软件白名单中时,执行步骤2033。
步骤204,当调用函数的输入输出数据是漏洞行为特征数据时,确定存在输入输出数据异常的调用函数。
步骤205,当存在输入输出数据异常的调用函数时,确定行为链中存在超出预期的行为。
超出预期的行为是指软件在漏洞未被利用时不会产生的行为,即该超出预期的行为是漏洞被利用时产生的行为。
步骤206,当行为链中存在超出预期的行为时,确定软件中存在漏洞被利用。
步骤207,禁止软件执行超出预期的行为;和/或,关闭软件。
当确定软件中存在漏洞被利用时,终端可以禁止软件执行该超出预期的行为,以跳过漏洞;和/或,终端可以关闭软件,以避免漏洞被利用时对系统造成的破坏。
可选的,终端还可以对与超出预期的行为相关的异常数据进行上报,以便于开发人员对该异常数据进行排查分析,从而在软件中定位漏洞。
请参考图3,以软件是Flash为例,根据开发人员的分析可知,当Flash中的漏洞被利用时,Flash的行为链可以包括:通过VirtualProtectEx函数将Shellcode区域的状态设置为可读可写可执行状态,通过URLDownloadToFile函数从网络下载恶意程序,通过WinExec函数或ShellExecute函数或CreateProcess函数启动恶意程序,则终端可以识别其中任一超出预期的行为,即可对其进行阻断,从而避免漏洞被利用。
综上所述,本申请实施例提供的检测漏洞利用的方法,当漏洞被利用时,可以控制软件执行一些软件不应该产生的行为,即超出预期的行为,所以,通过分析软件的行为链,在确定行为链中存在超出预期的行为时,即可确定软件中的漏洞被利用。由于技术原理相同的漏洞具有相同的行为链,所以,根据行为链确定漏洞是否被利用可以识别出一系列具有相同技术原理的漏洞,即使软件中存在未被发现的漏洞,只要该漏洞的技术原理与已被发现的漏洞的技术原理相同,即可识别出该漏洞,从而解决了软件中未被发现的漏洞被攻击者利用的问题,达到了提高软件的安全性的效果。
请参考图4,其示出了本申请另一实施例提供的检测漏洞利用的方法的方法流程图,该检测漏洞利用的方法可以应用于终端中,该终端可以是智能电视、智能手机或者平板电脑等等,本实施例中的运行数据包括软件读写的数据。该检测漏洞利用的方法,包括:
步骤401,获取软件在内存中运行时产生的运行数据。
步骤402,根据运行数据确定软件的行为链,行为链是软件在内存中运行时按照时间顺序产生的行为的集合。
其中,步骤401-402详见步骤101-102中的描述,此处不作赘述。
步骤403,当运行数据是软件读写的数据时,确定行为链中存在读写数据的行为。
软件读写的数据可以是本地的数据,也可以是网络中的数据,本实施例不作限定。
步骤404,检测软件是否具有读写数据的权限。
终端在安装软件时会为软件分配一些权限,则终端可以读取安装软件时为该软件分配的权限,再检测该软件是否具有读写数据的权限。当软件具有读写数据的权限时,继续执行步骤401;当软件不具有读写数据的权限时,执行步骤405。
步骤405,当软件不具有读写数据的权限时,确定行为链中存在超出预期的行为。
当软件不具有读写数据的权限时,说明该读写数据的行为是超出预期的行为。此时可能是漏洞被利用,以指示软件从网络下载恶意程序,或者从本地读取用户的敏感数据上传给服务器。
步骤406,当行为链中存在超出预期的行为时,确定软件中存在漏洞被利用。
步骤407,禁止软件执行超出预期的行为;和/或,关闭软件。
当确定软件中存在漏洞被利用时,终端可以禁止软件执行该超出预期的行为,以跳过漏洞;和/或,终端可以关闭软件,以避免漏洞被利用时对系统造成的破坏。
可选的,终端还可以对与超出预期的行为相关的异常数据进行上报,以便于开发人员对该异常数据进行排查分析,从而在软件中定位漏洞。
综上所述,本申请实施例提供的检测漏洞利用的方法,当漏洞被利用时,可以控制软件执行一些软件不应该产生的行为,即超出预期的行为,所以,通过分析软件的行为链,在确定行为链中存在超出预期的行为时,即可确定软件中的漏洞被利用。由于技术原理相同的漏洞具有相同的行为链,所以,根据行为链确定漏洞是否被利用可以识别出一系列具有相同技术原理的漏洞,即使软件中存在未被发现的漏洞,只要该漏洞的技术原理与已被发现的漏洞的技术原理相同,即可识别出该漏洞,从而解决了软件中未被发现的漏洞被攻击者利用的问题,达到了提高软件的安全性的效果。
请参考图5,其示出了本申请另一实施例提供的检测漏洞利用的方法的方法流程图,该检测漏洞利用的方法可以应用于终端中,该终端可以是智能电视、智能手机或者平板电脑等等,本实施例中的运行数据包括软件调用的参数。该检测漏洞利用的方法,包括:
步骤501,获取软件在内存中运行时产生的运行数据。
步骤502,根据运行数据确定软件的行为链,行为链是软件在内存中运行时按照时间顺序产生的行为的集合。
其中,步骤501-502详见步骤101-102中的描述,此处不作赘述。
步骤503,当运行数据是软件调用的参数时,确定行为链中存在调用参数的行为。
本步骤中的参数可以是代码或程序,本实施例不作限定。
其中,终端可以通过命令行等方式调用参数,本实施例不对调用方式作限定。
步骤504,获取软件的参数白名单,该参数白名单用于记录软件在漏洞未被利用时所调用的参数。
开发人员可以对软件在各个运行环境中的调用参数进行分析,将其中漏洞未被利用时所调用的参数记录在参数白名单中。
步骤505,检测调用参数的行为中所调用的参数是否位于参数白名单中。
当调用参数的行为中所调用的参数位于参数白名单中时,继续执行步骤501;当调用参数的行为中所调用的参数不在参数白名单中时,执行步骤506。
步骤506,当调用参数的行为中所调用的参数不在参数白名单中时,确定行为链中存在超出预期的行为。
仍然以软件是计算器为例,当参数是打印机时,由于通常计算器是用来进行数值计算的,并不需要打印计算结果,所以,若计算器产生了启动打印机的行为,则可以将启动打印机的行为称为超出预期的行为。
步骤507,当行为链中存在超出预期的行为时,确定软件中存在漏洞被利用。
步骤508,禁止软件执行超出预期的行为;和/或,关闭软件。
当确定软件中存在漏洞被利用时,终端可以禁止软件执行该超出预期的行为,以跳过漏洞;和/或,终端可以关闭软件,以避免漏洞被利用时对系统造成的破坏。
可选的,终端还可以对与超出预期的行为相关的异常数据进行上报,以便于开发人员对该异常数据进行排查分析,从而在软件中定位漏洞。
综上所述,本申请实施例提供的检测漏洞利用的方法,当漏洞被利用时,可以控制软件执行一些软件不应该产生的行为,即超出预期的行为,所以,通过分析软件的行为链,在确定行为链中存在超出预期的行为时,即可确定软件中的漏洞被利用。由于技术原理相同的漏洞具有相同的行为链,所以,根据行为链确定漏洞是否被利用可以识别出一系列具有相同技术原理的漏洞,即使软件中存在未被发现的漏洞,只要该漏洞的技术原理与已被发现的漏洞的技术原理相同,即可识别出该漏洞,从而解决了软件中未被发现的漏洞被攻击者利用的问题,达到了提高软件的安全性的效果。
请参考图6,其示出了本申请另一实施例提供的检测漏洞利用的方法的方法流程图,该检测漏洞利用的方法可以应用于终端中,该终端可以是智能电视、智能手机或者平板电脑等等,本实施例中的运行数据包括栈或代码段中的指令执行序列。该检测漏洞利用的方法,包括:
步骤601,获取软件在内存中运行时产生的运行数据。
步骤602,根据运行数据确定软件的行为链,行为链是软件在内存中运行时按照时间顺序产生的行为的集合。
其中,步骤601-602详见步骤101-102中的描述,此处不作赘述。
步骤603,当运行数据是栈或代码段中的指令执行序列,且行为链中的行为是由软件执行指令执行序列中的一条指令产生时,检测指令执行序列中是否存在排序关系异常的指令。
其中,排序关系异常的指令是指指令的排序与漏洞被利用时指令的排序相同。假设漏洞被利用时先修改内存区域的状态、再下载程序、最后启动程序,若此时终端读取到的指令执行序列中指令的排序为:修改内存区域的状态指令、下载程序指令、启动程序指令,则可以确定指令执行序列中存在排序关系异常的指令。
本实施例中,开发人员可以预先对漏洞被利用时所执行的各个指令的排序关系进行分析,得到排序关系异常的指令,终端可以预先获取这些排序关系存在异常的指令。在终端从栈或代码段中读取到指令执行序列后,可以根据预先存储的指令检测该指令执行序列中是否存在排序关系异常的指令。当指令执行序列中不存在排序关系异常的指令时,继续执行步骤601;当指令执行序列中存在排序关系异常的指令时,执行步骤604。
步骤604,当指令执行序列中存在排序关系异常的指令时,确定行为链中存在超出预期的行为。
步骤605,当行为链中存在超出预期的行为时,确定软件中存在漏洞被利用。
步骤606,禁止软件执行超出预期的行为;和/或,关闭软件。
当确定软件中存在漏洞被利用时,终端可以禁止软件执行该超出预期的行为,以跳过漏洞;和/或,终端可以关闭软件,以避免漏洞被利用时对系统造成的破坏。
可选的,终端还可以对与超出预期的行为相关的异常数据进行上报,以便于开发人员对该异常数据进行排查分析,从而在软件中定位漏洞。
综上所述,本申请实施例提供的检测漏洞利用的方法,当漏洞被利用时,可以控制软件执行一些软件不应该产生的行为,即超出预期的行为,所以,通过分析软件的行为链,在确定行为链中存在超出预期的行为时,即可确定软件中的漏洞被利用。由于技术原理相同的漏洞具有相同的行为链,所以,根据行为链确定漏洞是否被利用可以识别出一系列具有相同技术原理的漏洞,即使软件中存在未被发现的漏洞,只要该漏洞的技术原理与已被发现的漏洞的技术原理相同,即可识别出该漏洞,从而解决了软件中未被发现的漏洞被攻击者利用的问题,达到了提高软件的安全性的效果。
请参考图7,其示出了本申请另一实施例提供的检测漏洞利用的方法的方法流程图,该检测漏洞利用的方法可以应用于终端中,该终端可以是智能电视、智能手机或者平板电脑等等,本实施例中的运行数据包括非代码段中的指令,终端可以通过多种检测方法确定行为链中是否存在执行非代码段中的指令所产生的行为,本实施例以DEP检测方法为例进行说明。该检测漏洞利用的方法,包括:
步骤701,对软件开启DEP。
一些漏洞利用会在非代码段填充一些可执行的指令,进而执行这些指令以破坏系统。本实施例可以对软件开启DEP(Data Execution Prevention,数据执行保护),再利用DEP的特性,实时监控内存中非代码段的数据利用情况,一旦发现非代码段中的数据有被当作指令执行的情况,则立即阻断。其中,DEP用于识别软件执行非代码段中的指令的行为,非代码段用于存储除指令之外的数据。
步骤702,注册异常处理函数。
异常处理函数是在DEP识别软件执行非代码段中的指令的行为时调用的函数。本实施例中,开发人员可以根据自己的需求注册异常处理函数的内容,从而在DEP识别出软件执行非代码段中的指令的行为时,通过异常处理函数进行异常处理。比如,异常处理函数用于在DEP识别出执行非代码段中的指令的行为时,禁止软件执行超出预期的行为,和/或,关闭软件;或者,异常处理函数用于在DEP识别出执行非代码段中的指令的行为时,对与超出预期的行为相关的异常数据进行上报,本实施例不限定异常处理函数的内容。
步骤703,获取软件在内存中运行时产生的运行数据。
此时的运行数据可以是从堆数据中获取的非代码段中被执行的指令,也可以是从其他地址获取的非代码段中被执行的指令,本实施例不作限定。
步骤704,根据运行数据确定软件的行为链,行为链是软件在内存中运行时按照时间顺序产生的行为的集合。
步骤705,通过DEP检测行为链中是否存在执行非代码段中的指令所产生的行为。
本实施例中,可以通过DEP检测步骤703中的指令是否来源于非代码段中,当该指令来源于非代码段中时,确定存在执行非代码段中的指令所产生的行为,执行步骤706;当该指令来源于代码段中时,确定不存在执行非代码段中的指令所产生的行为,继续执行步骤703。
步骤706,当行为链中存在执行非代码段中的指令所产生的行为时,确定行为链中存在超出预期的行为。
步骤707,当行为链中存在超出预期的行为时,确定软件中存在漏洞被利用。
步骤708,通过异常处理函数在DEP识别出执行非代码段中的指令的行为时,禁止软件执行超出预期的行为,和/或,关闭软件。
步骤709,通过异常处理函数对与超出预期的行为相关的异常数据进行上报。
本实施例中,还可以在异常处理函数中部署主防监控点,在DEP识别出执行非代码段中的指令所产生的行为时,对与该超出预期的行为相关的异常数据进行上报,以便于开发人员对该异常数据进行排查分析,从而在软件中定位漏洞。
请参考图8,其中,开启DEP可以是SetProcessDEPPolicy,注册异常处理函数可以是AddVectoredExceptionHandler,禁止软件执行该行为可以是md/c taskkill/F/PID%d。
综上所述,本申请实施例提供的检测漏洞利用的方法,当漏洞被利用时,可以控制软件执行一些软件不应该产生的行为,即超出预期的行为,所以,通过分析软件的行为链,在确定行为链中存在超出预期的行为时,即可确定软件中的漏洞被利用。由于技术原理相同的漏洞具有相同的行为链,所以,根据行为链确定漏洞是否被利用可以识别出一系列具有相同技术原理的漏洞,即使软件中存在未被发现的漏洞,只要该漏洞的技术原理与已被发现的漏洞的技术原理相同,即可识别出该漏洞,从而解决了软件中未被发现的漏洞被攻击者利用的问题,达到了提高软件的安全性的效果。
上述图2、图4-7所示的实施例分别对应于一种运行数据,本实施例中,终端还可以读取至少两种运行数据,通过对至少两种运行数据的监控来进行漏洞防护。需要说明的是,在终端监控至少两种运行数据时,本实施例不限定检测该至少两种运行数据的先后顺序。请参考图9,其示出了监控五种运行数据时检测漏洞利用的方法,图9中将软件的栈内调用函数的输入输出数据和软件读写的数据统称为异常流量。
请参考图10,其示出了本申请一个实施例提供的检测漏洞利用的装置的结构框图,该检测漏洞利用的装置可以应用于终端中,该终端可以是智能电视、智能手机或者平板电脑等等。该检测漏洞利用的装置,包括:
获取模块1010,用于获取软件在内存中运行时产生的运行数据;
确定模块1020,用于根据获取模块1010得到的运行数据确定软件的行为链,行为链是软件在内存中运行时按照时间顺序产生的行为的集合;
检测模块1030,用于检测确定模块1020得到的行为链中是否存在超出预期的行为;
确定模块1020,还用于在检测模块1030检测出行为链中存在超出预期的行为时,确定软件中存在漏洞且该漏洞被利用。
可选的,检测模块1030,还用于:
当运行数据包括软件的栈内调用函数的输入输出数据,且行为链中的行为是由软件调用一个调用函数进行数据输入输出产生时,检测是否存在输入输出数据异常的调用函数;
当存在输入输出数据异常的调用函数时,确定行为链中存在超出预期的行为。
可选的,检测模块1030,还用于:
检测调用函数的输入输出数据是否是漏洞行为特征数据,漏洞行为特征数据是软件中的漏洞被利用时产生的行为特征数据;
当调用函数的输入输出数据是漏洞行为特征数据时,确定存在输入输出数据异常的调用函数。
可选的,检测模块1030,还用于:
当调用函数的输入输出数据是预设数据时,通过回溯算法确定调用调用函数的软件,并获取预设数据对应的软件白名单,软件白名单用于记录漏洞未被利用时调用调用函数进行预设数据的输入或输出的软件,预设数据是既能够在漏洞被利用时调用调用函数进行输入或输出的数据,也能够在漏洞未被利用时调用调用函数进行输入或输出的数据;
检测软件是否位于软件白名单中;
当软件不在软件白名单中时,确定调用函数的输入输出数据是漏洞行为特征数据。
可选的,输入输出数据是预设指令被触发时获取的,预设指令是软件中的漏洞被利用时所执行的指令。
可选的,检测模块1030,还用于:
当运行数据包括软件读写的数据时,确定行为链中存在读写数据的行为;
检测软件是否具有读写数据的权限;
当软件不具有读写数据的权限时,确定行为链中存在超出预期的行为。
可选的,检测模块1030,还用于:
当运行数据包括软件调用的参数时,确定行为链中存在调用参数的行为;
获取软件的参数白名单,参数白名单用于记录软件在漏洞未被利用时所调用的参数;
检测调用参数的行为中所调用的参数是否位于参数白名单中;
当调用参数的行为中所调用的参数不在参数白名单中时,确定行为链中存在超出预期的行为。
可选的,检测模块1030,还用于:
当运行数据包括栈或代码段中的指令执行序列,且行为链中的行为是由软件执行指令执行序列中的一条指令产生时,检测指令执行序列中是否存在排序关系异常的指令;
当指令执行序列中存在排序关系异常的指令时,确定行为链中存在超出预期的行为。
可选的,该装置还包括:
禁止模块,用于在确定模块1020确定软件中存在漏洞被利用之后,禁止软件执行超出预期的行为;和/或,
关闭模块,用于在确定模块1020确定软件中存在漏洞被利用之后,关闭软件。
可选的,检测模块1030,还用于:
当运行数据包括非代码段中被执行的指令时,检测行为链中是否存在执行非代码段中的指令所产生的行为,非代码段用于存储除指令之外的数据;
当行为链中存在执行非代码段中的指令所产生的行为时,确定行为链中存在超出预期的行为。
可选的,该装置还包括:
开启模块,用于在获取模块1010获取软件在内存中运行时产生的运行数据之前,对软件开启数据执行保护DEP,DEP用于识别软件执行非代码段中的指令的行为;
检测模块1030,还用于:通过DEP检测行为链中是否存在执行非代码段中的指令所产生的行为;当行为链中存在执行非代码段中的指令所产生的行为时,确定行为链中存在超出预期的行为。
可选的,该装置还包括:
注册模块,用于在开启模块对软件开启数据执行保护DEP之后,注册异常处理函数,异常处理函数用于在DEP识别出执行非代码段中的指令的行为时,禁止软件执行超出预期的行为,和/或,关闭软件。
可选的,该装置还包括:
上报模块,用于在注册模块注册异常处理函数之后,当DEP识别出执行非代码段中的指令所产生的行为时,通过异常处理函数对与超出预期的行为相关的异常数据进行上报。
综上所述,本申请实施例提供的检测漏洞利用的装置,当漏洞被利用时,可以控制软件执行一些软件不应该产生的行为,即超出预期的行为,所以,通过分析软件的行为链,在确定行为链中存在超出预期的行为时,即可确定软件中的漏洞被利用。由于技术原理相同的漏洞具有相同的行为链,所以,根据行为链确定漏洞是否被利用可以识别出一系列具有相同技术原理的漏洞,即使软件中存在未被发现的漏洞,只要该漏洞的技术原理与已被发现的漏洞的技术原理相同,即可识别出该漏洞,从而解决了软件中未被发现的漏洞被攻击者利用的问题,达到了提高软件的安全性的效果。
图11示出了本申请一个示例性实施例提供的终端1100的结构框图。该终端1100可以是便携式移动终端,比如:智能手机、平板电脑、MP3播放器(Moving Picture ExpertsGroup Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving PictureExperts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端1100还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端1100包括有:处理器1101和存储器1102。
处理器1101可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1101可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1101也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1101可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器1101还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器1102可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1102还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1102中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1101所执行以实现本申请中方法实施例提供的检测漏洞利用的方法。
在一些实施例中,终端1100还可选包括有:外围设备接口1103和至少一个外围设备。处理器1101、存储器1102和外围设备接口1103之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与外围设备接口1103相连。具体地,外围设备包括:射频电路1104、触摸显示屏1105、摄像头1106、音频电路1107、定位组件1108和电源1109中的至少一种。
外围设备接口1103可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器1101和存储器1102。在一些实施例中,处理器1101、存储器1102和外围设备接口1103被集成在同一芯片或电路板上;在一些其他实施例中,处理器1101、存储器1102和外围设备接口1103中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路1104用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1104通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1104将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1104包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1104可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1104还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏1105用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1105是触摸显示屏时,显示屏1105还具有采集在显示屏1105的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1101进行处理。此时,显示屏1105还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1105可以为一个,设置终端1100的前面板;在另一些实施例中,显示屏1105可以为至少两个,分别设置在终端1100的不同表面或呈折叠设计;在再一些实施例中,显示屏1105可以是柔性显示屏,设置在终端1100的弯曲表面上或折叠面上。甚至,显示屏1105还可以设置成非矩形的不规则图形,也即异形屏。显示屏1105可以采用LCD(Liquid Crystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件1106用于采集图像或视频。可选地,摄像头组件1106包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件1106还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路1107可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器1101进行处理,或者输入至射频电路1104以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端1100的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器1101或射频电路1104的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路1107还可以包括耳机插孔。
定位组件1108用于定位终端1100的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件1108可以是基于美国的GPS(GlobalPositioning System,全球定位系统)、中国的北斗系统、俄罗斯的格雷纳斯系统或欧盟的伽利略系统的定位组件。
电源1109用于为终端1100中的各个组件进行供电。电源1109可以是交流电、直流电、一次性电池或可充电电池。当电源1109包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端1100还包括有一个或多个传感器1110。该一个或多个传感器1110包括但不限于:加速度传感器1111、陀螺仪传感器1112、压力传感器1113、指纹传感器1114、光学传感器1115以及接近传感器1116。
加速度传感器1111可以检测以终端1100建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器1111可以用于检测重力加速度在三个坐标轴上的分量。处理器1101可以根据加速度传感器1111采集的重力加速度信号,控制触摸显示屏1105以横向视图或纵向视图进行用户界面的显示。加速度传感器1111还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器1112可以检测终端1100的机体方向及转动角度,陀螺仪传感器1112可以与加速度传感器1111协同采集用户对终端1100的3D动作。处理器1101根据陀螺仪传感器1112采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器1113可以设置在终端1100的侧边框和/或触摸显示屏1105的下层。当压力传感器1113设置在终端1100的侧边框时,可以检测用户对终端1100的握持信号,由处理器1101根据压力传感器1113采集的握持信号进行左右手识别或快捷操作。当压力传感器1113设置在触摸显示屏1105的下层时,由处理器1101根据用户对触摸显示屏1105的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器1114用于采集用户的指纹,由处理器1101根据指纹传感器1114采集到的指纹识别用户的身份,或者,由指纹传感器1114根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器1101授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器1114可以被设置终端1100的正面、背面或侧面。当终端1100上设置有物理按键或厂商Logo时,指纹传感器1114可以与物理按键或厂商Logo集成在一起。
光学传感器1115用于采集环境光强度。在一个实施例中,处理器1101可以根据光学传感器1115采集的环境光强度,控制触摸显示屏1105的显示亮度。具体地,当环境光强度较高时,调高触摸显示屏1105的显示亮度;当环境光强度较低时,调低触摸显示屏1105的显示亮度。在另一个实施例中,处理器1101还可以根据光学传感器1115采集的环境光强度,动态调整摄像头组件1106的拍摄参数。
接近传感器1116,也称距离传感器,通常设置在终端1100的前面板。接近传感器1116用于采集用户与终端1100的正面之间的距离。在一个实施例中,当接近传感器1116检测到用户与终端1100的正面之间的距离逐渐变小时,由处理器1101控制触摸显示屏1105从亮屏状态切换为息屏状态;当接近传感器1116检测到用户与终端1100的正面之间的距离逐渐变大时,由处理器1101控制触摸显示屏1105从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图11中示出的结构并不构成对终端1100的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
本申请一个实施例提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如上所述的检测漏洞利用的方法。
本申请一个实施例提供了一种检测漏洞利用的设备,所述检测漏洞利用的设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如上所述的检测漏洞利用的方法。
需要说明的是:上述实施例提供的检测漏洞利用的装置在检测漏洞利用时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将检测漏洞利用的装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的检测漏洞利用的装置与检测漏洞利用的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述并不用以限制本申请实施例,凡在本申请实施例的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请实施例的保护范围之内。
Claims (12)
1.一种检测漏洞利用的方法,其特征在于,所述方法包括:
获取软件在内存中运行时产生的运行数据;
根据所述运行数据确定所述软件的行为链,所述行为链是所述软件在内存中运行时按照时间顺序产生的行为的集合;
当所述运行数据包括所述软件的栈内调用函数的输入输出数据,且所述行为链中的行为是由所述软件调用一个调用函数进行数据输入输出产生时,检测所述调用函数的输入输出数据是否是漏洞行为特征数据,所述漏洞行为特征数据是软件中的漏洞被利用时产生的行为特征数据,其中,当所述调用函数的输入输出数据是预设数据时,通过回溯算法确定调用所述调用函数的软件,并获取所述预设数据对应的软件白名单,所述软件白名单用于记录漏洞未被利用时调用所述调用函数进行所述预设数据的输入或输出的软件,所述预设数据是既能够在漏洞被利用时调用所述调用函数进行输入或输出的数据,也能够在漏洞未被利用时调用所述调用函数进行输入或输出的数据;
检测所述软件是否位于所述软件白名单中;
当所述软件不在所述软件白名单中时,确定所述调用函数的输入输出数据是所述漏洞行为特征数据,并确定所述行为链中存在超出预期的行为;
当所述行为链中存在超出预期的行为时,确定所述软件中存在漏洞且所述漏洞被利用。
2.根据权利要求1所述的方法,其特征在于,所述输入输出数据是预设指令被触发时获取的,所述预设指令是所述软件中的漏洞被利用时所执行的指令。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述运行数据包括所述软件读写的数据时,确定所述行为链中存在读写数据的行为;
检测所述软件是否具有读写数据的权限;
当所述软件不具有读写数据的权限时,确定所述行为链中存在超出预期的行为。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述运行数据包括所述软件调用的参数时,确定所述行为链中存在调用参数的行为;
获取所述软件的参数白名单,所述参数白名单用于记录所述软件在漏洞未被利用时所调用的参数;
检测所述调用参数的行为中所调用的参数是否位于所述参数白名单中;
当所述调用参数的行为中所调用的参数不在所述参数白名单中时,确定所述行为链中存在超出预期的行为。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述运行数据包括栈或代码段中的指令执行序列,且所述行为链中的行为是由所述软件执行指令执行序列中的一条指令产生时,检测所述指令执行序列中是否存在排序关系异常的指令;
当所述指令执行序列中存在排序关系异常的指令时,确定所述行为链中存在超出预期的行为。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述运行数据包括非代码段中被执行的指令时,检测所述行为链中是否存在执行所述非代码段中的指令所产生的行为,所述非代码段用于存储除指令之外的数据;
当所述行为链中存在执行所述非代码段中的指令所产生的行为时,确定所述行为链中存在超出预期的行为。
7.根据权利要求6所述的方法,其特征在于,
在所述获取软件在内存中运行时产生的运行数据之前,所述方法还包括:对所述软件开启数据执行保护DEP,所述DEP用于识别所述软件执行非代码段中的指令的行为;
所述检测所述行为链中是否存在执行所述非代码段中的指令所产生的行为,包括:通过所述DEP检测所述行为链中是否存在执行所述非代码段中的指令所产生的行为;当所述行为链中存在执行所述非代码段中的指令所产生的行为时,确定所述行为链中存在超出预期的行为。
8.根据权利要求1至7任一所述的方法,其特征在于,在所述确定所述软件中存在漏洞且所述漏洞被利用之后,所述方法还包括:
禁止所述软件执行所述超出预期的行为;和/或,
关闭所述软件。
9.根据权利要求1至7任一所述的方法,其特征在于,在所述确定所述软件中存在漏洞且所述漏洞被利用之后,所述方法还包括:
对与所述超出预期的行为相关的异常数据进行上报。
10.一种检测漏洞利用的装置,其特征在于,所述装置包括:
获取模块,用于获取软件在内存中运行时产生的运行数据;
确定模块,用于根据所述获取模块得到的所述运行数据确定所述软件的行为链,所述行为链是所述软件在内存中运行时按照时间顺序产生的行为的集合;
检测模块,用于当所述运行数据包括所述软件的栈内调用函数的输入输出数据,且所述行为链中的行为是由所述软件调用一个调用函数进行数据输入输出产生时,检测所述调用函数的输入输出数据是否是漏洞行为特征数据,所述漏洞行为特征数据是软件中的漏洞被利用时产生的行为特征数据,其中,当所述调用函数的输入输出数据是预设数据时,通过回溯算法确定调用所述调用函数的软件,并获取所述预设数据对应的软件白名单,所述软件白名单用于记录漏洞未被利用时调用所述调用函数进行所述预设数据的输入或输出的软件,所述预设数据是既能够在漏洞被利用时调用所述调用函数进行输入或输出的数据,也能够在漏洞未被利用时调用所述调用函数进行输入或输出的数据;检测所述软件是否位于所述软件白名单中;当所述软件不在所述软件白名单中时,确定所述调用函数的输入输出数据是所述漏洞行为特征数据,并确定所述行为链中存在超出预期的行为;
所述确定模块,还用于在所述检测模块检测出所述行为链中存在超出预期的行为时,确定所述软件中存在漏洞且所述漏洞被利用。
11.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令、至少一段程序、代码集或指令集,所述至少一条指令、所述至少一段程序、所述代码集或指令集由处理器加载并执行以实现如权利要求1至9任一所述的检测漏洞利用的方法。
12.一种检测漏洞利用的设备,其特征在于,所述检测漏洞利用的设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如权利要求1至9任一所述的检测漏洞利用的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810732942.7A CN108959938B (zh) | 2018-07-05 | 2018-07-05 | 检测漏洞利用的方法、装置、存储介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810732942.7A CN108959938B (zh) | 2018-07-05 | 2018-07-05 | 检测漏洞利用的方法、装置、存储介质及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108959938A CN108959938A (zh) | 2018-12-07 |
CN108959938B true CN108959938B (zh) | 2020-06-26 |
Family
ID=64485851
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810732942.7A Active CN108959938B (zh) | 2018-07-05 | 2018-07-05 | 检测漏洞利用的方法、装置、存储介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108959938B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110162245B (zh) * | 2019-04-11 | 2020-12-08 | 北京达佳互联信息技术有限公司 | 图形操作的分析方法、装置、电子设备及存储介质 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7774459B2 (en) * | 2006-03-01 | 2010-08-10 | Microsoft Corporation | Honey monkey network exploration |
CN103839005B (zh) * | 2013-11-22 | 2016-09-28 | 北京智谷睿拓技术服务有限公司 | 移动操作系统的恶意软件检测方法和恶意软件检测系统 |
CN106991328B (zh) * | 2017-03-30 | 2019-11-29 | 兴华永恒(北京)科技有限责任公司 | 一种基于动态内存指纹异常分析的漏洞利用检测识别方法 |
CN108182360B (zh) * | 2018-01-31 | 2023-09-19 | 腾讯科技(深圳)有限公司 | 一种风险识别方法及其设备、存储介质、电子设备 |
-
2018
- 2018-07-05 CN CN201810732942.7A patent/CN108959938B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108959938A (zh) | 2018-12-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111444528B (zh) | 数据安全保护方法、装置及存储介质 | |
CN110602321B (zh) | 应用程序切换方法、装置、电子装置及存储介质 | |
Brocker et al. | {iSeeYou}: Disabling the {MacBook} webcam indicator {LED} | |
CN110798790B (zh) | 麦克风异常检测方法、装置及存储介质 | |
CN111046365A (zh) | 人脸图像传输方法、数值转移方法、装置及电子设备 | |
CN110308956B (zh) | 一种应用界面显示方法、装置及移动终端 | |
CN110837473A (zh) | 应用程序调试方法、装置、终端及存储介质 | |
CN111191224B (zh) | 虚拟机检测的对抗方法、装置及计算机可读存储介质 | |
CN107959727B (zh) | 网页与客户端之间进行通讯的方法及装置 | |
CN110417710B (zh) | 攻击数据捕获方法、装置及存储介质 | |
CN111752666A (zh) | 窗口显示方法、装置和终端 | |
CN108229171B (zh) | 驱动程序处理方法、装置及存储介质 | |
CN112131556A (zh) | 权限控制方法、装置、设备及存储介质 | |
CN110990341A (zh) | 清除数据的方法、装置、电子设备及介质 | |
CN111191227B (zh) | 阻止恶意代码执行的方法和装置 | |
CN109995789B (zh) | Rpc接口的风险检测方法、装置、设备及介质 | |
CN108984259B (zh) | 界面显示方法、装置及终端 | |
CN108537040B (zh) | 电信诈骗木马程序拦截方法、装置、终端及存储介质 | |
CN108959938B (zh) | 检测漏洞利用的方法、装置、存储介质及设备 | |
CN110851831B (zh) | 病毒处理方法、装置、计算机设备及计算机可读存储介质 | |
CN110414448B (zh) | 图像处理方法、装置、电子设备及存储介质 | |
CN111881423A (zh) | 限制功能使用授权方法、装置、系统 | |
CN115329309A (zh) | 验证方法、装置、电子设备及存储介质 | |
CN110362330B (zh) | 应用程序更新方法、装置、终端及存储介质 | |
CN110417931B (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 |