Linux平台下Rootkit木马分析与检测
2017-05-09陈远鹏李永忠
陈远鹏,李永忠
(江苏科技大学 江苏 镇江212003)
Linux平台下Rootkit木马分析与检测
陈远鹏,李永忠
(江苏科技大学 江苏 镇江212003)
Rootkit作为当前危害最大的木马程序,它能够运行在内核层,从中破坏系统的内核结构,比传统木马程序的隐蔽性更强。针对Rootkit隐藏技术和检测技术面临的问题,采用了一种新的检测方法,它能够检测隐藏在虚拟机中的内核级Rootkit。通过实验验证,结果表明该技术能够有效监测内核级Rootkit木马。
Linux;Rootkit;木马分析;内核模块
随着计算机应用技术的不断发展,信息网络安全正逐渐引起人们的重视。现今,各种不同的后台程序被黑客开发出来,它们正严重威胁着网络安全[1]。2013年,纽约时代报刊称世界近一半的互联网用户都遭受过网络入侵,据统计,中国因网络入侵造成370亿美元的损失[2]。另据IBM-X-Force安全研究小组针对2013年典型攻击情况的分析调查显示,近三分之二的网络攻击为未知原因的攻击[3]。Rootkit木马作为最著名的后门程序,使得黑客能够通过不同的方式获得root权限,最终实现对目标主机的长期控制。
目前,对于Rootkit检测方面已经有一些在虚拟机中开发恶意木马检测与监控技术的研究工作。这些工作主要是检测虚拟机的隐藏进程和一些重要的文件,却未对Rootkit本身进行检测[4]。针对目前存在的这一类问题,文中提出了一种内核级Rootkit检测技术,并在虚拟化平台中实现了一个原型系统,经过实验验证,该方法能够有效检测内核级的Rootkit木马。
1 Linux体系结构
Linux操作系统由4个重要部分组成:内核、shell、文件系统和应用程序,它们一起形成了基本的操作系统结构[5]。
内核层属于Linux系统的核心部分,它负责管理系统的进程、内存、设备驱动程序、文件和网络系统,决定着系统的性能和稳定性[6]。Shell层是系统的用户界面,提供了用户与内核进行交互操作的一种接口[7]。文件系统是文件存放在磁盘等存储设备上的组织方法[8]。应用层主要是一些重要的应用程序包,其中包括文本编辑器VIM(Vi IMproved)、编程语言、办公软件、网络工具等[9]。
2 Rootkit木马检测器的设计
目前Rootkit的检测方法主要分为文件完整性检测与隐藏性检测,但这两种方法都有一定的缺陷。文件检测方法只能检测到应用程序中的Rootkit,却无法检测内核级Rootkit;隐藏性检测只注重于系统内核Rootkit检测,对上层应用程序Rootkit不采取任何措施。结合这两种检测技术的优点,文中提出一种在内核级与用户级上保护系统和用户数据的安全检测技术,并在内核虚拟机KVM (Kernel Virtual Machine)平台中实现了原型系统。
2.1 设计原理
根据Linux系统的类型,Rootkit木马有不同的方法来对内核进行修改,最简易的方法就是利用可加载内核模块LKM[10](Linux Kernel Module)的功能。因此大多数的内核Rootkit通过利用LKM动态地更新内核来提供新功能,加入新的模块扩展内核,同时对内核和其他使用内核的所有程序拥有了完全访问权限[11]。例如,sys_read()系统调用函数劫持前与劫持后的函数执行链如图1所示。
从图1可以看出,在LKM模块开始初始化函数时,新的自定义函数指针hacked_read()将会存入原有系统调用所对应的表项,进行系统调用劫持,此时,hacked_read()将会代替sys_read(),并将新的结果返回给用户态[12]。
2.2 系统设计
为了实现对虚拟机中的内核级Rootkit检测,Rootkit检测器需要从不同层面获取虚拟机用户态视图、内核态视图和VMM[13]层视图进行交叉对比。视图的获取依赖于不同的安全模块,检测系统总体结构图如图2所示[14]。
图1 系统调用表劫持前与劫持后的函数执行链
图2 Rootkit木马检测系统总体结构图
图2中,模块检测器的作用是监控虚拟机内核模块加载与卸载的动作;内核视图重构器负责建立与维护真实模块链表;内核视图重构器根据虚拟机语义信息重构虚拟机内核视图;调用器在KVM层发起自下而上的功能调用,与用户态视图获取器相互协作;用户态视图获取器根据lsmod产生用户态视图[15]。Rootkit检测器通过获取用户态视图和内核态视图信息后,进行文件检测和LKM模块检测,其结构图如图3所示。
图3 Rootkit检测器结构图
文件检测模块通过监视文件MD5值、常被攻击的文件、文件权限、隐藏文件等来判断Linux系统是否被入侵。LKM模块检测模块通过将系统LKM模块与Rootkit木马特征库进行对比,进行判断是否存在可疑内核模块。
3 Linux平台Rootkit检测器的实现
3.1 文件检测
文件检测首先对Binary文件进行MD5校验测试,检测任何文件是否改动;检测Rootkit经常攻击的二进制和系统工具文件;检测大多常用程序的文件权限属性;检测Rootkit隐藏性文件。文件检测模块通过执行do_system_check()函数,来检测系统的入口函数,部分核心代码如下:
do_system_check () 函 数 依 次 调 用do_system_commands_checks (),do_Rootkit_checks(),do_local_host_checks()这些子函数来检查系统,流程图如图4所示。
图4 文件检测流程图
3.2LKM模块检测
LKM模块检测主要对指定的模块进行测试,do_system_check_initialisation()函数将获取的当前系统LKM模块与Rootkit特征库中可疑LKM模块比较,若发现可疑内核模块,最后在结果输出显示,并在日志中进行记录,部分代码如下:
4 实验与结果分析
Rootkit木马检测系统实现如图5所示。
图5 Rootkit木马检测系统
功能测试项:1)文件检测:md5校验检测;检测易被攻击文件;文件权限检测;隐藏性文件检测。2)LKM模块检测。
为了测试系统的功能,选取了当前几个流行的内核级 Rootkit作为测试对象:SHV5,DDRK,SUTERUSU。这里以SHV5为例说明检测结果,执行过程如图6和图7所示。
图6 文件检测
图7 LKM检测
程序执行到最后,可以发现测试用例SHV5,如图8所示。
图8 Rootkit检测结果
5 结束语
针对当前基于虚拟机监视器的内核级Rootkit检测技术存在的不足,文中提出了一种检测技术,检测隐藏在虚拟机中的内核级Rootkit。实验结果表明,系统的检测效果良好,解决了以往检测方式中检测结果信息不足等问题,为后续研究中对Rootkit的处理提供了支持。但是,这种检测技术太过依赖宿主机操作系统和虚拟机监视器,如何在虚拟化环境中提高宿主机和虚拟机监视器的安全,还需要在以后的工作中进一步研究。
[1]陈华亭,吴邦欲.基于LKM的Rootkit技术[J].计算机工程与科学,2004(2):88-90,96.
[2]Symantec Corporation.2013 Nortonreport[EB/OL]. [2014-12-10].http://www.yle.fi/tvuutiset/uutiset/ upics/liitetiedostot/norton_raportti.pdf.
[3]IBM Corporation.IBM X-Force 2013 annual trends and riskreport[EB/OL].[2014-12-10].http://www-03.ibm.com/security/xforce/.
[4]符蓉.Linux内核级Rootkit检测方法的研究与应用[D].长沙:湖南大学,2009.
[5]唐伟杰.微内核进程间通信的优化与实现[D].杭州:浙江工业大学,2009.
[6]陈宝君.基于ARM9的嵌入式系统设计及EPA设备实现[D].大连:大连理工大学,2006.
[7]许力.基于ARM9家庭心电监护系统的设计和实现[D].武汉:武汉理工大学,2008.
[8]李洁琼,冯丹.一种基于网络磁盘阵列的高性能海量存储系统 [J].小型微型计算机系统,2006(12):2326-2330.
[9]陈斌.Linux应用程序调试技术的研究[J].开封教育学院学报,2014(2):289,292.
[10]梁升荣.Windows Rootkit检测机制的研究与实现[D].成都:电子科技大学,2009.
[11]罗粮,周熙.Rootkit在Linux下的工作原理及其检测[J].计算机安全,2007(3):19-21.
[12]李善平,陈文智.边干边学:Linux内核指导[M].杭州:浙江大学出版社,2002:133-16.
[13]施江勇,王会梅,鲜明,等.硬件虚拟化rootkit检测方法研究综述[J].计算机应用研究,2014(1):1-5,12.
[14]Tomlinson A.Introduction to the TPM[M]//Smart Cards, Tokens,Security and Applications.New York:Spring US,2008:155-172.
[15]张磊,陈兴蜀,任益,等.一种基于VMM的内核级Rootkit检测技术[J].信息网络安全,2015(4):56-61.
Analysis and detect of Kernel-level Rootkit in Linux platform
CHEN Yuan-peng,LI Yong-zhong
(Jiangsu University of Science and Technology,Zhenjiang 212003,China)
Rootkit,as the current most dangerous Trojans,it can run at the kernel level,interference system kernel,allowing attackers to achieve the goal,it is more powerful than the traditional hidden Trojan.As for its imperceptibility,a new detecting method is proposed in this article,can find kenellevel Rootkit in a virtual machine.And the method has been test that can detect kernel-level Rootkit efficiently.
Linux;Rootkit;trojan analysis;kernel module
TN301
:A
:1674-6236(2017)01-0039-04
2015-12-23稿件编号:201512230
陈远鹏(1989—),男,江苏南京人,硕士。研究方向:通信技术及应用工程。