Windows RootKit进程隐藏与检测技术的研究
- 格式:pdf
- 大小:212.93 KB
- 文档页数:3
Windows内核级防护系统孟晨宇;史渊;王佳伟;周洁;康晓凤【摘要】Windows操作系统是当今应用最广泛的个人计算机操作系统,针对这一操作系统的病毒和木马层出不穷.大多数杀毒软件主要依赖特征码识别技术、校验和技术、软件模拟技术检测病毒.本系统从手动杀毒角度出发,变被动防御为主动查杀,特别是Rootkit保护的内核级木马,通过检测相应的被挂钩函数,内核中被修改的地址,找到相应的进程,从而实现了木马进程的强杀、相应内核内容的恢复等功能,更有效的保护计算机操作系统的安全.【期刊名称】《软件》【年(卷),期】2016(037)003【总页数】6页(P16-20,26)【关键词】内核防护;手动杀毒;信息安全;Rootkit【作者】孟晨宇;史渊;王佳伟;周洁;康晓凤【作者单位】徐州工程学院信电工程学院,江苏徐州221000);徐州工程学院信电工程学院,江苏徐州221000);徐州工程学院信电工程学院,江苏徐州221000);徐州工程学院信电工程学院,江苏徐州221000);徐州工程学院信电工程学院,江苏徐州221000)【正文语种】中文【中图分类】TP311本文著录格式:孟晨宇,史渊,王佳伟,等. Windows内核级防护系统[J]. 软件,2016,37(3):16-20随着网络技术的发展,计算机在人民生活中的地位越来越重要。
计算机在给人民的生活和工作带来极大便利的同时,也带来了信息安全问题。
Windows操作系统是当今应用最广泛的个人计算机操作系统,针对这一操作系统的病毒和木马层出不穷。
[1]而且更为严重的是内核级Rootkit的诞生,给系统安全带来了极大的破坏性。
内核是操作系统的核心,内核的完整性保护对维护操作系统至关重要。
[2]所以本系统旨在从内核出发,全方位的利用多种综合检测技术维护系统内核的安全性以及完整性。
1.1 系统整体设计方案本系统主要分为用户层和内核层,[3]用户层利用VC++ 6.0开发,采用C++语言实现,[3-5]内核层利用WDK开发,采用C语言实现。
隐藏进程什么是隐藏进程?在操作系统中,进程是指正在运行的程序的执行实例。
正常情况下,操作系统会为每个正在运行的程序创建一个进程,并分配资源给它。
这些进程会被显示在任务管理器或进程管理器中,以便用户可以监控和管理它们。
然而,有时候会有一些恶意软件或黑客攻击会隐藏自己的进程,以逃避用户或系统管理员的监控和控制。
隐藏的进程可以执行各种恶意行为,如损坏文件、窃取敏感信息、攻击网络等。
隐藏进程常常被用于恶意软件中,如计算机病毒、木马和恶意软件。
它们通过各种技术手段来隐藏自己的存在,使自己难以被检测和清除。
隐藏进程的常见技术RootkitRootkit 是一种恶意软件,它通过操纵操作系统的功能来隐藏自己。
Rootkit 可以修改操作系统的核心组件,如内核模块、驱动程序等,以便隐藏进程和其他恶意活动。
Rootkit 通常会修改系统函数调用,使它们返回虚假的结果,以掩盖自己的存在。
它还可以修改进程列表、进程状态和文件系统,来隐藏进程和文件。
HookingHooking 是一种技术,通过修改函数调用表或中断向量表来劫持系统的正常行为。
恶意软件可以使用 Hooking 技术来修改操作系统的函数调用,从而隐藏自己的进程。
通常,Hooking 会劫持一些与进程管理相关的函数,如寻找和遍历进程列表的函数。
当用户或系统管理员尝试查看进程列表时,这些被劫持的函数会返回虚假的结果,隐藏恶意进程的存在。
用户模式隐藏用户模式隐藏是一种技术,恶意软件使用它来隐藏自己的进程。
在用户模式下,操作系统提供了一组 API,用于管理进程和线程。
恶意软件可以使用这些 API 来隐藏自己的进程。
恶意软件可以通过修改自身进程的属性和访问权限来隐藏自己。
例如,它可以将自己的进程标记为“隐藏”或修改进程列表,使自己不可见。
驱动程序隐藏驱动程序是操作系统中的一种特殊类型的软件,它们用于控制硬件设备和提供操作系统功能。
恶意软件可以使用驱动程序来隐藏自己的进程。
Rootkit病毒的解决办法在诸多病毒类型⾥⾯最让⼈深恶痛绝的就是Rootkit(内核型)蠕⾍病毒,许多时候杀毒软件能检测到该病毒,但却⽆法有效清除。
此类病毒的特点是病毒⽂件为两个或多个,⼀个是扩展名为EXE的可执⾏类型⽂件,⼀个是扩展名为SYS的驱动类型⽂件。
EXE可执⾏⽂件为传统的蠕⾍病毒模块,负责病毒的⽣成、感染、传播、破坏等任务;SYS⽂件为Rootkit模块。
Rootkit也是⼀种⽊马,但它较我们常见的“冰河”、“灰鸽⼦”等⽊马更加隐蔽,它以驱动程序的⽅式挂⼊系统内核,然后它负责执⾏建⽴秘密后门、替换系统正常⽂件、进程隐藏、监控⽹络、记录按键序列等功能,部分Rootkit还能关闭杀毒软件。
⽬前发现的此类模块多为病毒提供隐藏的机制,可见这两类⽂件是相互依赖的。
既然病毒已经被隐藏了,我们从何处⼊⼿发现病毒呢?这⾥就以感染orans.sys蠕⾍病毒的计算机为例,探讨如何检测和查杀该类病毒。
检测病毒体⽂件Norton防病毒软件报告c:windowssystem32orans.sys⽂件为Rootkit型病毒,这⾥可以看到使⽤Rootkit代码的SYS⽂件是⽆法逃过杀毒软件检测的。
那么是否删除了该⽂件就能清除病毒呢,答案是不⾏的。
⾸先在染毒的系统下该⽂件是受保护的,⽆法被删除。
即使⽤户在安全模式下删除了⽂件,重新启动后,另外⼀个未被删除的病毒⽂件将随系统启动,并监控系统。
⼀旦其发现系统的注册表被修改或病毒的SYS⽂件遭删除,病毒就会重新⽣成该⽂件并改回注册表,所以很多时候我们会发现病毒⼜重⽣了。
因此需要同时找到这两个⽂件,⼀并处理。
但在受感染的系统中,真正的病毒体已经被Rootkit模块隐藏了,不能被杀毒软件检测到。
这时就需要从系统中的进程找到病毒的蛛丝马迹。
系统⾃带的任务管理器缺少完成这⼀任务的⼀些⾼级功能,不建议使⽤。
这⾥向⼤家推荐IceSword或Process Explorer软件,这两款软件都能观察到系统中的各类进程及进程间的相互关系,还能显⽰进程映像⽂件的路径、命令⾏、系统服务名称等相关信息。
后门技术及rootkit工具Knark分析及防范WEB平安电脑资料本文讨论了Linux环境下攻击者入侵成功以后常常使用的一些后门技术,并且对最著名的rootkit工具之一?knark进展了详细的分析,并且指出了在发现系统被入侵以后如何发现是否是kark及如何恢复,注意:本文是用于员学习之用,不可用于进展网络攻击否那么带来的任何法律后果自行负责。
本文作者不对由于本文导致的任何后果负任何责任。
一、什么是"rootkit"?入侵者入侵后往往会进展清理脚印和留后门等工作,最常使用的后门创立工具就是rootkit。
不要被名字所迷惑,这个“rootkit”可不是给超级用户root用的,它是入侵者在入侵了一太主机后,用来做创立后门并加以假装用的程序包。
这个程序包里通常包括了日志清理器,后门等程序。
同时,程序包里通常还带有一些伪造的ps、ls、who、w、stat等本来属于系统本身的程序,这样的话,程序员在试图通过这些命令查询系统状况的时候,就无法通过这些假的系统程序觉察入侵者的行踪。
在一些组织中,rootkit (或者backdoor) 是一个非常感兴趣的话题。
各种不同的rootkit被开发并在inter上。
在这些rootkit之中, LKM尤其被人关注, 因为它是利用现代操作系统的模块技术。
作为内核的一部分运行,这种rootkit将会越来越比传统技术更加强大更加不易被觉察。
一旦被安装运行到目的机器上, 系统就会完全被控制在hacker手中了。
甚至系统管理员根本找不到平安隐患的痕迹, 因为他们不能再信任它们的操作系统了。
后门程序的目的就是甚至系统管理员企图弥补系统破绽的时候也可以给hacker系统的访问权限。
入侵者通过:设置uid程序, 系统木马程序, cron后门等方法来实现入侵者以后从非特权用户使用root权限。
*设置uid程序。
在一些文件系统理放一些设置uid脚本程序。
无论何时它们只要执行这个程序它们就会成为root。
隐藏软件的应用工作原理什么是隐藏软件?隐藏软件是一种可以在计算机或移动设备上运行的程序,它的主要功能是隐藏自己的存在和操作,使用户无法察觉。
隐藏软件被广泛用于各种场景,包括监控和远程控制等。
隐藏软件有许多不同的工作原理和技术,下面将介绍一些常见的应用工作原理。
1. 隐藏进程隐藏软件的一种常见工作原理是隐藏自身的进程。
进程是计算机中正在运行的程序的实例,每个程序都会在计算机上创建一个或多个进程。
通过隐藏自身的进程,隐藏软件可以在任务管理器等系统工具中不可见。
隐藏进程的常见技术包括:•Rootkit技术:Rootkit是一种可以隐藏进程和其他恶意软件的工具,它可以修改操作系统内核或其他系统组件,以实现隐匿性。
Rootkit技术需要在系统中获得root权限,因此往往用于攻击者对已攻陷的系统进行隐藏。
•注入技术:隐藏软件可以利用注入技术将自己的代码注入到其他进程中,从而隐藏自己的存在。
注入技术可以利用操作系统提供的API,也可以通过更底层的手段实现。
注入技术的实现较为复杂,但可以使隐藏软件更加隐匿。
2. 文件隐藏隐藏软件还可以通过隐藏自己的文件来避免被用户察觉。
文件隐藏的技术根据操作系统和文件系统的不同而有所差异。
文件隐藏的常见技术包括:•改变文件属性:隐藏软件可以通过修改文件属性,如隐藏文件、只读文件等,来隐藏自身。
一些操作系统会将隐藏文件的显示选项默认设置为关闭,用户需要手动开启才能看到这些文件。
•加密文件:隐藏软件可以将自己的文件进行加密,只有正确解密的用户才能查看和操作这些文件。
加密文件可以使隐藏软件更难被察觉,因为即使用户能够看到文件,也无法理解其内容。
•文件名伪装:隐藏软件还可以将自己的文件伪装成其他类型的文件,如图片、音频或文档等,以迷惑用户和系统。
文件名伪装通常需要使用特定的文件格式和技术。
3. 网络通信隐藏软件通常需要与远程服务器进行通信,以接收远程指令和发送收集到的数据。
为了保证隐匿性,隐藏软件通常采用隐蔽的通信方式。
LINUX操作系统下ROOTKIT检测技术研究郓宏北京工业大学计算机学院北京100124摘要:Rootkit是攻击者在入侵操作系统后用来保持对系统的超级用户访问权限.创建后门和隐藏攻击痕迹等常采用的一种技术,Rootkit存在于Linux、Solaris和Windows等各种操作系统上.本文所研究的技术辛要用于检测Linux系统下的后门程序Rootlot。
采取了以事后行为的检测为主,实时的检溯为辅的思路。
以检测引擎逐项检测。
而所需的Rootkit特征库定时更新。
另外为了防备用户在使用中触发某蝗恶意程序,柃铡程序也提供了实时监控的功能。
关键’词:RootkitILinuxI操作系统内核I可加载内核模块0引言Linux操作系统由于其源码的公开性和稳定的系统性能,得到了广泛的应用。
Linux系统下远程控制技术的研究正日益成为网络安全领域研究的热点,新一代的攻击技术更加先进,目标直接针对网络基础协议TCPflP和操作系统内核底层。
向传统的信息安全防范机制发起了挑战。
根据对操作系统的入侵层次.Rootkit分为应用级Rootkit和内核级Rootkit两种类型。
应用级Rootkit在操作系统应用层修改系统文件,比较容易预防。
内核级Rootlot攻击操作系统内核,与应用缀Rootkit相比功能更强大,更难检测。
因此内核级Rootkit以其强大的功能和较为完善的隐蔽性更加受到瞩目。
目前仔在的检测Rootkit的工具和方法大部分只能检测到应用级Rootkit,少数能检测到某些特定类型的内核级Rootkit。
及时跟踪和了解Rootkit的发展动态,掌握其核心技术。
并结合实际应用在某些关键方向上有所创新和发展,是一项很有意义的工作。
本文设计并实现了Linux操作系统下Rootkit的检测程序,有效的提高了计算机操作系统的安全。
1Rootkit攻击1.IRootkit攻击原理1.1.1内核级Rootkit的攻击目标内核级Rootkit的攻击目标主要有:(1)系统调用函数。
第十二讲 LKM技术1.LKM介绍木马最大的特性就是隐蔽性,不能轻易让人察觉,所以隐藏木马相关信息是关键的因素。
对于Linux 操作系统来说,主要有静态隐藏和动态隐藏两个标准。
静态隐藏是指木马文件的隐藏,用“ls”命令看不见我们的木马服务端程序。
动态隐藏是指当木马运行时,进程和通讯端口的隐藏,如用“ps –A”命令不能找到木马进程,用“netstat -at”命令不会显示木马端口的通讯情况等。
对于Windows操作系统,隐藏进程的最新技术是通过修改虚拟设备驱动程序(VXD)或修改动态连接库 (DLL)。
这种方法基本上摆脱了原有的木马模式---监听端口,而采用替代系统功能的方法(改写VXD 或DLL文件),木马会将修改后的DLL替换系统原有的DLL,并对所有的函数调用进行过滤。
对于特殊的调用,使用函数转发器直接转发给被替换的系统DLL,执行一些相应的操作。
由于修改了系统调用,使用常规的方法监测不到它。
由于Linux本身的安全性,想利用外壳程序隐藏木马文件和进程不可能实现,所以就借鉴上面的修改系统调用的方法,通过修改Linux内核的系统调用来隐藏木马相关信息,这就是LKM技术。
1.1 LKMLKM就是可装载内核模块(Loadable Kernel Modules)。
这些模块本来是Linux系统用于扩展其功能的。
当LKM被载入内核,就能修改内核变量,重载内核函数,轻易得实现扩充或裁减操作系统内核的某些功能。
同时动态的载入模块还意味着能留给用户程序更多的内存。
由于这些优点,他们常常被特殊的设备或者文件系统(例如声卡、打印机等)使用。
每个LKM至少由两个基本的函数组成:int init_module(void) /*用于初始化所有的数据*/{...}void cleanup_module(void) /*用于清除数据从而能安全地退出*/{...}对这个module.c文件的编译命令是:#gcc -c -O2 –I/usr/src/linux/include module.c有时会需要更加复杂的参数,视具体情况而定。
Windows黑客编程技术详解▼本书介绍的是黑客编程的基础技术,涉及用户层下的Windows 编程和内核层下的Rootkit编程。
本书分为用户篇和内核篇两部分,用户篇包括11章,配套49个示例程序源码;内核篇包括7章,配套28个示例程序源码。
本书介绍的每个技术都有详细的实现原理,以及对应的示例代码(配套代码均支持32位和64位Windows 7、Windows 8.1及Windows 10系统),旨在帮助初学者建立起黑客编程技术的基础。
信息安全行业是一个朝阳行业,国家、企业以及高校都予以高度重视。
其中,Windows系统的市场占有率高达90%以上,因此Windows系统上的安全需求更多,安全攻防更激烈。
本书面向对计算机系统安全开发感兴趣,或者希望提升安全开发水平的读者,以及从事恶意代码分析研究的安全人员。
由于本书中的代码均使用C/C++来编写,因此掌握C/C++语言的概念可以更容易理解本书。
如果不具备编程知识,也可继续学习并理解所有技术点的开发流程。
对于书中的内核层开发部分,即使读者没有接触过内核开发,也可根据本书的内容一步步学习内核开发技术。
Windows黑客编程技术详解▼(全文略)本书分为“用户篇”(第1~11章)与“内核篇”(第12~18章)两篇,总计18章。
第1章,开发环境,主要介绍VS 2013开发环境的安装、工程项目的设置,以及关于Debug模式和Release模式的相关注意事项。
第2章,基础技术,介绍了运行单一实例、DLL延迟加载和资源释放等内容。
第3章,注入技术,介绍了全局钩子注入、远线程注入、突破SESSON 0隔离的远线程注入、APC注入等内容。
第4章,启动技术,介绍了创建进程API、突破SESSON 0隔离创建用户进程、内存直接加载运行等知识。
第5章,自启动技术,涵盖了注册表、快速启动目录、计划任务和系统服务等内容。
第6章,提权技术,包含进程访问令牌权限提升、Bypass UAC等内容。
本帖最后由占地挤着于2011-1-29 20:23 编辑Rootkit是一种奇特的程序,它具有隐身功能:无论静止时(作为文件存在),还是活动时,(作为进程存在),都不会被察觉。
换句话说,这种程序可能一直存在于我们的计算机中,但我们却浑然不知,这一功能正是许多人梦寐以求的——不论是计算机黑客,还是计算机取证人员。
黑客可以在入侵后置入Rootkit,秘密地窥探敏感信息,或等待时机,伺机而动;取证人员也可以利用Rootkit实时监控嫌疑人员的不法行为,它不仅能搜集证据,还有利于及时采取行动。
而本文的目的,就是同读者一起踏上Windows内核级Rootkit之旅!一、背景知识我们通常所说的智能机器,大至超级计算机,中到个人PC,小至智能手机,通常都有两部分组成:硬件和软件。
并且,设备的智能是通过软件来实现的。
所有软件中,有一种是必不可少的,那就是操作系统。
操作系统可以简单理解为一组高度复用的核心程序,一方面,它要管理低层的硬件设备,另一方面,为上层其它程序提供一个良好的运行环境。
真是同人不同命,同为软件,操作系统却享有至高无上的特权:它不仅管理硬件,而且其他所有软件也都受制于它。
因为在应用程序和硬件之间隔着操作系统,所以应用程序不能直接访问硬件,而是通过调用操作系统提供的接口来使用硬件。
也就是说,对应用程序而言,硬件是不可见的。
当然,凡事是没有绝对的,应用程序绕过操作系统来直接访问硬件也不是不可能的,但这样做会付出高昂的代价。
设想一个软件开发商在开发一功能丰富的软件,功能本身就够他头痛得了,现在他还得操心某个数据在某个磁道的某个簇上,某个字符在某品牌显示器上的颜色的二进制代码等等繁琐的事情,不用说财力和物力,单说开发周期就是无法容忍的。
所以,现在的应用程序都是使用操作系统提供的简单明了的服务来访问系统的,因为毕竟没有谁愿意自讨苦吃。
二、内核的主要功能从上文中我们已经了解,内核在系统中处于核心枢纽的地位,下面我们具体介绍内核中与Rootkit紧密相关的几个主要功能,更重要的是这些功能对Rootkit的意义所在:进程管理。
如何安装unhide 并搜索隐藏的进程和TCP/UDP 端口unhide 是一个小巧的网络取证工具,能够发现那些借助rootkit、LKM 及其它技术隐藏的进程和TCP/UDP 端口。
这个工具在Linux、UNIX 类、MS-Windows 等操作系统下都可以工作。
根据其man 页面的说明:Unhide 通过下述三项技术来发现隐藏的进程。
进程相关的技术,包括将 /proc 目录与 /bin/ps 命令的输出进行比较。
系统相关的技术,包括将 /bin/ps 命令的输出结果同从系统调用方面得到的信息进行比较。
穷举法相关的技术,包括对所有的进程ID 进行暴力求解,该技术仅限于在基于Linux2.6 内核的系统中使用。
绝大多数的Rootkit 工具或者恶意软件借助内核来实现进程隐藏,这些进程只在内核内部可见。
你可以使用 unhide 或者诸如 rkhunter 等工具,扫描rootkit 程序、后门程序以及一些可能存在的本地漏洞。
这篇文章描述了如何安装unhide 并搜索隐藏的进程和TCP/UDP 端口。
如何安装unhide首先建议你在只读介质上运行这个工具。
如果使用的是Ubuntu 或者Debian 发行版,输入下述的 apt-get/apt 命令以安装Unhide:$sudo apt-get install unhide一切顺利的话你的命令行会输出以下内容:[sudo]password forvivek:Reading packagelists...DoneBuilding dependency treeReading state information...DoneSuggested packages:rkhunterThe following NEWpackages will be installed:unhide0upgraded,1newly installed,0toremove and0notupgraded.。
面向Windows的六款免费反病毒、反恶意软件扫描工具引言你的系统是不是病毒横行?反病毒软件是不是过时了?是不是需要为觉得没必要花钱购买保护的亲朋好友弄一份性能尚可但又免费的安全软件?谁都不希望恶意软件出现在自己的PC上,于是反病毒、反恶意软件扫描工具就必不可少,但品质卓越的扫描工具并不需要花大笔钱。
实际上,现在外头有好多免费的解决方案可以帮助你确保你的数字帝国安全无恙。
本文介绍了六款品质一流的扫描工具,它们可以帮助你清理系统,并确保系统在未来高枕无忧。
这些工具适用于从Windows XP到Windows 8.1的各种Windows系统。
avast! 2014作为一款历史超过25年的知名产品,avast!的用户数量超过了2亿人。
免费工具随带下列特性:·反病毒保护,包括DynaGen技术。
·反恶意软件保护,包括反间谍软件和反rootkit技术。
·更多信息请参阅:/index-win微软免费杀毒软件微软免费杀毒软件是一款免费的、易于使用的安全工具,有助于防范诸多病毒、间谍软件及其他恶意软件。
它提供了实时保护功能,还可以在后台自动更新。
对运行Windows Vista或Windows 7的任何人来说,这是一款轻松无忧的解决方案。
更多信息请参阅:/en-us/windows/security-esse ntials-download。
aswMBR rootkit扫描工具rootkit通常很难检测出来,但来自avast!的aswMBR使用许多巧妙的手法,找出并清除TDL4/3、MBRoot(Sinowal)、Whistler及其他rootkit。
别被这款工具的命令行接口给骗了――它其实是一种功能强大、非常有效的反rootkit工具。
更多信息请参阅:/~gmerek/aswMBR.htm科摩多病毒清除工具科摩多病毒清除工具(CCE)是一套功能强大的安全工具,旨在帮助用户们识别并清除Windows计算机上的恶意软件和不安全进程。
关于windows激活程序的⽊马病毒分析及处置⽅法客户电脑中毒,锁定⼏个病毒进程。
EDR杀毒、⽊马专杀⼯具⽆法处置,该现象是和深信服外⽹AF防⽕墙联动后发现的⾏为,EDR⽆感知。
该病毒特征为,每⽇早上⽤户开机,均检查到外链恶意域名。
深信服官⽅提供的专杀⼯具和EDR都没有查到病毒,我搜索⽹络相关内容,发现该病毒是微软激活⼯具释放的“⿇辣⾹锅”⽊马病毒,详见如下其中⼯具③:暴风激活V16.2,被评定为危险级别激活程序。
该程序为Windows激活程序。
该激活程序的分析结果如下:的域名和wuhost.exe的进程与我们发现的问题完全⼀致,⾄此,判定为客户运⾏该Windows激活⼯具“暴风激活”植⼊的⽊马病毒。
⽬前该病毒存在公司多台电脑中,且多种杀毒软件均⽆法处置,希望深信服能够给出⽅案。
⽂章扩展链接如下:[技术原创] 如何看待所谓“Windows/Office激活⼯具”处置经过1. 经分析,EDR等杀毒软件⽆法查到病毒,基本判定病毒进程被隐藏保护起来,使⽤卡巴斯基的TDSSkiller专杀⼯具进⾏查杀,发现病毒并重启电脑。
TDSSkiller(恶意软件清理助⼿)是⼀个可以检测并清除已知和未知的rootkit的辅助⼯具。
Rootkit其主要功能是隐藏其他程序进程的软件。
攻击者⽤来隐藏其踪迹并保留管理员访问权限的⼯具。
TDSSKiller能够帮助我们扫描出恶意软件并删除。
2.通过卡巴斯基云引擎UDS——Urgent Detection System(紧急侦测系统该引擎基于⿊名单算法,与已有云上病毒库进⾏⽐对,不是基于病毒特征引擎),扫描到:UDS:DangerousObject.Multi.Generic 提⽰恶意对象,⾼风险。
由于没有在客户⾝边守护,客户删除后重启电脑,⽆法继续跟踪溯源到MD5值。
重启后该软件⽆记录。
3.删除掉恶意隐藏⼯具后,使⽤EDR全盘杀毒,很快病毒就暴露出来,以下为查杀结果4.⾄此,该病毒被正常删除,后期还会重启该电脑跟踪问题。
SSN1672.1438 CN 1'.4994/T 中国观代欺有装备 201 1年第9期 总第121期
W i ndows Ro o tK i t进程隐藏与检测技术的研究 刘正宏 北京电子科技职业学院北京100176
摘 要:目前木马制造者趋于利用RootKit技术来隐藏它们的进程,危害信息与网络安全。重点从用户和内核两种模式深入 剖析Windows RootKit隐藏进程技术,并提出基于进程表的综合检测机制。测试证明:只有从用户和内核两种模式下应用 多种进程表检测技术,才是安全检测隐藏进程更为有效的方法。 关键词:Windows RootKit;远程线程注入;Dkom:进程表
Research on Windows RootKit hidden process and detection technology Liu Zhenghong Beijing vocational college ofelectronic science and technology,Beijing,100176,China Abstract:At present the designers of Trojan Horse tend to use the RootKit technique to hide their process and harm the safety of inform ̄ion and network.This article focuses on using the two modes of user and kernel,this thesis analyses in detail the hidden process technology in Windows RootKit.It also point out the detection mechanism based on processList.Test results proved that only applying various processList detecting technology from two modes of user and Kernel can we test the hidden process more safely and effectively. Key words:Windows RootKit;remotethread injection;Dkom;processList
随着网络的普及与发展,网络安全问题日益突出, 一部分木马制造者已将触角深入系统底层来隐藏木马, 通过修改操作系统内核来隐藏自己,欺骗用户,这就是 RootKit。RootKit的隐藏特性严重影响系统的安全性 和可靠性,而RootKit进程隐藏已成为管理员和安全检 测软件所面临的最为迫切的安全威胁。 1 Wi ndows RootKit介绍 Windows RootKit是一个程序的集合,用于实现自 身及系统中特定资源和活动的隐藏,破坏可信任计算机 的完整性。攻击者通过在系统中种植RootKit,维护一 个系统后门,以管理员权限控制系统,并且通过隐藏进 程、文件、端口、句柄、注册表项、键值等来隐藏攻 击行为。 2 W i ndows RootK i t进程隐藏技术分析 从运行环境和隐藏手段看,主要可归结为2类: 收稿日期:2011-01—11 作者简介:刘正宏,硕士,高级讲师,系主任。 24 (1)用户模式下,修改程序执行路径。 (2)内核模式下,控制和修改操作系统内核结构和 代码。 这两种方式都可以通过挂钩系统重要函数模块、 修改系统中重要数据结构等途径,对系统进程的相关信 息进行劫持与修改,以达隐藏进程的目的。 2.1修改程序执行路径,实现进程隐藏 在用户模式下,修改程序执行路径,实现进程隐藏 主要是通过远程线程注入技术。 2.1.1远程线程注入技术 是指通过在另一个进程中创建远程线程的方法进 入进程的内存地址空间。其核心是产生一个特殊的线 程,这个线程能够将一段执行代码连接到另一个进程所 处的内存空间里,作为另一个进程的其中一个非核心线 程来运行,从而达到交换数据隐藏自身的目的。其中远 程线程注入dll是该技术中最佳方法,为进程隐藏提供了 更大的灵活性。 2.1.2远程线程注入d1l,隐藏进程 远程线程注入dll其意义是将dll文件嵌入到正在运 行的系统进程当中。dll文件是由多个功能函数构成,它 并不能独立运行,所以在进程列表中并不会出现dl1。 hRemoteThred=CreateRemoteThread(hRemoteProce ss,NULL,0,pfnStarAddr,pszLibFileRemote,0,NULL);
2011年5月 2011年第9期 总第121期 中国观代孝 装备 SSN1 672—1438 CN11
-4994/1-
首先把一个实际为木马主体的dll文件(参数 pszLibFileRemote)通过WriteProcessMemory函数 载入内存,然后通过“线程注入”技术,即使用 CreateRemoteThread函数在远程进程中创建一个线程, 将其注入其他进程(地址pfnStarAddr)的内存空间,最后 这个dll里的代码就成为其他进程的一部分来实现了自 身的隐藏。 2.2控制和修改操作系统内核结构和代码,实现进 程隐藏 在内核模式下,Windows RootKit进程隐藏方法主 要有通过挂钩系统服务描述表(SSDT) ̄B直接修改操作 系统用于监控系统资源的数据(DKOM技术1。 2.2.1通过挂钩系统服务描述表(SSDT),实现进程 隐藏 SSDT表是函数地址表,其中存放了所有系统服 务函数的入口地址。系统服务调度程序通过查找 SSDT来调用相应的系统服务。因此,RootKit可以将 S SDT中的系统服务地址替换为自己代码的地址,由 RootKit代码调用真正的系统服务并对结果作相应 处理,再通过Hook劫持ZwQuerySystemlnformation或 NtQuerySystemlnformaion修改其返回数据,删除需要隐 藏的进程的信息。 2.2.2通过直接内核对象操作技术(DKOM),实现进 程隐藏 操作系统通过创建相关内核对象来登记和审计系 统资源,DKOM则通过修改这些内核对象来隐藏特定资 源,即主要通过修改活动进程列表实现进程隐藏。 (1)进程隐藏原理 Windows操作系统中,枚举进程使用的是活动进程 列表PsActiveProcessList,它是一个双向链表,每个结点 对应一个进程的EPROCESS数据结构,所有结点通过 EPROCESS结构中的ActiveProcessLinks双向指针链在 一起,通过修改两个指针可以隐藏指定进程。即把当前 进程的前一个进程的BLINK指向当前进程后一个进程 的FLINK,再把当前进程后一个进程的FLINK ̄向当前 进程前一个进程的FLINK( ̄H图1所示)。 、一..一..一..一.......…. 图1修改活动进程列表实现进程隐藏原理图 2011年5月 (2)进程隐藏实现 ①定位双向链表,确定当前进程。Windows具有唯 一的内核处理器控制块结构(KPRCB),它总是位于内 存地址0xffdffl20处,这个地址偏移0x124就是指向当前 ETHEREAD的指针,从这个ETHREAD再往下偏移一个 值就是当前进程的FLINK了(如图1所示)。这个值因系 统不同而各不相同,Windows2000下是0xA0,Windows xp下是0x88。 ②从P sActiveLink链表上摘下当前进程,实现 隐藏。Windows系统将所有的进程对象EPROCESS 链接到ACtiveProCes sLink上,但链表由一个未导 出内核全局变量PsActiveProceSsHead,通过遍历 ActiveProcessLink可以获得所有的进程信息,如果将一 个当前进程EPROCESS对象从PsActiveLink链表上摘 下来,NtQuerySystemlnformation ̄数最终遍历该链表返 回进程相关的信息,将无法检测到从PsActiveLink链表 中摘下的当前进程。部分实现代码是: ntStatus=PsLookupProcessByProcessld(Processld, &pEprocess);
RemoveEntryI.ist((PLIST ENTRY)((PUCHAR) pEprocess+0xA0)); RemoveEntryList((PLIST ENTRY)((PUCHAR) pEprocess+0x88));
通过调用PsLookupProcessByProcessId例程得到 指向指定Processld的EPROCESS对象的指针,然后调用 RemoveEntryList将其从链表上摘下。
3基于进程表的综合检测隐藏进程机制 3.1用户模式下的隐藏进程检测机制 3.1.1原理 每一个进程活动时都会暴露一些痕迹,包括打开 的句柄、窗口和创建的系统对象等,可以通过这些痕 迹检测,获取进程列表,检测隐藏进程。 3.1.2分析进程相关句柄获取进程列表 取得进程句柄后,可以用ZwQuerylnformationProcess 确定其PID。对于线程,可以调用ZwQuerylnformationThread 并得到其进程的ID。系统中所有的进程都是由某个进 程启动的,所以,可以通过检查其他进程(父进程或 csrss.exe)@的句柄来获取进程列表。 3.1.3直接使用系统调用获取进程列表 在用户模式下隐藏进程的常用方法是将自己 的代码或dIl注入其他的进程并截获ntdl1.dll中的
25