CN110798468A - 一种通过枚举防火墙规则检测虚拟化环境的方法 - Google Patents
一种通过枚举防火墙规则检测虚拟化环境的方法 Download PDFInfo
- Publication number
- CN110798468A CN110798468A CN201911051882.3A CN201911051882A CN110798468A CN 110798468 A CN110798468 A CN 110798468A CN 201911051882 A CN201911051882 A CN 201911051882A CN 110798468 A CN110798468 A CN 110798468A
- Authority
- CN
- China
- Prior art keywords
- environment
- firewall
- rule
- api
- application program
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0227—Filtering policies
- H04L63/0263—Rule management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45587—Isolation or security of virtual machine instances
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45591—Monitoring or debugging support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/45595—Network integration; Enabling network access in virtual machine instances
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- Business, Economics & Management (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- General Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种通过枚举防火墙规则检测虚拟化环境的方法,所述方法为:步骤S1、Windows平台的应用程序生成一个规则组名称特征库,步骤S2、当操作系统处于虚拟化状态并且需要处理一些网络请求时,操作系统会激活虚拟化系统环境特征的Windows防火墙规则,借助Windows防火墙截获所需的网络信息;步骤S3、基于微软的COM组件模块,Windows平台的应用程序通过COM库提供的查询和枚举功能,获取操作系统中所有的防火墙规则的信息,然后判断是否存在符合虚拟化系统环境特征的防火墙规则;若存在则继续判断规则是否处于激活状态,最后根据结果判断当前运行环境是否为虚拟化环境。本发明能检测系统是否处于虚拟化环境,检测准确性高。
Description
技术领域
本发明涉及计算机虚拟化领域、虚拟机检测领域、软件安全领域,特别是一种通过枚举防火墙规则检测虚拟化环境的方法。
背景技术
防火墙访问控制是保证网络安全最重要的核心策略之一,访问控制列表(AccessControl List,ACL)是路由器和交换机接口的指令列表,ACL不但可控制网络流量及流向,而且在很大程度上起到保护网络设备、服务器的关键作用。作为外网进入企业内网的第一道关卡,路由器上的访问控制列表成为保护内网安全的有效手段。
防火墙是网络安全防御的第一道防线,通常安置在私有网络到公有网络的入口处,以便所有进入私有网络和从私有网络出去的数据包都经过防火墙,防火墙的功能就是根据预先设定好的政策决定接收数据包或者丢弃数据包,防火墙的政策是由一系列的规则组成,这些规则称之为访问控制列表。访问控制列表中的规则通常存在重叠,甚至冲突。防火墙采取第一匹配的方式,来解决规则的冲突问题,即防火墙应用与该数据包匹配的第一条规则的动作。
防火墙规则经常需要进行更新,如新服务的提供、新安全威胁的出现以及网络拓扑结构的变化等等。但是在实际中由于防火墙规则的高度复杂以及缺乏先进的工具,防火墙更新远比构建一个新的防火墙更难。有两个主要原因导致防火墙规则的复杂,第一、由于规则之间存在冲突,规则之间的逻辑关系异常复杂,规则对顺序敏感;第二、访问控制列表中的规则数量通常很大,一个企业防火墙中的规则数量通常达到数百甚至数千。
目前出现了大量的游戏工作室使用虚拟机软件实现游戏多开、游戏多控、构造特殊系统环境绕过游戏检测模块检测等功能;另外部分逆向人员会使用虚拟化技术绕过软件安全保护模块,对程序(包括但不限于计算机软件)进行逆向分析,上述情形均严重侵害正规公司的版权、经济收入等合法权益。程序检测当前运行环境是否为虚拟化环境,对软件安全保护有极大的作用,对此情景本方案提供了一个检测点,应用程序可以采用本方案,通过枚举Windows操作系统中的防火墙相关的注册表键,检查是否存在虚拟化环境特有的注册表特征,由此判断程序运行的系统环境是否为虚拟化环境。
现有技术中公开了虚拟机系统的反检测系统,见公开号为:CN103077351 B,授权日为:2016.06.01的中国专利,其中,所述系统包括虚拟机系统的反检测装置、虚拟机系统以及真实系统,其中:在所述真实系统运行环境中启动所述虚拟机系统后,启动所述虚拟机系统的反检测装置,以便通过所述虚拟机系统的反检测装置对当前虚拟机系统中不同于真实系统运行环境的区别特征信息进行修改;所述虚拟机系统的反检测装置包括:特征信息获取单元;特征信息修改单元;特征信息返回单元。通过该发明,可以达到虚拟机反检测的目的,使得虚拟机能够更有效的支持恶意程序分析工作。该专利虽然叙述了检测虚拟机系统的方法,但对应的反检测方案也已相对成熟,且并未涉及本专利提到的通过枚举防火墙规则检测虚拟化环境的技术。相对于现有技术,本专利新增了一个检测点,此检测点与上述文章介绍的检测方案无雷同也不冲突。
发明内容
为克服上述问题,本发明的目的是提供一种通过枚举防火墙规则检测虚拟化环境的方法,通过枚举Windows操作系统中的防火墙规则,检查虚拟化环境特有的防火墙规则是否存在且处于激活状态,提高了检测的准确性。
本发明采用以下方案实现:一种通过枚举防火墙规则检测虚拟化环境的方法,所述方法具体包括如下步骤:
步骤S1、Windows平台的应用程序生成一个规则组名称特征库,所述规则组名称特征库中包含:“vmicres.dll,-700”、“icsvc.dll,-700”、L“vmicres.dll,-700”、L“icsvc.dll,-700”这四个字符串中任意一项的系统防火墙规则;
步骤S2、当操作系统处于虚拟化状态并且需要处理一些网络请求时,操作系统会激活虚拟化系统环境特征的Windows防火墙规则,借助Windows防火墙截获所需的网络信息;
步骤S3、基于微软的COM组件模块,Windows平台的应用程序通过COM库提供的查询和枚举功能,获取操作系统中所有的防火墙规则的信息,然后判断是否存在符合虚拟化系统环境特征的防火墙规则;若存在则继续判断规则是否处于激活状态,最后根据结果判断当前运行环境是否为虚拟化环境。
进一步的,所述步骤S3进一步具体包括如下步骤:步骤S31.应用程序调用COM库提供的API CoInitializeEx初始化COM库,如果API调用的返回值为RPC_E_CHANGED_MODE,则进入步骤32,否则判定异常退出,结束检测流程;
步骤32.应用程序调用COM库提供的API WFCOMInitialize初始化防火墙的COM库,如果API调用成功,且通过此API获取的指向INetFwPolicy2接口类实例的指针不为NULL,则进入步骤33,否则判定异常退出,结束检测流程,所述INetFwPolicy2接口允许应用程序或服务访问防火墙策略;
步骤33.应用程序调用调用COM库提供的API INetFwPolicy2::get_Rules检索防火墙规则的集合,获取指向INetFwRules接口类实例的指针,如果API调用成功且获取的指针不为NULL,则进入步骤34,否则判定异常退出,结束流程;
步骤34.应用程序调用COM库提供的API INetFwRules::get_Count获取操作系统中防火墙规则的数量,如果API调用成功则进入步骤35,否则判定异常退出,结束流程;
步骤35.应用程序调用COM库提供的API INetFwRules::get__NewEnum获取用于遍历防火墙规则集合中所有规则的迭代对象,如果API调用成功则进入步骤36,否则判定异常退出,结束流程;
步骤36.结合步骤34获得的规则数量和步骤35获得的迭代对象,遍历防火墙规则集合中的所有规则;根据遍历结果判断当前运行环境是否为虚拟化环境。
进一步的,所述步骤S36进一步具体为:S36.1、应用程序调用COM库提供的APIINetFwRule::get_Grouping,获取当前遍历到的规则对象所属的组,如果调用成功会返回用于描述规则组名称的CHAR类型字符串或WCHAR类型字符串;接着使用字符串匹配算法,分别判断规则组名称特征库中存储的“vmicres.dll,-700”、“icsvc.dll,-700”、L“vmicres.dll,-700”、L“icsvc.dll,-700”这四个字符串是否存在于API返回的规则组名称字符串中,若这四个字符串中的任一字符串存在于API返回的规则组名称字符串中,则进入步骤S36.2,否则进入步骤S36.3;
S36.2、应用程序调用COM库提供的API INetFwRule::get_Enabled,获取当前遍历规则对象的激活状态,如果调用成功,则根据返回结果判断当前遍历的规则对象是否激活;若处于激活状态,则判定应用程序当前运行的环境为虚拟化的操作系统,结束流程,否则进入步骤S36.3;
S36.3、如果已经遍历完毕,即遍历次数等于步骤S34获得的规则数量,则判定不处于虚拟化系统环境中,结束流程;否则进入下一轮遍历,回到步骤S36.1。
进一步的,所述方法应用于:Window8及更高版本的Windows操作系统。
进一步的,所述虚拟化系统环境为运行于Hyper-V、Vmware的基于hypervisor技术实现的虚拟机软件的系统环境。
本发明的有益效果在于:1.本发明可以应用于软件安全领域。应用程序可以使用此技术方案检测当前运行环境是否为虚拟化的操作系统,从而防止攻击者利用虚拟化操作系统环境对程序进行逆向、内存篡改、非法多开等操作,间接地维护正规公司的版权、经济收入等合法权益。
2.本发明针对已经开启并激活特定防火墙规则的系统环境进行专项检测,相对稳定不易出现误报,且与现有的虚拟机检测模块不会发生冲突。
3. 通过枚举Windows操作系统中的防火墙规则,检查虚拟化环境特有的防火墙规则是否存在且处于激活状态,由此判断程序运行的系统环境是否为虚拟化环境,提高了检测的准确性。
附图说明
图1是本发明的方法流程示意图。
图2是本发明遍历防火墙规则集合中的所有规则的流程示意图。
图3是本发明一实施例种虚拟机软件样图。
具体实施方式
下面结合附图对本发明做进一步说明。
请参阅图1所示,本发明的一种通过枚举防火墙规则检测虚拟化环境的方法,所述方法具体包括如下步骤:
步骤S1、Windows平台的应用程序生成一个规则组名称特征库,所述规则组名称特征库中包含:“vmicres.dll,-700”、“icsvc.dll,-700”、L“vmicres.dll,-700”、L“icsvc.dll,-700”这四个字符串中任意一项的系统防火墙规则(即规则组名称特征库中包含2个CHAR字符串类型的数据成员:“vmicres.dll,-700”、“icsvc.dll,-700”和2个WCHAR字符串类型的数据成员L“vmicres.dll,-700”、L“icsvc.dll,-700”);
步骤S2、当操作系统处于虚拟化状态并且需要处理一些网络请求时,操作系统会激活虚拟化系统环境特征的Windows防火墙规则,借助Windows防火墙截获所需的网络信息;因此很多虚拟化的系统环境中可能出现处于激活状态且用于接收特定远程网络请求的系统防火墙规则;换言之,本专利指明的防火墙规则可以作为检测虚拟化系统环境的检测点。若运行于符合上述情形的虚拟化的系统环境中,程序可以通过枚举防火墙规则并判断指定的防火墙规则是否存在且开启来判断系统环境属性;若检测到目标防火墙规则,即可判定当前处于虚拟化的系统环境中。
步骤S3、基于微软的COM组件模块,Windows平台的应用程序通过COM库提供的查询和枚举功能,获取操作系统中所有的防火墙规则的信息,然后判断是否存在符合虚拟化系统环境特征的防火墙规则;若存在则继续判断规则是否处于激活状态,最后根据结果判断当前运行环境是否为虚拟化环境。
其中,所述步骤S3进一步具体包括如下步骤:步骤S31.应用程序调用COM库提供的API CoInitializeEx初始化COM库,如果API调用的返回值为RPC_E_CHANGED_MODE,则进入步骤32,否则判定异常退出,结束检测流程;
步骤32.应用程序调用COM库提供的API WFCOMInitialize初始化防火墙的COM库,如果API调用成功,且通过此API获取的指向INetFwPolicy2接口类实例的指针不为NULL,则进入步骤33,否则判定异常退出,结束检测流程,所述INetFwPolicy2接口允许应用程序或服务访问防火墙策略;
步骤33.应用程序调用调用COM库提供的API INetFwPolicy2::get_Rules检索防火墙规则的集合,获取指向INetFwRules接口类实例的指针,如果API调用成功且获取的指针不为NULL,则进入步骤34,否则判定异常退出,结束流程;
步骤34.应用程序调用COM库提供的API INetFwRules::get_Count获取操作系统中防火墙规则的数量,如果API调用成功则进入步骤35,否则判定异常退出,结束流程;
步骤35.应用程序调用COM库提供的API INetFwRules::get__NewEnum获取用于遍历防火墙规则集合中所有规则的迭代对象,如果API调用成功则进入步骤36,否则判定异常退出,结束流程;
步骤36.结合步骤34获得的规则数量和步骤35获得的迭代对象,遍历防火墙规则集合中的所有规则;根据遍历结果判断当前运行环境是否为虚拟化环境。
如图2所示,所述步骤S36进一步具体为:S36.1、应用程序调用COM库提供的APIINetFwRule::get_Grouping,获取当前遍历到的规则对象所属的组,如果调用成功会返回用于描述规则组名称的CHAR类型字符串或WCHAR类型字符串;接着使用字符串匹配算法,分别判断规则组名称特征库中存储的“vmicres.dll,-700”、“icsvc.dll,-700”、L“vmicres.dll,-700”、L“icsvc.dll,-700”(本方案描述的防火墙规则的作用是支持虚拟化操作系统接收某些网络请求,上述字符串是这些防火墙规则的特征)这四个字符串是否存在于API返回的组名称字符串中(前面没有L标志的字符串是CHAR类型字符串,前面包含L标志的字符串是WCHAR类型的字符串),若这四个字符串中的任一字符串存在于API返回的组名称字符串中,则进入步骤S36.2,否则进入步骤S36.3;
S36.2、应用程序调用COM库提供的API INetFwRule::get_Enabled,获取当前遍历规则对象的激活状态。如果调用成功,则根据返回结果判断当前遍历的规则对象是否激活;若处于激活状态,则判定应用程序当前运行的环境为虚拟化的操作系统,结束流程,否则进入步骤S36.3;(步骤S36.1判定当前系统中存在符合虚拟化操作系统特征的防火墙规则,步骤S36.2判定上述防火墙规则是否处于开启状态,只有特定防火墙规则存在且开启,才能判定应用程序当前运行的环境为虚拟化的操作系统。)
S36.3、如果已经遍历完毕,即遍历次数等于步骤S34获得的规则数量,则判定不处于虚拟化系统环境中,结束流程;否则进入下一轮遍历,回到步骤S36.1。
另外,本发明所述方法应用于:Window8及更高版本的Windows操作系统。所述虚拟化系统环境为运行于Hyper-V、Vmware的基于hypervisor技术实现的虚拟机软件的系统环境。
以下通过例子,描述本专利方案的具体实现:
步骤1.假设某游戏工作室的工作人员A出于非法多开游戏客户端的目的,在数台计算机上每台各运行1个虚拟机软件,每个虚拟机软件均控制多个版本为Windows10或Windows8的操作系统,即这些操作系统处于虚拟化状态中。由于上述操作系统的配置、外部环境、安装和运行的流程均相同,所以本专利任意选取两个虚拟化的操作系统用于讲解流程,Windows8和Windows10各抽取一例,将系统版本为Windows8的样例系统命名为操作系统B,将系统版本为Windows10的样例系统命名为操作系统C。(参见图3为虚拟机软件样图)
步骤2.由于需要使用RPC技术远程控制所有的虚拟化操作系统,所以工作人员A激活操作系统B和操作系统C中用于支持虚拟化操作系统RPC通信的防火墙规则。激活以后,操作系统B中出现1个虚拟化操作系统的特征,即可以枚举出一条处于激活状态且组名称包含字符串“vmicres.dll,-700”或L“vmicres.dll,-700”的防火墙规则;操作系统C中出现1个虚拟化操作系统的特征,即可以枚举出一条处于激活状态且组名称包含字符串“icsvc.dll,-700”或L“icsvc.dll,-700”的防火墙规则。(操作系统的版本特性:在版本为Windows8且支持虚拟化的操作系统中,操作系统一般会自动注册4个组名称中包含字符串“vmicres.dll,-700”或L“vmicres.dll,-700”的防火墙规则;在版本为Windows10且支持虚拟化的操作系统中,操作系统一般会自动注册4个组名称中包含字符串“icsvc.dll,-700”或L“icsvc.dll,-700”的防火墙规则。上述防火墙规则默认处于未激活状态,当且仅当操作系统处于虚拟化状态且需要处理某些网络请求时才会处于激活状态。)
步骤3.工作人员A在操作系统B和操作系统C中运行游戏客户端Db和游戏客户端Dc;其中游戏客户端Db和游戏客户端Dc均采用本方案检测虚拟化操作系统环境。游戏客户端Db和游戏客户端Dc前期初始化的步骤相同,因此在前期初始化的步骤中暂时使用“应用程序”代替。
步骤4.应用程序调用COM库提供的API CoInitializeEx初始化COM库,API调用的返回值为RPC_E_CHANGED_MODE,进入步骤5。
步骤5.应用程序调用COM库提供的API WFCOMInitialize初始化防火墙相关的COM库,且通过此API获取指向INetFwPolicy2接口类实例的指针(INetFwPolicy2接口允许应用程序或服务访问防火墙策略),进入步骤6。
步骤6.应用程序调用调用COM库提供的API INetFwPolicy2::get_Rules检索防火墙规则的集合,获取指向INetFwRules接口类实例的指针,进入步骤7。
步骤7.应用程序调用COM库提供的API INetFwRules::get_Count获取操作系统中防火墙规则的数量,进入步骤8。
步骤8.应用程序调用COM库提供的API INetFwRules::get__NewEnum获取用于遍历防火墙规则集合中所有规则的迭代对象,进入步骤9。
步骤9.结合步骤7获得的规则数量和步骤8获得的迭代对象,遍历防火墙规则集合中的所有规则,遍历的次数即为步骤7获得的规则数量。在每一轮遍历中,应用程序调用COM库提供的API INetFwRule::get_Grouping,获取当前遍历到的规则对象所属的组,如果调用成功会返回用于描述规则组名称的CHAR类型字符串或WCHAR类型字符串。接着使用字符串匹配算法,分别判断规则组名称特征库中存储的“vmicres.dll,-700”、“icsvc.dll,-700”、L“vmicres.dll,-700”、L“icsvc.dll,-700”这四个字符串是否存在于API返回的组名称字符串中。若这四个字符串中的任一字符串存在于API返回的组名称字符串中,应用程序调用COM库提供的API INetFwRule::get_Enabled,获取当前遍历对象的激活状态。若处于激活状态,则判定应用程序当前运行的环境为虚拟化的操作系统,结束流程;否则进入下一轮遍历(若已遍历完毕,则判定当前运行的环境不是虚拟化的操作系统,结束流程)。
步骤10.在步骤9的循环遍历过程中,游戏客户端Db检测到一条组名称包含字符串“vmicres.dll,-700”的防火墙规则,并且检测到此条规则处于激活状态,因此判定当前运行的操作系统环境处于虚拟化状态并且结束检测流程;游戏客户端Dc检测到一条组名称包含字符串“icsvc.dll,-700”的防火墙规则,并且检测到此条规则处于激活状态,因此判定当前运行的操作系统环境处于虚拟化状态并且结束检测流程。
步骤11.应用程序检测到虚拟化系统环境后的后续操作,如应用程序结束自身进程、应用程序将非法运行环境信息回传至服务器等行为属于本方案应用成功后的额外操作,不属于本方案讨论范围,因此不展开叙述。
在这里需要说明的是:
1.在云计算领域中,虚拟化技术是必不可少的基础支持技术。虚拟化技术本质上是一种资源管理技术,它将各种物理资源(如CPU、内存、存储、 甚至网络)抽象和集成到上层系统消除了物理资源间的壁垒,方便用户对这些资源的管理。
操作系统虚拟化技术不在硬件平台,而是在操作系统层进行虚拟化,所有的虚拟机共享同一个操作系统实例,涉及轻量级虚拟化技术和容器化技术。
2. micres.dll和icsvc.dll均为微软提供的用于支持虚拟机集成组件服务的动态链接库。其中,vmicres.dll主要应用于Windows8及其子版本的操作系统上,icsvc.dll主要应用于Windows10及其子版本的操作系统上。
3. CoInitializeEx是 Windows提供的API函数,为当前线程初始化COM库并设置并发模式;应用程序调用COM库中的函数之前必须初始化COM库。
4. INetFwPolicy2接口允许应用程序或服务访问防火墙策略。INetFwPolicy2::get_Rules用于检索防火墙规则的集合,获取指向INetFwRules接口类实例的指针。
5. RPC(Remote Procedure Call)是远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。
Claims (5)
1.一种通过枚举防火墙规则检测虚拟化环境的方法,其特征在于:所述方法具体包括如下步骤:
步骤S1、Windows平台的应用程序生成一个规则组名称特征库,所述规则组名称特征库中包含:“vmicres.dll,-700”、“icsvc.dll,-700”、L“vmicres.dll,-700”、L“icsvc.dll,-700”这四个字符串中任意一项的系统防火墙规则;
步骤S2、当操作系统处于虚拟化状态并且需要处理一些网络请求时,操作系统会激活虚拟化系统环境特征的Windows防火墙规则,借助Windows防火墙截获所需的网络信息;
步骤S3、基于微软的COM组件模块,Windows平台的应用程序通过COM库提供的查询和枚举功能,获取操作系统中所有的防火墙规则的信息,然后判断是否存在符合虚拟化系统环境特征的防火墙规则;若存在则继续判断规则是否处于激活状态,最后根据结果判断当前运行环境是否为虚拟化环境。
2.根据权利要求1所述的一种通过枚举防火墙规则检测虚拟化环境的方法,其特征在于:所述步骤S3进一步具体包括如下步骤:步骤S31.应用程序调用COM库提供的APICoInitializeEx初始化COM库,如果API调用的返回值为RPC_E_CHANGED_MODE,则进入步骤32,否则判定异常退出,结束检测流程;
步骤32.应用程序调用COM库提供的API WFCOMInitialize初始化防火墙的COM库,如果API调用成功,且通过此API获取的指向INetFwPolicy2接口类实例的指针不为NULL,则进入步骤33,否则判定异常退出,结束检测流程,所述INetFwPolicy2接口允许应用程序或服务访问防火墙策略;
步骤33.应用程序调用调用COM库提供的API INetFwPolicy2::get_Rules检索防火墙规则的集合,获取指向INetFwRules接口类实例的指针,如果API调用成功且获取的指针不为NULL,则进入步骤34,否则判定异常退出,结束流程;
步骤34.应用程序调用COM库提供的API INetFwRules::get_Count获取操作系统中防火墙规则的数量,如果API调用成功则进入步骤35,否则判定异常退出,结束流程;
步骤35.应用程序调用COM库提供的API INetFwRules::get__NewEnum获取用于遍历防火墙规则集合中所有规则的迭代对象,如果API调用成功则进入步骤36,否则判定异常退出,结束流程;
步骤36.结合步骤34获得的规则数量和步骤35获得的迭代对象,遍历防火墙规则集合中的所有规则;根据遍历结果判断当前运行环境是否为虚拟化环境。
3.根据权利要求2所述的一种通过枚举防火墙规则检测虚拟化环境的方法,其特征在于:
所述步骤S36进一步具体为:S36.1、应用程序调用COM库提供的API INetFwRule::get_Grouping,获取当前遍历到的规则对象所属的组,如果调用成功会返回用于描述规则组名称的CHAR类型字符串或WCHAR类型字符串;接着使用字符串匹配算法,分别判断规则组名称特征库中存储的“vmicres.dll,-700”、“icsvc.dll,-700”、L“vmicres.dll,-700”、L“icsvc.dll,-700”这四个字符串是否存在于API返回的规则组名称字符串中,若这四个字符串中的任一字符串存在于API返回的规则组名称字符串中,则进入步骤S36.2,否则进入步骤S36.3;
S36.2、应用程序调用COM库提供的API INetFwRule::get_Enabled,获取当前遍历规则对象的激活状态,如果调用成功,则根据返回结果判断当前遍历的规则对象是否激活;若处于激活状态,则判定应用程序当前运行的环境为虚拟化的操作系统,结束流程,否则进入步骤S36.3;
S36.3、如果已经遍历完毕,即遍历次数等于步骤S34获得的规则数量,则判定不处于虚拟化系统环境中,结束流程;否则进入下一轮遍历,回到步骤S36.1。
4.根据权利要求1所述的一种通过枚举防火墙规则检测虚拟化环境的方法,其特征在于:所述方法应用于:Window8及更高版本的Windows操作系统。
5.根据权利要求1所述的一种通过枚举防火墙规则检测虚拟化环境的方法,其特征在于:所述虚拟化系统环境为运行于Hyper-V、Vmware的基于hypervisor技术实现的虚拟机软件的系统环境。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911051882.3A CN110798468B (zh) | 2019-10-31 | 2019-10-31 | 一种通过枚举防火墙规则检测虚拟化环境的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911051882.3A CN110798468B (zh) | 2019-10-31 | 2019-10-31 | 一种通过枚举防火墙规则检测虚拟化环境的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110798468A true CN110798468A (zh) | 2020-02-14 |
CN110798468B CN110798468B (zh) | 2021-11-09 |
Family
ID=69440598
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911051882.3A Active CN110798468B (zh) | 2019-10-31 | 2019-10-31 | 一种通过枚举防火墙规则检测虚拟化环境的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110798468B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111611579A (zh) * | 2020-05-26 | 2020-09-01 | 福建天晴在线互动科技有限公司 | 一种基于驱动特征检测powershadow虚拟环境的方法及其系统 |
CN111611578A (zh) * | 2020-05-26 | 2020-09-01 | 福建天晴在线互动科技有限公司 | 一种检测powershadow虚拟环境的方法及其系统 |
CN112540903A (zh) * | 2020-12-11 | 2021-03-23 | 武汉斗鱼鱼乐网络科技有限公司 | 快速查找防止多开的方法、存储介质、电子设备及系统 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107517119A (zh) * | 2016-06-17 | 2017-12-26 | 阿里巴巴集团控股有限公司 | Vpc环境下的虚拟网络检测方法以及装置 |
CN108245895A (zh) * | 2017-06-30 | 2018-07-06 | 广州华多网络科技有限公司 | 一种检测游戏所处运行环境的方法及系统 |
CN108984265A (zh) * | 2018-05-24 | 2018-12-11 | 深圳市腾讯网络信息技术有限公司 | 检测虚拟机环境的方法及装置 |
US20180359217A1 (en) * | 2017-06-08 | 2018-12-13 | Vmware, Inc. | Application based firewall rule service |
-
2019
- 2019-10-31 CN CN201911051882.3A patent/CN110798468B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107517119A (zh) * | 2016-06-17 | 2017-12-26 | 阿里巴巴集团控股有限公司 | Vpc环境下的虚拟网络检测方法以及装置 |
US20180359217A1 (en) * | 2017-06-08 | 2018-12-13 | Vmware, Inc. | Application based firewall rule service |
CN108245895A (zh) * | 2017-06-30 | 2018-07-06 | 广州华多网络科技有限公司 | 一种检测游戏所处运行环境的方法及系统 |
CN108984265A (zh) * | 2018-05-24 | 2018-12-11 | 深圳市腾讯网络信息技术有限公司 | 检测虚拟机环境的方法及装置 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111611579A (zh) * | 2020-05-26 | 2020-09-01 | 福建天晴在线互动科技有限公司 | 一种基于驱动特征检测powershadow虚拟环境的方法及其系统 |
CN111611578A (zh) * | 2020-05-26 | 2020-09-01 | 福建天晴在线互动科技有限公司 | 一种检测powershadow虚拟环境的方法及其系统 |
CN111611579B (zh) * | 2020-05-26 | 2022-09-23 | 福建天晴在线互动科技有限公司 | 一种基于驱动特征检测powershadow虚拟环境的方法及其系统 |
CN111611578B (zh) * | 2020-05-26 | 2022-09-27 | 福建天晴在线互动科技有限公司 | 一种检测powershadow虚拟环境的方法及其系统 |
CN112540903A (zh) * | 2020-12-11 | 2021-03-23 | 武汉斗鱼鱼乐网络科技有限公司 | 快速查找防止多开的方法、存储介质、电子设备及系统 |
CN112540903B (zh) * | 2020-12-11 | 2022-07-05 | 武汉斗鱼鱼乐网络科技有限公司 | 快速查找防止多开的方法、存储介质、电子设备及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN110798468B (zh) | 2021-11-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110798468B (zh) | 一种通过枚举防火墙规则检测虚拟化环境的方法 | |
US9166988B1 (en) | System and method for controlling virtual network including security function | |
US7565549B2 (en) | System and method for the managed security control of processes on a computer system | |
US9141812B2 (en) | Stateful reference monitor | |
CN110825491B (zh) | 一种基于防火墙注册表特征的虚拟化环境检测方法 | |
KR100786725B1 (ko) | 악성코드 분석 시스템 및 방법 | |
US9183377B1 (en) | Unauthorized account monitoring system and method | |
CN101098226B (zh) | 一种病毒在线实时处理系统及其方法 | |
CA3017936A1 (en) | System and method for reverse command shell detection | |
US20070266433A1 (en) | System and Method for Securing Information in a Virtual Computing Environment | |
Srivastava et al. | Automatic discovery of parasitic malware | |
KR101565590B1 (ko) | 역할기반 접근통제 및 인가된 파일 리스트를 통한 파일접근 통제 통합 시스템 | |
CN109074450A (zh) | 威胁防御技术 | |
Araujo et al. | Improving cybersecurity hygiene through JIT patching | |
US10853457B2 (en) | System and method for program security protection | |
CN115086081B (zh) | 一种蜜罐防逃逸方法及系统 | |
US7784063B2 (en) | Method and apparatus for system caller authentication | |
CN112597492B (zh) | 一种基于Windows内核的二进制可执行文件更改监测方法 | |
JP2023051738A (ja) | マルウェア検出のための有限状態機械に基づく挙動解析 | |
KR20030086722A (ko) | 커널 백도어 탐지 시스템, 이를 이용한 커널 백도어 탐지방법 및 커널 데이터 복구 방법 | |
EP1944676B1 (en) | Stateful reference monitor | |
CN116938605B (zh) | 网络攻击防护方法、装置、电子设备及可读存储介质 | |
US10104099B2 (en) | System and method for monitoring a computer system using machine interpretable code | |
Humphrey et al. | Unified, multi-level intrusion detection in private cloud infrastructures | |
US20160337383A1 (en) | Detecting deviation from a data packet send-protocol in a computer system |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |