APP下载

基于VMM的虚拟机隐藏网络连接检测研究

2020-01-03蔡梦娟

现代计算机 2019年33期
关键词:网络连接调用内核

蔡梦娟

(四川大学网络空间安全学院,成都 610065)

0 引言

随着以虚拟化技术为基础的云计算服务的快速发展,云平台中的安全问题成为业界关心的核心问题。当前恶意软件呈现出隐蔽性和攻击性等特点,给安全软件的检测带来了极大的困难。恶意软件为消除自己攻击痕迹并达到持续控制被入侵主机的目的,通常在被入侵主机中预留后门,如建立监听进程和网络连接等,且会通过隐藏进程、网络连接以及文件等方式来隐藏自身行为逃避检测。当前针对隐藏对象检测的研究中,大部分集中于对隐藏进程的检测,但若恶意进程通过入侵或伪装以普通进程的身份运行,同时隐藏自身的网络连接,仅检测隐藏进程则无法识别该类恶意程序;且隐藏的网络连接与进程之间存在一定的关联关系,检测隐藏网络连接更助于发现可疑进程。因此,检测虚拟机中的隐藏网络连接,对于保障云平台中虚拟机的安全性具有重要意义。

多视图验证技术[1]是一种检测隐藏对象的有效机制。恶意程序可在不同层次进行对象隐藏,多视图验证技术即交叉视图对比检测机制,通过获取各个不同层次的视图,交叉对比得到隐藏对象,而该种方法最关键步骤则为可信视图的获取。云环境下针对隐藏对象的检测研究中,根据检测工具的部署位置可分为两类:①将检测工具置于虚拟机中;②将检测工具置于VMM中。第一类方法在虚拟机内部获取可信视图,其检测工具位于操作系统内部,易被恶意程序篡改、绕过或禁用,因此很难保证所获视图的可信性。第二类方法利用VMM的强隔离性和高特权级等优势,使检测工具与虚拟机系统隔离开来,在虚拟机外部采用VMI[2]获取虚拟机内部信息,增强检测工具的安全性与可靠性,如文献[3-5]。其中vDetector[3]通过在虚拟网卡中解析网络报文,结合内核数据视图得到可信网络连接视图,但内核级Rootkit可篡改内核数据结构,致使最终获取的视图不可信。VMDetector[4]通过侦听宿主机网卡获取实时的网络活动信息,但该方法无法获取虚拟机发送的所有数据包,且无法感知网络连接的释放,无法维护真实可信的网络连接视图。

针对以上不足,本文提出了一种基于拦截系统调用的虚拟机隐藏网络连接检测方法,并实现了原型系统VNDec。VNDec在虚拟机内部获取不可信视图,在VMM中维护可信的网络连接视图,交叉对比检测隐藏网络连接,并在VMM中维护网络连接与其对应主体进程的映射关系,实现隐藏网络连接行为与进程主体的关联。VNDec无需进行复杂的网络数据包截获解析的工作,增强了系统的简易性与可用性。

1 VNDec系统设计

本文设计的VNDec基于KVM(Kernel-based Virtual Machine,基于内核的虚拟机)完全虚拟化环境实现,其总体架构如图1所示。

图1 VNDec系统架构

VNDec分为四个部分:用户层工具、内核层工具、可信视图维护模块与检测模块。内核层工具置于虚拟机内核层,用于获取网络连接内核层视图Vk,并通过设备驱动的方式将Vk传至用户层工具;用户层工具置于虚拟机用户层,用于获取网络连接用户层视图Vu,发送隐藏网络连接检测命令,并通过超级调用的方式将用户层视图Vu及内核层视图Vk传至VMM中的检测模块;可信视图维护模块置于VMM中,通过拦截虚拟机中进程的系统调用,遍历进程打开的文件列表维护底层的可信网络连接视图Vt及网络连接与进程的对应关系,并将视图Vt发送至检测模块;检测模块置于VMM中,接收用户层工具发送的用户层视图Vu及内核层视图Vk,及可信视图维护模块发送的可信视图Vt,交叉对比三个视图检测隐藏的网络连接,并将隐藏的网络连接及其对应的进程信息输出至日志文件中。

2 VNDec关键技术

2. 1 多视图获取与检测机制

Linux内核中一个网络连接对应一个socket文件。当前恶意程序隐藏网络连接的方式均通过隐藏相应的端口实现,故检测隐藏网络连接即检测对应的隐藏端口。VNDec获取各个视图的原理如下。

(1)用户层视图Vu:Linux操作系统下的proc文件系统包含了网络连接的相关信息,命令netstat即是通过访问proc文件系统获得网络连接信息。故用户层视图通过在虚拟机内部遍历/proc/net/tcp文件中的信息获取;

(2)内核层视图Vk:Linux内核将所有socket使用时的端口通过哈希表来管理,该哈希表存放在全局变量tcp_hashinfo中。不同状态(如绑定、监听、建立连接)的端口保存在不同的哈希表中,根据内核符号表导出的内核数据结构偏移地址获得tcp_hashinfo的首地址,从中获取不同哈希表的表头hlist_head,以此为起点遍历所有的哈希节点,获取socket的相关信息,即内核层视图;

