CN107229867B - 内核漏洞挖掘方法、装置、计算设备及计算机存储介质 - Google Patents
内核漏洞挖掘方法、装置、计算设备及计算机存储介质 Download PDFInfo
- Publication number
- CN107229867B CN107229867B CN201710440025.7A CN201710440025A CN107229867B CN 107229867 B CN107229867 B CN 107229867B CN 201710440025 A CN201710440025 A CN 201710440025A CN 107229867 B CN107229867 B CN 107229867B
- Authority
- CN
- China
- Prior art keywords
- kernel
- information
- key information
- data
- vulnerability
- 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
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
技术领域
本发明涉及信息安全技术领域,具体涉及一种内核漏洞挖掘方法、装置、计算设备及计算机存储介质。
背景技术
内核,是一个操作系统的核心,也是基于硬件的第一层软件扩充,提供操作系统的最基本的功能,是操作系统工作的基础。与此同时,内核信息泄露就意味着内核中的关键信息可能被漏洞利用者用于对系统的攻击等操作。
现有技术针对这种内核信息泄露型漏洞有一些缓解措施:在Windows Vista操作系统之后,微软对内核引入了地址空间配置随机加载技术(Kernel Address Space LayoutRandomization,以下简称KASLR),KASLR随机化了模块的加载基址、内核对象的地址等,缓解了内核信息泄露型漏洞的利用;在Win8之后,引入了nt!ExIsRestrictedCaller来阻止低完整性(Low integrity) 的程序调用某些可以泄漏出模块基址、内核对象地址等关键信息的函数,这项措施使得针对内核信息泄露型漏洞的缓解得到进一步的增强。
作为漏洞的利用者来说,挖掘出信息泄漏漏洞,来直接泄漏出所需要的模块基址,就是直接对抗KASLR的办法;并且,nt!ExIsRestrictedCaller对于完整性在中级以下的程序,在Win8以后会调用失败。对于传统内存损坏类漏洞而言,漏洞本身就会影响系统的正常运行,使用校对机(verifier)等工具,能较为方便的捕获这种异常,但是信息泄漏类型的漏洞,并不会触发异常,也不会干扰系统的正常运行,这使得发现它们较为困难。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的内核漏洞挖掘方法、装置、计算设备及计算机存储介质。
根据本发明的一个方面,提供了一种内核漏洞挖掘方法,其包括:
监控内核向用户态内存写数据的操作,获取写数据的操作有关的日志信息;
对日志信息进行分析,查找到内核漏洞的发生点;
生成内核漏洞的发生点的可读信息。
根据本发明的另一方面,提供一种内核漏洞挖掘装置,其包括:
监控模块,适于监控内核向用户态内存写数据的操作,获取写数据的操作有关的日志信息;
分析模块,适于对日志信息进行分析,查找到内核漏洞的发生点;
生成模块,适于生成内核漏洞的发生点的可读信息。
根据本发明的又一方面,提供了一种计算设备,包括:处理器、存储器、通信接口和通信总线,处理器、存储器和通信接口通过通信总线完成相互间的通信;
存储器用于存放至少一可执行指令,可执行指令使处理器执行上述内核漏洞挖掘方法对应的操作。
根据本发明的再一方面,提供了一种计算机存储介质,存储介质中存储有至少一可执行指令,可执行指令使处理器执行如上述内核漏洞挖掘方法对应的操作。
根据本发明的内核漏洞挖掘方法、装置、计算设备及计算机存储介质,通过监控内核向用户态内存写数据的操作,获取写数据的操作有关的日志信息,这样就能将内核漏洞的信息包括在日志信息中;再对日志信息进行解码分析,根据漏洞的信息查找到内核信息泄露的位置,即漏洞的发生点;生成内核漏洞的发生点的可读信息,以便根据该可读信息针对内核漏洞的发生点进行修复。采用本发明的内核漏洞挖掘方法、装置、计算设备及计算机存储介质,无需手动编码,仅仅依靠系统运行产生的日志就能及时发现内核信息泄露的位置,以便针对该内核漏洞进行修复,避免由于漏洞利用者对泄露信息的利用来对系统进行攻击等操作。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的内核漏洞挖掘方法的流程图;
图2示出了根据本发明另一个实施例的内核漏洞挖掘方法的流程图;
图3示出了根据本发明又一个实施例的内核漏洞挖掘方法的流程图;
图4示出了根据本发明一个实施例的内核漏洞挖掘装置的功能框图;
图5示出了根据本发明另一个实施例的内核漏洞挖掘装置的功能框图;
图6示出了根据本发明又一个实施例的内核漏洞挖掘装置的功能框图;
图7示出了根据本发明实施例的一种计算设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
图1示出了根据本发明一个实施例的内核漏洞挖掘方法的流程图。如图 1所示,该方法包括以下步骤:
步骤S101,监控内核向用户态内存写数据的操作,获取写数据的操作有关的日志信息。
内核运行的过程当中,总会跟应用层有交互,会在应用层写一些数据,而写入数据的过程中,就有可能把一些关键信息给写入进去,比如内核模块基址或者一些对象的地址,造成内核信息的泄露。当发生内核信息泄露时,这种内核信息泄露型漏洞泄露的信息、泄露内核模块地址或者内核对象的位置会被漏洞利用者用于对系统进行攻击等操作。因此,发现这种漏洞显得相当重要。
当内核信息泄漏发生时,内核必然会把关键的信息写入用户态的内存,如果我们监控所有内核态写入到用户态地址的写操作,就能够捕获到内核信息泄露的行为。本实施例中通过监控内核向用户态内存写数据的操作,获取写数据的操作有关的日志信息,就能将泄露的信息、泄露的位置等信息全部包括到日志信息里。
可选地,本发明可以利用专门的基于硬件虚拟化的挖掘框架工具来捕获内核向用户态内存写数据的操作,将捕获到的操作记录到日志中。
步骤S102,对日志信息进行分析,查找到内核漏洞的发生点。
对获取写数据的操作有关的日志信息进行解码分析,查找内核信息泄露的位置,即内核漏洞的发生点。
步骤S103,生成内核漏洞的发生点的可读信息。
将查找到的内核漏洞的发生点生成对应的可读信息,以便针对该内核漏洞发生点进行修复。
本发明实施例提供的内核漏洞挖掘方法,通过监控内核向用户态内存写数据的操作,获取写数据的操作有关的日志信息,这样就能将内核漏洞的信息包括在日志信息中;再对日志信息进行解码分析,根据漏洞的信息查找到内核信息泄露的位置,即漏洞的发生点;生成内核漏洞的发生点的可读信息,以便根据该可读信息针对内核漏洞的发生点进行修复。采用本发明实施例提供的内核漏洞挖掘方法,无需手动编码,仅仅依靠系统运行产生的日志就能及时发现内核信息泄露的位置,以便针对该内核漏洞进行修复,避免由于漏洞利用者对泄露信息的利用来对系统进行攻击等操作。
图2示出了根据本发明另一个实施例的内核漏洞挖掘方法的流程图。如图2所示,该方法包括以下步骤:
步骤S201,在系统调用发生时向当前未使用的内核堆栈空间填充污染标记数据。
本方法针对于内核堆栈变量未被正确初始化的情况,即未被正确初始化的变量被写入到用户态内存所造成的内核信息泄露情况。所采取的措施具体为内核堆栈毒化(也称内核堆栈污染),指的是通过在当前未使用的内核堆栈空间填充污染标记数据污染整个未使用的内核堆栈空间。如果某个内核堆栈上的变量没有被正确初始化,那么在这个变量被写到用户态内存时,写入的数据里就包含污染标记数据,通过查找出这个污染标记数据在日志中的记录,就是发生泄漏的位置,即内核泄漏的发生点。
本实施例通过在系统调用发生时,向当前未使用的内核堆栈空间填充污染标记数据。一种可选的实施方式是,通过捕获KiFastCallEntry函数,在系统调用发生时,向当前未使用的内核堆栈空间填充污染标记数据。即为了有时机污染内核堆栈,通过捕获KiFastCallEntry函数来拦截每一次的系统调用,并在拦截到系统调用时,向当前未使用的内核堆栈空间填充污染标记数据,其中,向当前未使用的内核堆栈空间填充污染标记数据具体可为,使用 IoGetStackLimits函数获取当前线程的范围,然后从堆栈底部到当前堆栈位置的整个空间填充污染标记数据。
以填充的污染标记数据为0xAA为例,通过Hook KiFastCallEntry函数,在每次系统调用发生时,向当前未使用的内核堆栈空间填充0xAA,即向未初始化的内核堆栈空间内的变量赋值为0xAA。
步骤S202,在虚拟机中监控内核向用户态内存写数据的操作,获取写数据的操作有关的日志信息。
为了不干扰目标系统本身的操作,本发明实施例中,监控内核向用户态内存写数据的操作,获取写数据的操作有关的日志信息具体为:在虚拟机里执行监控,获取必要的信息,并写成日志信息。
在虚拟机中监控内核向用户态内存写数据的操作要有支持硬件虚拟化的中央处理器(Central Processing Unit,简称CPU)来实现,其中,硬件虚拟化是指借助硬件(主要是主机处理器)的支持来实现的高效全虚拟化技术。具体地,利用CPU的硬件虚拟化来扩展支持,在64位甚至更高位的Windows 平台上实现完整的行为拦截,例如在Intel公司的虚拟化技术(Virtualization Technology,简称Intel-VT)的支持下,客机操作系统(Guest OS)和虚拟机监控器(Virtual Machine Monitor,简称VMM)的执行环境自动地完全隔离开来,Guest OS有自己的寄存器,可以直接运行在最高级别,硬件虚拟化能够具有独立的操作平台,实现对不安全行为的拦截及处理。
以第三方主动防御软件在Windows平台上常用的内核态例程挂接(Kernel ModeRoutine Hooking)为例,微软公司在内核里设计了一张系统服务派发表(System ServiceDispatch Table,简称SSDT),SSDT里的例程涵盖了:文件操作、注册表操作、进程操作、线程操作、内存操作以及对象操作等功能。第三方主动防御软件通过对操作系统的补丁操作,例如替换系统服务派发表里的处理例程,可以达到截获系统调用的目的。
在本实施例中,启动本机操作系统,对该系统执行硬件虚拟化操作,生成 VMM,利用权限高于本机操作系统的VMM对至少一个CPU进行监控,并根据触发结果进行相应处理。
步骤S203,将日志信息输出给宿主机,以供宿主机对日志信息进行分析。
在获取写数据的操作有关的日志信息之后,将日志信息输出给宿主机,由宿主机完成对日志信息的分析。
步骤S204,在日志信息中查找污染标记数据,根据污染标记数据确定内核漏洞的发生点。
本实施例中,查找到内核漏洞的发生点为:在日志信息中查找污染标记数据,根据污染标记数据确定内核漏洞的发生点。具体地,对应内核信息泄露的位置,即内核漏洞的发生点,其写入到用户态内存的数据为污染标记数据,则日志信息中对应内核漏洞的发生点的数据也为污染标记数据,这样就能通过日志信息中污染标记数据对应的位置确定内核漏洞的发生点。
步骤S205,生成内核漏洞的发生点的可读信息。
将查找到的内核漏洞的发生点生成对应的可读信息,以便对该漏洞进行修复。
另外,在本发明的再一个实施例中,在向当前未使用的内核堆栈空间填充污染标记数据的过程中,可以多次变换所填充的污染标记数据。具体地,为了避免内核堆栈变量正确初始化的数值与污染标记数据碰巧相同,通过多次变换所填充的污染标记数据来避免由于上述巧合产生的误报,例如,第一次填充污染标记数据为0xAA,确定的内核漏洞的发生点为a和b,第二次填充污染标记数据为0xBB,确定的内核漏洞的发生点为b,则最终通过综合两次的结果,确定内核漏洞的发生点为b。
本发明实施例提供的内核漏洞挖掘方法,通过向未使用的内核堆栈空间填充污染标记数据来排除掉日志信息中正常写入的数据;在虚拟机中监控内核向用户态内存写数据的操作,获取写数据的操作有关的日志信息,将日志信息输出给宿主机,以供宿主机对日志信息进行分析,避免了对目标系统本身的干扰;在日志信息中查找污染标记数据,根据污染标记数据确定内核漏洞的发生点,这样能够简单直观地确定内核漏洞的发生点,以便及时针对该内核漏洞进行修复,避免由于漏洞利用者对泄露信息的利用来对系统进行攻击等操作。
图3示出了根据本发明又一个实施例的内核漏洞挖掘方法的流程图。该方法主要是针对直接泄露了关键信息的情况,比如直接写入了内核模块基址、内核对象地址和/或内核内存池地址,进一步通过差异比对确定真正的内核漏洞的发生点,如图3所示,该方法包括以下步骤:
步骤301,监控内核向用户态内存写数据的操作,获取写数据的操作有关的日志信息;其中,在监控过程中,需至少改变一次系统环境,监控系统环境改变前和改变后内核向用户态内存写数据的操作,获取写数据的操作有关的日志信息。
在系统运行的过程中,内核本身就会频繁的向用户态写入数据,很多数据在内核地址范围内,但实际上并不是有效的地址,只是一种噪音数据。这种噪音数据有很多,像字符串、像素、位置信息等都有可能恰好是一个内核地址,本发明实施例就是要排除掉这些噪音数据,发现真正的内核泄漏。
另外有一种简单的情况为:系统为了运行方便,内核会存一个当前的内核线程的地址,这个地址也可以在用户态上读到,并且通过监控获取的日志信息中这个地址为关键信息,但这种情况并不属于内核漏洞,内核会在用完该地址之后又把它清零,若在清零之后再进行监控,则无法在日志信息中再次查找到该地址。
上述情况,无论是噪音数据还是内核为了运行方便写入的数据,下文统一称为干扰数据,都有一个共同的特征:这些干扰数据都不总是在日志信息中表现为内核的关键信息,即当系统环境发生一定的改变后,这些干扰数据在日志信息中的表现也会发生改变,以噪音数据为例,由于其随机性,在系统环境改变前后的数据是不同的。因此,要想确定真正的内核漏洞的发生点,必须通过比对改变系统环境前后两次获取的日志信息,来排除掉系统环境改变前在日志信息中表现为关键信息,而在系统环境改变后的日志信息中不存在该关键信息的这些干扰数据的干扰。
具体地,在改变系统环境前,监控内核向用户态内存写数据的操作,获取写数据的操作有关的日志信息,在改变系统环境后,再次监控内核向用户态内存写数据的操作,获取写数据的操作有关的日志信息,如果是真正的内核漏洞,则必须能在两次获取的日志信息中都能表现出在相同的位置泄露相同类型的数据。
在本发明的一个具体实施例中,改变系统环境可以为:对系统进行重启。
步骤302,将日志信息输出给宿主机,以供宿主机对日志信息进行分析。
在获取写数据的操作有关的日志信息之后,将日志信息输出给宿主机。
步骤303,筛选出关键信息,根据关键信息确定关键信息的信息类型以及关键信息的泄漏位置。
在本发明实施例中,要查找到内核漏洞的发生点,首先要在改变系统环境前获取的日志信息中筛选出内核漏洞泄露的关键信息,即对日志信息进行分析,筛选出关键信息,根据关键信息确定关键信息的信息类型以及关键信息的泄露位置,关键信息至少包含:内核模块基址、内核对象地址和/或内核内存池地址。
具体地,预先确定内核漏洞泄露的关键信息有哪些,得到所有关键信息的列表,通过对改变系统环境前的日志信息分析,筛选出关键信息的列表中存在的关键信息并确定该关键信息的信息类型和关键信息的泄漏位置。
步骤304,根据关键信息以及关键信息的信息类型、关键信息的泄露位置,确定内核漏洞的发生点。
在改变系统环境后获取的日志信息中查找筛选出的关键信息,若查找到相同的关键信息,则进一步判断该关键信息的信息类型和泄露位置是否与改变系统环境前的关键信息的信息类型和泄漏位置一致,若不一致,则认定改变系统环境前筛选出的关键信息为内核偶然写入的与关键信息的列表中相同的数据,例如噪音数据,而该筛选出的关键信息的泄漏位置也不是内核漏洞的发生点;若一致,则认定改变系统环境前筛选出的关键信息为内核漏洞泄露的关键信息,而该筛选出的该关键信息的泄漏位置也就是内核漏洞的发生点。
即根据关键信息以及关键信息的信息类型、关键信息的泄露位置,确定内核漏洞的发生点具体为:改变系统环境后,分析日志信息并查找筛选出的关键信息,判断系统环境改变前关键信息的信息类型和泄露位置与系统环境改变后关键信息的信息类型和泄露位置是否一致,若是,则确定关键信息的泄露位置为内核漏洞的发生点。
步骤305,生成内核漏洞的发生点的可读信息。
将查找到的内核漏洞的发生点生成对应的可读信息,以便针对该漏洞发生点进行修复。
本发明实施例提供的内核漏洞挖掘方法,预先确定内核漏洞泄露的关键信息的列表,获取改变系统环境前的日志信息,筛选出关键信息的列表中存在的关键信息并确定该关键信息的信息类型和泄漏位置;获取改变系统环境后的日志信息,查找该日志信息中是否存在从改变系统环境前的日志信息中筛选出的关键信息,若存在,则进一步判断改变系统环境前后的该关键信息的信息类型和泄漏位置是否一致;若一致,则判定该关键信息的泄漏位置为内核漏洞的发生点。
利用本实施例提供的内核漏洞挖掘方法,可以排除噪音等干扰数据对确定内核漏洞的干扰;在虚拟机中监控,并将日志信息输出给宿主机进行分析,避免了对目标系统本身的干扰;根据关键信息以及关键信息的信息类型、关键信息的泄露位置,确定内核漏洞的发生点,这样能够简单高效地确定内核漏洞的发生点,以便及时针对该内核漏洞进行修复,避免由于漏洞利用者对泄露信息的利用来对系统进行攻击等操作。
图4示出了根据本发明一个实施例的内核漏洞挖掘装置的功能框图。如图4所示,该装置包括:监控模块41、分析模块42以及生成模块43。
监控模块41,适于监控内核向用户态内存写数据的操作,获取写数据的操作有关的日志信息。
当内核信息泄漏发生时,内核必然会把关键的信息写入用户态的内存,如果我们监控所有内核态写入到用户态地址的写操作,就能够捕获到内核信息泄露的行为。
分析模块42,适于对日志信息进行分析,查找到内核漏洞的发生点。
对获取写数据的操作有关的日志信息进行解码分析,查找内核信息泄露的位置,即内核漏洞的发生点。
生成模块43,适于生成内核漏洞的发生点的可读信息。
本发明实施例提供的内核漏洞挖掘装置,通过监控内核向用户态内存写数据的操作,获取写数据的操作有关的日志信息,这样就能将内核漏洞的信息包括在日志信息中;再对日志信息进行解码分析,根据漏洞的信息查找到内核信息泄露的位置,即漏洞的发生点;生成内核漏洞的发生点的可读信息,以便根据该可读信息针对内核漏洞的发生点进行修复。采用本发明实施例提供的内核漏洞挖掘装置,可以及时发现内核信息泄露的位置,以便针对该内核漏洞进行修复,避免由于漏洞利用者对泄露信息的利用来对系统进行攻击等操作。
图5示出了根据本发明另一个实施例的内核漏洞挖掘装置的功能框图。如图5所示,该装置在图4的基础上,还包括:填充模块51。
填充模块51,适于在系统调用发生时,向当前未使用的内核堆栈空间填充污染标记数据。
具体地,填充模块51进一步适于:通过捕获KiFastCallEntry函数,在系统调用发生时,向当前未使用的内核堆栈空间填充污染标记数据。
为了避免正确初始化的数据与填充污染标记数据相同的巧合,填充模块 51进一步适于:在向当前未使用的内核堆栈空间填充污染标记数据的过程中,多次变换所填充的污染标记数据。
在本实施例中,监控模块41在虚拟机中运行;分析模块42在宿主机中运行。
分析模块42进一步适于:在日志信息中查找污染标记数据,根据污染标记数据确定内核漏洞的发生点。
本发明实施例提供的内核漏洞挖掘装置,通过向未使用的内核堆栈空间填充污染标记数据来排除掉日志信息中正常写入的数据;在虚拟机中监控内核向用户态内存写数据的操作,获取写数据的操作有关的日志信息,将日志信息输出给宿主机,以供宿主机对日志信息进行分析,避免了对目标系统本身的干扰;在日志信息中查找污染标记数据,根据污染标记数据确定内核漏洞的发生点,这样能够简单高效地确定内核漏洞的发生点,以便及时针对该内核漏洞进行修复,避免由于漏洞利用者对泄露信息的利用来对系统进行攻击等操作。
图6示出了根据本发明又一个实施例的内核漏洞挖掘装置的功能框图。如图6所示,该装置在图4的基础上,还包括:环境处理模块61。
环境处理模块61,适于改变系统环境;具体地,环境处理模块61进一步适于:对系统进行重启。
监控模块41进一步适于:监控系统环境改变前和改变后内核向用户态内存写数据的操作。
分析模块42进一步适于:对日志信息进行分析,筛选出关键信息,根据关键信息确定关键信息的信息类型以及关键信息的泄露位置,关键信息至少包含:内核模块基址、内核对象地址和/或内核内存池地址;
根据关键信息以及关键信息的信息类型、关键信息的泄露位置,确定内核漏洞的发生点。
分析模块42还适于:改变系统环境后,分析日志信息并查找筛选出的关键信息,判断系统环境改变前关键信息的信息类型和泄露位置与系统环境改变后关键信息的信息类型和泄露位置是否一致,若是,则确定关键信息的泄露位置为内核漏洞的发生点。
利用本实施例提供的内核漏洞挖掘装置,可以排除噪音等干扰数据对确定内核漏洞的干扰;在虚拟机中监控,并将日志信息输出给宿主机进行分析,避免了对目标系统本身的干扰;根据关键信息以及关键信息的信息类型、关键信息的泄露位置,确定内核漏洞的发生点,这样能够简单高效地确定内核漏洞的发生点,以便及时针对该内核漏洞进行修复,避免由于漏洞利用者对泄露信息的利用来对系统进行攻击等操作。
本申请实施例提供了一种非易失性计算机存储介质,计算机存储介质存储有至少一可执行指令,该计算机可执行指令可执行上述任意方法实施例中的内核漏洞挖掘方法。
图7示出了根据本发明实施例的一种计算设备的结构示意图,本发明具体实施例并不对计算设备的具体实现做限定。
如图7所示,该计算设备可以包括:处理器(processor)702、通信接口(Communications Interface)704、存储器(memory)706、以及通信总线708。
其中:
处理器702、通信接口704、以及存储器706通过通信总线708完成相互间的通信。
通信接口704,用于与其它设备比如客户端或其它服务器等的网元通信。
处理器702,用于执行程序710,具体可以执行上述内核漏洞挖掘方法实施例中的相关步骤。
具体地,程序710可以包括程序代码,该程序代码包括计算机操作指令。
处理器702可能是中央处理器CPU,或者是特定集成电路ASIC (ApplicationSpecific Integrated Circuit),或者是被配置成实施本发明实施例的一个或多个集成电路。计算设备包括的一个或多个处理器,可以是同一类型的处理器,如一个或多个CPU;也可以是不同类型的处理器,如一个或多个CPU以及一个或多个ASIC。
存储器706,用于存放程序710。存储器706可能包含高速RAM存储器,也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。
程序710具体可以用于使得处理器702执行以下操作:
监控内核向用户态内存写数据的操作,获取写数据的操作有关的日志信息;
对日志信息进行分析,查找到内核漏洞的发生点;
生成内核漏洞的发生点的可读信息。
程序710具体还可以用于使得处理器702执行以下操作:
在虚拟机中监控内核向用户态内存写数据的操作,获取写数据的操作有关的日志信息。
程序710具体还可以用于使得处理器702执行以下操作:
将日志信息输出给宿主机,以供宿主机对日志信息进行分析,查找到内核漏洞的发生点。
程序710具体还可以用于使得处理器702执行以下操作:
在系统调用发生时,向当前未使用的内核堆栈空间填充污染标记数据。
程序710具体还可以用于使得处理器702执行以下操作:
通过捕获KiFastCallEntry函数,在系统调用发生时,向当前未使用的内核堆栈空间填充污染标记数据。
程序710具体还可以用于使得处理器702执行以下操作:
在向当前未使用的内核堆栈空间填充污染标记数据的过程中,多次变换所填充的污染标记数据。
程序710具体还可以用于使得处理器702执行以下操作:
在日志信息中查找污染标记数据,根据污染标记数据确定内核漏洞的发生点。
程序710具体还可以用于使得处理器702执行以下操作:
对日志信息进行分析,筛选出关键信息,根据关键信息确定关键信息的信息类型以及关键信息的泄露位置,关键信息至少包含:内核模块基址、内核对象地址和/或内核内存池地址;
根据关键信息以及关键信息的信息类型、关键信息的泄露位置,确定内核漏洞的发生点。
程序710具体还可以用于使得处理器702执行以下操作:
改变系统环境;
监控系统环境改变前和改变后内核向用户态内存写数据的操作;
改变系统环境后,分析日志信息并查找筛选出的关键信息,判断系统环境改变前关键信息的信息类型和泄露位置与系统环境改变后关键信息的信息类型和泄露位置是否一致,若是,则确定关键信息的泄露位置为内核漏洞的发生点。
程序710具体还可以用于使得处理器702执行以下操作:
对系统进行重启。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的内核漏洞挖掘装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
Claims (22)
1.一种内核漏洞挖掘方法,其包括:
监控内核向用户态内存写数据的操作,获取所述写数据的操作有关的日志信息;
对所述日志信息进行分析,查找到内核漏洞的发生点;
生成内核漏洞的发生点的可读信息;
其中,当内核信息泄漏发生时,内核会把关键信息写入用户态的内存,所述关键信息包括:内核模块基址、内核对象地址和/或内核内存池地址。
2.根据权利要求1所述的方法,其中,所述监控内核向用户态内存写数据的操作,获取所述写数据的操作有关的日志信息具体为:在虚拟机中监控内核向用户态内存写数据的操作,获取所述写数据的操作有关的日志信息。
3.根据权利要求1所述的方法,其中,所述方法还包括:将所述日志信息输出给宿主机,以供所述宿主机对所述日志信息进行分析,查找到内核漏洞的发生点。
4.根据权利要求1所述的方法,其中,在所述监控内核向用户态内存写数据的操作之前,所述方法还包括:在系统调用发生时,向当前未使用的内核堆栈空间填充污染标记数据。
5.根据权利要求4所述的方法,其中,所述在系统调用发生时,向当前未使用的内核堆栈空间填充污染标记数据具体为:通过捕获KiFastCallEntry函数,在系统调用发生时,向当前未使用的内核堆栈空间填充污染标记数据。
6.根据权利要求4或5所述的方法,其中,在向当前未使用的内核堆栈空间填充污染标记数据的过程中,多次变换所填充的污染标记数据。
7.根据权利要求4-5中任一项所述的方法,其中,所述对日志信息进行分析,查找到内核漏洞的发生点进一步包括:在日志信息中查找污染标记数据,根据污染标记数据确定内核漏洞的发生点。
8.根据权利要求1-3中任一项所述的方法,其中,所述对日志信息进行分析,查找到内核漏洞的发生点进一步包括:
对日志信息进行分析,筛选出关键信息,根据所述关键信息确定所述关键信息的信息类型以及所述关键信息的泄露位置;
根据所述关键信息以及所述关键信息的信息类型、所述关键信息的泄露位置,确定内核漏洞的发生点。
9.根据权利要求8所述的方法,其中所述方法还包括:改变系统环境;
所述监控内核向用户态内存写数据的操作进一步包括:监控系统环境改变前和改变后内核向用户态内存写数据的操作;
所述根据所述关键信息以及所述关键信息的信息类型、所述关键信息的泄露位置,确定内核漏洞的发生点进一步包括:改变系统环境后,分析日志信息并查找筛选出的关键信息,判断系统环境改变前所述关键信息的信息类型和泄露位置与系统环境改变后所述关键信息的信息类型和泄露位置是否一致,若是,则确定所述关键信息的泄露位置为内核漏洞的发生点。
10.根据权利要求9所述的方法,其中,所述改变系统环境具体为:对系统进行重启。
11.一种内核漏洞挖掘装置,其包括:
监控模块,适于监控内核向用户态内存写数据的操作,获取所述写数据的操作有关的日志信息;
分析模块,适于对所述日志信息进行分析,查找到内核漏洞的发生点;
生成模块,适于生成内核漏洞的发生点的可读信息;
其中,当内核信息泄漏发生时,内核会把关键信息写入用户态的内存,所述关键信息包括:内核模块基址、内核对象地址和/或内核内存池地址。
12.根据权利要求11所述的装置,其中,所述监控模块在虚拟机中运行。
13.根据权利要求11所述的装置,其中,所述分析模块在宿主机中运行。
14.根据权利要求11-13中任一项所述的装置,其中,所述装置还包括:填充模块,适于在系统调用发生时,向当前未使用的内核堆栈空间填充污染标记数据。
15.根据权利要求14所述的装置,其中,所述填充模块进一步适于:通过捕获KiFastCallEntry函数,在系统调用发生时,向当前未使用的内核堆栈空间填充污染标记数据。
16.根据权利要求14所述的装置,其中,所述填充模块进一步适于:在向当前未使用的内核堆栈空间填充污染标记数据的过程中,多次变换所填充的污染标记数据。
17.根据权利要求14所述的装置,其中,所述分析模块进一步适于:在日志信息中查找污染标记数据,根据污染标记数据确定内核漏洞的发生点。
18.根据权利要求11-13中任一项所述的装置,其中,所述分析模块进一步适于:
对日志信息进行分析,筛选出关键信息,根据所述关键信息确定所述关键信息的信息类型以及所述关键信息的泄露位置;
根据所述关键信息以及所述关键信息的信息类型、所述关键信息的泄露位置,确定内核漏洞的发生点。
19.根据权利要求18所述的装置,其中,还包括:环境处理模块,适于改变系统环境;
所述监控模块进一步适于:监控系统环境改变前和改变后内核向用户态内存写数据的操作;
所述分析模块进一步适于:改变系统环境后,分析日志信息并查找筛选出的关键信息,判断系统环境改变前所述关键信息的信息类型和泄露位置与系统环境改变后所述关键信息的信息类型和泄露位置是否一致,若是,则确定所述关键信息的泄露位置为内核漏洞的发生点。
20.根据权利要求19所述的装置,其中,所述环境处理模块进一步适于:对系统进行重启。
21.一种计算设备,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;
所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行如权利要求1-10中任一项所述的内核漏洞挖掘方法对应的操作。
22.一种计算机存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行如权利要求1-10中任一项所述的内核漏洞挖掘方法对应的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710440025.7A CN107229867B (zh) | 2017-06-12 | 2017-06-12 | 内核漏洞挖掘方法、装置、计算设备及计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710440025.7A CN107229867B (zh) | 2017-06-12 | 2017-06-12 | 内核漏洞挖掘方法、装置、计算设备及计算机存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107229867A CN107229867A (zh) | 2017-10-03 |
CN107229867B true CN107229867B (zh) | 2020-12-25 |
Family
ID=59936436
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710440025.7A Active CN107229867B (zh) | 2017-06-12 | 2017-06-12 | 内核漏洞挖掘方法、装置、计算设备及计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107229867B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111143851B (zh) * | 2019-12-11 | 2023-08-08 | 上海交通大学 | 适用于操作系统内核对象地址泄露的检测方法及系统 |
CN112035318B (zh) * | 2020-08-28 | 2022-03-22 | 北京浪潮数据技术有限公司 | 一种异常进程的定位方法、系统及相关装置 |
CN111966346B (zh) * | 2020-09-09 | 2022-05-10 | 支付宝(杭州)信息技术有限公司 | 应用系统的污点分析方法及装置 |
CN113703855B (zh) * | 2021-09-02 | 2023-09-12 | 展讯通信(天津)有限公司 | 随机偏移值的储存方法和装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20070008782A (ko) * | 2005-07-12 | 2007-01-18 | 한국전자통신연구원 | 커널 취약요소를 방어하기 위한 커널 패치 방법 및 시스템 |
CN105303114A (zh) * | 2015-10-26 | 2016-02-03 | 浪潮电子信息产业股份有限公司 | 基于windows的系统服务函数调用方法及装置 |
CN105740711A (zh) * | 2016-01-29 | 2016-07-06 | 哈尔滨工业大学深圳研究生院 | 一种基于内核对象行为本体的恶意代码检测方法及系统 |
-
2017
- 2017-06-12 CN CN201710440025.7A patent/CN107229867B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20070008782A (ko) * | 2005-07-12 | 2007-01-18 | 한국전자통신연구원 | 커널 취약요소를 방어하기 위한 커널 패치 방법 및 시스템 |
CN105303114A (zh) * | 2015-10-26 | 2016-02-03 | 浪潮电子信息产业股份有限公司 | 基于windows的系统服务函数调用方法及装置 |
CN105740711A (zh) * | 2016-01-29 | 2016-07-06 | 哈尔滨工业大学深圳研究生院 | 一种基于内核对象行为本体的恶意代码检测方法及系统 |
Non-Patent Citations (1)
Title |
---|
Kernel-based Behavior Analysis for Android Malware Detection;T.Isohara,el;《computational intelligence and security》;20111231;1-8,11-18,21-22 * |
Also Published As
Publication number | Publication date |
---|---|
CN107229867A (zh) | 2017-10-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107229867B (zh) | 内核漏洞挖掘方法、装置、计算设备及计算机存储介质 | |
US9832215B2 (en) | Automatic content inspection system for exploit detection | |
US7802050B2 (en) | Monitoring a target agent execution pattern on a VT-enabled system | |
US20140259169A1 (en) | Virtual machines | |
US10599558B1 (en) | System and method for identifying inputs to trigger software bugs | |
CN109784062B (zh) | 漏洞检测方法及装置 | |
US9552285B2 (en) | Micro-execution for software testing | |
CN113569246B (zh) | 漏洞检测方法、装置、计算机设备和存储介质 | |
CN111859375A (zh) | 漏洞检测方法、装置、电子设备及存储介质 | |
US20140122826A1 (en) | Detecting memory corruption | |
Rais et al. | JTAG-based PLC memory acquisition framework for industrial control systems | |
US11055168B2 (en) | Unexpected event detection during execution of an application | |
US9734330B2 (en) | Inspection and recovery method and apparatus for handling virtual machine vulnerability | |
US20170185784A1 (en) | Point-wise protection of application using runtime agent | |
US11868465B2 (en) | Binary image stack cookie protection | |
US9262274B2 (en) | Persistent data across reboots | |
US20200104507A1 (en) | Cyber security testing for authorized services | |
CN107239410B (zh) | 基于动态插桩的大块内存分配系统及方法 | |
JP2012083909A (ja) | アプリケーション特性解析装置およびプログラム | |
US20080114971A1 (en) | Branch history table for debug | |
US10635811B2 (en) | System and method for automation of malware unpacking and analysis | |
CN112351008B (zh) | 网络攻击分析方法、装置、可读存储介质及计算机设备 | |
CN113646763B (zh) | shellcode的检测方法及装置 | |
US9122551B2 (en) | Methods and systems for generating read-only operating systems | |
CN111143851A (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 |