APP下载

基于直接内核对象操作的进程伪装保护方法

2013-09-17蓝智灵宋宇波

关键词:内核进程程序

蓝智灵 宋宇波 唐 磊

(东南大学信息安全研究中心,南京 210096)

基于直接内核对象操作的进程伪装保护方法

蓝智灵 宋宇波 唐 磊

(东南大学信息安全研究中心,南京 210096)

针对目前基于隐藏的进程保护方法容易被Rootkit检测工具检测出而失效的情况,提出了一种基于直接内核对象操作(DKOM)的进程伪装保护方法.该方法将进程隐藏方法中较为常用的DKOM技术与传统的伪装技术相结合,通过直接修改操作系统内核空间中存储进程相关信息的数据结构,使进程在任务管理器中显示为一些系统进程,以此达到保护进程的目的.进程信息的修改涉及内核的操作,由Windows驱动实现,该驱动兼容Windows 2000以上多个版本的操作系统,具有广泛适用性.实验结果显示,经过该方法修改后,进程查看工具查看到的进程信息与正常的系统进程没有差别.伪装效果较好,用户无法发觉,Rootkit检测工具也不会提示异常.验证了基于DKOM的进程伪装保护方法的有效性.

直接内核对象操作;进程伪装;进程保护

进程保护技术在信息安全领域中有着广泛的应用.一方面恶意软件使用进程保护技术来保护自身无法被用户察觉,另一方面系统安全防护软件也使用进程保护技术来保护自身不被恶意软件破坏.

进程保护是指一般情况下,用户不能通过非正常手段强制关闭特定进程,不能通过Windows进程管理器或一般的进程来结束特定进程[1].根据所要达到目标的不同,进程保护可分为保护进程不被非法操作关闭和保护进程不被发现2类.保护进程不被非法操作关闭的方法主要有[1-2]:Hook-API技术、DLL注入技术、远程线程代码注入技术以及多进程守护保护技术等;而保护进程不被发现主要采用进程隐藏技术或进程伪装技术.本文主要研究的是第2类进程保护,即保护进程不被发现.

1 进程隐藏与进程伪装

进程隐藏技术可以分为2类[3]:一类是基于Hook的进程隐藏技术,包括用户模式的IAT Hook和EAT Hook技术以及内核模式的SSDT Hook技术;另一类是基于DKOM的进程隐藏技术[4].目前2种隐藏技术都有相应的检测方法.

针对基于Hook的隐藏技术,有一种称为“交叉视图”[5]的方法可以用于检测.该方法将用户模式API获取的进程列表与内核中获取的进程列表进行比较,内核进程列表中多出来的进程即是被隐藏的进程,该检测方法已被多数Rootkit检测软件采用.

而对于文献[4,6]所提到的基于DKOM的进程隐藏技术,需要将被隐藏的进程从内核中的进程链表中移除,由于使用上述交叉视图的检测方法检测不到,因而需要使用更为底层的检测方法,如“基于线程调度”的检测方法[7].DKOM进程隐藏技术虽然将被隐藏的进程从进程链表中移除,但却不能从线程链表中移除,否则就得不到系统的调度,也就无法运行.因此,只需通过遍历线程链表就能查找到被隐藏的进程.

除了以上方法外,还有不少其他的检测方法,如遍历PspCidTable表检测方法[8]、基于执行路径分析的检测方法[9]以及基于虚拟机的检测方法[10]等.可见,基于进程隐藏的保护方法并不是很有效的.

为了使保护进程不被发现,也可采用进程伪装技术.传统的伪装方法主要有3种[11]:

1)程序取名为看似合法的程序,如securityupdate.exe 或 serverstart.exe.

2)程序取名与系统合法进程相似,如取名为scvhost.exe,而真实的系统进程为 svchost.exe.

3)程序取名与系统合法进程一样,但放在非系统目录下,如系统的svchost.exe存放于C:WindowsSystem32,而伪装的程序 svchost.exe可以存放在C:WindowsSystem目录下.

