CN110362998A - 一种检测KVM虚拟化平台上Windows恶意程序的方法和系统 - Google Patents

一种检测KVM虚拟化平台上Windows恶意程序的方法和系统 Download PDF

Info

Publication number
CN110362998A
CN110362998A CN201910552214.2A CN201910552214A CN110362998A CN 110362998 A CN110362998 A CN 110362998A CN 201910552214 A CN201910552214 A CN 201910552214A CN 110362998 A CN110362998 A CN 110362998A
Authority
CN
China
Prior art keywords
program
disk file
windows
virtual machine
consistent
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.)
Pending
Application number
CN201910552214.2A
Other languages
English (en)
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.)
Suzhou Wave Intelligent Technology Co Ltd
Original Assignee
Suzhou Wave Intelligent Technology 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 Suzhou Wave Intelligent Technology Co Ltd filed Critical Suzhou Wave Intelligent Technology Co Ltd
Priority to CN201910552214.2A priority Critical patent/CN110362998A/zh
Publication of CN110362998A publication Critical patent/CN110362998A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/564Static detection by virus signature recognition
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/565Static detection by checking file integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45587Isolation or security of virtual machine instances
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Storage Device Security (AREA)

Abstract

本申请公开了一种检测KVM虚拟化平台上Windows恶意程序的方法和系统,该方法包括:利用Libvmi技术扫描Windows虚拟机内存中的进程链表和内核模块链表,获取Windows虚拟机进程链表和内核模块链表中的任一程序,以及Windows虚拟机进程对应的磁盘文件路径;在KVM宿主机上对任一程序进行数字签名验证;当任一程序的数字签名合格时,在KVM宿主机上判断Windows虚拟机进程的内存映像和Windows虚拟机进程对应的磁盘文件内容是否一致;如果是,判定任一程序为合法程序,否则判定其为恶意程序。该系统包括:扫描模块、数字签名验证模块和磁盘文件对比模块。通过本申请,能够大大提高对恶意程序的对抗性以及对恶意程序检测的准确性,从而提高虚拟机系统的安全性和稳定性。

Description

