CN111611578A - 一种检测powershadow虚拟环境的方法及其系统 - Google Patents
一种检测powershadow虚拟环境的方法及其系统 Download PDFInfo
- Publication number
- CN111611578A CN111611578A CN202010455078.8A CN202010455078A CN111611578A CN 111611578 A CN111611578 A CN 111611578A CN 202010455078 A CN202010455078 A CN 202010455078A CN 111611578 A CN111611578 A CN 111611578A
- Authority
- CN
- China
- Prior art keywords
- name
- system service
- powershow
- environment
- service
- 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
- 238000000034 method Methods 0.000 title claims abstract description 59
- 230000008569 process Effects 0.000 claims description 40
- 230000006870 function Effects 0.000 claims description 18
- 238000004140 cleaning Methods 0.000 claims description 7
- 230000002159 abnormal effect Effects 0.000 claims description 5
- 238000001514 detection method Methods 0.000 description 10
- 238000010586 diagram Methods 0.000 description 3
- 230000006399 behavior Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Human Computer Interaction (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供了一种检测powershadow虚拟环境的方法,所述方法为:步骤10、设置一名称特征库,该名称特征库包含6个powershadow的名称特征,步骤20、遍历操作系统中的系统服务,查看每个系统服务的显示名称或者系统服务名;步骤30、将显示名称或者系统服务名与powershadow软件的名称特征库进行匹配,系统服务的显示名称或者系统服务名是否包含6个名称特征中的任意一条,如果包含则判定为匹配,匹配则说明程序当前运行的系统环境是powershadow构造的虚拟操作环境;如果遍历操作完成后仍没有匹配,则判定不匹配,不匹配则判定当前的系统环境是真实的操作系统环境;从而直接保护软件的安全,间接保护相关人员的利益。
Description
技术领域
本发明涉及计算机系统通信技术领域、软件安全、游戏外挂检测领域,特别是一种检测powershadow虚拟环境的方法及其系统。
背景技术
文件重定向指的是通过技术手段,在某个软件针对某一指定文件进行读、写等操作的过程中,将操作对象篡改为其他文件的行为。
影子系统powershadow软件会通过创建虚拟化影像、文件重定向等一系列的系统底层操作,隔离保护Windows操作系统,同时创建一个和真实操作系统一模一样的虚拟化系统环境;在这个虚拟化系统环境下,其他软件针对真实操作系统的磁盘读、写等操作都会被重定向到powershadow构造的虚拟化系统环境中,不会对真实的操作系统造成任何实质的修改,读取的数据也都来自于虚拟的操作系统环境,大致过程如图1所示。本专利中将powershadow软件构造的这个虚拟化系统环境简称为powershadow虚拟环境。
影子系统powershadow软件被广泛运用于操作系统软件保护领域、恶意代码分析领域的同时,也被别有用心的人恶意用于逆向破解软件、绕过软件自身的保护模块的检测、非法多开软件等,而上述行为可能会损害程序设计者和运营者的利益,因此需要设计并实现一种方案,用于检测程序是否运行于powershadow软件环境下,从而直接保护软件的安全,间接保护相关人员的利益。
专业俗语解释:
系统服务(system services)是指执行指定系统功能的程序、例程或进程,以便支持其他程序,尤其是底层(接近硬件)程序。通过网络提供服务时,服务可以在ActiveDirectory(活动目录)中发布,从而促进了以服务为中心的管理和使用。
GetModuleHandle是一个计算机函数,功能是获取一个应用程序或动态链接库的模块句柄。只有在当前进程的场景中,这个句柄才会有效。
GetProcAddress是一个计算机函数,功能是检索指定的动态链接库(DLL)中的输出库函数地址。
显示名称,即DisplayName,一般硬件设备和驱动程序发行前会为其定制显示名称,作为一种标识。显示名称与服务名称非常类似,但并不是相同的程序属性,是相互独立但又略有关联的程序属性;显示名称和服务名称为不同的服务属性或程序属性。
发明内容
为克服上述问题,本发明的目的是提供一种检测powershadow虚拟环境的方法,用于检测程序是否运行于powershadow软件环境下,从而直接保护软件的安全。
本发明采用以下方案实现:一种检测powershadow虚拟环境的方法,所述方法包括如下步骤:
步骤10、设置一名称特征库,该名称特征库包含6个powershadow的名称特征,6个名称特征分别为字符串PowerShadow Function Service、字符串PowerShadow SystemService、字符串PsFunctionService、字符串PsDkCovr、字符串PsVfilt和字符串PsLFilt;
步骤20、遍历操作系统中的系统服务,查看每个系统服务的显示名称或者系统服务名;
步骤30、将显示名称或者系统服务名与powershadow软件的名称特征库进行匹配,系统服务的显示名称或者系统服务名是否包含6个名称特征中的任意一条,如果包含则判定为匹配,匹配则说明程序当前运行的系统环境是powershadow构造的虚拟操作环境;如果遍历操作完成后仍没有匹配,则判定不匹配,不匹配则判定当前的系统环境是真实的操作系统环境。
进一步的,所述步骤10和步骤20之间还包括:步骤11、调用软件API SCManager获取系统服务的数据库的句柄HANDLE;
步骤12、结合HANDLE调用软件API EnumServicesStatusEx查询所有系统服务的数据集合所占的内存总大小SIZE;
步骤13、向内存管理器申请大小为SIZE的内存空间BUFFER;
步骤14、第二次调用软件API EnumServicesStatusEx,将系统服务的信息表拷贝到内存空间BUFFER中;
步骤15、判断第二次调用软件API EnumServicesStatusEx是否调用成功;否,返回异常,结束流程;是,从内存空间BUFFER中读取操作系统写入的系统服务的信息表,此时BUFFER中存储的系统服务信息表以数组的形式存储数据,此处将此数组命名为DATA_ARRAY,并获得操作系统返回的系统服务总数SERVICE_NUM。
进一步的,所述30进一步具体为:遍历数组DATA_ARRAY中的所有数据成员,最多遍历SERVICE_NUM次;获取数组DATA_ARRAY对应数组成员的显示名称DISPLAY_NAME或者系统服务名SERVER_NAME;使用字符串匹配方式,将显示名称DISPLAY_NAME或者系统服务名SERVER_NAME与名称特征库中的6个名称特征字符串逐一比较,判断显示名称DISPLAY_NAME或者系统服务名SERVER_NAME是否包含6个名称特征字符串中的任一字符串;若包含任一字符串,则判定当前遍历到的系统服务是powershadow程序用于构造虚拟系统的系统服务,进而判定当前运行的系统环境为powershadow程序构造的虚拟系统,清理BUFFER的内存,退出流程,返回是powershadow构造的虚拟操作环境;若6个字符串均未包含,则继续遍历数组DATA_ARRAY的下一个数组成员,如果遍历操作完成后仍没有匹配,则判定不匹配,不匹配则判定当前的系统环境是真实的操作系统环境,清理BUFFER的内存,流程结束。
进一步的,判断第二次调用软件API EnumServicesStatusEx是否调用成功,具体为:应用程序判断软件API EnumServicesStatusEx的返回值;如果返回值不等于S_OK则说明软件API EnumServicesStatusEx调用出错,清理BUFFER的内存,退出流程;如果返回值为S_OK,则说明软件API EnumServicesStatusEx调用成功。
本发明还提供了一种检测powershadow虚拟环境的系统,所述系统包括特征库创建模块、系统服务遍历模块、以及匹配模块;
所述特征库创建模块,用于设置一名称特征库,该名称特征库包含6个powershadow的名称特征,6个名称特征分别为字符串PowerShadow Function Service、字符串PowerShadow System Service、字符串PsFunctionService、字符串PsDkCovr、字符串PsVfilt和字符串PsLFilt;
所述系统服务遍历模块,用于遍历操作系统中的系统服务,查看每个系统服务的显示名称或者系统服务名;
所述匹配模块,将显示名称或者系统服务名与powershadow软件的名称特征库进行匹配,系统服务的显示名称或者系统服务名是否包含6个名称特征中的任意一条,如果包含则判定为匹配,匹配则说明程序当前运行的系统环境是powershadow构造的虚拟操作环境;如果遍历操作完成后仍没有匹配,则判定不匹配,不匹配则判定当前的系统环境是真实的操作系统环境。
进一步的,所述系统还包括获取模块、查询模块、内存申请模块、调用模块、以及获取系统服务信息模块;所述获取模块、查询模块、内存申请模块、调用模块、获取系统服务信息模块设置于所述特征库创建模块和系统服务遍历模块之间;
所述获取模块,用于调用软件API SCManager获取系统服务的数据库的句柄HANDLE;
所述查询模块,用于结合HANDLE调用软件API EnumServicesStatusEx查询所有系统服务的数据集合所占的内存总大小SIZE;
所述内存申请模块,用于向内存管理器申请大小为SIZE的内存空间BUFFER;
所述调用模块,用于第二次调用软件API EnumServicesStatusEx,将系统服务的信息表拷贝到内存空间BUFFER中;
所述获取系统服务信息模块,用于判断第二次调用软件APIEnumServicesStatusEx是否调用成功;否,返回异常,结束流程;是,从内存空间BUFFER中读取操作系统写入的系统服务的信息表,此时BUFFER中存储的系统服务信息表以数组的形式存储数据,此处将此数组命名为DATA_ARRAY,并获得操作系统返回的系统服务总数SERVICE_NUM。
进一步的,所述匹配模块进一步具体为:遍历数组DATA_ARRAY中的所有数据成员,最多遍历SERVICE_NUM次;获取数组DATA_ARRAY对应数组成员的显示名称DISPLAY_NAME或者系统服务名SERVER_NAME;使用字符串匹配方式,将显示名称DISPLAY_NAME或者系统服务名SERVER_NAME与名称特征库中的6个名称特征字符串逐一比较,判断显示名称DISPLAY_NAME或者系统服务名SERVER_NAME是否包含6个名称特征字符串中的任一字符串;若包含任一字符串,则判定当前遍历到的系统服务是powershadow程序用于构造虚拟系统的系统服务,进而判定当前运行的系统环境为powershadow程序构造的虚拟系统,清理BUFFER的内存,退出流程,返回是powershadow构造的虚拟操作环境;若6个字符串均未包含,则继续遍历数组DATA_ARRAY的下一个数组成员,如果遍历操作完成后仍没有匹配,则判定不匹配,不匹配则判定当前的系统环境是真实的操作系统环境,清理BUFFER的内存,流程结束。
进一步的,判断第二次调用软件API EnumServicesStatusEx是否调用成功,具体为:应用程序判断软件API EnumServicesStatusEx的返回值;如果返回值不等于S_OK则说明软件API EnumServicesStatusEx调用出错,清理BUFFER的内存,退出流程;如果返回值为S_OK,则说明软件API EnumServicesStatusEx调用成功。
本发明的有益效果在于:1.针对大量存在的通过powershadow软件绕过程序保护模块或跟踪软件行为的现象,本专利提供了一种检测程序是否运行于powershadow软件环境下的方案;软件可以通过本方案有效地检测当前运行运行环境是否为powershadow软件构造的特殊系统环境,并根据判定结果决定要不要继续运行或展示核心功能。
2.本专利提出的以powershadow系统服务名或者显示名称为检测点的检测方案增加了软件安全领域和知识产权保护领域的技术方案储备。
附图说明
图1是现有的影子系统powershadow软件的工作原理图。
图2是本发明方法的流程示意图。
图3是本发明系统的框架原理图。
具体实施方式
下面结合附图对本发明做进一步说明。
本发明提出的6个名称特征均以字符串的形式被存储于需要检测powershadow虚拟环境的程序文件中(存储过程中是否需要加密保护并非本专利的重点,因此不在本专利中详细讨论)。应用程序以字符串匹配的方式判断当前系统环境下是否有任一系统服务的显示名称或者系统服务名中包含这6个字符串中的任意一个字符串(显示名称或者系统服务名称也以字符串的形式存在,存储于操作系统的内存中,应用程序在不被高权限程序阻止拦截的情况下可以查询到;),若包含则判定这个系统服务为powershadow注册的系统服务,间接验证当前运行的系统环境为powershadow创建的虚拟操作环境。
请参阅图2所示,本发明的一种检测powershadow虚拟环境的方法,所述方法包括如下步骤:
步骤10、设置一名称特征库,该名称特征库包含6个powershadow的名称特征,6个名称特征分别为字符串PowerShadow Function Service、字符串PowerShadow SystemService、字符串PsFunctionService、字符串PsDkCovr、字符串PsVfilt和字符串PsLFilt;
步骤20、遍历操作系统中的系统服务,查看每个系统服务的显示名称或者系统服务名;
步骤30、将显示名称或者系统服务名与powershadow软件的名称特征库进行匹配,系统服务的显示名称或者系统服务名是否包含6个名称特征中的任意一条,如果包含则判定为匹配,匹配则说明程序当前运行的系统环境是powershadow构造的虚拟操作环境;如果遍历操作完成后仍没有匹配,则判定不匹配,不匹配则判定当前的系统环境是真实的操作系统环境。
其中,本发明实施例一(即基于显示名称特征检测powershadow虚拟环境的方法)进一步具体为:
1.在开发powershadow虚拟环境检测功能的相关代码的过程中,开发人员将powershadow的6条名称特征存储于需要检测powershadow虚拟环境的程序文件中。
2.程序启动后,在需要被保护的核心代码执行前,先执行检测powershadow虚拟环境的相关代码,即优先实施本专利的技术方案,在验证当前环境不是powershadow虚拟环境后再执行关键功能,从而实现保护。
3.应用程序通过微软公司提供的软件API SCManager建立了与服务控制管理器的连接,并打开系统服务数据库,获得系统服务数据库的句柄。
4.应用程序调用两次微软公司提供的软件API EnumServicesStatusEx。
4.1.应用程序第一次调用的过程中将lpServices参数填为NULL,这样操作返回的结果为可以查询到的所有系统服务的数据集合所占的内存总大小,此处将此值命名为SIZE。
4.2.应用程序获取SIZE后,向内存管理器申请一块大小为SIZE的内存空间BUFFER,然后再次调用API EnumServicesStatusEx,本次调用过程中将刚才申请的内存空间BUFFER的首字节地址填入到lpServices的参数空间中。
4.3.应用程序判断软件API EnumServicesStatusEx的返回值;如果返回值不等于S_OK则说明API调用出错(S_OK为微软定义的返回值的一种,寓意执行成功),清理BUFFER的内存,退出流程。
4.4.如果返回值为S_OK,则可以从BUFFER中读取操作系统写入的系统服务的信息表,此时BUFFER中存储的系统服务信息表以数组的形式存储数据,此处将此数组命名为DATA_ARRAY,数组中存储的数据的格式为ENUM_SERVICE_STATUS_PROCESS(ENUM_SERVICE_STATUS_PROCESS是微软定义的一种存储系统服务的数据格式)。另外,还可以获得操作系统返回的系统服务的总数SERVICE_NUM。
5.遍历数组DATA_ARRAY中的所有数据成员,最多遍历SERVICE_NUM次。遍历步骤如下:
5.1.第N次遍历的过程中,获得数组DATA_ARRAY的第N个数据成员MEMBER_N。
5.2.获得MEMBER_N的中存储的显示名称DISPLAY_NAME(即数据成员lpDisplayName存储的字符串;lpDisplayName是数据结构体ENUM_SERVICE_STATUS_PROCESS的数据成员之一,以字符串的形式存储系统服务的显示名称)。
5.3.使用字符串匹配的方法,将当前正在比对的显示名称DISPLAY_NAME与名称特征库中的6个特征字符串逐一比较,判断显示名称DISPLAY_NAME是否包含6个特征字符串中的任一字符串。若包含任一字符串,则判定当前遍历到的系统服务是powershadow程序用于构造虚拟系统的系统服务,间接判定当前运行的系统环境为powershadow程序构造的虚拟系统,清理BUFFER的内存,退出流程,返回是;否则回到步骤5.1,继续遍历DATA_ARRAY的下一个数据成员。
6.遍历完成后,如果整个遍历过程中没有检测到匹配项,则判定当前的系统环境是真实的操作系统环境,清理BUFFER的内存,流程结束。
本发明实施例二(即基于系统服务特征检测powershadow虚拟环境的方法)进一步具体为:
1.在开发powershadow虚拟环境检测功能的相关代码的过程中,开发人员将powershadow的6条名称特征存储于需要检测powershadow虚拟环境的程序文件中。
2.程序启动后,在需要被保护的核心代码执行前,先执行检测powershadow虚拟环境的相关代码,即优先实施本专利的技术方案,在验证当前环境不是powershadow虚拟环境后再执行关键功能,从而实现保护。
3.应用程序通过微软公司提供的软件API SCManager建立了与服务控制管理器的连接,并打开系统服务数据库,获得系统服务数据库的句柄。
4.应用程序调用两次微软公司提供的软件API EnumServicesStatusEx。
4.1.应用程序第一次调用的过程中将lpServices参数填为NULL,这样操作返回的结果为可以查询到的所有系统服务的数据集合所占的内存总大小,此处将此值命名为SIZE。
4.2.应用程序获取SIZE后,向内存管理器申请一块大小为SIZE的内存空间BUFFER,然后再次调用API EnumServicesStatusEx,本次调用过程中将刚才申请的内存空间BUFFER的首字节地址填入到lpServices的参数空间中。
4.3.应用程序判断软件API EnumServicesStatusEx的返回值;如果返回值不等于S_OK则说明API调用出错(S_OK为微软定义的返回值的一种,寓意执行成功),清理BUFFER的内存,退出流程。
4.4.如果返回值为S_OK,则可以从BUFFER中读取操作系统写入的系统服务的信息表,此时BUFFER中存储的系统服务信息表以数组的形式存储数据,此处将此数组命名为DATA_ARRAY,数组中存储的数据的格式为ENUM_SERVICE_STATUS_PROCESS(ENUM_SERVICE_STATUS_PROCESS是微软定义的一种存储系统服务的数据格式)。另外,还可以获得操作系统返回的系统服务的总数SERVICE_NUM。
5.遍历数组DATA_ARRAY中的所有数据成员,最多遍历SERVICE_NUM次。遍历步骤如下:
5.1.第N次遍历的过程中,获得数组DATA_ARRAY的第N个数据成员MEMBER_N。
5.2.获得MEMBER_N的中存储的系统服务名SERVER_NAME(即数据成员lpServiceName存储的字符串,lpServiceName是数据结构体ENUM_SERVICE_STATUS_PROCESS的数据成员之一,以字符串的形式存储系统服务的服务名)。
5.3.使用字符串匹配的方法,将当前正在比对的系统服务名SERVER_NAME与名称特征库中的6个特征字符串逐一比较,判断系统服务名SERVER_NAME是否包含6个特征字符串中的任一字符串。若包含任一字符串,则判定当前遍历到的系统服务是powershadow程序用于构造虚拟系统的系统服务,间接判定当前运行的系统环境为powershadow程序构造的虚拟系统,清理BUFFER的内存,退出流程,返回是;否则回到步骤5.1,继续遍历DATA_ARRAY的下一个数据成员。
6.遍历完成后,如果整个遍历过程中没有检测到匹配项,则判定当前的系统环境是真实的操作系统环境,清理BUFFER的内存,流程结束。
下面结合一具体实施例对本发明作进一步说明:
假设某游戏客户端A在启动过程中会进行外挂扫描,扫描外挂的过程中需要对系统数据进行读写。某外挂使用者B为了防止游戏客户端A启动过程中通过读写系统数据和系统文件的方式扫描到自己使用的外挂,于是先开启powershadow程序,然后在powershadow程序构造的虚拟系统环境中启动游戏客户端A,企图以这种方式绕过游戏客户端A的外挂检测功能。游戏客户端A采用本专利提供的技术方案。
1.游戏客户端A被外挂使用者B在powershadow构造的虚拟系统环境中启动。
2.游戏客户端A通过微软API SCManager建立了与服务控制管理器的连接,并打开系统服务数据库,获得系统服务数据库的句柄。
3.游戏客户端A通过微软API EnumServicesStatusEx获得存储系统服务表所需的内存空间大小SIZE。
4.游戏客户端A通过微软API VirtualAlloc申请一篇大小为SIZE的内存空间BUFFER。
5.游戏客户端调用API EnumServicesStatusEx获得当前系统服务的总数SERVICE_NUM,同时操作系统将系统服务表拷贝到了内存空间BUFFER中。游戏客户端从BUFFER中提取出存储系统服务表的数组的DATA_ARRAY。
6.游戏客户端A遍历DATA_ARRAYR数组中的成员NUMBER_N,获得NUMBER_N系统服务的显示名称字符串DISPLAY_NAME或系统服务名称字符串SRV_NAME,然后通过字符串比较的方式,校验名称数据库中的6个名称特征字符串是否被包含于DISPLAY_NAME字符串或系统服务名称字符串SRV_NAME中。
7.游戏客户端A在遍历到第3个系统服务的时候(即此时的数组成员为NUMBER_3),发现NUMBER_3的显示名称为“PsDkCovrrrr.sys”,包含名称特征库中的名称特征字符串“PsDkCovr”,由此判定NUMBER_3对应的系统服务是用于为软件powershadow的虚拟系统环境提供底层支持的系统服务,进而判定当前的系统环境为powershadow构造的虚拟系统环境。返回是,退出循环。
8.游戏客户端A清除申请的内存空间BUFFER,退出流程。
请参阅图3所示,本发明还提供了一种检测powershadow虚拟环境的系统,所述系统包括特征库创建模块、获取模块、查询模块、内存申请模块、调用模块、获取系统服务信息模块、系统服务遍历模块、以及匹配模块;
所述特征库创建模块,用于设置一名称特征库,该名称特征库包含6个powershadow的名称特征,6个名称特征分别为字符串PowerShadow Function Service、字符串PowerShadow System Service、字符串PsFunctionService、字符串PsDkCovr、字符串PsVfilt和字符串PsLFilt;
所述获取模块,用于调用软件API SCManager获取系统服务的数据库的句柄HANDLE;
所述查询模块,用于结合HANDLE调用软件API EnumServicesStatusEx查询所有系统服务的数据集合所占的内存总大小SIZE;
所述内存申请模块,用于向内存管理器申请大小为SIZE的内存空间BUFFER;
所述调用模块,用于第二次调用软件API EnumServicesStatusEx,将系统服务的信息表拷贝到内存空间BUFFER中;
所述获取系统服务信息模块,用于判断第二次调用软件APIEnumServicesStatusEx是否调用成功;否,返回异常,结束流程;是,从内存空间BUFFER中读取操作系统写入的系统服务的信息表,此时BUFFER中存储的系统服务信息表以数组的形式存储数据,此处将此数组命名为DATA_ARRAY,并获得操作系统返回的系统服务总数SERVICE_NUM。
所述系统服务遍历模块,用于遍历操作系统中的系统服务,查看每个系统服务的显示名称或者系统服务名;
所述匹配模块,将显示名称或者系统服务名与powershadow软件的名称特征库进行匹配,系统服务的显示名称或者系统服务名是否包含6个名称特征中的任意一条,如果包含则判定为匹配,匹配则说明程序当前运行的系统环境是powershadow构造的虚拟操作环境;如果遍历操作完成后仍没有匹配,则判定不匹配,不匹配则判定当前的系统环境是真实的操作系统环境。
进一步的,所述匹配模块进一步具体为:遍历数组DATA_ARRAY中的所有数据成员,最多遍历SERVICE_NUM次;获取数组DATA_ARRAY对应数组成员的显示名称DISPLAY_NAME或者系统服务名SERVER_NAME;使用字符串匹配方式,将显示名称DISPLAY_NAME或者系统服务名SERVER_NAME与名称特征库中的6个名称特征字符串逐一比较,判断显示名称DISPLAY_NAME或者系统服务名SERVER_NAME是否包含6个名称特征字符串中的任一字符串;若包含任一字符串,则判定当前遍历到的系统服务是powershadow程序用于构造虚拟系统的系统服务,进而判定当前运行的系统环境为powershadow程序构造的虚拟系统,清理BUFFER的内存,退出流程,返回是powershadow构造的虚拟操作环境;若6个字符串均未包含,则继续遍历数组DATA_ARRAY的下一个数组成员,如果遍历操作完成后仍没有匹配,则判定不匹配,不匹配则判定当前的系统环境是真实的操作系统环境,清理BUFFER的内存,流程结束。
进一步的,判断第二次调用软件API EnumServicesStatusEx是否调用成功,具体为:应用程序判断软件API EnumServicesStatusEx的返回值;如果返回值不等于S_OK则说明软件API EnumServicesStatusEx调用出错,清理BUFFER的内存,退出流程;如果返回值为S_OK,则说明软件API EnumServicesStatusEx调用成功。
总之,本方案适用于Windows操作平台的应用程序。专利的原理为:powershadow软件通过创建系统服务,实现对底层驱动程序的控制,因此其自带的系统服务的名称特征可以作为软件特征用于检测。
本专利提供一个检测点:操作系统中的所有系统服务的显示名称或者系统服务名。检测方案为遍历操作系统中的系统服务,查看每个系统服务的显示名称或者系统服务名,然后将显示名称或者系统服务名与powershadow软件的名称特征库进行匹配,如果成功匹配则说明程序当前运行的系统环境并非真实的操作系统环境,而是powershadow构造的虚拟操作环境,否则判定当前的系统环境不是powershadow构造的虚拟系统环境。
另外,本专利提供一个powershadow软件的名称特征库,名称特征库包含6个powershadow的名称特征,这6个名称特征分别为字符串“PowerShadow FunctionService”、字符串“PowerShadow System Service”、字符串"PsFunctionService"、字符串"PsDkCovr"、字符串"PsVfilt"和字符串"PsLFilt"。(因为版本化差异等原因,powershadow构造的虚拟化环境可能存在上述6个特征中的一个或多个特征,不一定全部存在,但至少会存在一个)软件程序可以通过对比当前正在进行对比匹配的系统服务的显示名称是否包含6个特征中的任意一条,如果包含则判定为匹配,如果遍历操作完成后仍没有匹配案例出现,则判定不匹配。运行于powershadow虚拟系统环境中的程序至少可以检测到一个系统服务的显示名称中包含本专利提供的6个特征字符串中的任意一个特征字符串,即运行于powershadow系统环境中的程序按照本专利提供的检测方案进行检测,至少会出现一次匹配案例。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。
Claims (8)
1.一种检测powershadow虚拟环境的方法,其特征在于:所述方法包括如下步骤:
步骤10、设置一名称特征库,该名称特征库包含6个powershadow的名称特征,6个名称特征分别为字符串PowerShadow Function Service、字符串PowerShadow SystemService、字符串PsFunctionService、字符串PsDkCovr、字符串PsVfilt和字符串PsLFilt;
步骤20、遍历操作系统中的系统服务,查看每个系统服务的显示名称或者系统服务名;
步骤30、将显示名称或者系统服务名与powershadow软件的名称特征库进行匹配,系统服务的显示名称或者系统服务名是否包含6个名称特征中的任意一条,如果包含则判定为匹配,匹配则说明程序当前运行的系统环境是powershadow构造的虚拟操作环境;如果遍历操作完成后仍没有匹配,则判定不匹配,不匹配则判定当前的系统环境是真实的操作系统环境。
2.根据权利要求1所述的一种检测powershadow虚拟环境的方法,其特征在于:所述步骤10和步骤20之间还包括:步骤11、调用软件API SCManager获取系统服务的数据库的句柄HANDLE;
步骤12、结合HANDLE调用软件API EnumServicesStatusEx查询所有系统服务的数据集合所占的内存总大小SIZE;
步骤13、向内存管理器申请大小为SIZE的内存空间BUFFER;
步骤14、第二次调用软件API EnumServicesStatusEx,将系统服务的信息表拷贝到内存空间BUFFER中;
步骤15、判断第二次调用软件API EnumServicesStatusEx是否调用成功;否,返回异常,结束流程;是,从内存空间BUFFER中读取操作系统写入的系统服务的信息表,此时BUFFER中存储的系统服务信息表以数组的形式存储数据,此处将此数组命名为DATA_ARRAY,并获得操作系统返回的系统服务总数SERVICE_NUM。
3.根据权利要求2所述的一种检测powershadow虚拟环境的方法,其特征在于:所述30进一步具体为:遍历数组DATA_ARRAY中的所有数据成员,最多遍历SERVICE_NUM次;获取数组DATA_ARRAY对应数组成员的显示名称DISPLAY_NAME或者系统服务名SERVER_NAME;使用字符串匹配方式,将显示名称DISPLAY_NAME或者系统服务名SERVER_NAME与名称特征库中的6个名称特征字符串逐一比较,判断显示名称DISPLAY_NAME或者系统服务名SERVER_NAME是否包含6个名称特征字符串中的任一字符串;若包含任一字符串,则判定当前遍历到的系统服务是powershadow程序用于构造虚拟系统的系统服务,进而判定当前运行的系统环境为powershadow程序构造的虚拟系统,清理BUFFER的内存,退出流程,返回是powershadow构造的虚拟操作环境;若6个字符串均未包含,则继续遍历数组DATA_ARRAY的下一个数组成员,如果遍历操作完成后仍没有匹配,则判定不匹配,不匹配则判定当前的系统环境是真实的操作系统环境,清理BUFFER的内存,流程结束。
4.根据权利要求2所述的一种检测powershadow虚拟环境的方法,其特征在于:判断第二次调用软件API EnumServicesStatusEx是否调用成功,具体为:应用程序判断软件APIEnumServicesStatusEx的返回值;如果返回值不等于S_OK则说明软件APIEnumServicesStatusEx调用出错,清理BUFFER的内存,退出流程;如果返回值为S_OK,则说明软件API EnumServicesStatusEx调用成功。
5.一种检测powershadow虚拟环境的系统,其特征在于:所述系统包括特征库创建模块、系统服务遍历模块、以及匹配模块;
所述特征库创建模块,用于设置一名称特征库,该名称特征库包含6个powershadow的名称特征,6个名称特征分别为字符串PowerShadow Function Service、字符串PowerShadow System Service、字符串PsFunctionService、字符串PsDkCovr、字符串PsVfilt和字符串PsLFilt;
所述系统服务遍历模块,用于遍历操作系统中的系统服务,查看每个系统服务的显示名称或者系统服务名;
所述匹配模块,将显示名称或者系统服务名与powershadow软件的名称特征库进行匹配,系统服务的显示名称或者系统服务名是否包含6个名称特征中的任意一条,如果包含则判定为匹配,匹配则说明程序当前运行的系统环境是powershadow构造的虚拟操作环境;如果遍历操作完成后仍没有匹配,则判定不匹配,不匹配则判定当前的系统环境是真实的操作系统环境。
6.根据权利要求5所述的一种检测powershadow虚拟环境的系统,其特征在于:所述系统还包括获取模块、查询模块、内存申请模块、调用模块、以及获取系统服务信息模块;所述获取模块、查询模块、内存申请模块、调用模块、获取系统服务信息模块设置于所述特征库创建模块和系统服务遍历模块之间;
所述获取模块,用于调用软件API SCManager获取系统服务的数据库的句柄HANDLE;所述查询模块,用于结合HANDLE调用软件API EnumServicesStatusEx查询所有系统服务的数据集合所占的内存总大小SIZE;
所述内存申请模块,用于向内存管理器申请大小为SIZE的内存空间BUFFER;
所述调用模块,用于第二次调用软件APIEnumServicesStatusEx,将系统服务的信息表拷贝到内存空间BUFFER中;
所述获取系统服务信息模块,用于判断第二次调用软件API EnumServicesStatusEx是否调用成功;否,返回异常,结束流程;是,从内存空间BUFFER中读取操作系统写入的系统服务的信息表,此时BUFFER中存储的系统服务信息表以数组的形式存储数据,此处将此数组命名为DATA_ARRAY,并获得操作系统返回的系统服务总数SERVICE_NUM。
7.根据权利要求6所述的一种检测powershadow虚拟环境的系统,其特征在于:所述匹配模块进一步具体为:遍历数组DATA_ARRAY中的所有数据成员,最多遍历SERVICE_NUM次;获取数组DATA_ARRAY对应数组成员的显示名称DISPLAY_NAME或者系统服务名SERVER_NAME;使用字符串匹配方式,将显示名称DISPLAY_NAME或者系统服务名SERVER_NAME与名称特征库中的6个名称特征字符串逐一比较,判断显示名称DISPLAY_NAME或者系统服务名SERVER_NAME是否包含6个名称特征字符串中的任一字符串;若包含任一字符串,则判定当前遍历到的系统服务是powershadow程序用于构造虚拟系统的系统服务,进而判定当前运行的系统环境为powershadow程序构造的虚拟系统,清理BUFFER的内存,退出流程,返回是powershadow构造的虚拟操作环境;若6个字符串均未包含,则继续遍历数组DATA_ARRAY的下一个数组成员,如果遍历操作完成后仍没有匹配,则判定不匹配,不匹配则判定当前的系统环境是真实的操作系统环境,清理BUFFER的内存,流程结束。
8.根据权利要求6所述的一种检测powershadow虚拟环境的系统,其特征在于:判断第二次调用软件API EnumServicesStatusEx是否调用成功,具体为:应用程序判断软件APIEnumServicesStatusEx的返回值;如果返回值不等于S_OK则说明软件APIEnumServicesStatusEx调用出错,清理BUFFER的内存,退出流程;如果返回值为S_OK,则说明软件API EnumServicesStatusEx调用成功。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010455078.8A CN111611578B (zh) | 2020-05-26 | 2020-05-26 | 一种检测powershadow虚拟环境的方法及其系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010455078.8A CN111611578B (zh) | 2020-05-26 | 2020-05-26 | 一种检测powershadow虚拟环境的方法及其系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111611578A true CN111611578A (zh) | 2020-09-01 |
CN111611578B CN111611578B (zh) | 2022-09-27 |
Family
ID=72195994
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010455078.8A Active CN111611578B (zh) | 2020-05-26 | 2020-05-26 | 一种检测powershadow虚拟环境的方法及其系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111611578B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7797733B1 (en) * | 2004-01-08 | 2010-09-14 | Symantec Corporation | Monitoring and controlling services |
US8365297B1 (en) * | 2011-12-28 | 2013-01-29 | Kaspersky Lab Zao | System and method for detecting malware targeting the boot process of a computer using boot process emulation |
CN103077351A (zh) * | 2012-12-20 | 2013-05-01 | 北京奇虎科技有限公司 | 虚拟机系统的反检测系统 |
CN110798468A (zh) * | 2019-10-31 | 2020-02-14 | 福建天晴在线互动科技有限公司 | 一种通过枚举防火墙规则检测虚拟化环境的方法 |
CN110825491A (zh) * | 2019-10-31 | 2020-02-21 | 福建天晴在线互动科技有限公司 | 一种基于防火墙注册表特征的虚拟化环境检测方法 |
-
2020
- 2020-05-26 CN CN202010455078.8A patent/CN111611578B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7797733B1 (en) * | 2004-01-08 | 2010-09-14 | Symantec Corporation | Monitoring and controlling services |
US8365297B1 (en) * | 2011-12-28 | 2013-01-29 | Kaspersky Lab Zao | System and method for detecting malware targeting the boot process of a computer using boot process emulation |
CN103077351A (zh) * | 2012-12-20 | 2013-05-01 | 北京奇虎科技有限公司 | 虚拟机系统的反检测系统 |
CN110798468A (zh) * | 2019-10-31 | 2020-02-14 | 福建天晴在线互动科技有限公司 | 一种通过枚举防火墙规则检测虚拟化环境的方法 |
CN110825491A (zh) * | 2019-10-31 | 2020-02-21 | 福建天晴在线互动科技有限公司 | 一种基于防火墙注册表特征的虚拟化环境检测方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111611578B (zh) | 2022-09-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7849179B2 (en) | System and program for managing devices in a network | |
US8997253B2 (en) | Method and system for preventing browser-based abuse | |
US6931550B2 (en) | Mobile application security system and method | |
US7743414B2 (en) | System and method for executing a permissions recorder analyzer | |
CN102054149B (zh) | 一种恶意代码行为特征提取方法 | |
US6973578B1 (en) | System, method and computer program product for process-based selection of virus detection actions | |
US7716641B2 (en) | Method and system for automatically identifying and marking subsets of localizable resources | |
RU2514140C1 (ru) | Система и способ увеличения качества обнаружений вредоносных объектов с использованием правил и приоритетов | |
US7734914B1 (en) | System and method for allowing applications to securely access files | |
EP0989489A2 (en) | A platform independent object and object viewer loader and method | |
US20150121533A1 (en) | Dynamic analysis interpreter modification for application dataflow | |
EP1399808A2 (en) | Binding by hash | |
US6917953B2 (en) | System and method for verifying database security across multiple platforms | |
CN110427758B (zh) | 位置欺骗检测方法、智能终端及存储介质 | |
CN111538659A (zh) | 业务场景的接口测试方法、系统、电子设备和存储介质 | |
US7617492B2 (en) | Extensible command line parsing | |
CN111611578B (zh) | 一种检测powershadow虚拟环境的方法及其系统 | |
CN112559344A (zh) | 远程mock测试方法及系统 | |
US7644316B2 (en) | System, method and program for managing browser scripts sent from server to client | |
US20050028152A1 (en) | Method and apparatus for identifying a Java class package name without disassembling Java bytecodes | |
CN115495731A (zh) | 面向容器主机平台的轻量级攻击检测方法及装置 | |
US20030204525A1 (en) | Application control method, and implementation device and processing program for the same | |
KR20030086722A (ko) | 커널 백도어 탐지 시스템, 이를 이용한 커널 백도어 탐지방법 및 커널 데이터 복구 방법 | |
US6862733B1 (en) | Generic method for programmatically locating and executing any application | |
US7269845B1 (en) | Mobile application security system and method |
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 |