Rootkit攻击与检测防范技术研究

2020-12-08 02:12王宇
数码设计 2020年16期

王宇

摘要:Rootkit几乎具备了所有恶意代码的优势,具有灵活性更大、潜伏性更强、破坏范围更广等特点,能够对Linux、Windows等计算机操作系统和Android等移动终端操作系统实施攻击。随着Rootkit的快速发展和广泛使用,如何检测防范Rootkit攻击也成为了热点研究问题。

关键词:Rootkit;挂钩;Rootkit检测;

中图分类号:TP393.08   文献标识码:A   文章编号:1672-9129(2020)16-0040-01

1 Rootkit概述

Rootkit,直譯即特权用户工具集,从其名称定义不难看出,Rootkit实质是一类能够获取特殊控制权限,访问敏感数据或进行风险操作的软件集[1]。Rootkit早在1994年就已经出现,它本身并不是一项新型攻击技术,但却是发展最快、威胁最大的恶意代码之一,这是因为Rootkit同时兼备了木马、后门、计算机病毒的特征,能通过替换、修改硬件代码或计算机程序将自己进行伪装隐藏,绕过安全检测机制的监测,对系统实施访问或控制。由于Rootkit的隐藏性更深、潜伏期更长,一般系统的检测机制及一些检测软件很难对其进行有效检测,这使Rootkit相较其他类恶意代码,能造成更大的危害。

2 Rootkit攻击技术

2.1攻击模式。主流计算机操作系统多采用自下向上的分层模型,层间接口提供统一标准或协议将下层进行封装,为上层提供服务,但分层模型在简化层间连接的同时也存在被攻击的风险。

用户模式的Rootkit攻击通过接入开发接口、关闭保护机制和使用挂钩技术等将指定代码加载到系统进程中,在未授权的情况下进行如替换系统库文件、更改系统进程等敏感操作。内核模式的Rootkit攻击针对操作系统的内核对象(如文件、进程等)进行攻击,修改或替换内核代码,通过访问底层信息控制系统,再利用获得的权限对抗安全机制,欺骗上层调用,实施深度隐藏。实现Rootkit内核模式攻击的方式有很多,例如通过修改系统硬件的驱动程序改变原有的服务调用。

2.2挂钩技术。挂钩是将攻击者事先写好的代码以外挂程序的形式插入到目标程序中,当外挂程序被执行时,进程将执行攻击代码,在用户不知情的情况下完成攻击。较为常见的挂钩技术有API函数挂钩和描述符表挂钩。API函数挂钩主要有两种实现方式,一种是修改输入地址表(IAT),另一种是修改函数地址中的机器码。IAT中是程序运行要调用的不同函数的地址信息,Rootkit使用挂钩技术攻击时,首先会分析目标程序的结构,然后根据API函数地址和IAT确定目标函数地址,再使用攻击代码所在地址进行替换,这样当程序运行至目标函数时,攻击函数就能取而代之得到运行,完成攻击。另一种方式是直接修改函数入口的机器码,使程序转到攻击函数。

描述符表挂钩的攻击对象是系统服务描述符表(SSDT)、中断描述符表(IDT)、全局描述符表(GDT)等。SSDT挂钩是将SSDT中某个系统服务对应的接口地址修改为挂钩子函数的地址,进而改变系统服务的执行路径[2]。IDT挂钩是用新的表项替换IDT中原有的表项,改变系统服务的执行流程。GDT挂钩是通过改变内在段的执行特权隐藏攻击进程。

2.3虚拟化技术。虚拟化技术使软件与硬件不再仅具有一对一的映射关系,同一硬件设施可以被多种软件共享。基于虚拟化技术的Rootkit正是利用这一特点绕开系统的安全检测,实现深度潜伏。

虚拟化技术的基本组成要素有虚拟机(VM)和虚拟机管理器(VMM),VMM使用宿主、监控、混合三种模型对物理主机的资源进行管理。VMM Rootkit在宿主模型下构建包含攻击代码的VM,再利用VMM控制宿主系统,监控、截获任意信息,由于构建的VM与宿主系统是隔离的,因此安全检测无法检测到攻击代码的存在[3]。在监控模型下,VMM Rootkit 更改系统驱动程序,改变执行流程、建立后门等,监视、记录系统信息,也可以更改指令实现自身隐藏。混合模型是前两种模型的集成,因此VMM Rootkit的攻击方法与前述相同。

3 Rootkit 检测与防范

3.1检测方法。根据Rootkit作用主体对象的不同将检测方法分为硬件和软件两种检测。硬件检测目前尚处于理论研究阶段,虽然取得了一些成果,如利用直接内存访问技术和实时扫描技术等,对硬件设备的物理内存进行监控、分析、判断,及时发现异常情况,但具体实践经验较少,有待进一步发展。

软件检测方法类型较多,常用的有行为检测、完整性检测、执行时间/路径检测和差异检测。行为检测根据Rootkit攻击行为特征库的数据,分析比对当前系统是否有符合特征的行为信息,由比对结果可知Rootkit攻击是否发生。完整性检测依据内核文件特征库,检验系统文件特征值是否发生改变,若特征值与存储值不同,证明存在Rootkit攻击。执行时间/路径检测统计分析系统服务的执行时间和指令数差异检测Rootkit攻击,但此种检测方法可能会产生误报或影响系统性能。差异检测对不同层次反馈的文件、进程等信息进行全面比较,再根据检测出的差异分析该差异是否来源于Rootkit攻击。

3.2防范方法。对Rootkit攻击的防御要从用户、固件、内核三个方向开展,由于用户级Rootkit攻击是针对系统权限较低的文件或程序,潜伏性不强,因此现有检测技术就能完成有效防御。固件级Rootkit防御的核心是使防御代码获得优先控制权,即在系统启动运行之前就完成防御代码的部署与配置,再利用防御代码阻止攻击代码加载。内核级Rootkit攻击危害性最高,检测防御难度也最大,目前有效的防御方法是将操作系统内核部分与外部程序进行隔离,当攻击代码试图通过驱动或其他方式加载时,安全保护层可以识别这种非授权行为并进行清除。

4 结论

Rootkit攻击是一类特殊的恶意攻击,检测难度高,发展速度快;随着智能固件与硬件的应用越来越广泛,Rootkit防御也获得了更多关注。本文从Rootkit特点着手,对Rootkit攻击的攻击模式、挂钩技术、虚拟化技术进行了详细介绍,并从不同角度概述了现行的检测、防范方法。

参考文献:

[1]张瑜,刘庆中,李涛, 等.Rootkit研究综述[J].电子科技大学学报,2015,(4):563-578

[2]刘邦明,邬浙艳,孙黉杰.SSDT挂钩:基于Windows内核的RootKit技术样本[J].网络安全技术与应用,2009,(3):62-64.

[3]施江勇,王会梅,鲜明, 等.硬件虚拟化rootkit检测方法研究综述[J].计算机应用研究,2014,31(1):1-5,12.