一种检测异常线程的方法及系统的制作方法

文档序号:6539304阅读:129来源:国知局
一种检测异常线程的方法及系统的制作方法
【专利摘要】本发明公开了一种检测异常线程的方法及系统。一种检测异常线程的方法包括:获取系统当前的内核工作线程;对所述内核工作线程进行栈回溯,获得所述内核工作线程的执行逻辑首地址;获得所述首地址对应的内核工作线程的模块路径;对所得到的模块路径进行分析,如果所述模块路径为空,或为无效路径,则确定所述模块路径对应的内核工作线程为异常线程。一种检测异常线程的系统包括:线程获取单元、栈回溯单元、模块路径获取单元和异常线程确定单元。本发明能够有效检测出异常线程,进而对异常线程进行处理,增强了计算机的安全性。
【专利说明】一种检测异常线程的方法及系统
【技术领域】
[0001]本发明涉及计算机安全领域,特别涉及一种检测异常线程的方法及系统。
【背景技术】
[0002]随着科学技术的发展,计算机已经成为人们生活中必不可少的日常用品。无论是工作、学习还是娱乐,计算机都给人们提供了很多的便利。
[0003]计算机的核心是操作系统。作为使用计算机的平台,大部分操作都需要通过操作系统来完成。因此,一旦操作系统出现问题,将会严重影响计算机的正常使用。
[0004]计算机病毒是指,编制者在计算机程序中插入的、破坏计算机功能或者破坏数据、影响计算机使用并且能够自我复制的一组计算机指令或者程序代码。自从出现以来,计算机病毒便成为了计算机系统及信息安全的最大威胁。有些计算机病毒仅仅是占用系统部分内存,危害性较小,但有些计算机病毒却可以破坏计算机内的数据或清除计算机内的重要信息,甚至瘫痪操作系统,危害性极大。
[0005]2010年至2013年中,一种名为TDSS的Rootkit病毒在全球大肆流行。Rootkit是一种特殊的恶意软件,它的功能是在安装目标上隐藏自身及指定的文件、进程和网络链接等信息,Rootkit—般都和木马、后门等其他恶意程序结合使用。Rootkit通过加载特殊的驱动,修改系统内核,进而达到隐藏信息的目的。TDSS病毒具有Rootkit的特性,能破坏系统内核,并且很难被普通安全软件检测发现,即使被发现也很难清除,就算将被病毒破坏的系统内核修复,仍然会被重复感染。

【发明内容】