但对于这类方法所伪装的进程,用户只需在任务管理器中细心观察就能发现.

综上所述,上述的进程隐藏技术和进程伪装技术对于进程保护已不是很有效,为此,本文将进程隐藏技术中较为常用的直接内核对象操作方法与传统进程伪装技术结合起来,提出了一种新的进程保护方法.该方法利用直接内核对象操作技术,通过修改内存中存储进程相关信息的数据结构,包括进程名、进程路径以及用户名等信息,使进程在任务管理器中显示为系统进程,从而达到伪装进程的目的,最终实现进程保护.

2 基于DKOM进程伪装的实现

2.1 伪装的原理

操作系统中每个运行的程序,在内核中都有一些相关的结构体,保存着程序运行所需的信息,包括进程号、进程名以及可执行文件的路径等.DKOM实现伪装的原理就是对内核中这些结构体进行修改,使得应用层工具查看到的进程信息是修改过的信息,以此来达到伪装的目的.

进程伪装需要修改的信息,主要存在于下列结构体中:

上述的EPROCESS是内核中用来描述进程的结构体,它记录着对应进程运行所需的各种信息.进程环境块(process environment block,PEB)也记录一些进程相关信息,EPROCESS结构中保存有指向对应PEB的地址信息.

2.2 伪装方案

由于DKOM技术需要对内核对象直接进行操作,而普通的用户层程序并没有权限对内核进行修改,所以用于实现伪装的程序需要由驱动来实现.因为该程序不涉及即插即用之类的硬件操作,所以实现时没有采用WDM或WDF驱动模型,而是采用NT式驱动开发.NT式驱动的安装比较简单,可以将驱动作为系统服务,使用Windows提供的服务管理API进行安装和卸载.

下面假设在方案中是使用驱动C.sys把进程A.exe伪装成B.exe.为了保证被伪装的程序A.exe在任何时候运行都能够被伪装,驱动程序C.sys需要定时对进程列表进行查询,看列表中是否有进程A.exe存在,若存在就将其相关的进程信息修改为B.exe的信息.驱动程序流程图如图1所示.

图1 驱动程序流程图

2.3 相关结构的获取

对进程进行伪装需要先找到存储进程信息的相关结构,而这些结构中最重要的是EPROCESS,因为其他结构都可由EPROCESS间接得到.使用微软的Windbg调试工具对内核进行调试,可以得到EPROCESS与其他结构的关系,如图2所示.

在EPROCESS结构体中有个成员叫ActiveProcessLinks,它是一个LIST_ENTRY结构体,这个结构有2个指针成员FLINK和BLINK,分别指向当前进程的前一个和后一个进程EPROCESS结构体中的ActiveProcessLinks成员.系统中所有进程的EPROCESS结构体通过ActiveProcessLinks成员构成了一个双向链表.此外,Windows操作系统内部有个全局变量PsInitialSystemProcess,它是指向系统System进程EPROCESS结构的一个指针.因此,只要从System进程的EPROCESS结构开始,遍历整个链表就能获取所有进程的EPROCESS结构.查询到需要被伪装的进程的EPROCESS之后,再根据图2所示关系,就可以找到其他所有相关的数据结构.

图2 进程伪装相关结构体间的关系

2.4 进程信息的修改

根据EPROCESS获取到需要修改的数据结构后,就可以把相关信息修改为新的进程信息.这些结构 中,EPROCESS-> ImageFileName,SE_AUDIT_PROCESS_CREATION_INFO以及FileObject的修改方法一致,都是直接修改,如下所示:

但PEB结构的修改比较特殊,因为PEB结构是保存在各个进程各自的进程空间里,而不是在公共的内核空间中,在内核中是不能直接访问的.要修改其中的数据,就必须先使用KeStackAttachProcess函数附着到相应的进程空间,修改完相关数据后,再使用KeUnstackDetachProcess函数解附着,离开相应的进程空间,实现如下:

