CN104732145A - 一种虚拟机中的寄生进程检测方法和装置 - Google Patents

一种虚拟机中的寄生进程检测方法和装置 Download PDF

Info

Publication number
CN104732145A
CN104732145A CN201510149759.0A CN201510149759A CN104732145A CN 104732145 A CN104732145 A CN 104732145A CN 201510149759 A CN201510149759 A CN 201510149759A CN 104732145 A CN104732145 A CN 104732145A
Authority
CN
China
Prior art keywords
network
virtual machine
connects
current active
designated virtual
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN201510149759.0A
Other languages
English (en)
Other versions
CN104732145B (zh
Inventor
罗凯
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Qihoo Technology Co Ltd
Original Assignee
Beijing Qihoo Technology Co Ltd
Qizhi Software Beijing Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Qihoo Technology Co Ltd, Qizhi Software Beijing Co Ltd filed Critical Beijing Qihoo Technology Co Ltd
Priority to CN201510149759.0A priority Critical patent/CN104732145B/zh
Publication of CN104732145A publication Critical patent/CN104732145A/zh
Application granted granted Critical
Publication of CN104732145B publication Critical patent/CN104732145B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Abstract

本发明公开了一种虚拟机中的寄生进程检测方法和装置。所述方法包括:截获进出指定虚拟机的数据包,确定指定虚拟机中的当前活动的网络连接;在指定虚拟机的外部重构指定虚拟机中的进程所持有的当前活动的网络连接的相关信息;对于当前活动的网络连接,通过将其相关信息与对应的安全检测规则进行匹配判断该网络连接是否为异常连接;当判断出一个网络连接为异常连接,则确定该网络连接所属的进程是被注入恶意代码或被注入恶意动态链接库DLL的寄生进程。本发明的技术方案,以网络行为为驱动,进行虚拟机中进程级别的网络行为监测,根据进程的异常网络行为检测出寄生进程,并且具有较好的通用性,针对大量变种恶意软件的情况能满足检测的实时性要求。

Description

一种虚拟机中的寄生进程检测方法和装置
技术领域
本发明涉及计算机技术领域,具体涉及一种虚拟机中的寄生进程检测方法和装置。
背景技术
虚拟化技术实现了计算、存储、网络等IT资源的虚拟化,是云计算行业快速发展的基础。虚拟机(Virtual Machine)是云环境对外提供的一种最基本的服务形式,云服务提供商向个人、组织用户提供单个虚拟机或者多个虚拟机组成的虚拟网络,以满足用户对易维护、高可用性的弹性云服务的需求。在虚拟化环境中,服务以虚拟机的形式提供给用户使用,云服务提供商只能利用Libvirt等接口从虚拟机外部获得目标虚拟机的CPU、内存、磁盘、网络等资源分配和使用的信息,并不能监视到虚拟机中运行的进程行为的粒度,一旦虚拟机被攻击者植入的恶意软件控制,其对同一虚拟网络中虚拟机的安全乃至云平台本身的安全与稳定都是巨大的威胁,因此对虚拟机运行时的安全监测成为云服务提供商和用户的共同需求。
然而,为了实现无端口、无进程、无文件的感染方式,目前大量的恶意软件使用注入的方式寄生在正常进程中以实现自身的隐藏,具体方法包括DLL注入、无文件的代码注入等。无论使用哪种方法,这种注入行为都会改变进程正常的执行流程,在网络层面产生异常的状态或者行为。比如在网络层面,注入行为会使正常情况下不会产生网络行为的进程出现网络行为,或者产生异常的数据流等。
恶意代码注入会导致进程的一些异常行为,然而代码注入的方式、内容、位置会随着技术的发展不断变化,通过现有的特征码检测或者内存空间扫描的方法缺少通用性,无法在恶意软件及其变种每天大量出现的今天满足检测实时性的需要。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的一种虚拟机中的寄生进程检测方法和装置。
依据本发明的一个方面,提供了一种虚拟机中的寄生进程检测方法,其中,该方法包括:
截获进出指定虚拟机的数据包;
根据所截获的数据包,确定指定虚拟机中的当前活动的网络连接;
在所述指定虚拟机的外部重构所述指定虚拟机中的进程所持有的当前活动的网络连接的相关信息;
对于当前活动的一个网络连接,通过将其相关信息与对应的安全检测规则进行匹配判断该网络连接是否为异常连接;
如果判断出一个网络连接为异常连接,则确定该网络连接所属的进程是被注入恶意代码或被注入恶意动态链接库DLL的寄生进程。
可选地,所述截获进出指定虚拟机的数据包包括:
将用于截获进出指定虚拟机的数据包的控制组件部署在位于Domain 0的虚拟网桥处。
可选地,在所述指定虚拟机的外部重构所述指定虚拟机中的进程所持有的当前活动的网络连接的相关信息包括:
使用Libvmi映射所述指定虚拟机的该目标进程对应的内存地址空间到Domain 0的内存地址空间,从而为Volatility框架提供地址空间支持;
生成基于所述Volatility框架的用于对运行时的指定虚拟机内存进行分析读取的脚本;
所述脚本通过映射后的Domain 0的内存地址空间获取该目标进程的相关内容。
可选地,所述在所述指定虚拟机的外部重构所述指定虚拟机中的进程所持有的当前活动的网络连接的相关信息包括:
查找到Windows系统中的保存tcpip.sys模块信息的节点;
从所述保存tcpip.sys模块信息的节点中获得_AddrObjTable以及_TCBTable的地址;
遍历AddrObjTable以及_TCBTable指向的单向链表,获得所述指定虚拟机中的进程所持有的当前活动的网络连接的相关信息。
可选地,所述查找到Windows系统中的保存tcpip.sys模块信息的节点包括:
从内核模式下的FS寄存器获得_KPCR数据结构的指针;
从_KPCR数据结构中的KdVersionBlock变量中读取_DBGKD_GET_VERSION64数据结构的指针;
从_DBGKD_GET_VERSION64数据结构的PsloadedModuleList成员变量中获得保存模块信息的双向链表头节点地址;
遍历PsloadedModuleList指向的双向链表,找到保存tcpip.sys模块信息的节点。
可选地,所述根据所截获的数据包,确定指定虚拟机中的当前活动的网络连接,以及在所述指定虚拟机的外部重构所述指定虚拟机中的进程所持有的当前活动的网络连接的相关信息包括:
设立记录队列和进程队列;其中,记录队列维护所述指定虚拟机的当前活动的网络连接信息,包括:网络连接的标识、对应的进程、处理时间以及安全检测结果;所述进程队列保存所述指定虚拟机的进程列表。
可选地,对于每个截获的数据包,执行如下流程:
判断记录队列中是否已存在该数据包对应的当前活动的网络连接信息,如果存在则按照已有的安全检测结果进行相应处理,如果不存在则重构所述指定虚拟机中的进程持有的该当前活动的网络连接的相关信息;
根据重构的该当前活动的网络连接的相关信息确定其所属的进程,并判断进程队列中是否存在该进程,如果不存在则将该进程更新到进程队列中,如果存在则根据该进程对应的安全检测规则判断该当前活动的网络连接是否为异常连接;根据安全检测结果进行相应的处理;
将该当前活动的网络连接、对应的进程、处理时间以及安全检测结果更新到记录队列中。
可选地,所述对于当前活动的一个网络连接,通过将其相关信息与对应的安全检测规则进行匹配判断该网络连接是否为异常连接包括:
对于访问类型单一的应用程序的进程,提取该应用程序固有的可能执行的网络行为生成合法行为规则;
将当前活动的网络连接的相关信息与其所属进程对应合法行为规则进行匹配,如果不存在匹配项,则判断为异常连接。
可选地,对于当前活动的一个网络连接,通过将其相关信息与对应的安全检测规则进行匹配判断该网络连接是否为异常连接包括:
预先设置包含一个或多个匹配项的默认拒绝规则,以及预先设置包含一个或多个匹配项的默认允许规则;
对于当前活动的一个网络连接,先根据其所属进程判断采用默认拒绝规则还是采用默认允许规则;
如果采用默认拒绝规则,则将该当前活动的网络连接的相关信息与定义的额外允许规则中的匹配项进行匹配,如果存在匹配的项,则确定该网络连接为正常连接,如果不存在匹配的项,则确定该网络连接为异常连接;
如果采用默认允许规则,则将该当前活动的网络连接的相关信息与定义的额外拒绝规则中的匹配项进行匹配,如果存在匹配的项,则确定该网络连接为异常连接,如果不存在匹配的项,则确定该网络连接为正常连接。
依据本发明的另一个方面,提供了一种虚拟机中的寄生进程检测装置,其中,该装置包括:
数据包截获单元,适于截获进出指定虚拟机的数据包,发送给安全检测单元;
重构单元,适于在所述指定虚拟机的外部重构所述指定虚拟机中的进程所持有的当前活动的网络连接的相关信息;
安全检测单元,适于根据所截获的数据包,确定指定虚拟机中的当前活动的网络连接对于当前活动的一个网络连接,通过将其相关信息与对应的安全检测规则进行匹配判断该网络连接是否为异常连接;如果判断出一个网络连接为异常连接,则确定该网络连接所属的进程是被注入恶意代码或被注入恶意动态链接库DLL的寄生进程。
可选地,所述数据包截获单元部署在位于Domain 0的虚拟网桥处,从Domain 0的虚拟网桥处截获进出指定虚拟机的数据包。
可选地,所述重构单元,适于使用Libvmi映射所述指定虚拟机的该目标进程对应的内存地址空间到Domain 0的内存地址空间,从而为Volatility框架提供地址空间支持;生成基于所述Volatility框架的用于对运行时的指定虚拟机内存进行分析读取的脚本;以及使用所述脚本通过映射后的Domain 0的内存地址空间获取该目标进程的相关内容。
可选地,所述重构单元,适于查找到Windows系统中的保存tcpip.sys模块信息的节点;从所述保存tcpip.sys模块信息的节点中获得_AddrObjTable以及_TCBTable的地址;遍历AddrObjTable以及_TCBTable指向的单向链表,获得所述指定虚拟机中的进程所持有的当前活动的网络连接的相关信息。
可选地,所述重构单元,适于从内核模式下的FS寄存器获得_KPCR数据结构的指针;从_KPCR数据结构中的KdVersionBlock变量中读取_DBGKD_GET_VERSION64数据结构的指针;从_DBGKD_GET_VERSION64数据结构的PsloadedModuleList成员变量中获得保存模块信息的双向链表头节点地址;遍历PsloadedModuleList指向的双向链表,找到保存tcpip.sys模块信息的节点。
可选地,所述安全检测单元,进一步适于设立记录队列和进程队列;其中,记录队列维护所述指定虚拟机的当前活动的网络连接信息,包括:网络连接的标识、对应的进程、处理时间以及安全检测结果;所述进程队列保存所述指定虚拟机的进程列表。
可选地,所述安全检测单元适于对于每个截获的数据包,执行如下流程:
判断记录队列中是否已存在该数据包对应的当前活动的网络连接信息,如果存在则按照已有的安全检测结果进行相应处理,如果不存在则通知所述重构单元重构所述指定虚拟机中的进程持有的该当前活动的网络连接的相关信息;
根据重构的该当前活动的网络连接的相关信息确定其所属的进程,并判断进程队列中是否存在该进程,如果不存在则将该进程更新到进程队列中,如果存在则根据该进程对应的安全检测规则判断该当前活动的网络连接是否为异常连接;根据安全检测结果进行相应的处理;
将该当前活动的网络连接、对应的进程、处理时间以及安全检测结果更新到记录队列中。
可选地,所述安全检测单元,适于对于访问类型单一的应用程序的进程,提取该应用程序固有的可能执行的网络行为生成合法行为规则;
将当前活动的网络连接的相关信息与其所属进程对应合法行为规则进行匹配,如果不存在匹配项,则判断为异常连接。
可选地,所述安全检测单元适于,
预先设置包含一个或多个匹配项的默认拒绝规则,以及预先设置包含一个或多个匹配项的默认允许规则;
对于当前活动的一个网络连接,先根据其所属进程判断采用默认拒绝规则还是采用默认允许规则;
如果采用默认拒绝规则,则将该当前活动的网络连接的相关信息与定义的额外允许规则中的匹配项进行匹配,如果存在匹配的项,则确定该网络连接为正常连接,如果不存在匹配的项,则确定该网络连接为异常连接;
如果采用默认允许规则,则将该当前活动的网络连接的相关信息与定义的额外拒绝规则中的匹配项进行匹配,如果存在匹配的项,则确定该网络连接为异常连接,如果不存在匹配的项,则确定该网络连接为正常连接。
根据本发明的这种截获进出指定虚拟机的数据包,根据所截获的数据包,确定指定虚拟机中的当前活动的网络连接,在所述指定虚拟机的外部重构所述指定虚拟机中的进程所持有的当前活动的网络连接的相关信息,对于当前活动的一个网络连接,通过将其相关信息与对应的安全检测规则进行匹配判断该网络连接是否为异常连接,如果判断出一个网络连接为异常连接,则确定该网络连接所属的进程是被注入恶意代码或被注入恶意动态链接库DLL的寄生进程的技术方案,以网络行为为驱动,进行虚拟机中进程级别的网络行为监测,根据进程的异常网络行为检测出寄生进程,并且具有较好的通用性,针对大量变种恶意软件的情况能满足检测的实时性要求。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了根据本发明一个实施例的一种虚拟机中的寄生进程检测方法的流程图;
图2示出了根据本发明一个实施例的重构网络连接相关信息的示意图;
图3示出了根据本发明一个实施例的处理截获的数据包的流程图;
图4示出了根据本发明一个实施例的截获的数据包关联所在进程后的处理流程图;
图5示出了根据本发明一个实施例的一种虚拟机中的寄生进程检测装置的结构图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
被寄生的进程除了在进程内部产生异常的代码区块,还有可能会在网络层面产生异常的网络连接,这时宿主进程往往成为攻击者下载其它恶意程序以实现进一步控制的跳板。操作系统中explorer.exe、svchost.exe等系统进程是恶意软件主要的注入目标,对这些进程的网络行为进行重点监控,识别这些进程建立的网络连接,也可以实现对进程寄生行为的有效判断。为了实现进程级别的网络监视,本发明在虚拟机外部引入了进程级别的网络行为监测机制。
图1示出了根据本发明一个实施例的一种虚拟机中的寄生进程检测方法的流程图。如图1所示,该方法包括:
步骤S110,截获进出指定虚拟机的数据包。
这里,指定虚拟机即为待检测的虚拟机。在本发明的一个实施例中,将用于截获进出指定虚拟机的数据包的控制组件(也称为嗅探器)部署在位于管理域Domain 0的虚拟网桥处,从而在Domain 0的虚拟网桥处截获进出指定虚拟机的数据包。
步骤S120,根据所截获的数据包,确定指定虚拟机中的当前活动的网络连接。
在本发明的一个实施例中,步骤S110中将截获的数据包放入待处理队列中,则在本步骤S120中从待处理队列获取数据包,将数据包解析为四元组(src_ip,src_port,dst_ip,dst_ip),分别为源ip、源端口、目的ip和目的端口。根据解析后的内容确定指定虚拟机中的相应当前活动的网络连接。
步骤S130,在所述指定虚拟机的外部重构所述指定虚拟机中的进程所持有的当前活动的网络连接的相关信息。
本步骤中,根据一定的方法从虚拟机内部获取虚拟机中的进程所持有的当前活动的网络连接的相关信息,包括进程相关的信息以及连接相关的信息。
步骤S140,对于当前活动的一个网络连接,通过将其相关信息与对应的安全检测规则进行匹配判断该网络连接是否为异常连接。
步骤S150,如果判断出一个网络连接为异常连接,则确定该网络连接所属的进程是被注入恶意代码或被注入恶意动态链接库DLL的寄生进程。
图1所示的方法以网络行为(发送或接收数据包)为驱动,进行虚拟机中进程级别的网络行为监测,根据进程的异常网络行为检测出寄生进程,并且具有较好的通用性,针对大量变种恶意软件的情况能满足检测的实时性要求。
针对注入导致的寄生行为,本发明通过图1所示的进程级别网络行为监视技术,对虚拟机系统内运行的进程是否成为恶意软件的宿主进程做相对全面的判断。考虑到效率,同时为了在同一检测周期内提取到更多的异常行为,本方法的实现基于网络行为驱动,即将目标进程产生网络行为作为检测阶段开始的标志。
在本发明的一个实施例中,图1所示方法的步骤S130中的在所述指定虚拟机的外部重构所述指定虚拟机中的进程所持有的当前活动的网络连接的相关信息包括:使用Libvmi映射所述指定虚拟机的该目标进程对应的内存地址空间到Domain 0的内存地址空间,从而为Volatility框架提供地址空间支持;生成基于所述Volatility框架的用于对运行时的指定虚拟机内存进行分析读取的脚本;所述脚本通过映射后的Domain 0的内存地址空间获取该目标进程的相关内容。
Volatility是内存取证领域的一个著名的开源框架,支持对Linux、Mac、Windows等系统的内存转储文件的分析和处理,其提供的插件机制简化了利用该框架进行二次开发的流程,本发明的实施例中基于该框架实现了对虚拟机运行时内存数据的语义重构。为了使Volatility支持对运行时虚拟机内存的分析,本发明的实施例中利用Libvmi为Volatility提供了一个兼容的地址空间。Libvmi是虚拟化社区向研究人员提供的一种开源的虚拟机自省工具,基于该工具也可以实现对指定虚拟机地址空间的读写以及对特定事件的监视,并进一步实现对虚拟机内进程管理结构的重构功能,然而实现这一功能需要对不同类型操作系统的系统管理结构进行逆向分析,确定目标变量在上层数据结构的偏移量,缺乏通用性,因此本发明只用到Libvmi映射指定虚拟机地址空间到Domain 0中为Volatility框架提供地址空间的功能。
为了实现虚拟机内部进程级别的网络连接监测,需要对系统中进程所持有的连接信息进行重构。但是Windows操作系统中的进程管理结构_EPROCESS及其关联的数据结构中并不包含该进程所持有的网络连接信息,因此需要研究操作系统网络管理机制,并对相关的数据结构进行逆向分析。
Windows由tcpip.sys驱动程序提供对TCP/IP协议的支持,该驱动程序维护着进程的连接信息,并通过其它驱动程序扩展实现NAT转换、防火墙以及协议相关的安全功能。为了实现对当前网络连接状态的重建,需要利用到tcpip.sys程序中没有导出的两个管理结构_AddrObjTable和_TCBTable[43,44]。_AddrObjTable和_TCBTable分别指向由_ADDRESS_OBJECT和_TCPT_OBJECT数据结构为元素组成的链表,分别维护这目前处于活动状态的网络连接以及Sockets信息,包括本地IP地址、端口,远端IP、端口以及所属进程的ID号,因此通过遍历这两个列表可以获得目前活动的网络连接所属的进程信息。
因此在本发明的一个实施例中,图1所示方法的步骤S130包括:查找到Windows系统中的保存tcpip.sys模块信息的节点;从所述保存tcpip.sys模块信息的节点中获得_AddrObjTable以及_TCBTable的地址;遍历AddrObjTable以及_TCBTable指向的单向链表,获得所述指定虚拟机中的进程所持有的当前活动的网络连接的相关信息。
其中,所述查找到Windows系统中的保存tcpip.sys模块信息的节点包括:从内核模式下的FS寄存器获得_KPCR数据结构的指针;从_KPCR数据结构中的KdVersionBlock变量中读取_DBGKD_GET_VERSION64数据结构的指针;从_DBGKD_GET_VERSION64数据结构的PsloadedModuleList成员变量中获得保存模块信息的双向链表头节点地址;遍历PsloadedModuleList指向的双向链表,找到保存tcpip.sys模块信息的节点。
图2示出了根据本发明一个实施例的重构网络连接相关信息的示意图。如2所示,获得虚拟机系统中活动的网络连接的过程可以分为如下步骤:
(1)获得_KPCR数据结构指针。_KPCR(Process Control Region)是用来保存上下文切换相关信息的数据结构,在内核模式下FS寄存器保存着指向该数据结构的指针,同时在结构同一版本的操作系统中的加载到地址空间的位置是确定的(XP SP3版本为0xFFDFF000),也可以利用这一性质获得该数据结构的指针;
(2)读取_DBGKD_GET_VERSION64数据结构的指针。该结构的指针保存在_KPCR数据结构中的KdVersionBlock变量中;
(3)获得保存模块信息的双向链表头节点地址。内核加载的模块以双向链表的方式保存在内存中,该双向链表的表头保存在_DBGKD_GET_VERSION64数据结构的PsloadedModuleList成员变量中;
(4)遍历PsloadedModuleList指向的双向链表,找到保存tcpip.sys模块信息的节点,获得该模块加载的基地址。双向链表中节点类型为_LDR_DATA_TABLE_ENTRY,保存着模块加载的基地址DLLBase以及名称BaseDllName,遍历到BaseDllName为tcpip.sys时即找到了该节点;
(5)获得_AddrObjTable以及_TCBTable的地址。在每个特定系统版本中这两个数据结构相对于该驱动加载地址的偏移量是确定的,因此可以通过将tcpip.sys加载的基地址与两个变量的偏移量相加获得;
(6)遍历_AddrObjTable以及_TCBTable指向的单向链表,即可获得连接信息。
通过以上的过程,可以在虚拟机外部实现对虚拟机内进程网络连接的重构。基于该重构的内容,图1所示方法中所述根据所截获的数据包,确定指定虚拟机中的当前活动的网络连接,以及在所述指定虚拟机的外部重构所述指定虚拟机中的进程所持有的当前活动的网络连接的相关信息包括:
设立记录队列和进程队列;其中,记录队列维护所述指定虚拟机的当前活动的网络连接信息,包括:网络连接的标识、对应的进程、处理时间以及安全检测结果;所述进程队列保存所述指定虚拟机的进程列表。这两个队列的存在可以显著减少安全监测扫描的次数,从而减少性能的损耗。
对于截获到的一个数据包(对应一个未知连接)时的处理流程如图3所示。
图3示出了根据本发明一个实施例的处理截获的数据包的流程图。如图3所示,该方法包括:
步骤S310,根据截获的数据包的四元组(src_ip,src_port,dst_ip,dst_ip)确定对应的当前活动的网络连接;执行步骤S320.
步骤S320,判断记录队列中是否已存在该数据包对应的当前活动的网络连接信息,如果存在则执行步骤S380,如果不存在则执行步骤S320.
步骤S330,重构所述指定虚拟机中的进程持有的该当前活动的网络连接的相关信息。执行步骤S340。
步骤S340,根据重构的该当前活动的网络连接的相关信息确定其所属的进程,并判断进程队列中是否存在该进程,如果不存在则执行步骤S370,如果存在则执行步骤S350。
步骤S350,根据该进程对应的安全检测规则判断该当前活动的网络连接是否为异常连接;执行步骤S360。
步骤S360,根据安全检测结果进行相应的处理,并将该当前活动的网络连接、对应的进程、处理时间以及安全检测结果更新到记录队列中。结束流程。
步骤S370,将该进程更新到进程队列中,执行步骤S350
步骤S380,按照已有的安全检测结果进行相应处理,结束流程。
在网络行为监测方面,最常用的就是访问控制技术,访问控制规则是路由器中为实现处理数据包设置的一系列规则,也是防火墙实现接收、过滤特定数据包的功能的基础,访问控制规则的主要组成如下所示:
Rule::=<permit|deny><protocal>[source-addr][source-mask|any][source-port]
[dest-addr][dest-mask|any][dest-port]
其中protocal表示IP协议上层的协议类型,包括icmp、tcp、udp等;source-addr表示数据包的源地址;source-mask表示数据包源地址的源码,any表示子网掩码为255.255.255.255,;source-port指的是数据包源端口号;dest-addr表示数据包目的地址;dest-port表示数据包的目的端口号。
在本发明中,在虚拟化环境中,实现进程级别的网络连接行为监测同样需要为进程的网络连接设置控制规则,这与上述防火墙中的访问控制有以下几点不同:
(1)从部署位置来看,防火墙部署在网络边界或者内网中,而本发明实施例中的进程级别的网络访问行为控制组件部署在Domain 0的虚拟网桥处;
(2)从部署目的来看:防火墙主要用来控制进出网络边界和内部节点之间的通信策略,而本发明实施例中的进程级别控制规则的目的是检测虚拟机某进程建立的网络连接是否满足安全策略;
(3)从处理粒度来看:防火墙检测的是以物理节点数据流为粒度的网络连接,而本发明实施例中的进程级别的访问控制检测的是以进程为粒度的网络连接。
考虑到上述的不同,在本发明的实施例中为监视进程的网络行为设计了两种规则模板:
第一种是关于默认拒绝规则的模板,该模板中定义了额外允许匹配项的的格式。采用默认拒绝规则时,只有匹配了定义的额外允许匹配项时才判定为正常连接,否则判定为异常连接。
第二种是关于默认允许规则的模板,该模板中定义了额外拒绝匹配项的的格式。采用默认允许规则时,只有匹配了定义的额外拒绝匹配项时才判定为异常连接,否则判定为正常连接。
其中,所述定义的额外允许匹配项和额外拒绝匹配项,可以是关于端口号、ip地址以及协议类型等的规定项。
使用上述的模版可以为两种类型的应用程序定义访问的规则:第一种类型的程序,比如服务器、C/S结构客户端等,访问类型比较单一,网络行为比较稳定,因此可以只允许这些网络行为而视其它连接为异常访问,一些容易被恶意软件劫持的系统进程均属于该类型;第二种类型的程序属于网络访问密集型,比如浏览器,下载工具等,网络行为比较复杂,提取所有的合法规则比较困难,因此对该类型的程序采取默认合法的检测策略,并可以结合其它的检测方法判断进程是否被恶意软件注入。
则在本发明的一个实施例中,图1所示方法中的所述对于当前活动的一个网络连接,通过将其相关信息与对应的安全检测规则进行匹配判断该网络连接是否为异常连接包括:对于访问类型单一的应用程序(如服务器、C/S结构的客户端等)的进程,提取该应用程序固有的可能执行的网络行为生成合法行为规则;将当前活动的网络连接的相关信息与其所属进程对应合法行为规则进行匹配,如果不存在匹配项,则判断为异常连接。
在本发明的一个实施例中,图1所示方法中的对于当前活动的一个网络连接,通过将其相关信息与对应的安全检测规则进行匹配判断该网络连接是否为异常连接包括:预先设置包含一个或多个匹配项的默认拒绝规则,以及预先设置包含一个或多个匹配项的默认允许规则;对于当前活动的一个网络连接,先根据其所属进程判断采用默认拒绝规则还是采用默认允许规则;如果采用默认拒绝规则,则将该当前活动的网络连接的相关信息与定义的额外允许规则中的匹配项进行匹配,如果存在匹配的项,则确定该网络连接为正常连接,如果不存在匹配的项,则确定该网络连接为异常连接;如果采用默认允许规则,则将该当前活动的网络连接的相关信息与定义的额外拒绝规则中的匹配项进行匹配,如果存在匹配的项,则确定该网络连接为异常连接,如果不存在匹配的项,则确定该网络连接为正常连接。具体流程参见图4。
图4示出了根据本发明一个实施例的截获的数据包关联所在进程后的处理流程图。如图4所示,该方法包括:
步骤S401,在进程队列中查找到该进程的信息;
步骤S402,根据该进程的信息判断该进程是否为关键进程,是则执行步骤S403,否则结束流程。
步骤S403,根据该进程的信息判断该进程对应的规则是否为默认拒绝规则,是则执行步骤S404,否则执行步骤S409。
步骤S404,判断源端口是否匹配定义的额外允许端口,是则由于协议类型匹配,执行步骤S406,否则执行步骤S405。
这里的源端口即解析源数据包获知的四元组中的源端口。
步骤S405,判断该进程的连接相关信息是否匹配定义的其他额外允许规则,是则执行步骤S406,否则执行步骤S407。
步骤S406,判定为正常连接,执行步骤S408。
步骤S407,判定为异常连接,执行步骤S408。
步骤S408,更新记录队列,结束流程。
步骤S409,根据该进程的信息判断该进程对应的规则是否为默认允许规则,是则执行步骤S410。
步骤S410,判断该进程的连接相关信息是否匹配定义的额外拒绝规则,是则执行步骤S411,否则执行步骤S412。
步骤S411,判定为异常连接,执行步骤S408。
步骤S412,判定为正常连接,执行步骤S408。
图5示出了根据本发明一个实施例的一种虚拟机中的寄生进程检测装置的结构图。如图5所示,该虚拟机中的寄生进程检测装置500包括:
数据包截获单元510,适于截获进出指定虚拟机的数据包,发送给安全检测单元;
重构单元520,适于在所述指定虚拟机的外部重构所述指定虚拟机中的进程所持有的当前活动的网络连接的相关信息;
安全检测单元530,适于根据所截获的数据包,确定指定虚拟机中的当前活动的网络连接对于当前活动的一个网络连接,通过将其相关信息与对应的安全检测规则进行匹配判断该网络连接是否为异常连接;如果判断出一个网络连接为异常连接,则确定该网络连接所属的进程是被注入恶意代码或被注入恶意动态链接库DLL的寄生进程。
在本发明的一个实施例中,所述数据包截获单元510部署在位于Domain0的虚拟网桥处,从Domain 0的虚拟网桥处截获进出指定虚拟机的数据包。
在本发明的一个实施例中,所述重构单元520,适于使用Libvmi映射所述指定虚拟机的该目标进程对应的内存地址空间到Domain 0的内存地址空间,从而为Volatility框架提供地址空间支持;生成基于所述Volatility框架的用于对运行时的指定虚拟机内存进行分析读取的脚本;以及使用所述脚本通过映射后的Domain 0的内存地址空间获取该目标进程的相关内容。
在本发明的一个实施例中,所述重构单元520,适于查找到Windows系统中的保存tcpip.sys模块信息的节点;从所述保存tcpip.sys模块信息的节点中获得_AddrObjTable以及_TCBTable的地址;遍历AddrObjTable以及_TCBTable指向的单向链表,获得所述指定虚拟机中的进程所持有的当前活动的网络连接的相关信息。
在本发明的一个实施例中,所述重构单元520,适于从内核模式下的FS寄存器获得_KPCR数据结构的指针;从_KPCR数据结构中的KdVersionBlock变量中读取_DBGKD_GET_VERSION64数据结构的指针;从_DBGKD_GET_VERSION64数据结构的PsloadedModuleList成员变量中获得保存模块信息的双向链表头节点地址;遍历PsloadedModuleList指向的双向链表,找到保存tcpip.sys模块信息的节点。更具体地可以参见图2所示,这里不再复述。
在本发明的一个实施例中,所述安全检测单元530,进一步适于设立记录队列和进程队列;其中,记录队列维护所述指定虚拟机的当前活动的网络连接信息,包括:网络连接的标识、对应的进程、处理时间以及安全检测结果;所述进程队列保存所述指定虚拟机的进程列表。
在本发明的一个实施例中,所述安全检测单元530适于对于每个截获的数据包,执行如下流程:
判断记录队列中是否已存在该数据包对应的当前活动的网络连接信息,如果存在则按照已有的安全检测结果进行相应处理,如果不存在则通知所述重构单元重构所述指定虚拟机中的进程持有的该当前活动的网络连接的相关信息;
根据重构的该当前活动的网络连接的相关信息确定其所属的进程,并判断进程队列中是否存在该进程,如果不存在则将该进程更新到进程队列中,如果存在则根据该进程对应的安全检测规则判断该当前活动的网络连接是否为异常连接;根据安全检测结果进行相应的处理;
将该当前活动的网络连接、对应的进程、处理时间以及安全检测结果更新到记录队列中。更具体地可以参见图3,这里不再复述。
在本发明的一个实施例中,所述安全检测单元530,适于对于访问类型单一的应用程序的进程,提取该应用程序固有的可能执行的网络行为生成合法行为规则;
将当前活动的网络连接的相关信息与其所属进程对应合法行为规则进行匹配,如果不存在匹配项,则判断为异常连接。
在本发明的一个实施例中,所述安全检测单元530适于,
预先设置包含一个或多个匹配项的默认拒绝规则,以及预先设置包含一个或多个匹配项的默认允许规则;
对于当前活动的一个网络连接,先根据其所属进程判断采用默认拒绝规则还是采用默认允许规则;
如果采用默认拒绝规则,则将该当前活动的网络连接的相关信息与定义的额外允许规则中的匹配项进行匹配,如果存在匹配的项,则确定该网络连接为正常连接,如果不存在匹配的项,则确定该网络连接为异常连接;
如果采用默认允许规则,则将该当前活动的网络连接的相关信息与定义的额外拒绝规则中的匹配项进行匹配,如果存在匹配的项,则确定该网络连接为异常连接,如果不存在匹配的项,则确定该网络连接为正常连接。
更具体地可以参见图4,这里不再复述。
综上所述,根据本发明的这种截获进出指定虚拟机的数据包,根据所截获的数据包,确定指定虚拟机中的当前活动的网络连接,在所述指定虚拟机的外部重构所述指定虚拟机中的进程所持有的当前活动的网络连接的相关信息,对于当前活动的一个网络连接,通过将其相关信息与对应的安全检测规则进行匹配判断该网络连接是否为异常连接,如果判断出一个网络连接为异常连接,则确定该网络连接所属的进程是被注入恶意代码或被注入恶意动态链接库DLL的寄生进程的技术方案,以网络行为为驱动,进行虚拟机中进程级别的网络行为监测,根据进程的异常网络行为检测出寄生进程,并且具有较好的通用性,针对大量变种恶意软件的情况能满足检测的实时性要求。
需要说明的是:
在此提供的算法和显示不与任何特定计算机、虚拟装置或者其它设备固有相关。各种通用装置也可以与基于在此的示教一起使用。根据上面的描述,构造这类装置所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的虚拟机中的寄生进程检测装置中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
本发明公开了A1、一种虚拟机中的寄生进程检测方法,其中,该方法包括:
截获进出指定虚拟机的数据包;
根据所截获的数据包,确定指定虚拟机中的当前活动的网络连接;
在所述指定虚拟机的外部重构所述指定虚拟机中的进程所持有的当前活动的网络连接的相关信息;
对于当前活动的一个网络连接,通过将其相关信息与对应的安全检测规则进行匹配判断该网络连接是否为异常连接;
如果判断出一个网络连接为异常连接,则确定该网络连接所属的进程是被注入恶意代码或被注入恶意动态链接库DLL的寄生进程。
A 2、如A 1所述的方法,其中,所述截获进出指定虚拟机的数据包包括:
将用于截获进出指定虚拟机的数据包的控制组件部署在位于Domain 0的虚拟网桥处。
A 3、如A 1所述的方法,其中,在所述指定虚拟机的外部重构所述指定虚拟机中的进程所持有的当前活动的网络连接的相关信息包括:
使用Libvmi映射所述指定虚拟机的该目标进程对应的内存地址空间到Domain 0的内存地址空间,从而为Volatility框架提供地址空间支持;
生成基于所述Volatility框架的用于对运行时的指定虚拟机内存进行分析读取的脚本;
所述脚本通过映射后的Domain 0的内存地址空间获取该目标进程的相关内容。
A 4、如A 1-A 3任意一项所述的方法,其中,所述在所述指定虚拟机的外部重构所述指定虚拟机中的进程所持有的当前活动的网络连接的相关信息包括:
查找到Windows系统中的保存tcpip.sys模块信息的节点;
从所述保存tcpip.sys模块信息的节点中获得_AddrObjTable以及_TCBTable的地址;
遍历AddrObjTable以及_TCBTable指向的单向链表,获得所述指定虚拟机中的进程所持有的当前活动的网络连接的相关信息。
A 5、如A 4所述的方法,其中,所述查找到Windows系统中的保存tcpip.sys模块信息的节点包括:
从内核模式下的FS寄存器获得_KPCR数据结构的指针;
从_KPCR数据结构中的KdVersionBlock变量中读取_DBGKD_GET_VERSION64数据结构的指针;
从_DBGKD_GET_VERSION64数据结构的PsloadedModuleList成员变量中获得保存模块信息的双向链表头节点地址;
遍历PsloadedModuleList指向的双向链表,找到保存tcpip.sys模块信息的节点。
A 6、如A 1所述的方法,其中,所述根据所截获的数据包,确定指定虚拟机中的当前活动的网络连接,以及在所述指定虚拟机的外部重构所述指定虚拟机中的进程所持有的当前活动的网络连接的相关信息包括:
设立记录队列和进程队列;其中,记录队列维护所述指定虚拟机的当前活动的网络连接信息,包括:网络连接的标识、对应的进程、处理时间以及安全检测结果;所述进程队列保存所述指定虚拟机的进程列表。
A 7、如A 6所述的方法,其中,对于每个截获的数据包,执行如下流程:
判断记录队列中是否已存在该数据包对应的当前活动的网络连接信息,如果存在则按照已有的安全检测结果进行相应处理,如果不存在则重构所述指定虚拟机中的进程持有的该当前活动的网络连接的相关信息;
根据重构的该当前活动的网络连接的相关信息确定其所属的进程,并判断进程队列中是否存在该进程,如果不存在则将该进程更新到进程队列中,如果存在则根据该进程对应的安全检测规则判断该当前活动的网络连接是否为异常连接;根据安全检测结果进行相应的处理;
将该当前活动的网络连接、对应的进程、处理时间以及安全检测结果更新到记录队列中。
A8、如A1所述的方法,其中,所述对于当前活动的一个网络连接,通过将其相关信息与对应的安全检测规则进行匹配判断该网络连接是否为异常连接包括:
对于访问类型单一的应用程序的进程,提取该应用程序固有的可能执行的网络行为生成合法行为规则;
将当前活动的网络连接的相关信息与其所属进程对应合法行为规则进行匹配,如果不存在匹配项,则判断为异常连接。
A9、如A1所述的方法,其中,对于当前活动的一个网络连接,通过将其相关信息与对应的安全检测规则进行匹配判断该网络连接是否为异常连接包括:
预先设置包含一个或多个匹配项的默认拒绝规则,以及预先设置包含一个或多个匹配项的默认允许规则;
对于当前活动的一个网络连接,先根据其所属进程判断采用默认拒绝规则还是采用默认允许规则;
如果采用默认拒绝规则,则将该当前活动的网络连接的相关信息与定义的额外允许规则中的匹配项进行匹配,如果存在匹配的项,则确定该网络连接为正常连接,如果不存在匹配的项,则确定该网络连接为异常连接;
如果采用默认允许规则,则将该当前活动的网络连接的相关信息与定义的额外拒绝规则的匹配项进行匹配,如果存在匹配的项,则确定该网络连接为异常连接,如果不存在匹配的项,则确定该网络连接为正常连接。
本发明还公开了B10、一种虚拟机中的寄生进程检测装置,其中,该装置包括:
数据包截获单元,适于截获进出指定虚拟机的数据包,发送给安全检测单元;
重构单元,适于在所述指定虚拟机的外部重构所述指定虚拟机中的进程所持有的当前活动的网络连接的相关信息;
安全检测单元,适于根据所截获的数据包,确定指定虚拟机中的当前活动的网络连接对于当前活动的一个网络连接,通过将其相关信息与对应的安全检测规则进行匹配判断该网络连接是否为异常连接;如果判断出一个网络连接为异常连接,则确定该网络连接所属的进程是被注入恶意代码或被注入恶意动态链接库DLL的寄生进程。
B 11、如B 10所述的装置,其中,
所述数据包截获单元部署在位于Domain 0的虚拟网桥处,从Domain 0的虚拟网桥处截获进出指定虚拟机的数据包。
B 12、如B 10所述的装置,其中,
所述重构单元,适于使用Libvmi映射所述指定虚拟机的该目标进程对应的内存地址空间到Domain 0的内存地址空间,从而为Volatility框架提供地址空间支持;生成基于所述Volatility框架的用于对运行时的指定虚拟机内存进行分析读取的脚本;以及使用所述脚本通过映射后的Domain 0的内存地址空间获取该目标进程的相关内容。
B 13、如B 10-B 12任意一项所述的装置,其中,
所述重构单元,适于查找到Windows系统中的保存tcpip.sys模块信息的节点;从所述保存tcpip.sys模块信息的节点中获得_AddrObjTable以及_TCBTable的地址;遍历AddrObjTable以及_TCBTable指向的单向链表,获得所述指定虚拟机中的进程所持有的当前活动的网络连接的相关信息。
B 14、如B 13所述的装置,其中,
所述重构单元,适于从内核模式下的FS寄存器获得_KPCR数据结构的指针;从_KPCR数据结构中的KdVersionBlock变量中读取_DBGKD_GET_VERSION64数据结构的指针;从_DBGKD_GET_VERSION64数据结构的PsloadedModuleList成员变量中获得保存模块信息的双向链表头节点地址;遍历PsloadedModuleList指向的双向链表,找到保存tcpip.sys模块信息的节点。
B 15、如B 10所述的装置,其中,
所述安全检测单元,进一步适于设立记录队列和进程队列;其中,记录队列维护所述指定虚拟机的当前活动的网络连接信息,包括:网络连接的标识、对应的进程、处理时间以及安全检测结果;所述进程队列保存所述指定虚拟机的进程列表。
B 16、如B 15所述的装置,其中,所述安全检测单元适于对于每个截获的数据包,执行如下流程:
判断记录队列中是否已存在该数据包对应的当前活动的网络连接信息,如果存在则按照已有的安全检测结果进行相应处理,如果不存在则通知所述重构单元重构所述指定虚拟机中的进程持有的该当前活动的网络连接的相关信息;
根据重构的该当前活动的网络连接的相关信息确定其所属的进程,并判断进程队列中是否存在该进程,如果不存在则将该进程更新到进程队列中,如果存在则根据该进程对应的安全检测规则判断该当前活动的网络连接是否为异常连接;根据安全检测结果进行相应的处理;
将该当前活动的网络连接、对应的进程、处理时间以及安全检测结果更新到记录队列中。
B 17、如B 10所述的装置,其中,
所述安全检测单元,适于对于访问类型单一的应用程序的进程,提取该应用程序固有的可能执行的网络行为生成合法行为规则;
将当前活动的网络连接的相关信息与其所属进程对应合法行为规则进行匹配,如果不存在匹配项,则判断为异常连接。
B 18、如B 10所述的装置,其中,所述安全检测单元适于,
预先设置包含一个或多个匹配项的默认拒绝规则,以及预先设置包含一个或多个匹配项的默认允许规则;
对于当前活动的一个网络连接,先根据其所属进程判断采用默认拒绝规则还是采用默认允许规则;
如果采用默认拒绝规则,则将该当前活动的网络连接的相关信息与定义的额外允许规则中的匹配项进行匹配,如果存在匹配的项,则确定该网络连接为正常连接,如果不存在匹配的项,则确定该网络连接为异常连接;
如果采用默认允许规则,则将该当前活动的网络连接的相关信息与定义的额外拒绝规则中的匹配项进行匹配,如果存在匹配的项,则确定该网络连接为异常连接,如果不存在匹配的项,则确定该网络连接为正常连接。

Claims (10)

1.一种虚拟机中的寄生进程检测方法,其中,该方法包括:
截获进出指定虚拟机的数据包;
根据所截获的数据包,确定指定虚拟机中的当前活动的网络连接;
在所述指定虚拟机的外部重构所述指定虚拟机中的进程所持有的当前活动的网络连接的相关信息;
对于当前活动的一个网络连接,通过将其相关信息与对应的安全检测规则进行匹配判断该网络连接是否为异常连接;
如果判断出一个网络连接为异常连接,则确定该网络连接所属的进程是被注入恶意代码或被注入恶意动态链接库DLL的寄生进程。
2.如权利要求1所述的方法,其中,所述截获进出指定虚拟机的数据包包括:
将用于截获进出指定虚拟机的数据包的控制组件部署在位于Domain 0的虚拟网桥处。
3.如权利要求1所述的方法,其中,在所述指定虚拟机的外部重构所述指定虚拟机中的进程所持有的当前活动的网络连接的相关信息包括:
使用Libvmi映射所述指定虚拟机的该目标进程对应的内存地址空间到Domain 0的内存地址空间,从而为Volatility框架提供地址空间支持;
生成基于所述Volatility框架的用于对运行时的指定虚拟机内存进行分析读取的脚本;
所述脚本通过映射后的Domain 0的内存地址空间获取该目标进程的相关内容。
4.如权利要求1-3任意一项所述的方法,其中,所述在所述指定虚拟机的外部重构所述指定虚拟机中的进程所持有的当前活动的网络连接的相关信息包括:
查找到Windows系统中的保存tcpip.sys模块信息的节点;
从所述保存tcpip.sys模块信息的节点中获得_AddrObjTable以及_TCBTable的地址;
遍历AddrObjTable以及_TCBTable指向的单向链表,获得所述指定虚拟机中的进程所持有的当前活动的网络连接的相关信息。
5.如权利要求4所述的方法,其中,所述查找到Windows系统中的保存tcpip.sys模块信息的节点包括:
从内核模式下的FS寄存器获得_KPCR数据结构的指针;
从_KPCR数据结构中的KdVersionBlock变量中读取_DBGKD_GET_VERSION64数据结构的指针;
从_DBGKD_GET_VERSION64数据结构的PsloadedModuleList成员变量中获得保存模块信息的双向链表头节点地址;
遍历PsloadedModuleList指向的双向链表,找到保存tcpip.sys模块信息的节点。
6.如权利要求1所述的方法,其中,所述根据所截获的数据包,确定指定虚拟机中的当前活动的网络连接,以及在所述指定虚拟机的外部重构所述指定虚拟机中的进程所持有的当前活动的网络连接的相关信息包括:
设立记录队列和进程队列;其中,记录队列维护所述指定虚拟机的当前活动的网络连接信息,包括:网络连接的标识、对应的进程、处理时间以及安全检测结果;所述进程队列保存所述指定虚拟机的进程列表。
7.如权利要求6所述的方法,其中,对于每个截获的数据包,执行如下流程:
判断记录队列中是否已存在该数据包对应的当前活动的网络连接信息,如果存在则按照已有的安全检测结果进行相应处理,如果不存在则重构所述指定虚拟机中的进程持有的该当前活动的网络连接的相关信息;
根据重构的该当前活动的网络连接的相关信息确定其所属的进程,并判断进程队列中是否存在该进程,如果不存在则将该进程更新到进程队列中,如果存在则根据该进程对应的安全检测规则判断该当前活动的网络连接是否为异常连接;根据安全检测结果进行相应的处理;
将该当前活动的网络连接、对应的进程、处理时间以及安全检测结果更新到记录队列中。
8.如权利要求1所述的方法,其中,所述对于当前活动的一个网络连接,通过将其相关信息与对应的安全检测规则进行匹配判断该网络连接是否为异常连接包括:
对于访问类型单一的应用程序的进程,提取该应用程序固有的可能执行的网络行为生成合法行为规则;
将当前活动的网络连接的相关信息与其所属进程对应合法行为规则进行匹配,如果不存在匹配项,则判断为异常连接。
9.如权利要求1所述的方法,其中,对于当前活动的一个网络连接,通过将其相关信息与对应的安全检测规则进行匹配判断该网络连接是否为异常连接包括:
预先设置包含一个或多个匹配项的默认拒绝规则,以及预先设置包含一个或多个匹配项的默认允许规则;
对于当前活动的一个网络连接,先根据其所属进程判断采用默认拒绝规则还是采用默认允许规则;
如果采用默认拒绝规则,则将该当前活动的网络连接的相关信息与定义的额外允许规则中的匹配项进行匹配,如果存在匹配的项,则确定该网络连接为正常连接,如果不存在匹配的项,则确定该网络连接为异常连接;
如果采用默认允许规则,则将该当前活动的网络连接的相关信息与定义的额外拒绝规则的匹配项进行匹配,如果存在匹配的项,则确定该网络连接为异常连接,如果不存在匹配的项,则确定该网络连接为正常连接。
10.一种虚拟机中的寄生进程检测装置,其中,该装置包括:
数据包截获单元,适于截获进出指定虚拟机的数据包,发送给安全检测单元;
重构单元,适于在所述指定虚拟机的外部重构所述指定虚拟机中的进程所持有的当前活动的网络连接的相关信息;
安全检测单元,适于根据所截获的数据包,确定指定虚拟机中的当前活动的网络连接对于当前活动的一个网络连接,通过将其相关信息与对应的安全检测规则进行匹配判断该网络连接是否为异常连接;如果判断出一个网络连接为异常连接,则确定该网络连接所属的进程是被注入恶意代码或被注入恶意动态链接库DLL的寄生进程。
CN201510149759.0A 2015-03-31 2015-03-31 一种虚拟机中的寄生进程检测方法和装置 Active CN104732145B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510149759.0A CN104732145B (zh) 2015-03-31 2015-03-31 一种虚拟机中的寄生进程检测方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510149759.0A CN104732145B (zh) 2015-03-31 2015-03-31 一种虚拟机中的寄生进程检测方法和装置

Publications (2)

Publication Number Publication Date
CN104732145A true CN104732145A (zh) 2015-06-24
CN104732145B CN104732145B (zh) 2018-04-13

Family

ID=53456026

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510149759.0A Active CN104732145B (zh) 2015-03-31 2015-03-31 一种虚拟机中的寄生进程检测方法和装置

Country Status (1)

Country Link
CN (1) CN104732145B (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105718303A (zh) * 2016-01-20 2016-06-29 国家电网公司 虚拟机异常检测方法、装置及系统
CN106790093A (zh) * 2016-12-23 2017-05-31 郑州云海信息技术有限公司 一种Linux系统下控制进程网络连接的方法及系统
CN107608752A (zh) * 2016-07-12 2018-01-19 中国科学院信息工程研究所 基于虚拟机自省的威胁情报响应与处置方法及系统
CN109597675A (zh) * 2018-10-25 2019-04-09 中国科学院信息工程研究所 虚拟机恶意软件行为检测方法及系统
CN113485755A (zh) * 2021-06-30 2021-10-08 深圳市科力锐科技有限公司 设备驱动程序验证方法、装置、设备及存储介质
CN114285618A (zh) * 2021-12-20 2022-04-05 北京安天网络安全技术有限公司 一种网络威胁检测方法、装置、电子设备及可读存储介质
CN114285617A (zh) * 2021-12-20 2022-04-05 北京安天网络安全技术有限公司 一种网络威胁监测方法、装置、电子设备及可读存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050102505A1 (en) * 2003-11-11 2005-05-12 Bo-Heung Chung Method for dynamically changing intrusion detection rule in kernel level intrusion detection system
CN101727323A (zh) * 2009-12-04 2010-06-09 山东省计算中心 Vista操作系统下网络信息的获取方法
CN103023912A (zh) * 2012-12-26 2013-04-03 蓝盾信息安全技术股份有限公司 一种防止基于虚拟机进行网络攻击的方法
CN104023034A (zh) * 2014-06-25 2014-09-03 武汉大学 一种基于软件定义网络的安全防御系统及防御方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050102505A1 (en) * 2003-11-11 2005-05-12 Bo-Heung Chung Method for dynamically changing intrusion detection rule in kernel level intrusion detection system
CN101727323A (zh) * 2009-12-04 2010-06-09 山东省计算中心 Vista操作系统下网络信息的获取方法
CN103023912A (zh) * 2012-12-26 2013-04-03 蓝盾信息安全技术股份有限公司 一种防止基于虚拟机进行网络攻击的方法
CN104023034A (zh) * 2014-06-25 2014-09-03 武汉大学 一种基于软件定义网络的安全防御系统及防御方法

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105718303A (zh) * 2016-01-20 2016-06-29 国家电网公司 虚拟机异常检测方法、装置及系统
CN107608752A (zh) * 2016-07-12 2018-01-19 中国科学院信息工程研究所 基于虚拟机自省的威胁情报响应与处置方法及系统
CN107608752B (zh) * 2016-07-12 2020-10-16 中国科学院信息工程研究所 基于虚拟机自省的威胁情报响应与处置方法及系统
CN106790093A (zh) * 2016-12-23 2017-05-31 郑州云海信息技术有限公司 一种Linux系统下控制进程网络连接的方法及系统
CN109597675A (zh) * 2018-10-25 2019-04-09 中国科学院信息工程研究所 虚拟机恶意软件行为检测方法及系统
CN109597675B (zh) * 2018-10-25 2020-12-22 中国科学院信息工程研究所 虚拟机恶意软件行为检测方法及系统
CN113485755A (zh) * 2021-06-30 2021-10-08 深圳市科力锐科技有限公司 设备驱动程序验证方法、装置、设备及存储介质
CN113485755B (zh) * 2021-06-30 2023-08-18 深圳市科力锐科技有限公司 设备驱动程序验证方法、装置、设备及存储介质
CN114285618A (zh) * 2021-12-20 2022-04-05 北京安天网络安全技术有限公司 一种网络威胁检测方法、装置、电子设备及可读存储介质
CN114285617A (zh) * 2021-12-20 2022-04-05 北京安天网络安全技术有限公司 一种网络威胁监测方法、装置、电子设备及可读存储介质
CN114285618B (zh) * 2021-12-20 2024-03-19 北京安天网络安全技术有限公司 一种网络威胁检测方法、装置、电子设备及可读存储介质

Also Published As

Publication number Publication date
CN104732145B (zh) 2018-04-13

Similar Documents

Publication Publication Date Title
US11080399B2 (en) System and method for vetting mobile phone software applications
JP7046111B2 (ja) マルウェアのランタイム中の自動検出
Tian et al. A real-time correlation of host-level events in cyber range service for smart campus
EP3506139B1 (en) Malware detection in event loops
CN104732145A (zh) 一种虚拟机中的寄生进程检测方法和装置
Costin et al. A {Large-scale} analysis of the security of embedded firmwares
RU2485577C1 (ru) Способ увеличения надежности определения вредоносного программного обеспечения
US20160269442A1 (en) Methods and systems for improving analytics in distributed networks
CN110851241A (zh) Docker容器环境的安全防护方法、装置及系统
Karami et al. Behavioral analysis of android applications using automated instrumentation
CN107408176A (zh) 恶意对象的执行剖析检测
US10771477B2 (en) Mitigating communications and control attempts
US10664262B2 (en) Binary suppression and modification for software upgrades
Grégio et al. Ontology for malware behavior: A core model proposal
US11374946B2 (en) Inline malware detection
US11636208B2 (en) Generating models for performing inline malware detection
US20130111018A1 (en) Passive monitoring of virtual systems using agent-less, offline indexing
JP6050162B2 (ja) 接続先情報抽出装置、接続先情報抽出方法、及び接続先情報抽出プログラム
EP4160455A1 (en) Behavior analysis based on finite-state machine for malware detection
Barua et al. Bayesimposter: Bayesian estimation based. bss imposter attack on industrial control systems
Johnson et al. Exposing software security and availability risks for commercial mobile devices
US11930019B2 (en) Methods and systems for fast-paced dynamic malware analysis
EP3999985A1 (en) Inline malware detection
US20220245249A1 (en) Specific file detection baked into machine learning pipelines
Skrzewski Monitoring malware activity on the lan network

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20220725

Address after: Room 801, 8th floor, No. 104, floors 1-19, building 2, yard 6, Jiuxianqiao Road, Chaoyang District, Beijing 100015

Patentee after: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Address before: 100088 room 112, block D, 28 new street, new street, Xicheng District, Beijing (Desheng Park)

Patentee before: BEIJING QIHOO TECHNOLOGY Co.,Ltd.

Patentee before: Qizhi software (Beijing) Co.,Ltd.