CN103839007A - 一种检测异常线程的方法及系统 - Google Patents
一种检测异常线程的方法及系统 Download PDFInfo
- Publication number
- CN103839007A CN103839007A CN201410075289.3A CN201410075289A CN103839007A CN 103839007 A CN103839007 A CN 103839007A CN 201410075289 A CN201410075289 A CN 201410075289A CN 103839007 A CN103839007 A CN 103839007A
- Authority
- CN
- China
- Prior art keywords
- thread
- kernel
- worker thread
- abnormal
- work queue
- 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.)
- Granted
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/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种检测异常线程的方法及系统。一种检测异常线程的方法包括:获取系统当前的内核工作线程;对所述内核工作线程进行栈回溯,获得所述内核工作线程的执行逻辑首地址;获得所述首地址对应的内核工作线程的模块路径;对所得到的模块路径进行分析,如果所述模块路径为空,或为无效路径,则确定所述模块路径对应的内核工作线程为异常线程。一种检测异常线程的系统包括:线程获取单元、栈回溯单元、模块路径获取单元和异常线程确定单元。本发明能够有效检测出异常线程,进而对异常线程进行处理,增强了计算机的安全性。
Description
技术领域
本发明涉及计算机安全领域,特别涉及一种检测异常线程的方法及系统。
背景技术
随着科学技术的发展,计算机已经成为人们生活中必不可少的日常用品。无论是工作、学习还是娱乐,计算机都给人们提供了很多的便利。
计算机的核心是操作系统。作为使用计算机的平台,大部分操作都需要通过操作系统来完成。因此,一旦操作系统出现问题,将会严重影响计算机的正常使用。
计算机病毒是指,编制者在计算机程序中插入的、破坏计算机功能或者破坏数据、影响计算机使用并且能够自我复制的一组计算机指令或者程序代码。自从出现以来,计算机病毒便成为了计算机系统及信息安全的最大威胁。有些计算机病毒仅仅是占用系统部分内存,危害性较小,但有些计算机病毒却可以破坏计算机内的数据或清除计算机内的重要信息,甚至瘫痪操作系统,危害性极大。
2010年至2013年中,一种名为TDSS的Rootkit病毒在全球大肆流行。Rootkit是一种特殊的恶意软件,它的功能是在安装目标上隐藏自身及指定的文件、进程和网络链接等信息,Rootkit一般都和木马、后门等其他恶意程序结合使用。Rootkit通过加载特殊的驱动,修改系统内核,进而达到隐藏信息的目的。TDSS病毒具有Rootkit的特性,能破坏系统内核,并且很难被普通安全软件检测发现,即使被发现也很难清除,就算将被病毒破坏的系统内核修复,仍然会被重复感染。
发明内容
为了解决上述问题,本发明提供了一种检测异常线程的方法及系统,以对TDSS病毒进行检测,增强计算机的安全性,技术方案如下:
一种检测异常线程的方法,包括:
获取系统当前的内核工作线程;其中,所述内核工作线程为操作系统中最低层的线程实现,用于执行高优先级操作;
对所述内核工作线程进行栈回溯,获得所述内核工作线程的执行逻辑首地址;
获得所述首地址对应的内核工作线程的模块路径;
对所得到的模块路径进行分析,如果所述模块路径为空,或为无效路径,则确定所述模块路径对应的内核工作线程为异常线程。
该方法进一步包括:如果所述模块路径不为空或无效路径,则将所述模块路径和预设异常库中的模块路径进行比较,如果所述模块路径与所述异常库中任意模块路径相同,则确定所述模块路径对应的内核工作线程为异常线程。
该方法进一步包括:在所述确定所述模块路径对应的内核工作线程为异常线程之后,对所述异常线程执行挂起操作或结束该线程。
该方法进一步包括:在所述对所述异常线程执行挂起操作或结束该线程之后,对所述系统的内核进行检测,如果检测结果表明所述系统的内核被破坏,则对所述系统的内核进行修复。
所述获取系统当前的内核工作线程,具体包括:
通过系统提供的导出函数获得工作队列数组的起始地址;其中,系统当前的内核工作线程按照优先级划分到三种类型的工作队列中,不同类型的工作队列中包含不同优先级的内核工作线程,所述工作队列数组包含所述三种类型的工作队列的枚举值;
根据所述起始地址,分别定位所述三种类型的工作队列的首地址;
针对每种类型的工作队列,通过该类型工作队列的首地址,获取该类型工作队列中的内核工作线程。
所述对所述内核工作线程进行栈回溯,获得所述内核工作线程的执行逻辑首地址,具体包括:
遍历所述内核工作线程,得到所述内核工作线程的栈基址;
从栈基址开始,对所述内核工作线程进行栈回溯,获得所述内核工作线程的执行逻辑首地址。
本发明还提供了一种检测异常线程的系统,包括:
线程获取单元、栈回溯单元、模块路径获取单元和异常线程确定单元;其中,
所述线程获取单元用于获取系统当前的内核工作线程;其中,所述内核工作线程为操作系统中最低层的线程实现,用于执行高优先级操作;
所述栈回溯单元用于对所述内核工作线程进行栈回溯,获得所述内核工作线程的执行逻辑首地址;
所述模块路径获取单元用于获得所述首地址对应的内核工作线程的模块路径;
所述异常线程确定单元用于对所得到的模块路径进行分析,如果所述模块路径为空,或为无效路径,则确定所述模块路径对应的内核工作线程为异常线程。
所述异常线程确定单元进一步用于:如果所述模块路径不为空或无效路径,则将所述模块路径和预设异常库中的模块路径进行比较,如果所述模块路径与所述异常库中任意模块路径相同,则确定所述模块路径对应的内核工作线程为异常线程。
该系统进一步包括:后续处理单元;
所述后续处理单元用于对所述异常线程执行挂起操作或结束该线程。
较佳的,所述后续处理单元进一步用于:在所述对所述异常线程执行挂起操作或结束该线程之后,对所述系统的内核进行检测,如果检测结果表明所述系统的内核被破坏,则对所述系统的内核进行修复。
所述线程获取单元具体用于:
通过系统提供的导出函数获得工作队列数组的起始地址;其中,系统当前的内核工作线程按照优先级划分到三种类型的工作队列中,不同类型的工作队列中包含不同优先级的内核工作线程,所述工作队列数组包含所述三种类型的工作队列的枚举值;
根据所述起始地址,分别定位所述三种类型的工作队列的首地址;
针对每种类型的工作队列,通过该类型工作队列的首地址,获取该类型工作队列中的内核工作线程。
所述栈回溯单元具体用于:
遍历所述内核工作线程,得到所述内核工作线程的栈基址;
从栈基址开始,对所述内核工作线程进行栈回溯,获得所述内核工作线程的执行逻辑首地址。
本发明实施例中,通过对系统当前所有的内核工作线程进行栈回溯得到所述内核工作线程的执行逻辑首地址,通过该首地址定位异常线程,能够有效检测出异常线程;由于TDSS病毒是通过在系统内核中启动一个特殊线程对系统内核进行破坏,因此本发明能够有效的检测出该病毒,进而可以对该病毒进行处理,增强了系统的安全性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的检测异常线程的方法的第一种流程图;
图2为本发明实施例提供的内核线程获取方法的流程图;
图3为本发明实施例提供的栈回溯方法的流程图;
图4为本发明实施例提供的返回结果示意图;
图5为本发明实施例提供的检测异常线程的方法的第二种流程图;
图6为本发明实施例提供的检测异常线程的方法的第三种流程图
图7为本发明实施例提供的检测异常线程的系统的第一种结构示意图;
图8为本发明实施例提供的检测异常线程的系统的第二种结构示意图。
具体实施方式
首先对本发明提供的一种检测异常线程的方法进行说明,该方法包括:
获取系统当前的内核工作线程;其中,所述内核工作线程为操作系统中最低层的线程实现,用于执行高优先级操作;
对所述内核工作线程进行栈回溯,获得所述内核工作线程的执行逻辑首地址;
获得所述首地址对应的内核工作线程的模块路径;
对所得到的模块路径进行分析,如果所述模块路径为空,或为无效路径,则确定所述模块路径对应的内核工作线程为异常线程。
上述方法中,通过对系统当前所有的内核工作线程进行栈回溯得到内核工作线程的执行逻辑首地址,通过该首地址定位异常线程,能够有效检测出异常线程。
在实际应用中,本发明可以用来专门查杀TDSS病毒,也可以用来对异常线程进行检测,本发明对此不做限制。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
以Microsoft Windows操作系统为例,对本发明实施例提供的一种检测异常线程的方法做具体说明,图1为该方法的第一种流程图,可以包括以下步骤:
S101,获取系统当前的内核工作线程;
TDSS病毒通过在系统内核中启动一条线程,不断执行自身逻辑,并且破坏系统内核。就算将被该病毒破坏的系统内核修复,该病毒启动的线程依然存在于系统中,仍然能重复感染系统内核。
TDSS病毒很难被普通安全软件检测发现,即使检测到,因为该病毒是在内核中启动一条线程,在杀毒的过程中很容易对系统内核造成一定的损害,进而可能会给用户带来损失。
内核是操作系统的核心,负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。操作系统内核通常运行进程,并提供进程间的通信。
进程是操作系统结构的基础;是一次程序的执行;是一个程序及其数据在处理机上顺序执行时所发生的活动;是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。当操作系统被启动,系统会加载系统本身正常运行所需的各项任务,用户也会启动各种程序,在同一时间,系统中会存在多条进程。
线程有时被称为轻量级进程(Lightweight Process,LWP),是程序执行流的最小单元,是进程中的一个实体,是被系统独立调度和分派的基本单位。现有的操作系统中,大都采用多线程的方式来处理任务,以提高任务处理效率。
内核工作线程又称工作队列线程,是Windows操作系统上最低层的线程实现,常用于执行高优先级操作。
对TDSS病毒进行检测,需要将该病毒在内核中启动的线程定位。那么,首先需要将当前的系统内核中存在的线程列举出来,并对这些线程进行分析,来完成病毒的检测。
为了保护系统内核,一般无法直接查看系统当前的内核工作线程,需要通过一定的方法将当前的内核工作线程导出,如图2所示,该导出方法可以包括以下步骤:
S1011,通过系统提供的导出函数获得工作队列数组的起始地址;
一般来说,系统中的内核工作线程按照优先级的不同分为三种类型,每种类型的内核工作线程挂在一个工作队列之中。这三种不同类型的工作队列组成一个全局数组,在Windows系统中用ExWorkerQueue来表示。
全局数组ExWorkerQueue由系统内核使用,但是系统并未将其导出,本发明实施例利用一个系统提供的导出函数ExQueueWorkItem来将其导出。需要说明的是,本发明实施例只提供了其中一种得到全局数组ExWorkerQueue的方法,该全局数组也可以通过其他现有技术得到,本发明对此不做限制。
导出函数ExQueueWorkItem内部引用了全局数组ExWorkerQueue,因此,通过搜索该函数所在的内存块,便可以得到ExWorkerQueue的起始地址。具体搜索方法可以是任意一种现有技术,本发明对此不作限制。
S1012,根据所述起始地址,定位所述三种类型的工作队列的首地址;
内核工作线程的优先级可以分为三个级别,即:标准优先级(Critical)、低优先级(delayed)和高优先级(HyperCritical)。对应的工作队列在全局数组ExWorkerQueue中分别有以下枚举值:
其中,MaximumWorkQueue是一个变量,值为3,表示工作队列的个数。
通过步骤S1011得到全局数组ExWorkerQueue的起始地址之后,便可确定三种工作队列的首地址,分别为:ExWorkerQueue[CriticalWorkQueue]、ExWorkerQueue[DelayedWorkQueue]和ExWorkerQueue[HyperCriticalWorkQueue]。
S1013,针对每种类型的工作队列,通过该类型工作队列的首地址,获取该类型工作队列中的内核工作线程;
通过所得到的的三个首地址,可以定位三种工作队列,通过每个工作队列的首地址,可以得到系统当前的内核工作线程。具体方法可以是任意一种现有技术,本发明不做限制。
S102,对所述内核工作线程进行栈回溯,获得所述内核工作线程的执行逻辑首地址;
在计算机系统中,栈则是一个动态内存区域。程序可以将数据压入栈中,也可以将数据从栈顶弹出。栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。
如图3所示,步骤S102可以包括以下步骤:
S1021,遍历所得到的内核工作线程,得到所述内核工作线程的栈基址;
遍历是指沿着某条搜索路线,依次对结构中每个结点均做一次且仅做一次访问。访问结点所做的操作依赖于具体的应用问题。
以ExWorkerQueue[DelayedWorkQueue]工作队列为例,如果对该队列进行遍历,首先需要获得该工作队列中线程列表的头节点,本发明实施例中采用的C++代码如下:
Queue=&ExWorkerQueue[DelayedWorkQueue];
其中,Queue是一个变量,&为取地址运算符,上述代码行实现的是对ExWorkerQueue[DelayedWorkQueue]工作队列取首地址,即为该工作队列中线程列表的头节点地址。
需要说明的是,该代码只是实现本发明实施例的一个方法,不能对本发明构成限制。
从头节点开始,对ExWorkerQueue[DelayedWorkQueue]工作队列进行循环遍历,得到该工作队列中所有线程的栈基址。具体的实现方法可以是任何一种现有技术,本发明对此不作限制。
S1022,从栈基址开始,对所述内核工作线程进行栈回溯,获得所述内核工作线程的执行逻辑首地址。
栈回溯是指,通过栈结构反向层层推导,最终获取保存在栈中某一层中的变量值。
栈回溯其实是一个循环的过程,内核工作线程的执行逻辑首地址可以看做一个变量值,如果需要得到该首地址,必须对栈回溯设定一个终止的条件。
本发明实施例中,在变量ebp中存放一个指针,该指针指向栈最上面一个栈帧的底部。在栈回溯的过程中,这个数值不断的发生变化,直到满足某个条件时,停止栈回溯。
本发明实施例以操作系统提供的创建线程的函数PspCreateThreadStartup的内部地址的值来设定终止栈回溯的条件。系统在创建内核工作线程时,会调用PspSystemThreadStartup,该函数内部会使用内核工作线程的执行逻辑首地址。所以,在栈中,值为该函数的内部偏移的地址附近,即保存了当前内核工作线程的执行逻辑首地址。因此,在函数PspSystemThreadStartup上加一个小的偏移量,便可以设定为终止栈回溯的条件。当ebp中的数值与该偏移量相等时,ebp-8处保存的整数便为当前内核工作线程的执行逻辑首地址。
需要说明的是,该终止条件只是实现本发明的其中一个条件,可以通过设立其他终止条件结束栈回溯的过程,本发明对此不作限制。
S103,获得所述首地址对应的内核工作线程的模块路径,
系统会为每一个内核模块分配内存,每一条内核工作线程都有对应的内核模块,该内核模块中包含该线程的相关信息。如果能得到内核工作线程对应的内核模块,便可以通过该内核模块确定其对应的内核工作线程的模块路径。
具体地,本发明实施例采用如下方法进行这个步骤:
Windows系统提供了一个内核函数ZwQuerySystemInformation来查询进程信息、内核信息、硬件信息(例如CPU数目)、句柄信息、时间信息等54个系统信息。本发明实施例利用该函数来获得内核模块列表及其对应的内存范围。
使用内核函数ZwQuerySystemInformation,可以获得当前系统中所有的内核模块的信息列表,该列表中包含若干节点,每个节点对应的结构体如下:
其中,变量Base为模块所在内存的起始地址,变量Size为模块所在内存的大小,变量ImageName为模块的名字。
通过模块所在内存的起始地址和模块所在内存的大小,便可确定该模块的内存范围。具体实现方法可以是任何一种现有技术,本发明对此不做限制。将步骤S1022中得到的首地址匹配所得到的各个内核模块的内存范围,如果所述首地址落在某个内核模块的内存范围之内,该内核模块就是所述首地址对应的内核模块。
确定内核工作线程对应的内核模块之后,可以通过读取该内核模块的信息,得到内核工作线程对应的模块路径。
S104,对所得到的模块路径进行分析,如果所述模块路径为空,或为无效路径,则确定所述模块路径对应的内核工作线程是异常线程;
当得到的模块路径为空,或为无效路径时,本发明实施例默认的返回结果是“未知模块”,如图4所示。需要说明的是,图4只用来对本发明得到的结果做示意性说明,并不对本发明构成限制。
如果得到的返回结果是“未知模块”,则可以确定所述模块路径对应的内核工作线程是异常线程。
通过以上方法,可以有效的定位异常线程。一般来说,TDSS病毒启动的线程对应的模块路径为空,或是无效,本发明能够通过定位异常线程将TDSS病毒启动的线程定位出来,以便于后续的处理。
不过,现有的TDSS病毒中有少数发生了变异,可以将所启动的内核工作线程对应的模块路径伪装成正常路径。针对这种情况,本发明的一个优选实施例为:将得到的模块路径与预设的异常库中的异常路径做比较,如果该模块路径与异常库中任意异常路径相同,则确定该模块路径对应的内核工作线程为异常线程。
其中,预设的异常库中存储的模块路径为通过分析和收集得到的TDSS病毒伪装的正常路径,其具体分析和收集方法可以通过现有技术实现,本发明对此不作限制。
在确认内核工作线程是异常线程之后,可以进行后续处理,因此,在步骤S104之后,本发明提供的检测异常线程的方法还可以包括后续处理的步骤,如图5所示:
S105,对所述异常线程执行挂起操作或结束该线程;
为了增强稳定性,本发明实施例调用操作系统提供的挂起内核工作线程的函数KeSuspendThread来对异常线程执行挂起操作。该函数以步骤S102中得到的执行逻辑首地址作为参数,可以将对应的异常线程稳定的挂起。
需要说明的是,结束异常线程的方法并不局限于本发明实施例提出的方法,还可以有其他方法,本发明对此不做限制。
在挂起或结束异常线程之后,为了保证操作系统能够正常运行,还可以进行进一步的操作,如图6所示,本发明实施例提供的检测异常线程的方法还可以包括:
S106,对所述系统的内核进行检测,如果所述系统的内核被破坏,则对所述系统的内核进行修复。
由于在步骤S105中已经将异常线程挂起或结束,因此在修复系统内核之后,系统内核再次启动时,异常线程不会被启动,保护了系统内核的安全。对系统内核进行检测和修复的方法可以是任意一种现有技术,本发明不做限制。
通过上述方法,可以有效地检测出异常线程,进而可以对该异常线程进行处理,相应的,能够有效的查杀TDSS病毒。
本发明还提供了一种检测异常线程的系统,图7所示为该系统的结构示意图,可以包括:线程获取单元001、栈回溯单元002、模块路径获取单元003和异常线程确定单元004。
线程获取单元001,用于获取系统当前的内核工作线程;
该单元具体用于:
通过系统提供的导出函数获得工作队列数组的起始地址;其中,系统当前的内核工作线程按照优先级划分到三种类型的工作队列中,不同类型的工作队列中包含不同优先级的内核工作线程,所述工作队列数组包含所述三种类型的工作队列的枚举值;
根据所述起始地址,分别定位所述三种类型的工作队列的首地址;
针对每种类型的工作队列,通过该类型工作队列的首地址,获取该类型工作队列中的内核工作线程。
栈回溯单元002,用于对所述内核工作线程进行栈回溯,获得所述内核工作线程的执行逻辑首地址;
该单元具体用于:
遍历所述内核工作线程,得到所述内核工作线程的栈基址;
从栈基址开始,对所述内核工作线程进行栈回溯,获得所述内核工作线程的执行逻辑首地址。
模块路径获取单元003,用于获得所述首地址对应的内核工作线程的模块路径;
本发明实施例通过调用系统提供的内核函数查看内核模块列表,内核模块列表中包含若干节点,节点中包含内核模块信息。通过读取内核模块信息,可以得到该内核模块的内存范围。
使用所获得的首地址匹配内核模块的内存范围,如果该首地址落在内核模块的范围之内,则读取内核模块信息,可以得到所获得的首地址对应的模块路径。
异常线程确定单元004,用于对所得到的模块路径进行分析,如果所述模块路径为空,或为无效路径,则确定所述模块路径对应的内核工作线程为异常线程;
如今少数TDSS病毒可以将启动的线程对应的模块路径伪装成正常路径,针对这种情况,异常线程确定单元进一步用于:如果所述模块路径不为空或无效路径,则将所述模块路径和预设异常库中的模块路径进行比较,如果所述模块路径与所述异常库中任意模块路径相同,则确定所述模块路径对应的内核工作线程为异常线程。
本发明提供的检测异常线程的系统可以对异常线程进行检测,但是,为了避免异常线程再次破坏操作系统内核,本发明提供的系统还可以包括:后续处理单元005,如图8所示;
后续处理单元005,用于对所述异常线程执行挂起操作或结束该线程;
为了能够稳定的结束异常线程,本发明实施例调用系统提供的挂起内核工作线程的函数来对异常线程执行挂起操作,能够稳定的清除异常线程。
异常线程往往会对操作系统内核造成破坏,针对这种情况,所述后续处理单元可进一步用于:在所述对所述异常线程执行挂起操作或结束该线程之后,对所述系统的内核进行检测,如果检测结果表明所述系统的内核被破坏,则对所述系统的内核进行修复。
其中,对操作系统内核进行检测和修复的方法可以是任何一种现有技术,本发明不做限制。
利用本发明提供的检测异常线程的系统,可以有效的查杀TDSS病毒,也可以对异常线程进行检测,能够有效的增强系统的安全性。
对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本领域普通技术人员可以理解实现上述方法实施方式中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机可读取存储介质中,这里所称得的存储介质,如:ROM/RAM、磁碟、光盘等。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (12)
1.一种检测异常线程的方法,其特征在于,包括:
获取系统当前的内核工作线程;其中,所述内核工作线程为操作系统中最低层的线程实现,用于执行高优先级操作;
对所述内核工作线程进行栈回溯,获得所述内核工作线程的执行逻辑首地址;
获得所述首地址对应的内核工作线程的模块路径;
对所得到的模块路径进行分析,如果所述模块路径为空,或为无效路径,则确定所述模块路径对应的内核工作线程为异常线程。
2.如权利要求1所述的方法,其特征在于,该方法进一步包括:如果所述模块路径不为空或无效路径,则将所述模块路径和预设异常库中的模块路径进行比较,如果所述模块路径与所述异常库中任意模块路径相同,则确定所述模块路径对应的内核工作线程为异常线程。
3.如权利要求1或2所述的方法,其特征在于,该方法进一步包括:在所述确定所述模块路径对应的内核工作线程为异常线程之后,对所述异常线程执行挂起操作或结束该线程。
4.如权利要求3所述的方法,其特征在于,该方法进一步包括:在所述对所述异常线程执行挂起操作或结束该线程之后,对所述系统的内核进行检测,如果检测结果表明所述系统的内核被破坏,则对所述系统的内核进行修复。
5.如权利要求1所述的方法,其特征在于,所述获取系统当前的内核工作线程,具体包括:
通过系统提供的导出函数获得工作队列数组的起始地址;其中,系统当前的内核工作线程按照优先级划分到三种类型的工作队列中,不同类型的工作队列中包含不同优先级的内核工作线程,所述工作队列数组包含所述三种类型的工作队列的枚举值;
根据所述起始地址,分别定位所述三种类型的工作队列的首地址;
针对每种类型的工作队列,通过该类型工作队列的首地址,获取该类型工作队列中的内核工作线程。
6.如权利要求1所述的方法,其特征在于,所述对所述内核工作线程进行栈回溯,获得所述内核工作线程的执行逻辑首地址,具体包括:
遍历所述内核工作线程,得到所述内核工作线程的栈基址;
从栈基址开始,对所述内核工作线程进行栈回溯,获得所述内核工作线程的执行逻辑首地址。
7.一种检测异常线程的系统,其特征在于,包括:
线程获取单元、栈回溯单元、模块路径获取单元和异常线程确定单元;其中,
所述线程获取单元用于获取系统当前的内核工作线程;其中,所述内核工作线程为操作系统中最低层的线程实现,用于执行高优先级操作;
所述栈回溯单元用于对所述内核工作线程进行栈回溯,获得所述内核工作线程的执行逻辑首地址;
所述模块路径获取单元用于获得所述首地址对应的内核工作线程的模块路径;
所述异常线程确定单元用于对所得到的模块路径进行分析,如果所述模块路径为空,或为无效路径,则确定所述模块路径对应的内核工作线程为异常线程。
8.如权利要求7所述的系统,其特征在于,所述异常线程确定单元进一步用于:如果所述模块路径不为空或无效路径,则将所述模块路径和预设异常库中的模块路径进行比较,如果所述模块路径与所述异常库中任意模块路径相同,则确定所述模块路径对应的内核工作线程为异常线程。
9.如权利要求7或8所述的系统,其特征在于,该系统进一步包括:后续处理单元;
所述后续处理单元用于对所述异常线程执行挂起操作或结束该线程。
10.如权利要求9所述的系统,其特征在于,所述后续处理单元进一步用于:在所述对所述异常线程执行挂起操作或结束该线程之后,对所述系统的内核进行检测,如果检测结果表明所述系统的内核被破坏,则对所述系统的内核进行修复。
11.如权利要求7所述的系统,其特征在于,所述线程获取单元具体用于:
通过系统提供的导出函数获得工作队列数组的起始地址;其中,系统当前的内核工作线程按照优先级划分到三种类型的工作队列中,不同类型的工作队列中包含不同优先级的内核工作线程,所述工作队列数组包含所述三种类型的工作队列的枚举值;
根据所述起始地址,分别定位所述三种类型的工作队列的首地址;
针对每种类型的工作队列,通过该类型工作队列的首地址,获取该类型工作队列中的内核工作线程。
12.如权利要求7所述的系统,其特征在于,所述栈回溯单元具体用于:
遍历所述内核工作线程,得到所述内核工作线程的栈基址;
从栈基址开始,对所述内核工作线程进行栈回溯,获得所述内核工作线程的执行逻辑首地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410075289.3A CN103839007B (zh) | 2014-03-03 | 2014-03-03 | 一种检测异常线程的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410075289.3A CN103839007B (zh) | 2014-03-03 | 2014-03-03 | 一种检测异常线程的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103839007A true CN103839007A (zh) | 2014-06-04 |
CN103839007B CN103839007B (zh) | 2016-08-31 |
Family
ID=50802492
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410075289.3A Active CN103839007B (zh) | 2014-03-03 | 2014-03-03 | 一种检测异常线程的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103839007B (zh) |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108243056A (zh) * | 2016-12-27 | 2018-07-03 | 大唐移动通信设备有限公司 | 一种获取异常信息的方法及装置 |
CN108255585A (zh) * | 2016-12-28 | 2018-07-06 | 北京奇虎科技有限公司 | Sdk异常控制及应用程序运行方法、装置及其设备 |
CN109271789A (zh) * | 2018-09-27 | 2019-01-25 | 珠海市君天电子科技有限公司 | 恶意进程检测方法、装置、电子设备及存储介质 |
CN109800571A (zh) * | 2018-12-29 | 2019-05-24 | 360企业安全技术(珠海)有限公司 | 事件处理方法和装置、以及存储介质和电子装置 |
CN110362991A (zh) * | 2019-07-19 | 2019-10-22 | 上海睿赛德电子科技有限公司 | 一种实时操作系统的线程栈空间保护的方法 |
CN111338831A (zh) * | 2020-02-10 | 2020-06-26 | 北京字节跳动网络技术有限公司 | 一种多线程运行性能的处理方法、装置、介质和电子设备 |
CN112925718A (zh) * | 2021-03-22 | 2021-06-08 | 北京字节跳动网络技术有限公司 | 调用栈回溯方法、装置、设备和介质 |
CN113010885A (zh) * | 2021-02-23 | 2021-06-22 | 安芯网盾(北京)科技有限公司 | 一种检测伪装起始地址的内核线程的方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080127344A1 (en) * | 2006-11-08 | 2008-05-29 | Mcafee, Inc. | Method and system for detecting windows rootkit that modifies the kernel mode system service dispatch table |
CN102194080A (zh) * | 2011-06-13 | 2011-09-21 | 西安交通大学 | 一种基于内核虚拟机的rootkit检测机制及检测方法 |
US20130247182A1 (en) * | 2009-04-21 | 2013-09-19 | Seagen James Levites | System, method, and computer program product for identifying hidden or modified data objects |
CN103414818A (zh) * | 2013-04-25 | 2013-11-27 | 福建伊时代信息科技股份有限公司 | 移动终端的运行程序监控方法与系统、移动终端与服务器 |
-
2014
- 2014-03-03 CN CN201410075289.3A patent/CN103839007B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20080127344A1 (en) * | 2006-11-08 | 2008-05-29 | Mcafee, Inc. | Method and system for detecting windows rootkit that modifies the kernel mode system service dispatch table |
US20130247182A1 (en) * | 2009-04-21 | 2013-09-19 | Seagen James Levites | System, method, and computer program product for identifying hidden or modified data objects |
CN102194080A (zh) * | 2011-06-13 | 2011-09-21 | 西安交通大学 | 一种基于内核虚拟机的rootkit检测机制及检测方法 |
CN103414818A (zh) * | 2013-04-25 | 2013-11-27 | 福建伊时代信息科技股份有限公司 | 移动终端的运行程序监控方法与系统、移动终端与服务器 |
Non-Patent Citations (3)
Title |
---|
李钢,孙虎,张仁斌: "内核Rootkit进程隐藏与检测技术研究", 《中国仪器仪表学会第十二届青年学术会议论文集》 * |
梁升荣: "Windows Rootkit检测机制的研究与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
闫广禄,罗森林: "基于线程调度的隐藏进程检测技术研究", 《信息网络安全》 * |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108243056A (zh) * | 2016-12-27 | 2018-07-03 | 大唐移动通信设备有限公司 | 一种获取异常信息的方法及装置 |
CN108255585A (zh) * | 2016-12-28 | 2018-07-06 | 北京奇虎科技有限公司 | Sdk异常控制及应用程序运行方法、装置及其设备 |
CN108255585B (zh) * | 2016-12-28 | 2023-08-18 | 三六零科技集团有限公司 | Sdk异常控制及应用程序运行方法、装置及其设备 |
CN109271789A (zh) * | 2018-09-27 | 2019-01-25 | 珠海市君天电子科技有限公司 | 恶意进程检测方法、装置、电子设备及存储介质 |
CN109271789B (zh) * | 2018-09-27 | 2021-09-28 | 珠海豹趣科技有限公司 | 恶意进程检测方法、装置、电子设备及存储介质 |
CN109800571A (zh) * | 2018-12-29 | 2019-05-24 | 360企业安全技术(珠海)有限公司 | 事件处理方法和装置、以及存储介质和电子装置 |
CN110362991A (zh) * | 2019-07-19 | 2019-10-22 | 上海睿赛德电子科技有限公司 | 一种实时操作系统的线程栈空间保护的方法 |
CN111338831A (zh) * | 2020-02-10 | 2020-06-26 | 北京字节跳动网络技术有限公司 | 一种多线程运行性能的处理方法、装置、介质和电子设备 |
CN113010885A (zh) * | 2021-02-23 | 2021-06-22 | 安芯网盾(北京)科技有限公司 | 一种检测伪装起始地址的内核线程的方法及装置 |
CN113010885B (zh) * | 2021-02-23 | 2021-10-15 | 安芯网盾(北京)科技有限公司 | 一种检测伪装起始地址的内核线程的方法及装置 |
CN112925718A (zh) * | 2021-03-22 | 2021-06-08 | 北京字节跳动网络技术有限公司 | 调用栈回溯方法、装置、设备和介质 |
CN112925718B (zh) * | 2021-03-22 | 2023-10-20 | 北京字节跳动网络技术有限公司 | 调用栈回溯方法、装置、设备和介质 |
Also Published As
Publication number | Publication date |
---|---|
CN103839007B (zh) | 2016-08-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103839007A (zh) | 一种检测异常线程的方法及系统 | |
US11003489B2 (en) | Cause exception message broadcast between processing cores of a GPU in response to indication of exception event | |
CN105117289A (zh) | 基于云测试平台的任务分配方法、装置及系统 | |
KR102534334B1 (ko) | 컴퓨팅 디바이스들에서 프로세스들에 대한 소프트웨어 공격들의 검출 | |
CN109471697A (zh) | 一种监控虚拟机中系统调用的方法、装置及存储介质 | |
US8448175B2 (en) | Deadlock detection in a parallel program | |
CN105279017A (zh) | 基于云测试平台的任务分配方法、装置及系统 | |
CN105183564A (zh) | 基于云测试平台的设备调度方法、装置及系统 | |
RU2010149889A (ru) | Конфигурируемое разделение для параллельных данных | |
CN102722672A (zh) | 一种检测运行环境真实性的方法及装置 | |
CN109271789A (zh) | 恶意进程检测方法、装置、电子设备及存储介质 | |
US9864649B2 (en) | Technologies for root cause identification of use-after-free memory corruption bugs | |
CN109885489B (zh) | 驱动程序中数据竞争检测方法及装置 | |
US8230271B2 (en) | Detecting software race conditions | |
CN103888447B (zh) | 病毒的查杀方法及装置 | |
US20110167413A1 (en) | Coverage apparatus and method for testing multi-thread environment | |
CN107920067B (zh) | 一种主动对象存储系统上的入侵检测方法 | |
CN104298922A (zh) | 一种阻止漏洞利用的方法及装置 | |
US20160306972A1 (en) | Virus signature matching method and apparatus | |
CN109472135A (zh) | 一种检测进程注入的方法、装置及存储介质 | |
CN105740028B (zh) | 一种访问控制方法及装置 | |
CN107766131B (zh) | 任务调度方法和装置 | |
CN103632099A (zh) | 未导出的Native API函数获取方法及装置 | |
CN106022109A (zh) | 一种防止线程暂停的方法、装置及电子设备 | |
US9678752B2 (en) | Scheduling apparatus and method of dynamically setting the size of a rotating register |
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: 20181212 Address after: Room 105-53811, No. 6 Baohua Road, Hengqin New District, Zhuhai City, Guangdong Province Patentee after: Zhuhai Seal Interest Technology Co., Ltd. Address before: 519070, six level 601F, 10 main building, science and technology road, Tangjia Bay Town, Zhuhai, Guangdong. Patentee before: Zhuhai Juntian Electronic Technology Co.,Ltd. |
|
TR01 | Transfer of patent right |