Rootkit隐藏技术分析

2016-02-24 08:34韩妍妍张晓菲刘培鹤
北京电子科技学院学报 2016年2期
关键词:线程内核进程

韩妍妍 张晓菲 刘培鹤

Rootkit隐藏技术分析

韩妍妍 张晓菲 刘培鹤

北京电子科技学院,北京100070

目前网络安全应用的技术有很多,但是能够不被管理员发觉而悄无声息的收集数据的只有Rootkit。随着人们对Rootkit隐身技术的研究,它在网络安全中发挥的影响越来越大。本文分析Rootkit进程隐藏实现思想,给出了Rootkit实现隐藏进程的具体方法,为进一步研究Rootkti相关的木马病毒以及相应的木马病毒检测提供有效的帮助。

网络安全;Rootkit;隐藏进程;木马病毒;检测

引言

Rootkit是在机器上建立的一个远程接口,该接口允许攻击者以一种难以察觉的方式(例如隐藏)对系统进行操纵(例如指挥与控制)和收集数据(例如侦查)。Rootkit常见的功能有隐藏文件、隐藏进程、隐藏链接、隐藏模块、作嗅探工具、记录密码、擦除日志、打开内核后门等,主要可以通过lkm注射[1]、模块摘除、拦截中断(0x80、0x01)、劫持系统调用[2]、运行时补丁、端口反弹等方法来实现。

从某些方面来说Rootkit就是在目标计算机中让管理员毫无察觉地持久的驻留,并对系统进行操纵,且通过秘密渠道收集信息的程序。总结来说,Rootkit的三要素是:隐藏、操纵、收集数据。

通过对Rootkit隐藏实现的剖析,可为做好Rootkit威胁的防护打基础。

1 Rootkit隐藏技术思想

Rootkit主要在系统的内核下运行,通过调用修改过的系统内核函数来进行一些过滤操作,从而达到隐身的目的。Rootkit技术中最典型的应用是进程隐藏。通过进程隐藏可以在保证给定的进程正常运行的前提下,使与自身相关的信息不被进程监控软件记录下来。杀毒软件、防火墙等安全软件就会隐藏重要进程以不受恶意软件的干扰,从而使系统的安全防护效果达到更好。但是进程隐藏的危险性也是不可否认的,它表明着程序代码可以在完全不被察觉的情况下悄然运行。在进程隐藏的实现过程中,通过调用PsGetCurrentProcess()函数获取指向与当前线程相关联的EPROCESS对象的指针。然后,判断对象的PID域与想要隐藏的进程的PID是否相同,相同就调整有关指针值,不同就使用ActiveProcessLinks域遍历EPROCESS对象的双向链表,直到遍历完该链表或者找到目标 PID[7]为止。假如要隐藏已知的EPROCESS对象,就需要更改相关的ActiveProcessLinks域,如图1所示。

如图1中所示要把前一个EPROCESS块的正向链接设置成引用下一个块的正向链接,同时把下一个EPROCESS的反向链接也设置成指向前一个块的正向链接。目标对象的正向和反向链接被设置为向内指向对象自身,这样做的目的在于当隐藏进程被终止后,操作系统可以使用有效的指针。一般情况下,当进程终止时,操作系统会调整邻近的EPROCESS对象以反映这种终止。一旦隐藏了进程,它的EPROCESS块不会有任何邻居。如果把它的链接设为NULL或保持原态,系统可能会蓝屏。总之,把参数传给无用的内核操作很容易引发全面的错误检查。

那么从进程列表中被移除的EPROCESS对象又是如何被执行呢?当它不再是正式进程列表中的一部分时,它又如何被调度以获取CPU时间呢?这就在于Windows是在线程粒度级而非进程级抢占调度[4]代码进行操作执行的。从内核调度程序的角度来看,进程仅仅负责提供线程可以在其中执行的环境。例如,如果进程X有两个可运行线程,进程Y有四个可运行线程,内核调度程序总共可识别六个线程,而不考虑线程具体属于哪个进程。每个线程分配一段处理器时间,且这些时间片不一定相等(调度算法是基于优先级驱动的,因此具有较高优先权的线程可以得到更多的处理器时间)。

操作系统中Task Manager和tasklist.exe之类的工具都使用了EPROCESS中的基于进程的链接,但是内核调度程序却使用一种不同的簿记方案,这种方案依赖于一组与其他程序不同的数据结构(很可能是ETHREAD[5]对象中的域),它在不牺牲功能的情况下可以实现隐身。

2 Rootkit隐藏具体实现

通过IRQL[6]方法,No-FU[7]中实现隐藏任务的代码首先锁定对EPROCESS结构双向链表的访问。例程如下:

该程序一旦获得独占访问权,就调用modifyTaskList()例程。

Void modifyTaskList(DWORD pid)

上述例程获取当前的EPROCESS对象,并把它作为遍历整个EPROCESS对象链表的起点开始遍历操作,直至遇到带有目标PID的结构才结束遍历。

如果整个链表都已遍历而没发现这个PID,或者如果fuse[8]变量达到了它的阈值(指明无限循环条件),函数就什么都不做直接返回。如果发现了目标 PID,则使用modifyTaskListEntry()来调整相应对象与它相邻 对 象 的 链 接。modifyTaskList()和modifyTaskListEntry()[9]这两个函数都借鉴了一组实用程序和定制宏定义来达成目标。宏并没有被设定成固定值,而是设置成了全局变量,以便代码可以更容易地从一个Windows平台移植到下一个Windows平台。这其中运用了指针运算与重赋值的知识,然后分离重要的域,并正确计算它们的字节偏移(因为一个错误可能导致蓝屏)。