一种检测KVM虚拟化平台上Windows恶意程序的方法和系统
技术领域
本申请涉及计算机虚拟化和操作系统安全技术领域,特别是涉及一种检测KVM虚拟化平台上Windows恶意程序的方法和系统。
背景技术
随着云计算、大数据等技术的发展,对云主机和服务器的稳定性与安全性需求也越来越高。病毒、木马、蠕虫等恶意程序一旦侵入主机的操作系统,就会对操作系统本身以及运行于操作系统上的业务和数据造成严重破坏。尤其对于目前数据中心常用的KVM虚拟化平台,在KVM虚拟化平台上存在大量的Windows虚拟机,为避免Windows系统遭受恶意程序的攻击,及时检测Windows虚拟机上是否存在恶意程序,是个非常重要的问题。
目前检测Windows虚拟机上是否存在恶意程序的方法,通常是在KVM虚拟机上进行数字签名验证,也就是在Windows虚拟机中进行数字签名验证。具体地,Windows资源管理器及常规的安全工具使用wintrust.lib和crypt32.lib提供的一组API函数,通过该API函数来验证程序是否具备有效签名,如果具备有效签名,判定该Windows虚拟机上不存在恶意程序,如果签名无效,判定该Windows虚拟机上存在恶意程序。
然而,目前检测Windows虚拟机上是否存在恶意程序的方法中,由于数字签名验证在Windows虚拟机上实现,Windows虚拟机上的恶意程序可以直接挂钩用于验证数字签名的API函数,从而篡改实际返回的验证结果,进而绕过数字签名。另外,由于数字签名验证在Windows虚拟机上实现,当恶意程序启动成功之后,恶意程序可以利用Rootkit技术将自身进程在Windows虚拟机内存结构体中的映像名字指向一个已签名的程序,从而逃过签名验证。因此,目前检测Windows虚拟机上是否存在恶意程序的方法中,虚拟机上的恶意程序有机会破坏验证程序或欺骗验证程序,现有的检测方法对恶意程序的对抗性较弱和检测的准确性较差,从而导致虚拟机系统的安全性较低。
发明内容
本申请提供了一种检测KVM虚拟化平台上Windows恶意程序的方法和系统,以解决现有技术中的检测方法对恶意程序的对抗性较弱以及检测的准确性较差的问题。
为了解决上述技术问题,本申请实施例公开了如下技术方案:
一种检测KVM虚拟化平台上Windows恶意程序的方法,所述方法包括:
利用Libvmi技术扫描Windows虚拟机内存中的进程链表和内核模块链表,获取Windows虚拟机进程链表和内核模块链表中的任一程序,以及Windows虚拟机进程对应的磁盘文件路径,所述Windows虚拟机进程与所述任一程序相匹配;
在KVM宿主机上对所述任一程序进行数字签名验证;
当所述任一程序的数字签名合格时,在KVM宿主机上判断所述Windows虚拟机进程的内存映像和所述Windows虚拟机进程对应的磁盘文件内容是否一致;
如果是,判定所述任一程序为合法程序;
如果否,判定所述任一程序为恶意程序。
可选地,在KVM宿主机上对所述任一程序进行数字签名验证的方法,包括:
根据所述任一程序的PE头中设置的签名区段入口地址和长度,利用Libvmi技术提取所述任一程序的签名块数据;
利用所述签名块数据中的CA机构所发布的公钥对数字证书进行解密,获取所述任一程序发布方的信息、签名值、摘要生成算法、摘要加密算法以及摘要加密公钥;
利用所述摘要加密公钥对所述签名值进行解密,获取原始摘要值;
利用所述摘要生成算法重新计算所述任一程序的摘要值,获取新摘要值;
判断所述原始摘要值与新摘要值是否相等;
如果是,判定所述任一程序的数字签名合格;
如果否,判定所述任一程序的数字签名不合格。
可选地,在KVM宿主机上判断所述Windows虚拟机进程的内存映像和所述Windows虚拟机进程对应的磁盘文件内容是否一致的方法,包括:
根据Windows虚拟机进程对应的磁盘文件路径,在KVM宿主机上利用虚拟磁盘透视技术获取Windows虚拟机进程对应的磁盘文件内容;
根据所述磁盘文件内容,验证所述内存映像和磁盘文件的Dos头部、PE头部以及块表是否一致;
根据所述磁盘文件内容,验证所述内存映像和磁盘文件的.text段是否一致,所述.text段为PE头部指定的程序入口地址所在的区段;
根据所述磁盘文件内容,验证所述内存映像和磁盘文件的.rdata段、.idata段、.rsrc段和.reloc段是否分别一致;
根据所述磁盘文件内容,验证所述内存映像的段间隙是否为零;
根据所述磁盘文件内容,验证所述内存映像和磁盘文件中填充的相对位置以及大小是否一致;
当所述内存映像和磁盘文件的Dos头部、PE头部以及块表一致,所述内存映像和磁盘文件的.text段、.rdata段、.idata段、.rsrc段和.reloc段分别一致,所述内存映像的段间隙为零,且所述内存映像和磁盘文件中填充的相对位置以及大小均一致时,判定所述内存映像与所述磁盘文件内容一致。
可选地,根据Windows虚拟机进程对应的磁盘文件路径,在KVM宿主机上利用虚拟磁盘透视技术获取Windows虚拟机进程对应的磁盘文件内容的方法,包括:
根据Windows虚拟机进程对应的磁盘文件路径,将Windows虚拟机上的第一文件系统翻译成KVM虚拟化支持的第二文件系统,获取所述第一文件系统中的任一文件在虚拟磁盘文件中的偏移量和长度,所述第一文件系统包括:NTFS文件系统或FAT32文件系统,所述第二文件系统包括:RAW文件系统或QCOW2文件系统。
可选地,在KVM宿主机上对所述任一程序进行数字签名验证的函数包括:CryptCATAdminAcquireContext函数、CryptCATAdminCalcHashFromFileHandle函数、CryptCATAdminEnumCatalogFromHash函数、CryptCATCatalogInfoFromContext函数、WinVerifyTrust函数、CryptDecodeObject函数以及CryptCATAdminReleaseContext函数。
一种检测KVM虚拟化平台上Windows恶意程序的系统,所述系统设置于KVM宿主机上,所述系统包括:
扫描模块,用于利用Libvmi技术扫描Windows虚拟机内存中的进程链表和内核模块链表,获取Windows虚拟机进程链表和内核模块链表中的任一程序,以及Windows虚拟机进程对应的磁盘文件路径,所述Windows虚拟机进程与所述任一程序相匹配;
数字签名验证模块,用于在KVM宿主机上对所述任一程序进行数字签名验证;
磁盘文件对比模块,用于当所述任一程序的数字签名合格时,在KVM宿主机上判断所述Windows虚拟机进程的内存映像和所述Windows虚拟机进程对应的磁盘文件内容是否一致,如果所述内存映像与所述磁盘文件内容一致,判定所述任一程序为合法程序,否则,判定所述任一程序为恶意程序。
可选地,所述数字签名验证模块包括:
签名块数据提取单元,用于根据所述任一程序的PE头中设置的签名区段入口地址和长度,利用Libvmi技术提取所述任一程序的签名块数据;
数字证书解密单元,用于利用签名块数据中的CA机构所发布的公钥对数字证书进行解密,获取所述任一程序发布方的信息、签名值、摘要生成算法、摘要加密算法以及摘要加密公钥;
原始摘要值获取单元,用于利用所述摘要加密公钥对所述签名值进行解密,获取原始摘要值;
新摘要值获取单元,用于利用所述摘要生成算法重新计算所述任一程序的摘要值,获取新摘要值;
数字签名有效性判断单元,用于判断所述原始摘要值与新摘要值是否相等,如果所述原始摘要值与新摘要值相等,判定所述任一程序的数字签名合格,否则判定所述任一程序的数字签名不合格。
可选地,所述磁盘文件对比模块包括:
磁盘文件内容获取单元,用于根据Windows虚拟机进程对应的磁盘文件路径,在KVM宿主机上利用虚拟磁盘透视技术获取Windows虚拟机进程对应的磁盘文件内容;
第一验证单元,用于根据所述磁盘文件内容,验证所述内存映像和磁盘文件的Dos头部、PE头部以及块表是否一致;
第二验证单元,用于根据所述磁盘文件内容,验证所述内存映像和磁盘文件的.text段是否一致,所述.text段为PE头部指定的程序入口地址所在的区段;
第三验证单元,用于根据所述磁盘文件内容,验证所述内存映像和磁盘文件的.rdata段、.idata段、.rsrc段和.reloc段是否分别一致;
第四验证单元,用于根据所述磁盘文件内容,验证所述内存映像的段间隙是否为零;
第五验证单元,用于根据所述磁盘文件内容,验证所述内存映像和磁盘文件中填充的相对位置以及大小是否一致;
判断单元,用于当所述内存映像和磁盘文件的Dos头部、PE头部以及块表一致,所述内存映像和磁盘文件的.text段、.rdata段、.idata段、.rsrc段和.reloc段一致,所述内存映像的段间隙为零,且所述内存映像和磁盘文件中填充的相对位置以及大小均一致时,判定所述内存映像与所述磁盘文件内容一致。
本申请的实施例提供的技术方案可以包括以下有益效果:
本申请提供一种检测KVM虚拟化平台上Windows恶意程序的方法,该方法首先扫描Windows虚拟机内存中的进程链表和内核模块链表,获取到程序和Windows虚拟机进程对应的磁盘文件路径,针对扫描到的任一程序先在KVM宿主机上进行数字签名验证,数字签名验证合格后,再在KVM宿主机上判断Windows虚拟机进程的内存映像和Windows虚拟机进程对应的磁盘文件内容是否一致,如果一致,判定该任一程序为合法程序,否则判定该任一程序为恶意程序。本实施例在KVM宿主机上进行数字签名验证,由于数字签名验证的实现过程在KVM宿主机上,KVM虚拟机上的程序无权修改KVM主机上的系统和程序,也就无法在KVM宿主机上实现挂钩现象,因此,有利于提高恶意程序检测的准确性和增强对恶意程序的对抗性,进而提高Windows虚拟机系统的安全性。本实施例在KVM宿主机上进行磁盘文件对比,通过比对Windows虚拟机进程的内存映像和磁盘文件内容,能够有效排查程序运行过程中恶意进程修改自身映像名字字段的情况,从而发现恶意程序,对恶意程序的对抗性较强,有利于提高虚拟机系统的安全性。另外,由于是在KVM宿主机上进行恶意程序检测,对Windows虚拟机及其业务系统没有干扰,因此能够保证虚拟机业务系统的稳定性。而且,利用数字签名验证和磁盘文件对比两种方法来检测恶意程序,能够大大提高恶意程序检测的准确性。
本申请还提供一种检测KVM虚拟化平台上Windows恶意程序的系统,该系统主要包括扫描模块、数字签名验证模块和磁盘文件对比模块三部分。首先通过扫描模块扫描Windows虚拟机内存中的进程链表和内核模块链表,获取Windows虚拟机进程链表和内核模块链表中的任一程序,以及Windows虚拟机进程对应的磁盘文件路径。当扫描到任意一个程序时,通过数字签名验证模块,在KVM宿主机上对该程序进行数字签名验证;如果数字签名验证合格,启动磁盘文件对比模块,利用磁盘文件对比模块在KVM宿主机上判断Windows虚拟机进程的内存映像和Windows虚拟机进程对应的磁盘文件内容是否一致,如果两者一致,判定该程序为合法程序,否则,判定该程序为恶意程序。本申请在KVM宿主机上设置数字签名验证模块和磁盘文件对比模块,在不影响Windows虚拟机系统运行的情况下,通过KVM主机实现数字签名验证逻辑,可以检测出通过挂钩虚拟机数字签名验证API函数而逃过验证的恶意程序;通过磁盘文件对比模块,可以检测出通过修改已运行进程内存结构体而通过验证的恶意程序,能够避免Windows虚拟机上的恶意程序修改KVM宿主机上的系统和程序,因此,本实施例中的系统能够大大提高对恶意程序的对抗性,从而提高检测准确性,进而提高虚拟机系统的安全性和稳定性。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例所提供的一种检测KVM虚拟化平台上Windows恶意程序的方法的流程示意图;
图2为本申请实施例所提供的一种检测KVM虚拟化平台上Windows恶意程序的系统的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
为了更好地理解本申请,下面结合附图来详细解释本申请的实施方式。
实施例一
参见图1,图1为本申请实施例所提供的一种检测KVM虚拟化平台上Windows恶意程序的方法的流程示意图。由图1可知,本实施例中检测KVM虚拟化平台上Windows恶意程序的方法,主要包括如下步骤:
S1:利用Libvmi技术扫描Windows虚拟机内存中的进程链表和内核模块链表,获取Windows虚拟机进程链表和内核模块链表中的任一程序,以及Windows虚拟机进程对应的磁盘文件路径。其中,Windows虚拟机进程与任一程序相匹配,进程为系统中正在运行的一个程序,程序一旦运行即为进程。
Libvmi技术用于KVM宿主机对正在运行中的底层虚拟机进行监视,Libvmi是一个C库,该C库的监视功能主要包括:观察内存细节、陷入硬件事件以及读取CPU寄存器。主要用于KVM宿主机读取虚拟机内存以及改写虚拟机内存数据,从而控制虚拟机操作系统的运行。本实施例主要利用Libvmi技术,在KVM宿主机上扫描Windows虚拟机内存中的进程链表和内核模块链表。
优选地,本实施例中可以采用定时扫描方式。即:利用Libvmi技术定时扫描Windows虚拟机内存中的进程链表和内核模块链表,获取Windows虚拟机进程链表和内核模块链表中的任一程序,以及Windows虚拟机进程对应的磁盘文件路径。具体定时的时间值可以根据KVM宿主机的具体硬件情况进行配置,通常为3秒、8秒等时间间隔。通过定时扫描,能够一直对Windows虚拟机内存中的进程链表和内核模块链表,从而使得上一个扫描周期中漏掉的程序,在下一个扫描周期中及时获取到,进而提高扫描效率和扫描准确性,有利于提高对恶意程序的检测准确性。
S2:在KVM宿主机上对任一程序进行数字签名验证。
通过步骤S1的扫描,当扫描到任一程序时,通过步骤S2,对该任一程序进行数字签名验证。
具体地,步骤S2包括如下过程:
S21:根据任一程序的PE头中设置的签名区段入口地址和长度,利用Libvmi技术提取任一程序的签名块数据。
本实施例PE文件即可移植的可执行的文件,常见的PE文件包括:EXE、DLL、OCX、SYS、COM等文件,PE文件是微软Windows操作系统上的程序文件。恶意程序也一定是PE文件,否则无法在系统上执行。
获取到任一程序的签名块数据之后,执行步骤S22:利用签名块数据中的CA机构所发布的公钥对数字证书进行解密,获取任一程序发布方的信息、签名值、摘要生成算法、摘要加密算法以及摘要加密公钥。
CA机构签名的证书是签名块数据的一部分,本实施例利用CA机构所发布的公钥对数字证书解密后,获取到该任一程序发布方的相关信息。
S23:利用摘要加密公钥对签名值进行解密,获取原始摘要值。
S24:利用摘要生成算法重新计算任一程序的摘要值,获取新摘要值。
根据步骤S23和S24分别获取到任一程序的原始摘要值和新摘要值之后,执行步骤S25:判断原始摘要值与新摘要值是否相等。
如果原始摘要值与新摘要值相等,则执行步骤S26:判定任一程序的数字签名合格。
如果原始摘要值与新摘要值不相等,则执行步骤S27:判定任一程序的数字签名不合格。
由以上步骤S25-S27可知,如果原始摘要值与新摘要值相等,则该任一程序的数字签名验证通过,说明该任一程序的数字签名有效,然后执行后续步骤S3,进一步判断带有该数字签名的任一程序是否为合法程序。反之,数字签名验证不通过,判定该任一程序为恶意程序,流程结束。
对任一程序确定其为恶意程序之后,可以输出打印日志,并通知系统管理员。对任一程序确定其为合法程序之后,后续也可以通知系统管理员。
本实施例中在KVM宿主机上对任一程序进行数字签名验证的函数主要包括:CryptCATAdminAcquireContext函数、CryptCATAdminCalcHashFromFileHandle函数、CryptCATAdminEnumCatalogFromHash函数、CryptCATCatalogInfoFromContext函数、WinVerifyTrust函数、CryptDecodeObject函数以及CryptCATAdminReleaseContext函数。
以上函数为Windows虚拟机上实现数字签名验证功能的函数,为数字签名验证函数,本实施例需要将这些数字签名验证函数在KVM宿主机上实现,即:在KVM宿主机上实现所有设置于Windows虚拟机上的数字签名验证函数。通过在KVM宿主机上重新实现Windows虚拟机上的数字签名验证函数,使得Windows虚拟机上的恶意程序无权修改数字签名验证函数,从而提高了对恶意程序的对抗性,进而能够提高虚拟机系统的稳定性和安全性。
本实施例通过在KVM宿主机上对扫描到的任一程序进行数字签名验证,能够检测出通过挂钩虚拟机数字签名验证API函数而逃过验证的恶意程序。而且,该数字签名验证逻辑在KVM宿主机上实现,不会对Windows虚拟机的运行造成影响,有利于提高虚拟机运行的稳定性和安全性。
继续参见图1可知,通过在KVM宿主机上进行数字签名验证,当数字签名验证不合格时,即查找到恶意程序,流程结束。当任一程序的数字签名验证合格之后,执行步骤S3:当任一程序的数字签名合格时,在KVM宿主机上判断Windows虚拟机进程的内存映像和Windows虚拟机进程对应的磁盘文件内容是否一致。
本实施例中Windows虚拟机进程的内存映像来自于磁盘上的静态文件,该静态文件也就是Windows虚拟机进程对应的磁盘文件,Windows虚拟机进程的内存映像和Windows虚拟机进程对应的磁盘文件,两者之间按照加载器的内存分布逻辑对应。
同步骤S1的原理相同,步骤S3中也可以采用定时判断的方式。即:当任一程序的数字签名合格时,在KVM宿主机上定时判断Windows虚拟机进程的内存映像和Windows虚拟机进程对应的磁盘文件内容是否一致。通过定时判断,通过加大判断频率的机制,能够提高判断的准确性,进而提高恶意程序检测的准确性。
具体地步骤S3包括如下过程:
S31:根据Windows虚拟机进程对应的磁盘文件路径,在KVM宿主机上利用虚拟磁盘透视技术获取Windows虚拟机进程对应的磁盘文件内容。
步骤S31具体为:
根据Windows虚拟机进程对应的磁盘文件路径,将Windows虚拟机上的第一文件系统翻译成KVM虚拟化支持的第二文件系统,获取第一文件系统中的任一文件在虚拟磁盘文件中的偏移量和长度。虚拟磁盘透视技术能够提供读写虚拟机内部文件的能力,虚拟磁盘透视技术的核心为扇区地址翻译。也就是,根据Windows虚拟机进程对应在KVM宿主机上所属虚拟化文件系统的偏移位置和长度,将虚拟机上的第一文件系统翻译成KVM虚拟化支持的第二文件系统,从而获取到第一文件系统中的任一文件在虚拟磁盘文件中的偏移量和长度。
本实施例中第一文件系统包括:NTFS文件系统或FAT32文件系统,第二文件系统包括:RAW文件系统或QCOW2文件系统。
S32:根据磁盘文件内容,验证内存映像和磁盘文件的Dos头部、PE头部以及块表是否一致。
S33:根据磁盘文件内容,验证内存映像和磁盘文件的.text段是否一致,.text段为PE头部指定的程序入口地址所在的区段。
磁盘文件的.text段,用于为PE头部指定程序入口地址,是进程运行的重要内容。本实施例主要判断内存映像中.text段和磁盘文件中.text段的大小是否一致。
S34:根据磁盘文件内容,验证内存映像和磁盘文件的.rdata段、.idata段、.rsrc段和.reloc段是否分别一致。
主要判断内存映像的.rdata段、.idata段、.rsrc段和.reloc段,与磁盘文件的.rdata段、.idata段、.rsrc段和.reloc段的大小是否一一对应一致。
S35:根据磁盘文件内容,验证内存映像的段间隙是否为零。
通过判断内存映像段间隙是否为零,能够确定相邻两个段是否紧靠,如果段间隙为零,则确定相邻两个端是紧靠,中间没有空隙,说明没有恶意程序攻击,也就是没有恶意程序修改内存映像。反之,如果段间隙不为零,则说明有空隙,有恶意程序修改了内存映像。
S36:根据磁盘文件内容,验证内存映像和磁盘文件中填充的相对位置以及大小是否一致。
内存映像中以及磁盘文件中,两个段之间的相对位置指的是两个段的前后顺序,而且两个段之间的相对位置以及两个段之间所间隔的字节数量均符合固定的规则,如果内存映像和磁盘文件中填充的相对位置不符合PE格式加载固定的规则,则判定该任一程序为恶意程序。内存映像和磁盘文件中每个段都有大小,如果实际数据没有填满段的大小空间,即填充0,因此,内存映像和磁盘文件填充相对位置和大小不一致的话,判定该任一程序为恶意程序。
S37:当内存映像和磁盘文件的Dos头部、PE头部以及块表一致,内存映像和磁盘文件的.text段、.rdata段、.idata段、.rsrc段和.reloc段分别一致,内存映像的段间隙为零,且内存映像和磁盘文件中填充的相对位置以及大小均一致时,判定内存映像与磁盘文件内容一致。
以上步骤S32-S36是判断内存映像与磁盘文件内容一致的多个条件,只有各条件均满足时,根据步骤S37判定内存映像与磁盘文件内容一致。本实施例中在KVM宿主机上上比对内存映像和Windows虚拟机进程对应的磁盘文件内容时,可以借助开源可以openssl库编写程序代码。
如果内存映像和磁盘文件内容一致,执行步骤S4判定任一程序为合法程序;
如果内存映像和磁盘文件内容不一致,执行步骤S5:判定任一程序为恶意程序。
本实施例针对数字签名验证合格的程序,通过在KVM宿主机上进一步将内存映像和磁盘文件内容进行比对,能够检测出通过修改已运行进程的内存结构体来通过验证的恶意程序,从而提高对恶意程序的对抗性,进而提高虚拟机系统的安全性和稳定性。
实施例二
在图1所示实施例的基础之上参见图2,图2为本申请实施例所提供的一种检测KVM虚拟化平台上Windows恶意程序的系统的结构示意图。由图2可知,本实施例中检测KVM虚拟化平台上Windows恶意程序的系统,主要包括:扫描模块、数字签名验证模块和磁盘文件对比模块三部分。该系统设置于KVM宿主机上。其中,扫描模块,用于利用Libvmi技术扫描Windows虚拟机内存中的进程链表和内核模块链表,获取Windows虚拟机进程链表和内核模块链表中的任一程序,以及Windows虚拟机进程对应的磁盘文件路径,其中,Windows虚拟机进程与任一程序相匹配。数字签名验证模块,用于在KVM宿主机上对任一程序进行数字签名验证。磁盘文件对比模块,用于当任一程序的数字签名合格时,在KVM宿主机上判断Windows虚拟机进程的内存映像和Windows虚拟机进程对应的磁盘文件内容是否一致,如果内存映像与磁盘文件内容一致,判定任一程序为合法程序,否则,判定任一程序为恶意程序。
进一步地,数字签名验证模块包括:签名块数据提取单元、数字证书解密单元、原始摘要值获取单元、新摘要值获取单元以及数字签名有效性判断单元。其中,签名块数据提取单元,用于根据任一程序的PE头中设置的签名区段入口地址和长度,利用Libvmi技术提取任一程序的签名块数据;数字证书解密单元用于利用签名块数据中的CA机构所发布的公钥对数字证书进行解密,获取任一程序发布方的信息、签名值、摘要生成算法、摘要加密算法以及摘要加密公钥;原始摘要值获取单元,用于利用摘要加密公钥对签名值进行解密,获取原始摘要值;新摘要值获取单元,用于利用摘要生成算法重新计算任一程序的摘要值,获取新摘要值;数字签名有效性判断单元,用于判断原始摘要值与新摘要值是否相等,如果原始摘要值与新摘要值相等,判定任一程序的数字签名合格,否则判定任一程序的数字签名不合格。
磁盘文件对比模块包括:磁盘文件内容获取单元、第一验证单元、第二验证单元、第三验证单元、第四验证单元、第五验证单元和判断单元。其中,磁盘文件内容获取单元,用于根据Windows虚拟机进程对应的磁盘文件路径,在KVM宿主机上利用虚拟磁盘透视技术获取Windows虚拟机进程对应的磁盘文件内容;第一验证单元用于根据磁盘文件内容,验证内存映像和磁盘文件的Dos头部、PE头部以及块表是否一致;第二验证单元用于根据磁盘文件内容,验证内存映像和磁盘文件的.text段是否一致,.text段为PE头部指定的程序入口地址所在的区段;第三验证单元用于根据磁盘文件内容,验证内存映像和磁盘文件的.rdata段、.idata段、.rsrc段和.reloc段是否分别一致;第四验证单元用于根据磁盘文件内容,验证内存映像的段间隙是否为零;第五验证单元用于根据磁盘文件内容,验证内存映像和磁盘文件中填充的相对位置以及大小是否一致;判断单元,用于当内存映像和磁盘文件的Dos头部、PE头部以及块表一致,内存映像和磁盘文件的.text段、.rdata段、.idata段、.rsrc段和.reloc段一致,内存映像的段间隙为零,且内存映像和磁盘文件中填充的相对位置以及大小均一致时,判定内存映像与磁盘文件内容一致。
该实施例中检测KVM虚拟化平台上Windows恶意程序的系统的工作原理和工作方法,在图1所示的实施例一中已经详细阐述,在此不再赘述。
以上所述仅是本申请的具体实施方式,使本领域技术人员能够理解或实现本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (8)