如上所示,PEB中修改的结构包括Command-Line,ImagePathName 和 WindowTitle.

2.5 额外信息的修改

通过上述的修改,能够实现进程名称以及路径信息的伪装,但这样还不够全面.系统中每个运行的进程都有一个父进程,如果要把程序伪装成svchost.exe这样的系统进程,那就有必要把父进程修改为 svchost.exe 的父进程 services.exe.否则,即使被伪装进程修改为svchost.exe,在进程查看器中看到该 svchost.exe的父进程不是 services.exe,仍然容易被发现有异常.要实现父进程的修改,需要修改存储父进程号的结构EPROCESS->Inherited-FromUniqueProcessId.修改时,先通过 EPROCESS->UniqueProcessId获取 services.exe的进程 ID,然后再填到被伪装进程的EPROCESS->Inherited-FromUniqueProcessId结构中,就能实现父进程的修改.

另外,需要修改的信息还有进程所属的用户.在进程查看器中由用户启动的程序,用户名一般为当前登录系统的用户,而系统进程的用户名则为SYSTEM,LOCAL SERVICE或 NETWORK SERVICE等.要修改进程的用户名,需要修改存放有用户名信息的结构EPROCESS->Token,修改时只需将被伪装进程的Token替换为系统进程的Token即可.

通过这些额外的修改之后,被伪装进程与伪装目标就更加接近,更具隐蔽性.

2.6 多操作系统支持

Windows操作系统每个内核版本的更新,都会对内核中的一些结构进行调整,主要是结构成员的变动.为了使进程伪装适用于多个版本的操作系统,实现时使用了一些变量记录各进程相关结构的偏移信息.在程序初始化时,先用PsGetVersion函数获取操作系统版本信息,然后根据操作系统的主版本号和次版本号的不同,存储各结构的偏移信息到指定的变量中.如EPROCESS->ImageFileName结构在Windows XP SP3以及Windows 7 RTM操作系统中的偏移分别是0x174和0x16C,该偏移信息就保存于EPROCESS_IMAGENAME_OFFSET变量中,之后的修改只要直接使用该变量即可.

另外,由于Windows 7操作系统中引入了DEP(data execution prevention),即数据执行保护的安全机制,在对进程PEB信息的修改时,需要在内核中先将进程的DEP标志置为0,关闭DEP保护,信息才能修改成功.

目前该测试程序支持的操作系统包括Windows 2000 SP4,Windows Server 2003 SP2,Windows XP SP3以及Windows 7 RTM.对于其他版本操作系统,只要使用Windbg进行内核调试,获取各结构的偏移信息,就能很容易地进行扩展,支持新的操作系统.

3 测试

3.1 测试环境与方法

测试环境为VMWare Workstation 7.1虚拟机.测试的操作系统包括Windows 2000 SP4,Windows Server 2003 SP2,Windows XP SP3以及 Windows 7 RTM.

测试是将操作系统自带的记事本程序C:WindowsSystem32 otepad.exe伪装成系统服务进程 C:WindowsSystem32svchost.exe.

查看结果采用的进程查看工具是Sysinternals公司开发的Process Explorer,该工具能查看到比系统自带的任务管理器更为详尽的进程信息.使用的Rootkit检测工具是 XueTr[12],该工具可用于检测系统中的可疑对象以及被隐藏的进程.

测试的具体步骤是:① 采用驱动加载程序加载用于实现伪装的驱动程序;② 运行notepad.exe;③使用进程查看器Process Explorer查看进程信息,并记录结果.为了查看各个结构影响进程的信息,测试时,先逐个修改结构,并查看结果,最后再修改全部结构,查看最终的伪装效果.

3.2 测试结果与分析