(3)可信视图Vt:在KVM中拦截虚拟机中进程的系统调用维护可信的网络连接视图。具体而言:①拦截端口绑定的bind系统调用,发起连接的connect系统调用,通过解析系统调用参数获取socket文件描述符sockfd,遍历当前进程打开的文件列表得到sockfd对应的文件,获取对应的端口信息,将进程与端口的记录添加至KVM维护的视图中;②拦截socket关闭的系统调用 close与 shutdown,以进程名,pid,socket描述符为索引删除对应的记录;③拦截进程退出系统调用exit,以进程名称,pid为索引删除该进程对应的所有网络连接,如此在VMM中动态维护可信网络连接视图。

VNDec基于以下两个原理确定隐藏端口的存在:

(1)socket文件对应的端口P出现在可信视图Vt,而未出现在用户层视图Vu中,则该端口为从用户层隐藏的端口;

(2)socket文件对应的端口P出现在可信视图Vt,但未出现在内核层视图Vk中,则该端口为从内核层隐藏的端口。

2. 2 虚拟机系统调用截获机制

VNDec拦截虚拟机系统调用的原理如图2。在虚拟机启动加载内核镜像完毕后,VNDec在VMM层将MSR_IA32_SYSENTER_EIP寄存器的值初始化为一个非法地址,并将原地址保存。虚拟机进程执行系统调用时,将因访问非法地址引发page fault异常,产生VM Exit陷入至VMM层。VNDec读取虚拟机退出原因,若其因page fault异常退出,则判断当前虚拟机EIP寄存器的值是否为初始化的非法地址,若是则说明虚拟机因系统调用被拦截而退出,VNDec进而读取系统调用号,根据不同的系统调用进行其相应的处理,处理完毕后将被截获的系统调用入口函数地址装入虚拟机EIP寄存器,执行VM Entry恢复虚拟机系统调用正常执行流程。对于不需要处理的page fault陷入则注入虚拟机中按照原有流程正常执行,避免额外的性能损耗。

图2 虚拟机系统调用截获原理

2. 3 进程与端口映射机制

进程与端口的映射过程如图3所示,在VMM中截获虚拟机socket相关系统调用后,解析系统调用的参数获取socket文件描述符sockfd,通过语义重构获取执行当前系统调用的进程信息,如进程pid、进程名称、进程打开的文件列表fdtable。通过fdtable得到sockfd对应的文件地址,利用函数S_ISSOCK判断该文件是否为socket文件,若是则将其转换为sock_common或inet_sock结构获取该文件对应的本地端口号,如此维护端口与其对应主体进程的映射关系。

3 实验与分析

实验环境如下:宿主机操作系统为64位CentOS7,内核版本为 Linux-3.10.1,KVM版本为kvm-kmod-3.10.1,QEMU版本为Qemu-2.3.0;宿主机CPU型号为Intel Core i3-4160,主频 3.60GHz,物理内存 4GB,支持硬件辅助虚拟化。虚拟机为32位CentOS 6.5操作系统,内核版本为Linux 2.6.32.24。

实验以面向连接的TCP socket为例,利用Rootkit工具Adore-ng对ssh服务程序使用的端口22,及在虚拟机中编写的socket服务器/客户端使用的端口7350进行隐藏。隐藏及检测结果如图4所示。

图3 进程与端口的映射过程

图4隐藏端口后检测结果

图4 中包含3个子窗口,1号窗口表示隐藏端口前通过netstat命令显示的虚拟机中的TCP网络连接;2号窗口为使用Adore-ng隐藏端口后虚拟机中的TCP网络连接,可见使用端口22及7350的网络连接均被隐藏;3号窗口为KVM中的检测结果,其中user_view,kern_view,kvm_view分别表示用户层视图,内核层视图及VMM层可信视图,此处三个视图仅输出相应的本地端口号。其下即为隐藏端口检测结果,其中pid及name表示进程的pid及名称,sport为该条网络连接对应的本地端口号,daddr及dport表示该条网络连接对应的目的ip及目的端口号。对比可知检测出的隐藏网络连接与1号窗口中被隐藏的一致,表明VNDec能够从虚拟机外部获取虚拟机中可信的网络连接视图,且可有效检测出虚拟机中隐藏的网络连接,此外可输出隐藏网络连接对应的主体进程,实现网络连接隐藏行为与进程主体的关联。

4 结语

本文针对当前虚拟机隐藏网络连接检测研究中存在的问题,提出了在VMM层截获虚拟机中系统调用,遍历进程打开文件列表的方式,在虚拟机外部动态维护虚拟机中可信的网络连接视图以检测其隐藏网络连接;并将隐藏的网络连接与其主体进程进行映射,实现了网络连接隐藏行为与进程主体的关联。实验结果表明,本文实现的VNDec可有效检测虚拟机中隐藏的网络连接,且无需进行数据包截获与解析的操作,增强了系统的简易性与可用性,可在一定程度上保障虚拟机和云平台的安全。

猜你喜欢

网络连接调用内核
强化『高新』内核 打造农业『硅谷』
活化非遗文化 承启设计内核
个性化设置 Win10 的网络连接信息
微软发布新Edge浏览器预览版下载换装Chrome内核
基于Android Broadcast的短信安全监听系统的设计和实现
中小型网络组建技术
利用RFC技术实现SAP系统接口通信
C++语言中函数参数传递方式剖析
具备DV解码功能的DVD编码器——数字视频刻录应用的理想选择