[0006]为了解决上述问题,本发明提供了一种检测异常线程的方法及系统,以对TDSS病毒进行检测,增强计算机的安全性,技术方案如下:
[0007]一种检测异常线程的方法,包括:
[0008]获取系统当前的内核工作线程;其中,所述内核工作线程为操作系统中最低层的线程实现,用于执行高优先级操作;
[0009]对所述内核工作线程进行栈回溯,获得所述内核工作线程的执行逻辑首地址;
[0010]获得所述首地址对应的内核工作线程的模块路径;
[0011]对所得到的模块路径进行分析,如果所述模块路径为空,或为无效路径,则确定所述模块路径对应的内核工作线程为异常线程。
[0012]该方法进一步包括:如果所述模块路径不为空或无效路径,则将所述模块路径和预设异常库中的模块路径进行比较,如果所述模块路径与所述异常库中任意模块路径相同,则确定所述模块路径对应的内核工作线程为异常线程。
[0013]该方法进一步包括:在所述确定所述模块路径对应的内核工作线程为异常线程之后,对所述异常线程执行挂起操作或结束该线程。
[0014]该方法进一步包括:在所述对所述异常线程执行挂起操作或结束该线程之后,对所述系统的内核进行检测,如果检测结果表明所述系统的内核被破坏,则对所述系统的内核进行修复。
[0015]所述获取系统当前的内核工作线程,具体包括:
[0016]通过系统提供的导出函数获得工作队列数组的起始地址;其中,系统当前的内核工作线程按照优先级划分到三种类型的工作队列中,不同类型的工作队列中包含不同优先级的内核工作线程,所述工作队列数组包含所述三种类型的工作队列的枚举值;
[0017]根据所述起始地址,分别定位所述三种类型的工作队列的首地址;
[0018]针对每种类型的工作队列,通过该类型工作队列的首地址,获取该类型工作队列中的内核工作线程。
[0019]所述对所述内核工作线程进行栈回溯,获得所述内核工作线程的执行逻辑首地址,具体包括:
[0020]遍历所述内核工作线程,得到所述内核工作线程的栈基址;
[0021]从栈基址开始,对所述内核工作线程进行栈回溯,获得所述内核工作线程的执行逻辑首地址。
[0022]本发明还提供了一种检测异常线程的系统,包括:
[0023]线程获取单元、栈回溯单元、模块路径获取单元和异常线程确定单元;其中,
[0024]所述线程获取单元用于获取系统当前的内核工作线程;其中,所述内核工作线程为操作系统中最低层的线程实现,用于执行高优先级操作;
[0025]所述栈回溯单元用于对所述内核工作线程进行栈回溯,获得所述内核工作线程的执行逻辑首地址;
[0026]所述模块路径获取单元用于获得所述首地址对应的内核工作线程的模块路径;
[0027]所述异常线程确定单元用于对所得到的模块路径进行分析,如果所述模块路径为空,或为无效路径,则确定所述模块路径对应的内核工作线程为异常线程。
[0028]所述异常线程确定单元进一步用于:如果所述模块路径不为空或无效路径,则将所述模块路径和预设异常库中的模块路径进行比较,如果所述模块路径与所述异常库中任意模块路径相同,则确定所述模块路径对应的内核工作线程为异常线程。
[0029]该系统进一步包括:后续处理单元;
[0030]所述后续处理单元用于对所述异常线程执行挂起操作或结束该线程。
[0031]较佳的,所述后续处理单元进一步用于:在所述对所述异常线程执行挂起操作或结束该线程之后,对所述系统的内核进行检测,如果检测结果表明所述系统的内核被破坏,则对所述系统的内核进行修复。
[0032]所述线程获取单元具体用于:
[0033]通过系统提供的导出函数获得工作队列数组的起始地址;其中,系统当前的内核工作线程按照优先级划分到三种类型的工作队列中,不同类型的工作队列中包含不同优先级的内核工作线程,所述工作队列数组包含所述三种类型的工作队列的枚举值;
[0034]根据所述起始地址,分别定位所述三种类型的工作队列的首地址;
[0035]针对每种类型的工作队列,通过该类型工作队列的首地址,获取该类型工作队列中的内核工作线程。
[0036]所述栈回溯单元具体用于:[0037]遍历所述内核工作线程,得到所述内核工作线程的栈基址;
[0038]从栈基址开始,对所述内核工作线程进行栈回溯,获得所述内核工作线程的执行逻辑首地址。
[0039]本发明实施例中,通过对系统当前所有的内核工作线程进行栈回溯得到所述内核工作线程的执行逻辑首地址,通过该首地址定位异常线程,能够有效检测出异常线程;由于TDSS病毒是通过在系统内核中启动一个特殊线程对系统内核进行破坏,因此本发明能够有效的检测出该病毒,进而可以对该病毒进行处理,增强了系统的安全性。
【专利附图】

