CN107729751A - 数据检测方法及装置 - Google Patents
数据检测方法及装置 Download PDFInfo
- Publication number
- CN107729751A CN107729751A CN201610659865.8A CN201610659865A CN107729751A CN 107729751 A CN107729751 A CN 107729751A CN 201610659865 A CN201610659865 A CN 201610659865A CN 107729751 A CN107729751 A CN 107729751A
- Authority
- CN
- China
- Prior art keywords
- data
- internal storage
- tested
- storage location
- sandbox
- 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.)
- Pending
Links
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/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Storage Device Security (AREA)
Abstract
本申请提供了一种数据检测方法及装置,其中的方法包括:在资源隔离环境中,运行待检测数据;针对运行所述待检测数据产生的内存请求,分配连续的N个内存单元,其中,内存单元为内存分配的单位,N大于1,前N‑1个内存单元用于满足内存请求,第N个内存单元的属性被设置为不可访问;根据属性被设置为不可访问的内存单元被访问而产生的异常信息,对待检测数据进行检测。本申请的提供的技术方案提高了数据检测的效率,降低了数据检测的实现成本,并满足了对海量数据的数据检测需求。
Description
技术领域
本申请涉及计算机技术,尤其涉及一种数据检测方法以及数据检测装置。
背景技术
一些个人、企业以及集团等用户通常需要对外来文件(如电子邮件的附件等)进行安全检测,以避免外来文件的恶意网络攻击;而对于大型企业及集团用户而言,需要进行安全检测的外来文件往往是海量文件。
目前,通常采用杀毒软件与沙盒(Sandbox)相结合的方式来实现安全检测,即先利用杀毒软件对电子邮件的附件进行快速检测,以过滤出携带有病毒的恶意附件,针对未被过滤掉的附件,在沙盒空间中模拟用户操作打开电子邮件的附件,并记录例如相关应用程序(如Microsoft Word等)的进程行为、网络行为、文件行为以及注册表行为等多种行为,从而形成日志信息;在等待超时或应用程序自动退出后,调用行为解析引擎对日志信息进行分析,以判断该附件是否为恶意文件。
发明人在实现本申请过程中发现,由于杀毒软件是基于病毒签名进行快速检测的,因此,杀毒软件仅能够检测出携带有已知病毒的恶意附件,并不能检测出携带有未知病毒的恶意附件,如无法检测出携带有攻击应用程序的未知安全漏洞(尤其是0day安全漏洞)的恶意附件;沙盒技术虽然可以通过对应用程序的行为分析而检测出携带有未知病毒的恶意附件,但是,为了全面检测出携带有未知病毒的恶意附件,通常需要对应用程序的各种行为进行详细记录,从而不但使安全检测方案(如沙盒引擎)自身设计较庞大,而且还存在日志信息占用资源较大、行为分析时间较长以及超时时间不能设置的过短(如超时时间不短于3分钟或者5分钟等)等问题,这不仅会使得安全检测的效率较低,且实现成本较高,而且无法很好的满足对海量文件的安全检测需求。
发明内容
本申请的目的是提供一种数据检测方法及装置。
根据本申请提供的一个方面,提供了一种数据检测方法,该方法包括:在资源隔离环境中,运行待检测数据;针对运行所述待检测数据产生的内存请求,分配连续的N个内存单元,其中,内存单元为内存分配的单位,N大于1,前N-1个内存单元用于满足内存请求,第N个内存单元的属性被设置为不可访问;根据属性被设置为不可访问的内存单元被访问而产生的异常信息,对待检测数据进行检测。
根据本申请提供的另一个方面,还提供了一种数据检测装置,该装置包括:数据分配模块,用于在资源隔离环境中,运行待检测数据;内存分配模块,用于针对运行所述待检测数据产生的内存请求,分配连续的N个内存单元,其中,内存单元为内存分配的单位,N大于1,前N-1个内存单元用于满足内存请求,第N个内存单元的属性被设置为不可访问;信息分析模块,用于根据属性被设置为不可访问的内存单元被访问而产生的异常信息,对待检测数据进行检测。
可选的,前述的数据检测装置,其中,所述数据分配模块具体用于:
针对可执行类型的待检测数据,在安装有操作系统的资源隔离环境中,执行所述待检测数据;
针对不可执行类型的待检测数据,在安装有所述待检测数据对应的应用程序的资源隔离环境中,打开所述待检测数据。
可选的,前述的数据检测装置,其中,所述资源隔离环境中所安装的应用程序包括:最新版本且更新了全量补丁包的应用程序。
可选的,前述的数据检测装置,其中,所述装置包括:一个或者多个沙盒,所述沙盒用于实现资源隔离环境,且在所述装置包括多个沙盒时,所有沙盒形成沙盒集群。
可选的,前述的数据检测装置,其中,所述数据分配模块具体用于:
将从待检测数据集合中获取的待检测数据调度到沙盒集群中的其中一个沙盒中运行。
可选的,前述的数据检测装置,其中,所述数据分配模块包括:
待检测数据集合,包括至少一个待检测数据;
多个检测任务队列,每一个检测任务队列对应一种类型的待检测数据;
样本投递器,用于从所述待检测数据集合中获取待检测数据,根据待检测数据的数据内容中的数据类型指纹信息确定待检测数据对应的检测任务队列,并将待检测数据添加到其对应的应用程序的检测任务队列中;
沙盒调度器,用于将检测任务队列中的待检测数据分配到沙盒集群中的一个与所述待检测数据的类型适配的沙盒中运行。
可选的,前述的数据检测装置,其中,所述内存分配模块具体用于:
从第N-1个内存单元的尾部开始,向前计算出与所述内存请求所请求的内存空间大小相等的内存空间的起始地址,并返回所述起始地址。
可选的,前述的数据检测装置,其中,所述装置还包括:
内存回收模块,用于在所述N个内存单元被释放而回收时,将前N-1个内存单元的属性设置为不可访问。
可选的,前述的数据检测装置,其中,所述内存分配模块具体用于:
将针对所述内存请求分配的前N-1个内存单元的属性设置为可访问。
可选的,前述的数据检测装置,其中,所述装置还包括:
行为监控模块,用于在检测到运行的待检测数据执行了创建进程行为、读写其他进程行为以及崩溃行为时,产生行为异常信息;
且所述信息分析模块具体用于,根据属性被设置为不可访问的内存单元被访问而产生的异常信息以及行为异常信息,对待检测数据进行检测。
可选的,前述的数据检测装置,其中,所述装置还包括:
抓包模块,用于通过数据包抓包方式获取网络连接请求;
且所述信息分析模块具体用于,根据属性被设置为不可访问的内存单元被访问而产生的异常信息以及网络连接请求,对待检测数据进行检测。
与现有技术相比,本申请各个实施例体现了以下优点:通过在分配内存单元时,分配连续的N个内存单元,且前N-1个内存单元是用于满足内存请求所请求的存储空间大小的,而第N个内存单元是额外分配的,且第N个内存单元的属性被设置为不可访问,从而本申请在资源隔离环境中为待检测数据创建了一个与正常运行环境不同的调试环境,由于该调试环境破坏了正常运行环境中的内存布局,因此,在运行的被检测数据执行了与内存相关的多种异常行为时,本申请均可以及时捕获到由于第N个内存单元被访问而产生的异常信息,由于本申请可以不必检测运行的被检测数据所执行的所有行为,且记录的异常信息量通常远远小于记录运行被检测数据行为的信息量,因此,本申请有效简化了数据检测方案的设计,并避免了日志信息占用资源较大以及行为分析时间较长等问题;由此可知,本申请提供的技术方案提高了数据检测效率,降低了数据检测的实现成本,并满足了对海量数据的安全检测需求。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1为本申请的技术方案的一个具体应用场景的示意图;
图2为本申请实施例一的数据检测方法的流程图;
图3为本申请实施例二的数据检测装置的一个具体例子示意图;
图4为本申请实施例二的数据检测装置的另一个具体例子示意图;
图5为本申请实施例二的数据分配模块的一个具体例子示意图;
图6为本申请实施例二的沙盒集群的一个具体例子示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请的实施例作详细描述。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然本申请的流程图将各项操作描述成顺序的处理,但是,其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
本实施例中的服务器包括但不限于单个网络服务器、多个网络服务器组成的服务器组或者基于云计算(Cloud Computing)的由大量计算机或者网络服务器构成的云,其中,云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。其中,所述服务器可以接入网络并与网络中的其他设备进行信息交互操作。其中,所述服务器所能够接入的网络包括但不限于互联网、广域网、城域网、局域网、VPN网络等。
需要说明的是,所述服务器以及网络等仅为举例,其他现有的或今后可能出现的服务器或者网络如可适用于本申请,也应包含在本申请保护范围以内,并以引用方式包含于此。
后面描述所讨论的方法(其中一些通过流程图示出)实施例可以通过硬件、软件、固件、中间件、微代码、硬件描述语言或者其任意组合的形式来实施。当用软件、固件、中间件或者微代码来实施时,用以实施必要任务的程序代码或者代码段可以被存储在机器或计算机可读介质(比如存储介质)中。(一个或多个)处理器可以实施必要的任务。
这里所公开的具体结构和功能细节仅仅是代表性的,并且是用于描述本申请的示例性实施例的目的,但是,本申请可以通过许多替换形式来具体实现,并且不应当被解释成仅仅受限于这里所阐述的实施例。
应当理解的是,虽然在这里可能使用了术语“第一”、“第二”等等来描述各个单元,但是这些单元不应当受这些术语限制。使用这些术语仅仅是为了将一个单元与另一个单元进行区分。举例来说,在不背离示例性实施例的范围的情况下,第一单元可以被称为第二单元,并且类似地第二单元可以被称为第一单元。这里所使用的术语“和/或”包括其中一个或更多所列出的相关联项目的任意和所有组合。
应当理解的是,当一个单元被称为“连接”或者“耦合”到另一个单元时,其可以直接连接或者耦合到所述另一个单元,也可以存在中间单元。与此相对的,当一个单元被称为“直接连接”或者“直接耦合”到另一个单元时,则不存在中间单元。应当按照类似的方式来解释被用于描述单元之间的关系的其他词语(例如,“处于...之间”相比于“直接处于...之间”,“与...邻近”相比于“与...直接邻近”等等)。
这里所使用的术语仅仅是为了描述具体实施例,而不是意图限制示例性实施例。除非上下文中明确地另有所指,否则,这里所使用的单数形式“一个”、“一项”还意图包括复数。还应当理解的是,这里所使用的术语“包括”和/或“包含”规定了所陈述的特征、整数、步骤、操作、单元和/或组件的存在,而不排除存在或者添加一个或更多的其他特征、整数、步骤、操作、单元、组件和/或其组合。
还应当提到的是,在一些替换的实现方式中,所提到的功能/动作可以按照不同于附图中标示的顺序发生。举例来说,取决于所涉及的功能/动作,相继示出的两幅图实际上可以基本上同时执行或者有时可以按照相反的顺序来执行。
技术术语说明:
待检测数据,需要进行安全检测的数据,也可以称为待检测文件,如电子邮件的附件、即时通讯工具传输的文件等;
内存单元,内存分配的单位,例如一个内存单元可以为一个内存页,且内存单元可以为内存分配的最小单位;
0day,即应用程序/操作系统中存在的未知安全漏洞;
攻击样本,针对应用程序/操作系统的安全漏洞而构造出的数据,攻击样本可造成应用程序/操作系统产生意料之外的行为;
0day攻击样本,针对应用程序/操作系统的未知安全漏洞而构造出的数据;
宿主机,运行虚拟机的实体物理设备;
虚拟机,通常为通过软件模拟的具有完整硬件系统功能的、运行在一个完全资源隔离环境中的完整计算机系统;
资源隔离环境(Resource isolation environment),即对资源进行严格控制的环境,如限制对系统内存、系统文件以及系统设置等的访问;
沙盒,可以通过虚拟机来实现,沙盒可以使被运行的对象在受限的安全环境中运行;
内存错误型安全漏洞,即由于内存错误操作而引起应用程序异常的安全漏洞,且内存错误操作如栈溢出、堆溢出、内存越界访问、UAF(内存释放后重用)、double free(重复释放内存)等操作。
对于大型企业及集团等用户而言,每天需要对大量(如海量)的外来数据(下面称为外来文件)进行安全检测,如每天对所有外来的电子邮件中的附件进行安全检测。本申请中的外来文件可以为从企业网络边界之外进入企业网络的文件。本申请中的海量的外来文件可以为数量达到百万的外来文件。为了提高安全检测的效率,降低安全检测实现成本,并满足对海量文件的安全检测需求,本申请可以通过沙盒集群的方式来实现安全检测。本申请的技术方案的一个具体应用场景如图1所示。
图1中,本申请可以通过一台或者多台服务器1对大量(如海量)的外来文件进行安全检测。在由多台服务器1对外来文件进行安全检测,且使用沙盒来实现资源隔离环境的技术方案中,本申请可以通过多台服务器1实现沙盒集群,即每一台服务器1中均设置有一个或者多个沙盒,所有服务器1中的所有沙盒形成沙盒集群,如图1中的沙盒11,……沙盒1n,……,沙盒m1,……沙盒mn,沙盒n1,……沙盒nn形成沙盒集群。多台服务器1中的其中一台服务器1中设置有调度单元,该调度单元用于接收外来文件,并根据外来文件的类型将其作为待检测文件调度到安装有相应的应用程序的某一沙盒中运行。
本申请可以在每一台服务器中均设置多台虚拟机,每一台虚拟机实现一个沙盒,每一个沙盒中均安装有相应的应用程序,从而沙盒可以使相应类型的待检测文件运行在资源隔离的环境中。
本申请的沙盒集群中的所有沙盒可以被划分为多个组,每一组沙盒通常包括多个沙盒,如可以将图1中的每一台服务器1中的所有沙盒作为一组沙盒,即沙盒11,……沙盒1n形成第一组沙盒,沙盒m1,……沙盒mn形成第m组沙盒,沙盒n1,……沙盒nn形成第n组沙盒。
根据本申请一个实施例,每一组沙盒分别对应一种文件类型,即在通常情况下,属于同一组的所有沙盒中安装有相同类型的应用程序,而不同组的沙盒所安装的应用程序类型通常并不相同。
在本申请针对未知安全漏洞(如0day攻击样本)对待检测文件进行安全检测的应用场景中,各沙盒中安装的应用程序通常为最新版本且更新了全量补丁包(如安全补丁包以及功能补丁包等)的应用程序;另外,各沙盒中安装的应用程序的特殊功能可以被屏蔽,如屏蔽Office Word中的宏功能等,以避免由于宏功能而产生的相关信息对检测未知安全漏洞的干扰,从而可以更加准确有效进行安全检测,如准确有效的判断待检测文件是否为0day攻击样本等。
在待检测文件在沙盒中运行的过程中,通常会产生内存请求,根据本申请一个实施例,在针对该内存请求分配资源的过程中,在正常分配了内存单元之后还多分配一个与正常分配的内存单元连续的内存单元。
一个具体的例子,在一个内存单元(如内存页)的存储空间大小为4kB字节的情况下,针对请求1kB字节的堆内存空间的内存请求,应为该内存请求分配2个连续的内存单元(如图1所示),且第一个内存单元的属性可以设置为可访问(如设置为used),而第二个内存单元的属性应设置为不可访问(如设置为no-access),从而使第二个内存单元成为防护内存单元(如图1所示)。
另外,在上述例子中,本申请针对该内存请求所返回的内存地址通常并不是分配的第一个内存单元的起始地址,而是第一个内存单元的最后1kB字节存储空间的起始地址,从而本申请使待检测文件所能够使用的内存空间大小仅为本次请求的内存空间大小。
本申请通过按照上述方式进行内存分配,为待检测文件形成了一个调试环境,该调试环境破坏了正常的内存布局。如果应用程序根据其请求的内存空间大小来使用内存空间,则应用程序并不会访问到前述分配的第二个内存单元,从而沙盒并不会产生与内存相关的异常信息;而如果应用程序未根据请求的内存空间大小来使用内存空间,则应用程序必然会对前述分配的第二个内存单元进行访问操作,由于第二个内存单元的属性已经在分配时被设置为不可访问,因此,沙盒会产生与内存相关的异常信息,本申请可以将该异常信息作为日志信息存储起来,从而该日志信息被作为判断待检测文件安全性的参数;即后续本申请通过对日志信息进行分析可以判断出该待检测文件的安全性,如判断该待检测文件是否为0day攻击样本等。
另外,本申请还可以在回收内存单元时,将回收的内存单元的属性均设置为不可访问,从而在应用程序对被回收的内存单元进行操作时,沙盒同样会产生与内存相关的异常信息。同样的,本申请可以将该异常信息作为日志信息存储起来。后续本申请通过对日志信息进行分析可以判断出该待检测文件的安全性。
还有,根据本申请一个实施例,可以采用为待检测文件设置调试环境与记录应用程序的行为信息相结合的方式来实现对待检测文件的全面安全检测;由于上述设置调试环境的技术方案(包括分配内存单元以及对回收的内存单元的属性进行设置的技术方案)可以过滤掉大量的安全漏洞攻击行为,因此,本申请在采用相结合的方式来实现全面的安全检测时,可以仅记录应用程序的网络连接请求行为、创建进程行为、读写其他进程行为以及崩溃行为的信息,即可实现对待检测文件的全面安全检测,从而本申请在避免了针对各种行为进行检测而导致自身体积庞大的问题的同时,提高了安全检测的效率,降低了安全检测的实现成本。
实施例一、数据检测方法。
本实施例的数据检测方法的流程如图2所示。图2中,本实施例的方法主要包括:S200、S210以及S220。
图2中,S200、在资源隔离环境中,运行待检测数据(下述称为待检测文件)。
作为示例,在针对应用程序中的0day进行安全检测的应用场景中,本申请的资源隔离环境中安装的应用程序通常为最新版本且更新了全量补丁包(如安全补丁包以及功能补丁包等)的应用程序;在针对操作系统中的0day进行安全检测的应用场景中,本申请的资源隔离环境中安装的操作系统通常为某个版本的更新了全量补丁包的操作系统;另外,如果应用程序提供特殊功能(如Office Word中的宏功能等),则本申请的资源隔离环境中安装的应用程序通常是屏蔽了特殊功能的应用程序,如资源隔离环境中的OfficeWord为宏功能被屏蔽的Office Word等,从而可以避免由于特殊功能(如宏功能)而产生的相关信息对检测未知安全漏洞的干扰,进而可以更加准确有效的待检测文件进行安全检测,如准确有效的判断待检测文件是否为0day攻击样本等。
作为示例,在针对应用程序中的1day或者其他已知安全漏洞进行安全检测的应用场景中,资源隔离环境中安装的应用程序可以不是最新版本,也可以没有更新全量补丁包,从而本申请可以判断待检测文件是否为1day或者其他已知安全漏洞的攻击样本等。
作为示例,在针对操作系统中的1day或者其他已知安全漏洞进行安全检测的应用场景中,资源隔离环境中安装的操作系统可以没有更新全量补丁包,从而本申请可以判断待检测文件是否为1day或者其他已知安全漏洞的攻击样本等。
作为示例,本申请中的资源隔离环境可以为沙盒,即本申请可以利用沙盒技术来实现资源隔离环境,待检测文件在沙盒中运行即运行在资源隔离的环境中。为了能够快速的对海量文件(如海量的外来电子邮件中的附件)进行安全检测,本申请可以设置多个沙盒,且多个沙盒形成沙盒集群。沙盒集群可以同时对不同类型的待检测文件进行安全检测。
作为示例,本申请可以将所有的沙盒划分为多个组,在通常情况下,每一组沙盒均包含有多个沙盒,且每一组沙盒分别对应一种文件类型,也就是说,在通常情况下,针对不可执行文件而言,属于同一组的所有沙盒中安装的应用程序相同,而不同组的沙盒所安装的应用程序通常并不相同;针对可执行文件而言,属于同一组的所有沙盒中安装的操作系统相同。一个具体的例子,第一组沙盒中的所有沙盒均安装有Office Word,而第二组沙盒中的所有沙盒均安装有支持PDF文件的应用程序,第三组沙盒中的所有沙盒安装有WINDOWSXP操作系统。由于所有的沙盒完全可以并行运行,因此,本申请可以同时对不同类型的待检测文件进行安全检测。
作为示例,本申请可以利用虚拟机来实现沙盒,一台虚拟机可以实现一个沙盒,且每一台虚拟机中要么预先安装有相应类型的操作系统,要么预先安装有操作系统以及相应类型的应用程序。在对待检测文件进行安全检测时,应先识别待检测文件的类型,然后,再将待检测文件调度到相应的沙盒中运行。
一个具体的例子,设定所有的待检测文件形成待检测文件集合(也可以称为待检测样本中心或者待检测数据集合);
首先,从待检测文件集合中顺序获取一个待检测文件;
其次,从该待检测文件的文件内容中获取文件类型指纹信息,如EXE类型的待检测文件的文件内容的前两个字节是“MZ”,本申请可以将“MZ”作为EXE类型指纹信息;本申请中的文件类型指纹信息是指一种类型的文件所具有的标准定义特征,该标准定义特征即为该种类型的文件的指纹信息。
然后,本申请可以根据获取到的文件类型指纹信息判断该待检测文件的文件类型,例如,如果获取到的指纹信息为“MZ”,则确定待检测文件的类型为EXE类型;
由于每一个文件类型均对应有一个检测任务队列(即一种类型的应用程序对应有一个检测任务队列,如Office Word对应一个检测任务队列,而支持PDF文件的应用程序对应另一个检测任务队列等),因此,本申请可以将该待检测文件添加到待检测文件的文件类型所对应的检测任务队列中;
之后,检测任务队列中的待检测文件被顺序读出;由于每一组沙盒对应一种文件类型,因此,本申请可以从与待检测文件类型对应的沙盒组中选取一个处于空闲状态的沙盒,并将读出的被检测文件分配给该沙盒,从而使该待检测文件在该沙盒中运行,如在沙盒环境中打开/执行该待检测文件。
S210、针对运行待检测数据(下述称为待检测文件)产生的内存请求,分配连续的N个内存单元。
作为示例,本申请中的内存单元为内存分配的单位,且内存单元可以为内存分配的最小单位;一个具体的例子,内存单元可以为内存页,如存储空间大小为4kB字节的内存页。
作为示例,本申请为运行待检测文件产生的内存请求所分配的内存单元为连续的N个内存单元,其中的前N-1个内存单元是用于满足内存请求所请求的存储空间大小的,而第N个内存单元(即最后一个内存单元)是额外分配的,且第N个内存单元的属性被设置为不可访问。也就是说,本申请为内存请求所分配的前N-1个内存单元是按照现有的正常内存分配方式进行分配的,而与前N-1个内存单元连续的第N个内存单元是本申请在现有的正常内存分配的基础上额外为内存请求分配的一个内存单元。
一个具体的例子,在一个内存单元(如内存页)的存储空间大小为4kB字节的情况下,针对请求6kB字节的堆内存空间的内存请求,应为该内存请求分配3个连续的内存单元,且本申请应将第一个内存单元和第二个内存单元的属性设置为可访问(如设置为used),而将第三个内存单元的属性设置为不可访问(如设置为noaccess),即第三个内存单元成为防护内存单元。
在现有的内存分配过程中,通常会针对该内存请求返回第一个内存单元的起始地址,而在本申请中返回的内存地址通常并不是分配的第一个内存单元的起始地址,而是从第N-1个内存单元的尾部开始,向前计算出与内存请求所请求的内存空间大小相等的内存空间的起始地址。
续前例,本申请针对内存请求所返回的内存地址为第一个内存单元的最后2kB字节存储空间的起始地址,从而本申请使待检测文件所能够使用的内存空间大小仅为本次请求的6kB字节的内存空间大小。
S220、根据属性被设置为不可访问的内存单元被访问而产生的异常信息对待检测数据(下述称为待检测文件)进行检测。也就是说,本申请将属性被设置为不可访问的内存单元被访问而产生的异常信息作为判断待检测文件安全性的参数。
作为示例,在待检测文件攻击应用程序/操作系统的安全漏洞(尤其是0day)的过程中,往往会对正常分配的内存单元之外的其他内存单元进行访问,如通过执行栈溢出操作、堆溢出操作或者内存越界访问操作来对正常分配的内存单元之外的其他内存单元进行访问;而在本申请的调试环境中,由于额外分配的内存单元的属性被设置为不可访问,且针对内存请求返回的起始地址为从第N-1个内存单元的尾部开始计算出的起始地址,因此,栈溢出操作、堆溢出操作或者内存越界访问操作一定会引起对分配的属性被设置为不可访问的内存单元的访问;而在属性被设置为不可访问的内存单元被访问时,会发生内存异常操作错误,沙盒会主动产生异常信息,从而本申请可以及时准确的捕获到该异常信息;本申请可以将沙盒产生的该异常信息作为日志信息存储,在针对待检测文件的本次安全检测完成时,可以将本次产生的所有日志信息添加在相应的日志队列中,等待分析;后续在针对该待检测文件的日志信息进行分析时,可以通过对日志队列中的异常信息的分析来确定出该待检测文件是否为对应用程序的安全漏洞进行攻击的样本。
另外,在针对内存请求而分配的N个内存单元被释放时,应回收这N个内存单元,并将前N-1个内存单元的属性设置为不可访问,也就是说,回收的N个内存单元的属性均被设置为不可访问。本申请中的回收的内存单元均可以用于内存单元再分配,即本申请中的可以针对内存请求进行分配的内存单元包括:已被回收且属性被设置为不可访问的内存单元。
由于本申请中的被回收的所有内存单元的属性均被设置为不可访问,因此,在沙盒中运行的待检测文档在促使应用程序/操作系统执行UAF或者double free等内存异常操作时,一定会引起对已回收的属性被设置为不可访问的内存单元的操作;而在已回收的属性被设置为不可访问的内存单元被操作时,会发生内存异常操作错误,沙盒会主动产生异常信息,从而本申请可以及时准确的捕获到该异常信息;本申请可以将沙盒产生的该异常信息作为日志信息存储,在针对待检测文件的本次安全检测周期结束时,可以将本次安全检测周期内所产生的所有日志信息添加在相应的日志队列中,等待分析;后续在针对该待检测文件的日志信息进行分析时,可以通过对该异常信息的分析来判别待检测文件是否为针对应用程序/操作系统的安全漏洞进行攻击的样本。
还有,本申请通过为待检测文件设置调试环境的技术方案,可以过滤掉大量的安全漏洞攻击行为(如栈溢出、堆溢出、内存越界访问、UAF以及doublefree等类型的安全漏洞攻击行为),除了这些安全漏洞攻击行为之外,其他的安全漏洞攻击行为通常包括:网络连接请求行为、创建进程行为、读写其他进程行为以及Crash(崩溃)行为;本申请可以采用调试环境与行为信息记录分析相结合的方式来实现全面的安全检测;由此可知,本申请可以仅记录应用程序/操作系统的网络连接请求行为、创建进程行为、读写其他进程行为以及崩溃行为的信息,即可实现对待检测文件的全面安全检测,也就是说,本申请的行为监测为轻量级行为监测;从而本申请有效避免了针对应用程序和/或操作系统所执行的各种行为进行监测记录而导致自身体积庞大的问题。
作为示例,本申请可以通过hook技术来监测应用程序是否执行了创建进程操作(如是否调用了NtCreateProcess或者NtCreateUserProcess等接口函数)、读写其他进程操作、Crash操作以及网络连接请求操作,并在监测到应用程序执行了创建进程操作、读写其他进程操作、Crash操作以及网络连接请求操作时,记录行为信息,本申请可以将记录的行为信息作为日志信息存储,在针对待检测文件的本次安全检测周期结束时,可以将本次安全检测周期内所产生的所有日志信息添加在相应的日志队列中,等待分析;后续在针对该待检测文件的日志信息进行分析时,可以通过对日志队列中的行为信息以及上述异常信息的综合分析来判别待检测文件是否为对应用程序的安全漏洞进行攻击的样本。
另外,本申请在记录行为信息过程中,可以不记录应用程序/操作系统所自有的创建进程操作(如开始运行被检测文件时所执行的用于创建特定进程名称的创建进程操作)、读写其他进程操作以及网络连接请求操作(如连接应用程序客户端的服务器的网络连接请求操作)的行为信息。当然,如果本申请记录了应用程序/操作系统所自有的创建进程操作、读写其他进程操作以及网络连接请求操作的行为信息,则在行为信息分析的过程中,可以过滤掉应用程序/操作系统所自有的创建进程操作、读写其他进程操作以及网络连接请求操作的行为信息,即本申请不将日志信息中的应用程序/操作系统所自有的创建进程操作、读写其他进程操作以及网络连接请求操作的行为信息作为判断待检测文件为安全漏洞攻击样本的参考因素。
需要特别说明的是,虽然本申请可以通过hook技术监测应用程序/操作系统是否执行了网络连接请求操作,然而,本申请也可以通过数据包抓包方式来监测应用程序/操作系统是否执行了网络连接请求操作,如虚拟机所在的宿主机通过数据包抓包方式来监测应用程序/操作系统是否执行了网络连接请求操作。另外,宿主机在抓取到网络连接请求数据包后,可以判断该网络连接请求数据包是否为应用程序/操作系统所自有的网络连接请求操作的数据包,如果是,则可以不记录相关的行为信息,如果不是,则应记录相关的行为信息;本申请可以将记录的行为信息作为日志信息存储,在针对待检测文件的本次安全检测周期结束时,可以将本次安全检测周期内所产生的所有日志信息添加在相应的日志队列中,等待分析;后续可以通过对日志队列中的行为信息以及上述异常信息的综合分析来判别待检测文件是否为对应用程序/操作系统的安全漏洞进行攻击的样本。
本申请针对一个待检测文件的安全检测周期可以控制在较短的时间范围内,如控制在1分钟之内,也就是说,如果应用程序/操作系统在安全检测周期内没有执行关闭待检测文件或者退出行为,则本申请可以关闭待检测文件,并可以开始对待检测文件的日志信息进行分析。
实施例二、数据检测装置。
图3为本实施例的数据检测装置的结构示意图。
图3中,本实施例的装置主要包括:数据分配模块300、内存分配模块310以及信息分析模块320。可选的,本实施例的装置还可以包括:沙盒集群330、内存回收模块340、行为监控模块350以及抓包模块360(如图4所示)。
下面对本实施例的装置所包含的各部分分别进行说明。
数据分配模块300主要用于在资源隔离环境中,运行待检测数据(下述将待检测数据称为待检测文件)。
该数据分配模块300可以包括:待检测数据集合301、多个检测任务队列302、样本投递器303以及沙盒调度器304(如图5所示);
待检测数据集合301通常包括多个待检测文件;其中的多个检测任务队列302用于暂存同一种类型的待检测文件,且每一个检测任务队列302对应一种类型的应用程序,即一个检测任务队列302对应一种类型的待检测文件和应用程序;其中的样本投递器303主要用于从待检测数据集合301中获取待检测文件,根据获取的待检测文件的文件内容中的文件类型指纹信息确定待检测文件对应的应用程序,并将待检测文件添加到其对应的应用程序的检测任务队列302中;其中的沙盒调度器304主要用于将检测任务队列302中的待检测文件分配到沙盒集群330中的一个与待检测数据的类型适配的沙盒331中运行。
作为示例,在针对应用程序中的0day进行安全检测的应用场景中,本申请的资源隔离环境中安装的应用程序通常为最新版本且更新了全量补丁包(如安全补丁包以及功能补丁包等)的应用程序;在针对操作系统中的0day进行安全检测的应用场景中,本申请的资源隔离环境中安装的操作系统通常为某个版本的更新了全量补丁包的操作系统;另外,如果应用程序提供特殊功能(如Office Word中的宏功能等),则本申请的资源隔离环境中安装的应用程序通常是屏蔽了特殊功能的应用程序,如资源隔离环境中的OfficeWord为宏功能被屏蔽的Office Word等,从而可以避免由于特殊功能(如宏功能)而产生的相关信息对检测未知安全漏洞的干扰,进而可以更加准确有效的待检测文件进行安全检测,如准确有效的判断待检测文件是否为0day攻击样本等。
作为示例,在针对应用程序中的1day或者其他已知安全漏洞进行安全检测的应用场景中,资源隔离环境中安装的应用程序可以不是最新版本,也可以没有更新全量补丁包,从而本申请可以判断待检测文件是否为1day或者其他已知安全漏洞的攻击样本等。
作为示例,在针对操作系统中的1day或者其他已知安全漏洞进行安全检测的应用场景中,资源隔离环境中安装的操作系统可以没有更新全量补丁包,从而本申请可以判断待检测文件是否为1day或者其他已知安全漏洞的攻击样本等。
作为示例,本申请中的资源隔离环境可以为沙盒331,即本申请可以利用沙盒技术来实现资源隔离环境,待检测文件在沙盒331中运行即运行在资源隔离的环境中。为了能够快速的对海量文件(如海量的外来电子邮件中的附件)进行安全检测,本申请可以设置多个沙盒331,且多个沙盒331形成沙盒集群330(如图6所示)。沙盒集群330可以同时对不同类型的待检测文件进行安全检测。
作为示例,本申请中的所有的沙盒331可以被划分为多个组,在通常情况下,每一组沙盒均包含有多个沙盒331(如一台服务器中的所有沙盒331形成一组沙盒,如图6所示),且每一组沙盒分别对应一种文件类型,也就是说,在通常情况下,针对不可执行类型的待检测文件,属于同一组的所有沙盒中安装的应用程序相同,而不同组的沙盒331所安装的应用程序通常并不相同;针对可执行类型的待检测文件,属于同一组的所有沙盒中安装的操作系统相同。一个具体的例子,第一组沙盒中的所有沙盒331均安装有OfficeWord,而第二组沙盒中的所有沙盒331均安装有支持PDF文件的应用程序,第三组沙盒中的所有沙盒安装有WINDOWS XP操作系统。在所有沙盒331中安装的应用软件的操作可以由本申请的装置中的软件更新模块(图中未示出)完成。由于所有的沙盒331完全可以并行运行,因此,本申请可以同时对不同类型的待检测文件进行安全检测。
作为示例,本申请可以利用虚拟机来实现沙盒331,一台虚拟机可以实现一个沙盒331,且每一台虚拟机中要么预先安装有相应类型的操作系统,要么预先安装有操作系统以及相应类型的应用程序。在本申请的装置对待检测文件进行安全检测时,应先由样本投递器303识别待检测文件的类型,然后,再由沙盒调度器304将待检测文件调度到相应的沙盒331中运行。
一个具体的例子,设定待检测数据集合301包括所有的待检测文件,待检测数据集合301也可以称为待检测样本中心或者待检测文件集合;
首先,样本投递器303从待检测数据集合301中顺序获取一个待检测文件;
其次,样本投递器303从该待检测文件的文件内容中获取文件类型指纹信息,如EXE类型的待检测文件的文件内容的前两个字节是“MZ”,样本投递器303可以将“MZ”作为EXE类型指纹信息;
然后,样本投递器303可以根据获取到的文件类型指纹信息判断该待检测文件的文件类型,例如,如果获取到的指纹信息为“MZ”,则确定待检测文件的类型为EXE类型;
由于每一个文件类型均对应有一个检测任务队列302(即一种类型的应用程序对应有一个检测任务队列302,如Office Word对应一个检测任务队列302,而支持PDF文件的应用程序对应另一个检测任务队列302等),因此,样本投递器303可以将该待检测文件添加到待检测文件的文件类型所对应的检测任务队列302中;
之后,检测任务队列302中的待检测文件被沙盒调度器304顺序读出;由于每一组沙盒对应一种文件类型,因此,沙盒调度器304可以从与待检测文件类型对应的沙盒组中选取一个处于空闲状态的沙盒331,并将读出的被检测文件分配给该沙盒331,并使该待检测文件在该沙盒331中运行,如沙盒调度器304在沙盒301中打开该待检测文件。
内存分配模块310主要用于针对运行待检测数据(下述称为待检测文件)产生的内存请求,分配连续的N个内存单元。
作为示例,本申请中的内存单元为内存分配的单位,且内存单元可以为内存分配的最小单位;一个具体的例子,内存单元可以为内存页,如存储空间大小为4kB字节的内存页。
作为示例,内存分配模块310为应用程序的内存请求所分配的内存单元为连续的N个内存单元,其中的前N-1个内存单元是用于满足内存请求所请求的存储空间大小的,而第N个内存单元(即最后一个内存单元)是额外分配的,且第N个内存单元的属性被设置为不可访问。也就是说,内存分配模块310为内存请求所分配的前N-1个内存单元是按照现有的正常内存分配方式进行分配的,而与前N-1个内存单元连续的第N个内存单元是本申请在现有的正常内存分配的基础上额外为内存请求分配的一个内存单元。
一个具体的例子,在一个内存单元(如内存页)的存储空间大小为4kB字节的情况下,针对请求6kB字节的堆内存空间的内存请求,内存分配模块310应为该内存请求分配3个连续的内存单元,且内存分配模块310应将第一个内存单元和第二个内存单元的属性设置为可访问(如设置为used),而将第三个内存单元的属性设置为不可访问(如设置为noaccess),即第三个内存单元成为防护内存单元。
在现有的内存分配过程中,通常会针对该内存请求返回第一个内存单元的起始地址,而在本申请中,内存分配模块310返回的内存地址通常并不是分配的第一个内存单元的起始地址,而是从第N-1个内存单元的尾部开始,向前计算出与内存请求所请求的内存空间大小相等的内存空间的起始地址。
续前例,内存分配模块310针对内存请求所返回的内存地址为第一个内存单元的最后2kB字节存储空间的起始地址,从而内存分配模块310使待检测文件所能够使用的内存空间大小仅为本次请求的6kB字节的内存空间大小。
信息分析模块320主要用于根据属性被设置为不可访问的内存单元被访问而产生的异常信息,对待检测数据(下述称为待检测文件)进行检测。
作为示例,在待检测文件攻击应用程序/操作系统的安全漏洞(尤其是0day)的过程中,往往会对正常分配的内存单元之外的其他内存单元进行访问,如通过执行栈溢出操作、堆溢出操作或者内存越界访问操作来对正常分配的内存单元之外的其他内存单元进行访问;而在本申请的内存分配模块310所形成的调试环境中,由于内存分配模块310额外分配的内存单元的属性被设置为不可访问,且内存分配模块310针对内存请求返回的起始地址为从第N-1个内存单元的尾部开始计算出的起始地址,因此,栈溢出操作、堆溢出操作或者内存越界访问操作一定会引起对分配的属性被设置为不可访问的内存单元的访问;而在属性被设置为不可访问的内存单元被访问时,会发生内存异常操作错误,沙盒会主动产生异常信息,从而信息分析模块320可以及时准确的捕获到该异常信息;信息分析模块320可以将沙盒产生的该异常信息作为日志信息存储,在针对待检测文件的本次安全检测周期结束时,信息分析模块320可以将本次安全检测周期内所产生的所有日志信息添加在相应的日志队列中,等待分析;后续在信息分析模块320针对该待检测文件的日志信息进行分析时,信息分析模块320可以通过对日志队列中的异常信息的分析来确定出该待检测文件是否为对应用程序/操作系统的安全漏洞进行攻击的样本。
内存回收模块340主要用于在N个内存单元被释放而回收时,将前N-1个内存单元的属性设置为不可访问。
作为示例,在针对内存请求而分配的N个内存单元被释放时,内存回收模块340应回收这N个内存单元,并将前N-1个内存单元的属性设置为不可访问,也就是说,回收的N个内存单元的属性均被设置为不可访问。内存回收模块340回收的内存单元均可以用于内存分配模块310的内存单元再分配,即内存分配模块310针对内存请求进行分配的内存单元包括:已被内存回收模块340回收且属性被设置为不可访问的内存单元。
由于本申请中的被内存回收模块340回收的所有内存单元的属性均被设置为不可访问,因此,在沙盒331中运行的待检测文档在促使应用程序执行UAF或者double free等内存异常操作时,一定会引起对已回收的属性被设置为不可访问的内存单元的操作;而在已回收的属性被内存回收模块340设置为不可访问的内存单元被操作时,会发生内存异常操作错误,沙盒331会主动产生异常信息,从而信息分析模块320可以及时准确的捕获到该异常信息;信息分析模块320可以将沙盒产生的该异常信息作为日志信息存储,在针对待检测文件的本次安全检测周期结束时,信息分析模块320可以将本次安全检测周期内所产生的所有日志信息添加在相应的日志队列中,并等待分析;后续在信息分析模块320针对该待检测文件的日志信息进行分析时,信息分析模块320可以通过对该异常信息的分析来判别待检测文件是否为对应用程序/操作系统的安全漏洞进行攻击的样本。
行为监控模块350主要用于在检测到应用程序/操作系统执行了创建进程行为、读写其他进程行为以及崩溃行为时,产生应用程序/操作系统行为异常信息。
本申请通过内存分配模块310为待检测文件设置调试环境的技术方案,可以过滤掉大量的安全漏洞攻击行为(如栈溢出、堆溢出、内存越界访问、UAF以及double free等类型的安全漏洞攻击行为),除了这些安全漏洞攻击行为之外,其他的安全漏洞攻击行为通常包括:网络连接请求行为、创建进程行为、读写其他进程行为以及崩溃(Crash)行为;本申请的装置可以采用调试环境与行为信息记录分析相结合的方式来实现全面的安全检测;由此可知,行为监控模块350可以仅记录应用程序/操作系统的网络连接请求行为、创建进程行为、读写其他进程行为以及崩溃行为的信息,本申请的装置即可实现对待检测文件的全面安全检测,也就是说,本申请的行为监控模块350为轻量级行为监测模块;从而本申请的装置有效避免了针对各种行为进行检测记录而导致自身体积庞大的问题。
作为示例,行为监控模块350可以通过hook技术来监测应用程序/操作系统是否执行了创建进程操作(如是否调用了NtCreateProcess或者NtCreateUserProcess等接口函数)、读写其他进程操作、Crash操作以及网络连接请求操作,并在监测到应用程序/操作系统执行了创建进程操作、读写其他进程操作、Crash操作以及网络连接请求操作时,记录行为信息,本申请可以将记录的行为信息作为日志信息存储,在针对待检测文件的本次安全检测周期结束时,行为监控模块350可以将本次安全检测周期内所产生的所有日志信息添加在相应的日志队列中,等待信息分析模块320分析;后续在信息分析模块320针对该待检测文件的日志信息进行分析时,信息分析模块320可以通过对日志队列中的行为信息以及上述异常信息的综合分析来判别待检测文件是否为对应用程序/操作系统的安全漏洞进行攻击的样本。
另外,行为监控模块350在记录行为信息过程中,可以不记录应用程序/操作系统所自有的创建进程操作(如开始运行被检测文件时所执行的用于创建特定进程名称的创建进程操作)、读写其他进程操作以及网络连接请求操作(如连接应用程序客户端的服务器的网络连接请求操作)的行为信息。当然,如果行为监控模块350记录了应用程序/操作系统所自有的创建进程操作、读写其他进程操作以及网络连接请求操作的行为信息,则信息分析模块320在行为信息分析的过程中,可以过滤掉应用程序/操作系统所自有的创建进程操作、读写其他进程操作以及网络连接请求操作的行为信息,即信息分析模块320不将日志信息中的应用程序/操作系统所自有的创建进程操作、读写其他进程操作以及网络连接请求操作的行为信息作为判断待检测文件为安全漏洞攻击样本的参考因素。
需要特别说明的是,虽然信息分析模块320可以通过hook技术监测应用程序/操作系统是否执行了网络连接请求操作,然而,本申请的装置也可以通过数据包抓包方式来监测应用程序/操作系统是否执行了网络连接请求操作,如虚拟机所在的宿主机中的抓包模块360通过数据包抓包方式来监测应用程序/操作系统是否执行了网络连接请求操作。另外,抓包模块360在抓取到网络连接请求数据包后,抓包模块360可以判断该网络连接请求数据包是否为应用程序/操作系统所自有的网络连接请求操作的数据包,如果是,则抓包模块360可以不记录相关的行为信息,如果不是,则抓包模块360应记录相关的行为信息;抓包模块360可以将记录的行为信息作为日志信息存储,在针对待检测文件的本次安全检测周期结束时,抓包模块360可以将本次安全检测周期内所产生的所有日志信息添加在相应的日志队列中,等待信息分析模块320分析;后续信息分析模块320可以通过对日志队列中的行为信息以及上述异常信息的综合分析来判别待检测文件是否为对应用程序/操作系统的安全漏洞进行攻击的样本。
本申请针对一个待检测文件的安全检测周期可以由信息分析模块320控制在较短的时间范围内,如由信息分析模块320控制在1分钟之内,也就是说,如果应用程序/操作系统在安全检测周期内没有执行关闭被检测文件或者退出行为,则信息分析模块320可以关闭检测文件,并可以开始对待检测文件的日志信息进行分析。
需要注意的是,本申请的一部分可以被应用为计算机程序产品,例如计算机程序指令,当其被智能电子设备(如计算机或者服务器等)执行时,通过该智能电子设备的操作可以调用或者提供根据本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存储在固定的或可移动的记录介质中,和/或通过广播或者其他信号承载媒体中的数据流而被传输,和/或被存储在根据所述程序指令运行的智能电子设备的工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根据本申请的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本申请并不局限于上述示范性实施例的细节,而且在不背离本申请的精神或者基本特征的情况下,能够以其他的具体形式实现本申请。因此,无论从哪一点来看,均应将本申请的实施例看作是示范性的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。装置权利要求中陈述的多个单元或者装置或者模块也可以由一个单元或者装置或者模块通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
Claims (13)
1.一种数据检测方法,包括:
在资源隔离环境中,运行待检测数据;
针对运行所述待检测数据产生的内存请求,分配连续的N个内存单元,其中,内存单元为内存分配的单位,N大于1,前N-1个内存单元用于满足内存请求,第N个内存单元的属性被设置为不可访问;
根据属性被设置为不可访问的内存单元被访问而产生的异常信息,对待检测数据进行检测。
2.根据权利要求1所述的方法,其中,所述在资源隔离环境中,运行待检测数据的步骤包括:
针对可执行类型的待检测数据,在安装有操作系统的资源隔离环境中,执行所述待检测数据;
针对不可执行类型的待检测数据,在安装有所述待检测数据对应的应用程序的资源隔离环境中,打开所述待检测数据。
3.根据权利要求2所述的方法,其中,所述资源隔离环境中所安装的应用程序包括:最新版本且更新了全量补丁包的应用程序。
4.根据权利要求1所述的方法,其中,所述资源隔离环境为沙盒。
5.根据权利要求4所述的方法,其中,所述在资源隔离环境中,运行待检测数据的步骤包括:
将从待检测数据集合中获取的待检测数据调度到沙盒集群中的其中一个沙盒中运行。
6.根据权利要求5所述的方法,其中,所述将从待检测数据集合中获取的待检测数据调度到沙盒集群中的其中一个沙盒中运行的步骤包括:
根据从待检测数据集合中获取的待检测数据的数据内容中的数据类型指纹信息确定待检测数据对应的检测任务队列;
将待检测数据添加到其对应的检测任务队列中;
将检测任务队列中的待检测数据分配到沙盒集群中的一个与所述待检测数据的类型适配的沙盒中运行。
7.根据权利要求1所述的方法,其中,所述分配连续的N个内存单元的步骤包括:
从第N-1个内存单元的尾部开始,向前计算出与所述内存请求所请求的内存空间大小相等的内存空间的起始地址,并返回所述起始地址。
8.根据权利要求1所述的方法,其中,所述方法还包括:
在所述N个内存单元被释放而回收时,将前N-1个内存单元的属性设置为不可访问。
9.根据权利要求8所述的方法,其中,所述分配连续的N个内存单元的步骤包括:
将针对所述内存请求分配的前N-1个内存单元的属性设置为可访问。
10.根据权利要求1至9中任一权利要求所述的方法,其中,所述方法还包括:
在检测到运行的待检测数据执行了创建进程行为、读写其他进程行为以及崩溃行为时,产生行为异常信息;
且所述根据属性被设置为不可访问的内存单元被访问而产生的异常信息,对待检测数据进行检测的步骤包括:
根据属性被设置为不可访问的内存单元被访问而产生的异常信息以及所述行为异常信息,对待检测数据进行检测。
11.根据权利要求1至9中任一权利要求所述的方法,其中,所述方法还包括:
通过数据包抓包方式获取网络连接请求;
且所述根据属性被设置为不可访问的内存单元被访问而产生的异常信息,对待检测数据进行检测的步骤包括:
根据属性被设置为不可访问的内存单元被访问而产生的异常信息以及所述网络连接请求,对待检测数据进行检测。
12.一种数据检测装置,其中,所述装置包括:
数据分配模块,用于在资源隔离环境中,运行待检测数据;
内存分配模块,用于针对运行所述待检测数据产生的内存请求,分配连续的N个内存单元,其中,内存单元为内存分配的单位,N大于1,前N-1个内存单元用于满足内存请求,第N个内存单元的属性被设置为不可访问;
信息分析模块,用于根据属性被设置为不可访问的内存单元被访问而产生的异常信息,对待检测数据进行检测。
13.根据权利要求12所述的装置,其中,所述数据分配模块具体用于:
针对可执行类型的待检测数据,在安装有操作系统的资源隔离环境中,执行所述待检测数据;
针对不可执行类型的待检测数据,在安装有所述待检测数据对应的应用程序的资源隔离环境中,打开所述待检测数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610659865.8A CN107729751A (zh) | 2016-08-12 | 2016-08-12 | 数据检测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610659865.8A CN107729751A (zh) | 2016-08-12 | 2016-08-12 | 数据检测方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107729751A true CN107729751A (zh) | 2018-02-23 |
Family
ID=61199733
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610659865.8A Pending CN107729751A (zh) | 2016-08-12 | 2016-08-12 | 数据检测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107729751A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109684827A (zh) * | 2018-03-14 | 2019-04-26 | 北京微步在线科技有限公司 | 沙箱报告过滤方法和装置 |
CN109885455A (zh) * | 2019-02-20 | 2019-06-14 | 北京微步在线科技有限公司 | 一种基于沙箱系统的数据处理方法及电子设备 |
CN110311901A (zh) * | 2019-06-21 | 2019-10-08 | 南京尓嘉网络科技有限公司 | 一种基于容器技术的轻量级网络沙箱设置方法 |
CN110764914A (zh) * | 2019-10-28 | 2020-02-07 | 锐捷网络股份有限公司 | 内存改写的定位方法及装置 |
CN115576737A (zh) * | 2022-12-07 | 2023-01-06 | 北京小米移动软件有限公司 | 异常检测方法、装置、电子设备及存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1673979A (zh) * | 2004-03-24 | 2005-09-28 | 华为技术有限公司 | 一种内存分配方法 |
CN1936764A (zh) * | 2005-11-16 | 2007-03-28 | 白杰 | 检测程序操作行为的方法及病毒程序检测、清除方法 |
CN101520754A (zh) * | 2009-03-24 | 2009-09-02 | 中兴通讯股份有限公司 | 内存越界访问的定位方法及装置 |
US20120210092A1 (en) * | 2011-02-14 | 2012-08-16 | Seagate Technology Llc | Dynamic storage regions |
CN104766011A (zh) * | 2015-03-26 | 2015-07-08 | 国家电网公司 | 基于主机特征的沙箱检测告警方法和系统 |
CN104899157A (zh) * | 2015-05-28 | 2015-09-09 | 北京北信源软件股份有限公司 | 一种内存溢出检测方法和系统 |
-
2016
- 2016-08-12 CN CN201610659865.8A patent/CN107729751A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1673979A (zh) * | 2004-03-24 | 2005-09-28 | 华为技术有限公司 | 一种内存分配方法 |
CN1936764A (zh) * | 2005-11-16 | 2007-03-28 | 白杰 | 检测程序操作行为的方法及病毒程序检测、清除方法 |
CN101520754A (zh) * | 2009-03-24 | 2009-09-02 | 中兴通讯股份有限公司 | 内存越界访问的定位方法及装置 |
US20120210092A1 (en) * | 2011-02-14 | 2012-08-16 | Seagate Technology Llc | Dynamic storage regions |
CN104766011A (zh) * | 2015-03-26 | 2015-07-08 | 国家电网公司 | 基于主机特征的沙箱检测告警方法和系统 |
CN104899157A (zh) * | 2015-05-28 | 2015-09-09 | 北京北信源软件股份有限公司 | 一种内存溢出检测方法和系统 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109684827A (zh) * | 2018-03-14 | 2019-04-26 | 北京微步在线科技有限公司 | 沙箱报告过滤方法和装置 |
CN109885455A (zh) * | 2019-02-20 | 2019-06-14 | 北京微步在线科技有限公司 | 一种基于沙箱系统的数据处理方法及电子设备 |
CN110311901A (zh) * | 2019-06-21 | 2019-10-08 | 南京尓嘉网络科技有限公司 | 一种基于容器技术的轻量级网络沙箱设置方法 |
CN110311901B (zh) * | 2019-06-21 | 2022-03-08 | 北京雅客云安全科技有限公司 | 一种基于容器技术的轻量级网络沙箱设置方法 |
CN110764914A (zh) * | 2019-10-28 | 2020-02-07 | 锐捷网络股份有限公司 | 内存改写的定位方法及装置 |
CN115576737A (zh) * | 2022-12-07 | 2023-01-06 | 北京小米移动软件有限公司 | 异常检测方法、装置、电子设备及存储介质 |
CN115576737B (zh) * | 2022-12-07 | 2023-11-21 | 北京小米移动软件有限公司 | 异常检测方法、装置、电子设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11625485B2 (en) | Method of malware detection and system thereof | |
US10417424B2 (en) | Method of remediating operations performed by a program and system thereof | |
AU2019200445B2 (en) | Methods and apparatus for dealing with malware | |
CN107729751A (zh) | 数据检测方法及装置 | |
CN105593870B (zh) | 用于恶意软件检测的复杂评分 | |
JP6212548B2 (ja) | カーネルレベル・セキュリティ・エージェント | |
CN103839003B (zh) | 恶意文件检测方法及装置 | |
CN100472547C (zh) | 一种查杀rootkit的系统及方法 | |
EP4095724B1 (en) | Method of remediating operations performed by a program and system thereof | |
Pagani et al. | Introducing the temporal dimension to memory forensics | |
DE202011111121U1 (de) | System zum Erfassen komplexer Schadsoftware | |
CN101819525A (zh) | 用于查找系统中应用的配置文件的方法和设备 | |
US11443032B2 (en) | Stack pivot exploit detection and mitigation | |
CN111859399B (zh) | 一种基于oval的漏洞检测方法及装置 | |
CN106355092A (zh) | 用于优化反病毒测定的系统和方法 | |
CN111191243A (zh) | 一种漏洞检测方法、装置和存储介质 | |
CN104750536B (zh) | 一种实现虚拟机自省的方法和装置 | |
CN109597675A (zh) | 虚拟机恶意软件行为检测方法及系统 | |
Sihag et al. | Opcode n-gram based malware classification in android | |
CN115904605A (zh) | 软件防御方法以及相关设备 | |
CN107885489A (zh) | 一种快速检测实名登记数据指标的方法和系统 | |
CN103677746B (zh) | 指令重组方法及装置 | |
CN109800581B (zh) | 软件行为的安全防护方法及装置、存储介质、计算机设备 | |
CN103677769B (zh) | 指令重组方法及装置 | |
Tobin et al. | Forensic analysis of virtual hard drives |
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 | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180223 |
|
RJ01 | Rejection of invention patent application after publication |