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

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

A method and system for detecting windows malware on KVM virtualization platform

【技术实现步骤摘要】
一种检测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机构所发布的公钥对数字证书进行解密,获取所述任一程序发布方的信息、签名值、摘要生成算法、摘要加密算法以及摘要加密公钥;原始摘要值获本文档来自技高网
...

【技术保护点】
1.一种检测KVM虚拟化平台上Windows恶意程序的方法,其特征在于,所述方法包括:利用Libvmi技术扫描Windows虚拟机内存中的进程链表和内核模块链表,获取Windows虚拟机进程链表和内核模块链表中的任一程序,以及Windows虚拟机进程对应的磁盘文件路径,所述Windows虚拟机进程与所述任一程序相匹配;在KVM宿主机上对所述任一程序进行数字签名验证;当所述任一程序的数字签名合格时,在KVM宿主机上判断所述Windows虚拟机进程的内存映像和所述Windows虚拟机进程对应的磁盘文件内容是否一致;如果是,判定所述任一程序为合法程序;如果否,判定所述任一程序为恶意程序。

【技术特征摘要】
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宿主机上对所述任一程序进行...

【专利技术属性】
技术研发人员:邢希双
申请(专利权)人:苏州浪潮智能科技有限公司
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1