1.一种检测KVM虚拟化平台上Windows恶意程序的方法,其特征在于,所述方法包括:
利用Libvmi技术扫描Windows虚拟机内存中的进程链表和内核模块链表,获取Windows虚拟机进程链表和内核模块链表中的任一程序,以及Windows虚拟机进程对应的磁盘文件路径,所述Windows虚拟机进程与所述任一程序相匹配;
在KVM宿主机上对所述任一程序进行数字签名验证;
当所述任一程序的数字签名合格时,在KVM宿主机上判断所述Windows虚拟机进程的内存映像和所述Windows虚拟机进程对应的磁盘文件内容是否一致;
如果是,判定所述任一程序为合法程序;
如果否,判定所述任一程序为恶意程序。
2.根据权利要求1所述的一种检测KVM虚拟化平台上Windows恶意程序的方法,其特征在于,在KVM宿主机上对所述任一程序进行数字签名验证的方法,包括:
根据所述任一程序的PE头中设置的签名区段入口地址和长度,利用Libvmi技术提取所述任一程序的签名块数据;
利用所述签名块数据中的CA机构所发布的公钥对数字证书进行解密,获取所述任一程序发布方的信息、签名值、摘要生成算法、摘要加密算法以及摘要加密公钥;
利用所述摘要加密公钥对所述签名值进行解密,获取原始摘要值;
利用所述摘要生成算法重新计算所述任一程序的摘要值,获取新摘要值;
判断所述原始摘要值与新摘要值是否相等;
如果是,判定所述任一程序的数字签名合格;
如果否,判定所述任一程序的数字签名不合格。
3.根据权利要求1所述的一种检测KVM虚拟化平台上Windows恶意程序的方法,其特征在于,在KVM宿主机上判断所述Windows虚拟机进程的内存映像和所述Windows虚拟机进程对应的磁盘文件内容是否一致的方法,包括:
根据Windows虚拟机进程对应的磁盘文件路径,在KVM宿主机上利用虚拟磁盘透视技术获取Windows虚拟机进程对应的磁盘文件内容;
根据所述磁盘文件内容,验证所述内存映像和磁盘文件的Dos头部、PE头部以及块表是否一致;
根据所述磁盘文件内容,验证所述内存映像和磁盘文件的.text段是否一致,所述.text段为PE头部指定的程序入口地址所在的区段;
根据所述磁盘文件内容,验证所述内存映像和磁盘文件的.rdata段、.idata段、.rsrc段和.reloc段是否分别一致;
根据所述磁盘文件内容,验证所述内存映像的段间隙是否为零;
根据所述磁盘文件内容,验证所述内存映像和磁盘文件中填充的相对位置以及大小是否一致;
当所述内存映像和磁盘文件的Dos头部、PE头部以及块表一致,所述内存映像和磁盘文件的.text段、.rdata段、.idata段、.rsrc段和.reloc段分别一致,所述内存映像的段间隙为零,且所述内存映像和磁盘文件中填充的相对位置以及大小均一致时,判定所述内存映像与所述磁盘文件内容一致。
4.根据权利要求3所述的一种检测KVM虚拟化平台上Windows恶意程序的方法,其特征在于,根据Windows虚拟机进程对应的磁盘文件路径,在KVM宿主机上利用虚拟磁盘透视技术获取Windows虚拟机进程对应的磁盘文件内容的方法,包括:
根据Windows虚拟机进程对应的磁盘文件路径,将Windows虚拟机上的第一文件系统翻译成KVM虚拟化支持的第二文件系统,获取所述第一文件系统中的任一文件在虚拟磁盘文件中的偏移量和长度,所述第一文件系统包括:NTFS文件系统或FAT32文件系统,所述第二文件系统包括:RAW文件系统或QCOW2文件系统。
5.根据权利要求1-4中任一所述的一种检测KVM虚拟化平台上Windows恶意程序的方法,其特征在于,在KVM宿主机上对所述任一程序进行数字签名验证的函数包括:CryptCATAdminAcquireContext函数、CryptCATAdminCalcHashFromFileHandle函数、CryptCATAdminEnumCatalogFromHash函数、CryptCATCatalogInfoFromContext函数、WinVerifyTrust函数、CryptDecodeObject函数以及CryptCATAdminReleaseContext函数。
6.一种检测KVM虚拟化平台上Windows恶意程序的系统,其特征在于,所述系统设置于KVM宿主机上,所述系统包括:
扫描模块,用于利用Libvmi技术扫描Windows虚拟机内存中的进程链表和内核模块链表,获取Windows虚拟机进程链表和内核模块链表中的任一程序,以及Windows虚拟机进程对应的磁盘文件路径,所述Windows虚拟机进程与所述任一程序相匹配;
数字签名验证模块,用于在KVM宿主机上对所述任一程序进行数字签名验证;
磁盘文件对比模块,用于当所述任一程序的数字签名合格时,在KVM宿主机上判断所述Windows虚拟机进程的内存映像和所述Windows虚拟机进程对应的磁盘文件内容是否一致,如果所述内存映像与所述磁盘文件内容一致,判定所述任一程序为合法程序,否则,判定所述任一程序为恶意程序。
7.根据权利要求6所述的一种检测KVM虚拟化平台上Windows恶意程序的系统,其特征在于,所述数字签名验证模块包括:
签名块数据提取单元,用于根据所述任一程序的PE头中设置的签名区段入口地址和长度,利用Libvmi技术提取所述任一程序的签名块数据;
数字证书解密单元,用于利用签名块数据中的CA机构所发布的公钥对数字证书进行解密,获取所述任一程序发布方的信息、签名值、摘要生成算法、摘要加密算法以及摘要加密公钥;
原始摘要值获取单元,用于利用所述摘要加密公钥对所述签名值进行解密,获取原始摘要值;
新摘要值获取单元,用于利用所述摘要生成算法重新计算所述任一程序的摘要值,获取新摘要值;
数字签名有效性判断单元,用于判断所述原始摘要值与新摘要值是否相等,如果所述原始摘要值与新摘要值相等,判定所述任一程序的数字签名合格,否则判定所述任一程序的数字签名不合格。
8.根据权利要求6所述的一种检测KVM虚拟化平台上Windows恶意程序的系统,其特征在于,所述磁盘文件对比模块包括:
磁盘文件内容获取单元,用于根据Windows虚拟机进程对应的磁盘文件路径,在KVM宿主机上利用虚拟磁盘透视技术获取Windows虚拟机进程对应的磁盘文件内容;
第一验证单元,用于根据所述磁盘文件内容,验证所述内存映像和磁盘文件的Dos头部、PE头部以及块表是否一致;
第二验证单元,用于根据所述磁盘文件内容,验证所述内存映像和磁盘文件的.text段是否一致,所述.text段为PE头部指定的程序入口地址所在的区段;
第三验证单元,用于根据所述磁盘文件内容,验证所述内存映像和磁盘文件的.rdata段、.idata段、.rsrc段和.reloc段是否分别一致;
第四验证单元,用于根据所述磁盘文件内容,验证所述内存映像的段间隙是否为零;
第五验证单元,用于根据所述磁盘文件内容,验证所述内存映像和磁盘文件中填充的相对位置以及大小是否一致;
判断单元,用于当所述内存映像和磁盘文件的Dos头部、PE头部以及块表一致,所述内存映像和磁盘文件的.text段、.rdata段、.idata段、.rsrc段和.reloc段一致,所述内存映像的段间隙为零,且所述内存映像和磁盘文件中填充的相对位置以及大小均一致时,判定所述内存映像与所述磁盘文件内容一致。
CN201910552214.2A 2019-06-25 2019-06-25 一种检测KVM虚拟化平台上Windows恶意程序的方法和系统 Pending CN110362998A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910552214.2A CN110362998A (zh) 2019-06-25 2019-06-25 一种检测KVM虚拟化平台上Windows恶意程序的方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910552214.2A CN110362998A (zh) 2019-06-25 2019-06-25 一种检测KVM虚拟化平台上Windows恶意程序的方法和系统