下面用tasklist.exe展示隐藏PID为2864的命令控制台进程的前后状态。最初系统状态是:

用Rootkit代码隐藏进程后,再次执行跟上述相同的命令,出现结果如下:

当Rootkit隐藏技术被利用制作成木马后,在一般情况下,Rootkit木马使用两种隐藏技术:一种通过改换系统内部结构来达到使某对象隐身的效果,比如把进程双向链表中的进程对象删除来使进程隐藏;另一种是变换内核的执行路径,比如挂钩[10]那些负责枚举活动进程的内核函数来隐藏某对象。对于被隐藏的Rootkit木马进程,可以通过读取线程分派器使用的数据结构来检测发现,也可以通过对执行路径进行分析和指令计数器的构造来测定系统内核与DLL中执行指令的数量来检测发现,还可以通过挂钩检测技术的调用来检测发现。隐藏进程和检测进程就像是矛与盾的较量,它们总是在不断斗争中发展变化。一直以来,Rootkit都在尽力毁掉进程在系统中留下的迹象,同时干预进程检测函数的正常工作,从而使运行中的代码得到隐藏。但是在系统中运行的进程总是和系统本身有着剪不断的联系,进程检测技术又特别想把这些模糊不清的联系找出来,以此来检测出真实的进程列表。

3 结束语

Rootkit技术被看着是互联网时代信息安全的威胁之一,因为其隐蔽性的特点往往使得一些企业、政府等单位无可奈何。它的隐遁潜行功能以及与其他恶意软件相互渗透、相互融合的演化发展趋势,已对网络信息系统造成了极大安全威胁。根据最新的报告,信息泄露已经成为企业亏损的原因之一。更好地掌握Rootkit所使用的技术,可以找到相应的检测它的手段,就能够更好的预防相关的危害发生。由于Rootkit及其防御技术将随着应用软件技术、操作系统技术和底层硬件技术的演化而不断发展与更新,所以在做好传统型Rootkit防护检测工作的同时,也必须紧跟Rootkit发展的趋势,不断地完善防护措施,才能真正抵御Rootkit技术带来的威胁。

[1]吴坤鸿,舒辉,董卫宇.内核脱钩技术在检测Rootkit木马信息隐藏中的应用[J].计算机工程与设计,2008,29(14):3635-3637.

[2]Solomon D, Russinovich M. Windows Internals[M].4th ed.[S.l.]:Microsoft Press,2005.

[3]中国互联网络信息中心.第31次中国互联网络发展状况统计报告[EB/OL].2013[2013-01],http://http://www.cnnic.cn/hlwfzyj/hlwxzbg/hlwtjbg/201301 / P020130122600399530412.pdf.

[4]潘爱民.Windows内核原理与实现[M].北京:电子工业出版社,2010.

[5]看雪论坛.http://bbs.pediy.com,2014.

[6]SalimanManap.”Rootkit:Attacker undercover tools”. http://www. niser.org.my/ resources/Rootkit.pdf.

[7]Symantec Corporation. Windows rootkit overview[EB/OL].[2014-12-10].http://www.symantec.com/avcenter/ reference/windows.rootkit.overview.pdf.

[8]Bill Blunden.Rootkit系统灰色地带的潜伏者.第2版[M].北京: 机械工业出版社,2013.

[9]段钢.加密与解密:第3版[M].北京:电子工业出版社,2008.

[10]潘剑锋,奚宏生,谭小彬.一种利用程序行为分析的Rootkit异常检测方法[J].中国科学技术大学学报,2010,40(8):863-869.

[11]任云韬,李毅超,曹跃.基于注册表Hive文件的恶意程序隐藏检测方法[J].电子科技大学学报,2007,36(3):621-624.

[12]BRAUN S,FLAHERTY A,GILLUM J,et al.Secret to PRISM program:Even bigger data seizures[EB/OL].[2013-06-15].http://bigstory.ap.org/article/secret-prismsuccess-even-bigger-data-seizure.

[13]吾爱破解论坛.http://www.52pojie.cn,2015.

[14]KUSHNER D.The real story of stuxnet[EB/ OL].[2014-12-10].http://spectrum.ieee.org/telecom/security/the-real-story-ofstuxnet.

Analysis Based on Technology of Rootkit Hidden

Han Yanyan Zhang XiaofeiLiu Peihe
Beijing Electronic Science and Technology Institute,Beijing 100070,China

The current internet security technology has many applications,but only rootkit can collects data secretively which cannot be found by administrator.With the exploring of the hidden technology of rootkit,rootkit has an important impact on the field of internet’s security.This paper analyzes the example that how to conceal rootkit’s process,which points out the specific methods to achieve rootkit hidden process,providing effective help for our study to detect Trojan about rootkit.

internet security;rootkit;hidden process;Trojan;detect

TP393.08

A

1672-464X(2016)2-07-05

(责任编辑:鞠 磊)

韩妍妍,女,助理研究员,主要研究方向为可视密码,密码学;张晓菲,男,硕士研究生,主要研究方向为网络安全、逆向分析。

猜你喜欢
线程内核进程
5G终端模拟系统随机接入过程的设计与实现
多内核操作系统综述①
实时操作系统mbedOS 互斥量调度机制剖析
浅析体育赛事售票系统错票问题的对策研究
强化『高新』内核 打造农业『硅谷』
活化非遗文化 承启设计内核
债券市场对外开放的进程与展望
微软发布新Edge浏览器预览版下载换装Chrome内核
快速杀掉顽固进程
中外民主法制进程专题复习