测试时,发现各版本操作系统的测试结果是相同的.另外,实际测试时发现有些情况下,被伪装程序的首次运行和非首次运行的结果是不同的,所以在记录结果时,分为首次和非首次运行,如表1所示.

表1 进程信息的修改结果

从表1的测试结果可以看出,EPROCESS->ImageFileName结构并不影响进程查看器看到的进程信息.而 SeAuditProcessCreationInfo->Image-FileName和PEB->ProcessParameters分别影响进程名和路径信息,EPROCESS->InheritedFromUniqueProcessId和EPROCESS->Token结构分别决定父进程和用户名信息.

另外,从表中可以看出,FileObject->FileName结构比较特殊.被伪装程序首次运行和非首次运行2种情况下,修改结构所得到的结果是不一样的.首次运行对结构的修改并不能立即使进程名的修改生效,而经过首次修改后,被伪装的进程只要再次运行,进程名就是svchost.exe,并不需要进行修改.这是由于操作系统会对FileObject的缓存处理,首次运行的程序被关闭后,其相应的FileObject结构并没有被释放,当程序再次被运行时,操作系统会直接从缓存的FileObject结构中读取修改过的进程名信息,从而出现该结果.

从测试结果看,只需将相关的结构全部修改,就能达到较好的伪装效果,进程查看器中看到的被伪装程序与目标程序的信息相同.Process Explorer查看的进程信息如图3所示,图3(a)是notepad.exe伪装后的进程信息,图3(b)是正常svchost.exe的进程信息.可以看到,2个进程的信息除了Command Line有区别外,其余信息都是一样的.Command Line信息不同,主要是为了测试时能分辨出哪个是 notepad.exe伪装的 svchost.exe,特意将其改为svchost.exe进程的路径.在实际的应用中,只需将其Command Line改为与svchost.exe的Command Line相同,就能保证伪装效果.

使用XueTr分别对经过DKOM隐藏和伪装的notepad.exe进行检测,检测结果如图4所示.图4(a)是DKOM进程隐藏方法的检测结果,可以看到,检测工具的状态栏提示有一个隐藏进程,并会标出图中进程ID为1264的notepad.exe,指示该进程被隐藏.而图4(b)是进程伪装方法的检测结果,进程号为1240的 svchost.exe就是 notepad.exe经过伪装的进程,可以看到该进程的信息与其他svchost.exe进程的信息一样.

由测试结果可见,本文提出的基于直接内核对象操作的伪装方法能够实现进程保护.

图3 伪装后的notepad与正常svchost的信息对比

4 结语

本文提出了基于DKOM的进程伪装保护方法.经过该方法伪装的进程,看起来就像正常的系统进程,不易被察觉.这种方法优于传统的伪装方法,被伪装的程序可以存放于任何路径,名字也可以任意选取.如果该方法结合保护进程不被关闭的技术,保护效果将会更好.当然,出现新的保护方法,就会有相应的检测方法.随着更多高新技术的提出,进程保护和检测技术都会不断向前发展.如何更全面地修改进程的相关信息,以达到更好的伪装效果,是下一步要继续考虑和研究的内容.

[1]张家旺.Windows系统进程安全保护技术分析和实现[C]//第十七届全国信息保密学术会议论文集.襄樊,2007:229-235.

[2]马金鑫,袁丁.基于Windows环境下的进程保护技术的研究与实现[J].计算机应用与软件,2010,27(3):18-21.

Ma Jinxin,Yuan Ding.On process-protecting based on windows and its implementation[J].Computer Application and Software,2010,27(3):18-21.(in Chinese)

[3]何涛.基于Windows NT的隐藏进程检测系统的研究与实现[D].北京:北京工业大学计算机学院,2009.

[4]Tsaur Woei Jiunn,Chen Yuh Chen.Exploring rootkit detectors'vulnerabilities using a new Windows hidden driver based rootkit[C]//2010IEEE Second International Conference on Social Computing.Minneapolis,MN,USA,2010:842-848.