Publications (1)

Publication Number Publication Date
CN110362998A true CN110362998A (zh) 2019-10-22

Family

ID=68216845

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910552214.2A Pending CN110362998A (zh) 2019-06-25 2019-06-25 一种检测KVM虚拟化平台上Windows恶意程序的方法和系统

Country Status (1)

Country Link
CN (1) CN110362998A (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114143024A (zh) * 2021-10-26 2022-03-04 广州大学 基于生成对抗网络的黑盒恶意软件检测对抗样本生成方法及装置
CN114244599A (zh) * 2021-12-15 2022-03-25 杭州默安科技有限公司 一种干扰恶意程序的方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102880828A (zh) * 2012-09-07 2013-01-16 普华基础软件股份有限公司 一种针对虚拟化支撑环境的入侵检测与恢复系统
CN103886259A (zh) * 2014-03-19 2014-06-25 四川大学 基于Xen虚拟化环境的内核级rootkit检测和处理方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102880828A (zh) * 2012-09-07 2013-01-16 普华基础软件股份有限公司 一种针对虚拟化支撑环境的入侵检测与恢复系统
CN103886259A (zh) * 2014-03-19 2014-06-25 四川大学 基于Xen虚拟化环境的内核级rootkit检测和处理方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
彭春洪: "基于KVM虚拟机的恶意行为检测系统设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *
陈伟东 等: "服务器系统安全内核研究与实现", 《计算机应用与软件》 *

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114143024A (zh) * 2021-10-26 2022-03-04 广州大学 基于生成对抗网络的黑盒恶意软件检测对抗样本生成方法及装置
CN114143024B (zh) * 2021-10-26 2022-07-26 广州大学 基于生成对抗网络的黑盒恶意软件检测对抗样本生成方法、系统、电子设备及存储介质
CN114244599A (zh) * 2021-12-15 2022-03-25 杭州默安科技有限公司 一种干扰恶意程序的方法
CN114244599B (zh) * 2021-12-15 2023-11-24 杭州默安科技有限公司 一种干扰恶意程序的方法

Similar Documents

Publication Publication Date Title
US8122256B2 (en) Secure bytecode instrumentation facility
US8850212B2 (en) Extending an integrity measurement
CN105354493B (zh) 基于虚拟化技术的终端可信增强方法及系统
KR101677576B1 (ko) 집중형 동작 관리
US7581253B2 (en) Secure storage tracking for anti-virus speed-up
US20080282348A1 (en) Methods, Devices and Data Structures for Trusted Data
US20100115625A1 (en) Policy enforcement in trusted platforms
US7962952B2 (en) Information processing apparatus that executes program and program control method for executing program
CN105760787B (zh) 用于检测随机存取存储器中的恶意代码的系统及方法
JP2009521020A (ja) 高リスクアプリケーション用の実用的プラットフォーム
BRPI0815605B1 (pt) Método para a comunicação de dados usando um dispositivo de computação; método para gerar uma segunda versão de um componente de comunicação de dados usando um dispositivo de computação; método para comunicação de dados usando um dispositivo de computação; método para a criação de um certificado usando um dispositivo de computação; e método para usar um certificado utilizando um dispositivo de computação
Weinhold et al. VPFS: Building a virtual private file system with a small trusted computing base
CN107861793A (zh) 虚拟硬件平台启动方法、装置、设备及计算机存储介质
CN109558207A (zh) 在虚拟机中形成用于进行文件的防病毒扫描的日志的系统和方法
CN107077560A (zh) 用于建立安全工作空间的所有权的系统
US20200004960A1 (en) Method of detecting malicious files resisting analysis in an isolated environment
CN110362998A (zh) 一种检测KVM虚拟化平台上Windows恶意程序的方法和系统
CN109214204A (zh) 数据处理方法和存储设备
EP3338214B1 (en) Secure computation environment
CN109522683A (zh) 软件溯源方法、系统、计算机设备及存储介质
US20050010752A1 (en) Method and system for operating system anti-tampering
CN109583191B (zh) 云端程序控制流完整性保护方法及装置
Safford et al. A trusted linux client (tlc)
JP2002149494A (ja) アクセス制御方法およびアクセス制御装置および記録媒体
EP3848835B1 (en) Systems and methods for protecting against unauthorized memory dump modification

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
RJ01 Rejection of invention patent application after publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20191022