【附图说明】
[0040]为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0041]图1为本发明实施例提供的检测异常线程的方法的第一种流程图;
[0042]图2为本发明实施例提供的内核线程获取方法的流程图;
[0043]图3为本发明实施例提供的栈回溯方法的流程图;
[0044]图4为本发明实施例提供的返回结果示意图;
[0045]图5为本发明实施例提供的检测异常线程的方法的第二种流程图;
[0046]图6为本发明实施例提供的检测异常线程的方法的第三种流程图
[0047]图7为本发明实施例提供的检测异常线程的系统的第一种结构示意图;
[0048]图8为本发明实施例提供的检测异常线程的系统的第二种结构示意图。
【具体实施方式】
[0049]首先对本发明提供的一种检测异常线程的方法进行说明,该方法包括:
[0050]获取系统当前的内核工作线程;其中,所述内核工作线程为操作系统中最低层的线程实现,用于执行高优先级操作;
[0051]对所述内核工作线程进行栈回溯,获得所述内核工作线程的执行逻辑首地址;
[0052]获得所述首地址对应的内核工作线程的模块路径;
[0053]对所得到的模块路径进行分析,如果所述模块路径为空,或为无效路径,则确定所述模块路径对应的内核工作线程为异常线程。
[0054]上述方法中,通过对系统当前所有的内核工作线程进行栈回溯得到内核工作线程的执行逻辑首地址,通过该首地址定位异常线程,能够有效检测出异常线程。
[0055]在实际应用中,本发明可以用来专门查杀TDSS病毒,也可以用来对异常线程进行检测,本发明对此不做限制。
[0056]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0057]以Microsoft Windows操作系统为例,对本发明实施例提供的一种检测异常线程的方法做具体说明,图1为该方法的第一种流程图,可以包括以下步骤:
[0058]S101,获取系统当前的内核工作线程;
[0059]TDSS病毒通过在系统内核中启动一条线程,不断执行自身逻辑,并且破坏系统内核。就算将被该病毒破坏的系统内核修复,该病毒启动的线程依然存在于系统中,仍然能重复感染系统内核。
[0060]TDSS病毒很难被普通安全软件检测发现,即使检测到,因为该病毒是在内核中启动一条线程,在杀毒的过程中很容易对系统内核造成一定的损害,进而可能会给用户带来损失。
[0061]内核是操作系统的核心,负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性。操作系统内核通常运行进程,并提供进程间的通信。
[0062]进程是操作系统结构的基础;是一次程序的执行;是一个程序及其数据在处理机上顺序执行时所发生的活动;是程序在一个数据集合上运行的过程,它是系统进行资源分配和调度的一个独立单位。当操作系统被启动,系统会加载系统本身正常运行所需的各项任务,用户也会启动各种程序,在同一时间,系统中会存在多条进程。
[0063]线程有时被称为轻量级进程(Lightweight Process, LWP),是程序执行流的最小单元,是进程中的一个实体,是被系统独立调度和分派的基本单位。现有的操作系统中,大都采用多线程的方式来处理任务,以提高任务处理效率。
[0064]内核工作线程又称工作队列线程,是Windows操作系统上最低层的线程实现,常用于执行高优先级操作。
[0065]对TDSS病毒进行检测,需要将该病毒在内核中启动的线程定位。那么,首先需要将当前的系统内核中存在的线程列举出来,并对这些线程进行分析,来完成病毒的检测。
[0066]为了保护系统内核,一般无法直接查看系统当前的内核工作线程,需要通过一定的方法将当前的内核工作线程导出,如图2所示,该导出方法可以包括以下步骤:
[0067]S1011,通过系统提供的导出函数获得工作队列数组的起始地址;
[0068]一般来说,系统中的内核工作线程按照优先级的不同分为三种类型,每种类型的内核工作线程挂在一个工作队列之中。这三种不同类型的工作队列组成一个全局数组,在Windows系统中用ExWorkerQueue来表不。
[0069]全局数组ExWorkerQueue由系统内核使用,但是系统并未将其导出,本发明实施例利用一个系统提供的导出函数ExQueueWorkItem来将其导出。需要说明的是,本发明实施例只提供了其中一种得到全局数组ExWorkerQueue的方法,该全局数组也可以通过其他现有技术得到,本发明对此不做限制。
[0070]导出函数ExQueueWorkItem内部引用了全局数组ExWorkerQueue,因此,通过搜索该函数所在的内存块,便可以得到ExWorkerQueue的起始地址。具体搜索方法可以是任意一种现有技术,本发明对此不作限制。
[0071]S1012,根据所述起始地址,定位所述三种类型的工作队列的首地址;
[0072]内核工作线程的优先级可以分为三个级别,即:标准优先级(Critical)、低优先级(delayed)和高优先级(HyperCritical)。对应的工作队列在全局数组ExWorkerQueue
中分别有以下枚举值:
[0073]
【权利要求】
1.一种检测异常线程的方法,其特征在于,包括: 获取系统当前的内核工作线程;其中,所述内核工作线程为操作系统中最低层的线程实现,用于执行高优先级操作; 对所述内核工作线程进行栈回溯,获得所述内核工作线程的执行逻辑首地址; 获得所述首地址对应的内核工作线程的模块路径; 对所得到的模块路径进行分析,如果所述模块路径为空,或为无效路径,则确定所述模块路径对应的内核工作线程为异常线程。
2.如权利要求1所述的方法,其特征在于,该方法进一步包括:如果所述模块路径不为空或无效路径,则将所述模块路径和预设异常库中的模块路径进行比较,如果所述模块路径与所述异常库中任意模块路径相同,则确定所述模块路径对应的内核工作线程为异常线程。
3.如权利要求1或2所述的方法,其特征在于,该方法进一步包括:在所述确定所述模块路径对应的内核工作线程为异常线程之后,对所述异常线程执行挂起操作或结束该线程。
4.如权利要求3所述的方法,其特征在于,该方法进一步包括:在所述对所述异常线程执行挂起操作或结束该线程之后,对所述系统的内核进行检测,如果检测结果表明所述系统的内核被破坏,则对所述系统的内核进行修复。
5.如权利要求1所述的方法,其特征在于,所述获取系统当前的内核工作线程,具体包括: 通过系统提供的导出函数获得工作队列数组的起始地址;其中,系统当前的内核工作线程按照优先级划分到三种类型的工作队列中,不同类型的工作队列中包含不同优先级的内核工作线程,所述工作队列数组包含所述三种类型的工作队列的枚举值; 根据所述起始地址,分别定位所述三种类型的工作队列的首地址; 针对每种类型的工作队列,通过该类型工作队列的首地址,获取该类型工作队列中的内核工作线程。
6.如权利要求1所述的方法,其特征在于,所述对所述内核工作线程进行栈回溯,获得所述内核工作线程的执行逻辑首地址,具体包括: 遍历所述内核工作线程,得到所述内核工作线程的栈基址; 从栈基址开始,对所述内核工作线程进行栈回溯,获得所述内核工作线程的执行逻辑首地址。
7.—种检测异常线程的系统,其特征在于,包括: 线程获取单元、栈回溯单元、模块路径获取单元和异常线程确定单元;其中, 所述线程获取单元用于获取系统当前的内核工作线程;其中,所述内核工作线程为操作系统中最低层的线程实现,用于执行高优先级操作; 所述栈回溯单元用于对所述内核工作线程进行栈回溯,获得所述内核工作线程的执行逻辑首地址; 所述模块路径获取单元用于获得所述首地址对应的内核工作线程的模块路径; 所述异常线程确定单元用于对所得到的模块路径进行分析,如果所述模块路径为空,或为无效路径,则确定所述模块路径对应的内核工作线程为异常线程。
8.如权利要求7所述的系统,其特征在于,所述异常线程确定单元进一步用于:如果所述模块路径不为空或无效路径,则将所述模块路径和预设异常库中的模块路径进行比较,如果所述模块路径与所述异常库中任意模块路径相同,则确定所述模块路径对应的内核工作线程为异常线程。
9.如权利要求7或8所述的系统,其特征在于,该系统进一步包括:后续处理单元; 所述后续处理单元用于对所述异常线程执行挂起操作或结束该线程。
10.如权利要求9所述的系统,其特征在于,所述后续处理单元进一步用于:在所述对所述异常线程执行挂起操作或结束该线程之后,对所述系统的内核进行检测,如果检测结果表明所述系统的内核被破坏,则对所述系统的内核进行修复。
11.如权利要求7所述的系统,其特征在于,所述线程获取单元具体用于: 通过系统提供的导 出函数获得工作队列数组的起始地址;其中,系统当前的内核工作线程按照优先级划分到三种类型的工作队列中,不同类型的工作队列中包含不同优先级的内核工作线程,所述工作队列数组包含所述三种类型的工作队列的枚举值; 根据所述起始地址,分别定位所述三种类型的工作队列的首地址; 针对每种类型的工作队列,通过该类型工作队列的首地址,获取该类型工作队列中的内核工作线程。
12.如权利要求7所述的系统,其特征在于,所述栈回溯单元具体用于: 遍历所述内核工作线程,得到所述内核工作线程的栈基址; 从栈基址开始,对所述内核工作线程进行栈回溯,获得所述内核工作线程的执行逻辑首地址。
【文档编号】G06F21/56GK103839007SQ201410075289
【公开日】2014年6月4日 申请日期:2014年3月3日 优先权日:2014年3月3日
【发明者】陈翼展 申请人:珠海市君天电子科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1