[5]Fu Desheng,Zhou Shu,Cao Chenglong.A Windows rootkit detection method based on cross-view[C]//2010International Conference on E-Product E-Service and EEntertainment.Zhengzhou,China,2010:1-3.

[6]潘茂如,曹天杰.基于直接操作内核对象的进程隐藏技术研究[J].计算机工程,2010,36(18):138-140.Pan Maoru,Cao Tianjie.Research on process hiding technology based on direct kernel object manipulation[J].Computer Engineering,2010,36(18):138-140.(in Chinese)

[7]梁晓,李毅超.基于线程调度的进程隐藏检测技术研究[J].计算机科学,2006,33(10):114-115,118.

Liang Xiao,Li Yichao.Research on thread dispatch based hidden process detection technique[J].Computer Science,2006,33(10):114-115,118.(in Chinese)

[8]周利荣,马文龙.Windows 7遍历PspCidTable表检测隐藏进程[J].计算机系统应用,2011,20(9):222-225.

Zhou Lirong,Ma Wenlong.Windows 7 ergodice PspCid-Table to detect hidden processes[J].Computer Systems&Applications,2011,20(9):222-225.(in Chinese)[9]Rutkowski J K.Execution path analysis:finding kernel based rootkits[EB/OL].(2002-07-28)[2012-08-08].http://www.phrack.org/issues.html?issue=59&id=10#article.

[10]Wen Yan,Zhao Jinjing,Wang Huaimin.Implicit detection of hidden processes with a local-booted virtual machine[C]//International Conference on Information Security and Assurance.Busan,Korea,2008:150-155.

[11]Alsagoff S N.Malware self protection mechanism[C]//International Symposium on Information Technology.Kuala Lumpur,Malaysia,2008:1-8.

[12]Linxer.XueTr[EB/OL].(2011-12-03)[2012-08-08].http://www.xuetr.com/?p=25.

Novel process-protecting method using camouflage techniques based on direct kernel object manipulation

Lan Zhiling Song Yubo Tang Lei
(Information Security Research Center,Southeast University,Nanjing 210096,China)

Current process-protecting method based on process-hiding is easy to be detected by Rootkit detection tools and hence fails to protect processes.To solve this problem,a novel process-protecting method using camouflage techniques based on direct kernel object manipulation(DKOM)is proposed.This method combines DKOM techniques with traditional process-disguising techniques.To protect the process,it is made to display as a system process in the task manager by altering structures storing process information in the kernel space of the operating system.To manipulate the kernel object,the modification should be implemented by a Windows driver,which is compatible with Windows 2 000 and Subsequent versions.The experimental results show that the process information retrieved from process explorer tools is identical to the system process.The process being disguised cannot be perceived by users or detected by Rootkit detection tools.The effectiveness of this process-protecting method using camouflage techniques based on DKOM is verified.

DKOM(direct kernel object manipulation);process camouflage;process protection

TP309.5

A

1001-0505(2013)01-0024-06

10.3969/j.issn.1001-0505.2013.01.005

2012-06-09.

蓝智灵(1988—),男,硕士生;宋宇波(联系人),男,博士,副教授,songyubo@seu.edu.cn.

国家发改委信息安全专项资助项目.

蓝智灵,宋宇波,唐磊.基于直接内核对象操作的进程伪装保护方法[J].东南大学学报:自然科学版,2013,43(1):24-29.[doi:10.3969/j.issn.1001-0505.2013.01.005]

猜你喜欢

内核进程程序
多内核操作系统综述①
强化『高新』内核 打造农业『硅谷』
债券市场对外开放的进程与展望
改革开放进程中的国际收支统计
试论我国未决羁押程序的立法完善
基于嵌入式Linux内核的自恢复设计
Linux内核mmap保护机制研究
“程序猿”的生活什么样
英国与欧盟正式启动“离婚”程序程序
创卫暗访程序有待改进