CN115543463A - 一种检测傀儡进程创建的方法及系统 - Google Patents
一种检测傀儡进程创建的方法及系统 Download PDFInfo
- Publication number
- CN115543463A CN115543463A CN202211318969.4A CN202211318969A CN115543463A CN 115543463 A CN115543463 A CN 115543463A CN 202211318969 A CN202211318969 A CN 202211318969A CN 115543463 A CN115543463 A CN 115543463A
- Authority
- CN
- China
- Prior art keywords
- handle
- file
- current
- white list
- path
- 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 348
- 230000008569 process Effects 0.000 title claims abstract description 320
- 238000013475 authorization Methods 0.000 claims abstract description 4
- 230000006870 function Effects 0.000 claims description 56
- 238000010926 purge Methods 0.000 claims description 2
- 230000007812 deficiency Effects 0.000 abstract description 2
- 238000001514 detection method Methods 0.000 description 8
- 230000007547 defect Effects 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 230000002708 enhancing effect Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
Images
Classifications
-
- 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/4401—Bootstrapping
- G06F9/4406—Loading of operating system
- G06F9/4408—Boot device selection
-
- 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/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/566—Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Storage Device Security (AREA)
Abstract
本发明的实施例公开了一种检测傀儡进程创建的方法及系统,方法包括:编写驱动程序,注册进程句柄的前操作回调函数;在编写的前操作回调函数中,对进程句柄的信息进行检查,若检查通过,则获取当前进程文件的完整路径;获取当前进程文件的完整路径和散列值,判断当前进程文件是否在白名单中;若进程句柄信息检查通过,且当前进程文件不在白名单内,则清除该进程句柄写入目标进程的权限,阻止傀儡进程的创建;若进程句柄信息检查不通过,或当前进程文件在白名单内,则为进程句柄授予写入目标进程的权限。系统包括驱动程序编写模块,回调函数判断模块,路径判断模块、清除模块和授权模块。本发明能够能够在企图创建傀儡进程时加以检测,有效弥补了现有检测傀儡进程创建手段的不足。
Description
技术领域
本发明涉及检测傀儡进程创建技术领域,特别涉及一种检测傀儡进程创建的方法及系统。
背景技术
创建傀儡进程是攻击者常用的攻击手段,具有隐蔽性高的特点。现有检测傀儡进程创建的手段都是傀儡进程已经创建并且在傀儡进程的主线程运行时经过由
PsSetCreateProcessNotifyRoutine\PsSetCreateProcessNotifyRoutine Ex\PsSetCreateProcessNotifyRoutineEx2(内核编程接口函数)创建的进程回调时进行内存扫描,这种检测手段存在以下两点不足:一是傀儡进程已经创建;二是通过扫描内存检测存在效率低、浪费系统性能的问题。
发明内容
有鉴于此,本发明实施例的目的在于提供一种检测傀儡进程创建的方法及系统,能够在企图创建傀儡进程时加以检测,有效弥补了现有检测傀儡进程创建手段的不足。
第一方面,本发明实施例提供了一种检测傀儡进程创建的方法,其中,包括:
编写驱动程序,注册进程句柄的前操作回调函数。
在编写的前操作回调函数中,对进程句柄的信息进行检查,若检查通过,则获取当前进程文件的完整路径。
获取当前进程文件的完整路径和散列值,判断当前进程文件是否在白名单中。
若进程句柄信息检查通过,且当前进程文件不在白名单内,则清除该进程句柄写入目标进程的权限,阻止傀儡进程的创建。
若进程句柄信息检查不通过,或当前进程文件在白名单内,则为进程句柄授予写入目标进程的权限。
结合第一方面,本发明实施例提供了第一方面的第一种可能的实施方式,其中,所述编写驱动程序,注册进程句柄的前操作回调函数,包括:
调用ObRegisterCallbacks内核编程接口函数注册进程句柄的ObjectPreCallback前操作回调函数。
设置该前操作回调函数的第二个参数记为PreOperationInfo,包含进程句柄对应的内核对象。
结合第一方面,本发明实施例提供了第一方面的第二种可能的实施方式,其中,所述在编写的前操作回调函数中,对进程句柄的信息进行检查,若检查通过,则获取当前进程文件的完整路径,包括:
第一判断,若前操作回调函数中当前IRQL中断请求级别不为被动级别PASSIVE_LEVEL,则返回成功。
或者,进行第二判断,若当前句柄为内核句柄,则返回成功。具体的,若PreOperationInfo->KernelHandle为TRUE,则返回成功。
或者,进行第三判断,若进程句柄对应的内核对象类型PreOperationInfo->ObjectType不为进程对象*PsProcessType,则返回成功。
或者,进行第四判断,若进程句柄对应的内核对象PreOperationInfo->Object等于当前进程对象,则返回成功。具体的,若进程句柄对应的内核对象PreOperationInfo->Object等于调用内核编程接口函数PsGetCurrentProcess的返回值,则返回成功。
或者,进行第五判断,若对进程句柄的操作PreOperationInfo->Operation既不为句柄创建OB_OPERATION_HANDLE_CREATE,也不为句柄复制OB_OPERATION_HANDLE_DUPLICATE,则返回成功。具体的,若PreOperationInfo->Operation不为OB_OPERATION_HANDLE_CREATE,且PreOperationInfo->Operation不为OB_OPERATION_HANDLE_DUPLICATE,则返回成功。
结合第一方面,本发明实施例提供了第一方面的第三种可能的实施方式,其中,所述获取当前进程文件的完整路径和散列值,判断当前进程文件是否在白名单中,包括:
获取当前进程的文件的完整路径,查找当前进程的文件路径是否在文件路径白名单里,若在则返回成功。
若当前进程不在文件路径白名单,则计算该文件内容的hash散列值,查找该hash散列值是否在hash散列值路径白名单中,若在hash散列值白名单中则返回成功。
结合第一方面,本发明实施例提供了第一方面的第四种可能的实施方式,其中,所述若进程句柄信息检查通过,且当前进程文件不在白名单内,则清除该进程句柄写入目标进程的权限,阻止傀儡进程的创建,包括:
判断为进程句柄授予的权限DesiredAccess中是否包含进程虚拟内存写权限PROCESS_VM_WRITE或者进程虚拟内存操作权限PROCESS_VM_OPERATION。
将为进程句柄授予的权限DesiredAccess中包含的进程虚拟内存写权限PROCESS_VM_WRITE和进程虚拟内存操作权限PROCESS_VM_OPERATION标志清除并返回,让试图打开对应目标进程的句柄没有写入目标进程虚拟内存和操作目标进程虚拟内存的权限。
第二方面,本发明实施例还提供了一种检测傀儡进程创建的系统,其中,包括:
驱动程序编写模块,用于编写驱动程序,注册进程句柄的前操作回调函数。
回调函数判断模块,用于在编写的前操作回调函数中,对进程句柄的信息进行检查,若检查通过,则获取当前进程文件的完整路径。
路径判断模块,用于获取当前进程文件的完整路径和散列值,判断当前进程文件是否在白名单中。
清除模块,用于若进程句柄信息检查通过,且当前进程文件不在白名单内,则清除该进程句柄写入目标进程的权限,阻止傀儡进程的创建。
授权模块,用于若进程句柄信息检查不通过,或当前进程文件在白名单内,则为进程句柄授予写入目标进程的权限DesiredAccess。
结合第二方面,本发明实施例提供了第二方面的第一种可能的实施方式,其中,所述驱动程序编写模块包括:
进程句柄注册单元,用于调用ObRegisterCallbacks内核编程接口函数注册进程句柄的ObjectPreCallback前操作回调函数。
参数设置单元,用于设置该前操作回调函数的第二个参数记为PreOperationInfo,包含进程句柄对应的内核对象。
结合第二方面,本发明实施例提供了第二方面的第二种可能的实施方式,其中,所述回调函数判断模块包括:
中断请求级别判断单元,用于第一判断,若前操作回调函数中当前IRQL中断请求级别不为被动级别PASSIVE_LEVEL,则返回成功。
句柄判断单元,用于,进行第二判断,若当前句柄为内核句柄,则返回成功。
内核对象类型判断单元,用于,进行第三判断,若进程句柄对应的内核对象类型PreOperationInfo->ObjectType不为进程对象*PsProcessType,则返回成功。
内核对象判断单元,用于,进行第四判断,若进程句柄对应的内核对象PreOperationInfo->Object等于当前进程对象,则返回成功。
句柄创建方式判断单元,用于,进行第五判断,若对进程句柄的操作PreOperationInfo->Operation既不为句柄创建OB_OPERATION_HANDLE_CREATE,也不为句柄复制OB_OPERATION_HANDLE_DUPLICATE,则返回成功。
结合第二方面,本发明实施例提供了第二方面的第三种可能的实施方式,其中,所述路径判断模块包括:
完整路径判断单元,用于获取当前进程的文件的完整路径,查找当前进程的文件路径是否在文件路径白名单里,若在则返回成功。
散列值路径判断单元,用于若当前进程不在文件路径白名单,则计算该文件内容的hash散列值,查找该hash散列值是否在hash散列值路径白名单中,若在hash散列值白名单中则返回成功。
结合第二方面,本发明实施例提供了第二方面的第四种可能的实施方式,其中,所述清除模块包括:
进程句柄权限判断单元,用于判断为进程句柄授予的权限DesiredAccess中是否包含进程虚拟内存写权限PROCESS_VM_WRITE或者进程虚拟内存操作权限PROCESS_VM_OPERATION。
清除执行单元,用于将为进程句柄授予的权限DesiredAccess中包含的进程虚拟内存写权限PROCESS_VM_WRITE和进程虚拟内存操作权限PROCESS_VM_OPERATION标志清除并返回,让试图打开对应目标进程的句柄没有写入目标进程虚拟内存和操作目标进程虚拟内存的权限。
本发明实施例的有益效果是:
本发明针对Windows平台傀儡进程创建的问题,提供了一种检测傀儡进程创建的方法及系统,在企图创建傀儡进程时就加以检测,对所有傀儡进程创建手段均有效,增强检测Windows平台傀儡进程的能力,有效弥补了现有检测傀儡进程创建手段的不足。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明检测傀儡进程创建方法的流程示意图;
图2为本发明检测傀儡进程创建方法的完整流程图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件能够以各种不同的配置来布置和设计。
请参照图1至图2,本发明的第一个实施例提供一种检测傀儡进程创建的方法,其中,包括:
编写驱动程序,注册进程句柄的前操作回调函数。
在编写的前操作回调函数中,对进程句柄的信息进行检查,若检查通过,则获取当前进程文件的完整路径。
获取当前进程文件的完整路径和散列值,判断当前进程文件是否在白名单中。
若进程句柄信息检查通过,且当前进程文件不在白名单内,则清除该进程句柄写入目标进程的权限,阻止傀儡进程的创建。
若进程句柄信息检查不通过,或当前进程文件在白名单内,则为进程句柄授予写入目标进程的权限。
其中,所述编写驱动程序,注册进程句柄的前操作回调函数,包括:
调用ObRegisterCallbacks内核编程接口函数注册进程句柄的ObjectPreCallback前操作回调函数。
设置该前操作回调函数的第二个参数记为PreOperationInfo,包含进程句柄对应的内核对象。
其中,ObRegisterCallbacks保护进程函数为内核函数,用于进程保护。通过该函数设置的回调函数,可设置对某个进程或线程句柄进行操作的前或后执行。
其中,所述在编写的前操作回调函数中,对进程句柄的信息进行检查,若检查通过,则获取当前进程文件的完整路径,包括:
第一判断,若前操作回调函数中当前IRQL中断请求级别不为被动级别PASSIVE_LEVEL,则返回成功。
其中,IRQL中断请求级别为Interrupt ReQuest Level的英文缩写,用于划分在windows下中断的优先级。
或者,进行第二判断,若当前句柄为内核句柄,则返回成功。具体的,若PreOperationInfo->KernelHandle为TRUE,则返回成功。
或者,进行第三判断,若进程句柄对应的内核对象类型PreOperationInfo->ObjectType不为进程对象*PsProcessType,则返回成功。
或者,进行第四判断,若进程句柄对应的内核对象PreOperationInfo->Object等于当前进程对象,则返回成功。具体的,若进程句柄对应的内核对象PreOperationInfo->Object等于调用内核编程接口函数PsGetCurrentProcess的返回值,则返回成功。
或者,进行第五判断,若对进程句柄的操作PreOperationInfo->Operation既不为句柄创建OB_OPERATION_HANDLE_CREATE,也不为句柄复制OB_OPERATION_HANDLE_DUPLICATE,则返回成功。具体的,若PreOperationInfo->Operation不为OB_OPERATION_HANDLE_CREATE,且PreOperationInfo->Operation不为OB_OPERATION_HANDLE_DUPLICATE,则返回成功。
其中,所述获取当前进程文件的完整路径和散列值,判断当前进程文件是否在白名单中,包括:
获取当前进程的文件的完整路径,查找当前进程的文件路径是否在文件路径白名单里,若在则返回成功。
若当前进程不在文件路径白名单,则计算该文件内容的hash散列值,查找该hash散列值是否在hash散列值路径白名单中,若在hash散列值白名单中则返回成功。
其中,hash散列值是利用哈希存储方式组织的文件,也称为直接存取文件。
其中,所述若进程句柄信息检查通过,且当前进程文件不在白名单内,则清除该进程句柄写入目标进程的权限,阻止傀儡进程的创建,包括:
判断为进程句柄授予的权限DesiredAccess中是否包含进程虚拟内存写权限PROCESS_VM_WRITE或者进程虚拟内存操作权限PROCESS_VM_OPERATION。
将为进程句柄授予的权限DesiredAccess中包含的进程虚拟内存写权限PROCESS_VM_WRITE和进程虚拟内存操作权限PROCESS_VM_OPERATION标志清除并返回,让试图打开对应目标进程的句柄没有写入目标进程虚拟内存和操作目标进程虚拟内存的权限。
其中,DesiredAccess为进程句柄授予的权限包含了标识请求访问该文件的掩码。
本发明的第二个实施例提供一种检测傀儡进程创建的系统,其中,包括:
驱动程序编写模块,用于编写驱动程序,注册进程句柄的前操作回调函数。
回调函数判断模块,用于在编写的前操作回调函数中,对进程句柄的信息进行检查,若检查通过,则获取当前进程文件的完整路径。
路径判断模块,用于获取当前进程文件的完整路径和散列值,判断当前进程文件是否在白名单中。
清除模块,用于若进程句柄信息检查通过,且当前进程文件不在白名单内,则清除该进程句柄写入目标进程的权限,阻止傀儡进程的创建。
授权模块,用于若进程句柄信息检查不通过,或当前进程文件在白名单内,则为进程句柄授予写入目标进程的权限DesiredAccess。
其中,所述驱动程序编写模块包括:
进程句柄注册单元,用于调用ObRegisterCallbacks内核编程接口函数注册进程句柄的ObjectPreCallback前操作回调函数。
参数设置单元,用于设置该前操作回调函数的第二个参数记为PreOperationInfo,包含进程句柄对应的内核对象。
其中,所述回调函数判断模块包括:
中断请求级别判断单元,用于第一判断,若前操作回调函数中当前IRQL中断请求级别不为被动级别PASSIVE_LEVEL,则返回成功。
句柄判断单元,用于,进行第二判断,若当前句柄为内核句柄,则返回成功。
内核对象类型判断单元,用于,进行第三判断,若进程句柄对应的内核对象类型PreOperationInfo->ObjectType不为进程对象*PsProcessType,则返回成功。
内核对象判断单元,用于,进行第四判断,若进程句柄对应的内核对象PreOperationInfo->Object等于当前进程对象,则返回成功。
句柄创建方式判断单元,用于,进行第五判断,若对进程句柄的操作PreOperationInfo->Operation既不为句柄创建OB_OPERATION_HANDLE_CREATE,也不为句柄复制OB_OPERATION_HANDLE_DUPLICATE,则返回成功。
其中,所述路径判断模块包括:
完整路径判断单元,用于获取当前进程的文件的完整路径,查找当前进程的文件路径是否在文件路径白名单里,若在则返回成功。
散列值路径判断单元,用于若当前进程不在文件路径白名单,则计算该文件内容的hash散列值,查找该hash散列值是否在hash散列值路径白名单中,若在hash散列值白名单中则返回成功。
其中,所述清除模块包括:
进程句柄权限判断单元,用于判断为进程句柄授予的权限DesiredAccess中是否包含进程虚拟内存写权限PROCESS_VM_WRITE或者进程虚拟内存操作权限PROCESS_VM_OPERATION。
清除执行单元,用于将为进程句柄授予的权限DesiredAccess中包含的进程虚拟内存写权限PROCESS_VM_WRITE和进程虚拟内存操作权限PROCESS_VM_OPERATION标志清除并返回,让试图打开对应目标进程的句柄没有写入目标进程虚拟内存和操作目标进程虚拟内存的权限。
Windows平台上创建傀儡进程的手段很多,不管什么手段,都有必经之路:必须得到傀儡进程的目标进程的进程句柄,只有这样才能对目标进程进行写内存操作,从而把目标进程变为傀儡进程,因此在目标进程的进程句柄被打开和被复制时进行傀儡进程的检测是一个很好的思路。
本发明实施例旨在保护一种检测傀儡进程创建的方法及系统,具备如下效果:
在企图创建傀儡进程时就加以检测,对所有傀儡进程创建手段均有效,增强检测Windows平台傀儡进程的能力,有效弥补了现有检测傀儡进程创建手段的不足。
本发明实施例所提供的检测傀儡进程创建的方法及装置的计算机程序产品,包括存储了程序代码的计算机可读存储介质,程序代码包括的指令可用于执行前面方法实施例中的方法,具体实现可参见方法实施例,在此不再赘述。
具体地,该存储介质能够为通用的存储介质,如移动磁盘、硬盘等,该存储介质上的计算机程序被运行时,能够执行上述检测傀儡进程创建的方法,从而能够在企图创建傀儡进程时就加以检测,增强检测Windows平台傀儡进程的能力,有效弥补了现有检测傀儡进程创建手段的不足。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个处理器可执行的非易失的计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上所述实施例,仅为本发明的具体实施方式,用以说明本发明的技术方案,而非对其限制,本发明的保护范围并不局限于此,尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本发明实施例技术方案的精神和范围,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以所述权利要求的保护范围为准。
Claims (10)
1.一种检测傀儡进程创建的方法,其特征在于,包括:
编写驱动程序,注册进程句柄的前操作回调函数;
在编写的前操作回调函数中,对进程句柄的信息进行检查,若检查通过,则获取当前进程文件的完整路径;
获取当前进程文件的完整路径和散列值,判断当前进程文件是否在白名单中;
若进程句柄信息检查通过,且当前进程文件不在白名单内,则清除该进程句柄写入目标进程的权限,阻止傀儡进程的创建;
若进程句柄信息检查不通过,或当前进程文件在白名单内,则为进程句柄授予写入目标进程的权限。
2.根据权利要求1所述的检测傀儡进程创建的方法,其特征在于,所述编写驱动程序,注册进程句柄的前操作回调函数,包括:
调用ObRegisterCallbacks内核编程接口函数注册进程句柄的ObjectPreCallback前操作回调函数;
设置该前操作回调函数的第二个参数记为PreOperationInfo,包含进程句柄对应的内核对象。
3.根据权利要求1所述的检测傀儡进程创建的方法,其特征在于,所述在编写的前操作回调函数中,对进程句柄的信息进行检查,若检查通过,则获取当前进程文件的完整路径,包括:
第一判断,若前操作回调函数中当前IRQL中断请求级别不为被动级别PASSIVE_LEVEL,则返回成功;
或者,进行第二判断,若当前句柄为内核句柄,则返回成功;
或者,进行第三判断,若进程句柄对应的内核对象类型PreOperationInfo->ObjectType不为进程对象*PsProcessType,则返回成功;
或者,进行第四判断,若进程句柄对应的内核对象PreOperationInfo->Object等于当前进程对象,则返回成功;
或者,进行第五判断,若对进程句柄的操作PreOperationInfo->Operation既不为句柄创建OB_OPERATION_HANDLE_CREATE,也不为句柄复制OB_OPERATION_HANDLE_DUPLICATE,则返回成功。
4.根据权利要求3所述的检测傀儡进程创建的方法,其特征在于,所述获取当前进程文件的完整路径和散列值,判断当前进程文件是否在白名单中,包括:
获取当前进程的文件的完整路径,查找当前进程的文件路径是否在文件路径白名单里,若在则返回成功;
若当前进程不在文件路径白名单,则计算该文件内容的hash散列值,查找该hash散列值是否在hash散列值路径白名单中,若在hash散列值白名单中则返回成功。
5.根据权利要求1所述的检测傀儡进程创建的方法,其特征在于,所述若进程句柄信息检查通过,且当前进程文件不在白名单内,则清除该进程句柄写入目标进程的权限,阻止傀儡进程的创建,包括:
判断为进程句柄授予的权限DesiredAccess中是否包含进程虚拟内存写权限PROCESS_VM_WRITE或者进程虚拟内存操作权限PROCESS_VM_OPERATION;
将为进程句柄授予的权限DesiredAccess中包含的进程虚拟内存写权限PROCESS_VM_WRITE和进程虚拟内存操作权限PROCESS_VM_OPERATION标志清除并返回,让试图打开对应目标进程的句柄没有写入目标进程虚拟内存和操作目标进程虚拟内存的权限。
6.一种检测傀儡进程创建的系统,其特征在于,包括:
驱动程序编写模块,用于编写驱动程序,注册进程句柄的前操作回调函数;
回调函数判断模块,用于在编写的前操作回调函数中,对进程句柄的信息进行检查,若检查通过,则获取当前进程文件的完整路径;
路径判断模块,用于获取当前进程文件的完整路径和散列值,判断当前进程文件是否在白名单中;
清除模块,用于若进程句柄信息检查通过,且当前进程文件不在白名单内,则清除该进程句柄写入目标进程的权限,阻止傀儡进程的创建;
授权模块,用于若进程句柄信息检查不通过,或当前进程文件在白名单内,则为进程句柄授予写入目标进程的权限。
7.根据权利要求6所述的检测傀儡进程创建的系统,其特征在于,所述驱动程序编写模块包括:
进程句柄注册单元,用于调用ObRegisterCallbacks内核编程接口函数注册进程句柄的ObjectPreCallback前操作回调函数;
参数设置单元,用于设置该前操作回调函数的第二个参数记为PreOperationInfo,包含进程句柄对应的内核对象。
8.根据权利要求6所述的检测傀儡进程创建的系统,其特征在于,所述回调函数判断模块包括:
中断请求级别判断单元,用于第一判断,若前操作回调函数中当前IRQL中断请求级别不为被动级别PASSIVE_LEVEL,则返回成功;
句柄判断单元,用于,进行第二判断,若当前句柄为内核句柄,则返回成功;
内核对象类型判断单元,用于,进行第三判断,若进程句柄对应的内核对象类型PreOperationInfo->ObjectType不为进程对象*PsProcessType,则返回成功;
内核对象判断单元,用于,进行第四判断,若进程句柄对应的内核对象PreOperationInfo->Object等于当前进程对象,则返回成功;
句柄创建方式判断单元,用于,进行第五判断,若对进程句柄的操作PreOperationInfo->Operation既不为句柄创建OB_OPERATION_HANDLE_CREATE,也不为句柄复制OB_OPERATION_HANDLE_DUPLICATE,则返回成功。
9.根据权利要求6所述的检测傀儡进程创建的系统,其特征在于,所述路径判断模块包括:
完整路径判断单元,用于获取当前进程的文件的完整路径,查找当前进程的文件路径是否在文件路径白名单里,若在则返回成功;
散列值路径判断单元,用于若当前进程不在文件路径白名单,则计算该文件内容的hash散列值,查找该hash散列值是否在hash散列值路径白名单中,若在hash散列值白名单中则返回成功。
10.根据权利要求6所述的检测傀儡进程创建的系统,其特征在于,所述清除模块包括:
进程句柄权限判断单元,用于判断为进程句柄授予的权限DesiredAccess中是否包含进程虚拟内存写权限PROCESS_VM_WRITE或者进程虚拟内存操作权限PROCESS_VM_OPERATION;
清除执行单元,用于将为进程句柄授予的权限DesiredAccess中包含的进程虚拟内存写权限PROCESS_VM_WRITE和进程虚拟内存操作权限PROCESS_VM_OPERATION标志清除并返回,让试图打开对应目标进程的句柄没有写入目标进程虚拟内存和操作目标进程虚拟内存的权限。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211318969.4A CN115543463B (zh) | 2022-10-26 | 2022-10-26 | 一种检测傀儡进程创建的方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211318969.4A CN115543463B (zh) | 2022-10-26 | 2022-10-26 | 一种检测傀儡进程创建的方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115543463A true CN115543463A (zh) | 2022-12-30 |
CN115543463B CN115543463B (zh) | 2024-06-18 |
Family
ID=84718117
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211318969.4A Active CN115543463B (zh) | 2022-10-26 | 2022-10-26 | 一种检测傀儡进程创建的方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115543463B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116796308A (zh) * | 2023-02-03 | 2023-09-22 | 安芯网盾(北京)科技有限公司 | 一种基于Linux内核的伪装进程可执行程序检测方法及装置 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0003448D0 (en) * | 2000-02-16 | 2000-04-05 | Data Connection Ltd | Replicated control block handles for fault-tolerant computer systems |
CN102147845A (zh) * | 2011-04-18 | 2011-08-10 | 北京思创银联科技股份有限公司 | 进程监控方法 |
CN102194079A (zh) * | 2011-03-18 | 2011-09-21 | 北京思创银联科技股份有限公司 | 文件访问过滤方法 |
US20120079594A1 (en) * | 2010-09-27 | 2012-03-29 | Hyun Cheol Jeong | Malware auto-analysis system and method using kernel callback mechanism |
CN102855274A (zh) * | 2012-07-17 | 2013-01-02 | 北京奇虎科技有限公司 | 一种可疑进程检测的方法和装置 |
CN105138901A (zh) * | 2015-08-03 | 2015-12-09 | 浪潮电子信息产业股份有限公司 | 一种基于白名单的云主机主动防御实现方法 |
CN106878240A (zh) * | 2015-12-14 | 2017-06-20 | 阿里巴巴集团控股有限公司 | 僵尸主机识别方法及装置 |
CN111125721A (zh) * | 2019-12-31 | 2020-05-08 | 奇安信科技集团股份有限公司 | 一种进程启动的控制方法、计算机设备和可读存储介质 |
CN111563259A (zh) * | 2020-07-15 | 2020-08-21 | 北京升鑫网络科技有限公司 | 一种傀儡进程检测方法、装置、可读存储介质及计算设备 |
CN114238947A (zh) * | 2021-11-30 | 2022-03-25 | 浙江中控技术股份有限公司 | Windows系统的软件保护方法、系统、设备及介质 |
CN115202807A (zh) * | 2022-06-17 | 2022-10-18 | 新华三技术有限公司 | 云桌面黑白名单控制方法、装置和设备 |
-
2022
- 2022-10-26 CN CN202211318969.4A patent/CN115543463B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0003448D0 (en) * | 2000-02-16 | 2000-04-05 | Data Connection Ltd | Replicated control block handles for fault-tolerant computer systems |
US20120079594A1 (en) * | 2010-09-27 | 2012-03-29 | Hyun Cheol Jeong | Malware auto-analysis system and method using kernel callback mechanism |
CN102194079A (zh) * | 2011-03-18 | 2011-09-21 | 北京思创银联科技股份有限公司 | 文件访问过滤方法 |
CN102147845A (zh) * | 2011-04-18 | 2011-08-10 | 北京思创银联科技股份有限公司 | 进程监控方法 |
CN102855274A (zh) * | 2012-07-17 | 2013-01-02 | 北京奇虎科技有限公司 | 一种可疑进程检测的方法和装置 |
CN105138901A (zh) * | 2015-08-03 | 2015-12-09 | 浪潮电子信息产业股份有限公司 | 一种基于白名单的云主机主动防御实现方法 |
CN106878240A (zh) * | 2015-12-14 | 2017-06-20 | 阿里巴巴集团控股有限公司 | 僵尸主机识别方法及装置 |
CN111125721A (zh) * | 2019-12-31 | 2020-05-08 | 奇安信科技集团股份有限公司 | 一种进程启动的控制方法、计算机设备和可读存储介质 |
CN111563259A (zh) * | 2020-07-15 | 2020-08-21 | 北京升鑫网络科技有限公司 | 一种傀儡进程检测方法、装置、可读存储介质及计算设备 |
CN114238947A (zh) * | 2021-11-30 | 2022-03-25 | 浙江中控技术股份有限公司 | Windows系统的软件保护方法、系统、设备及介质 |
CN115202807A (zh) * | 2022-06-17 | 2022-10-18 | 新华三技术有限公司 | 云桌面黑白名单控制方法、装置和设备 |
Non-Patent Citations (1)
Title |
---|
冯天树;许学东;: "一种检测傀儡进程的方法研究", 信息网络安全, no. 08, 10 August 2011 (2011-08-10) * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116796308A (zh) * | 2023-02-03 | 2023-09-22 | 安芯网盾(北京)科技有限公司 | 一种基于Linux内核的伪装进程可执行程序检测方法及装置 |
CN116796308B (zh) * | 2023-02-03 | 2024-04-12 | 安芯网盾(北京)科技有限公司 | 一种基于Linux内核的伪装进程可执行程序检测方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN115543463B (zh) | 2024-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4518564B2 (ja) | 不正コード実行の防止方法、不正コード実行の防止用プログラム、及び不正コード実行の防止用プログラムの記録媒体 | |
US7984304B1 (en) | Dynamic verification of validity of executable code | |
US7337291B2 (en) | Software memory access control | |
US20150007266A1 (en) | Program execution integrity verification for a computer system | |
US7251735B2 (en) | Buffer overflow protection and prevention | |
MX2007011026A (es) | Metodo y sistema para la deteccion de codigo extrano. | |
CN114186239A (zh) | 一种基于路径信息的程序白名单方法及装置 | |
CN115543463B (zh) | 一种检测傀儡进程创建的方法及系统 | |
US20070056039A1 (en) | Memory filters to aid system remediation | |
CN113051034A (zh) | 一种基于kprobes的容器访问控制方法与系统 | |
CN110427758B (zh) | 位置欺骗检测方法、智能终端及存储介质 | |
CN116150739A (zh) | 一种基于关键地址动态保护的栈溢出自动防御方法 | |
CN116502220A (zh) | 一种对抗性Java内存马的检测方法及处理方法 | |
CN111814119B (zh) | 一种反调试的方法 | |
CN111027072B (zh) | Linux下基于elf二进制标准解析的内核Rootkit检测方法及装置 | |
CN115964758A (zh) | 一种基于TrustZone的内核数据完整性保护方法 | |
JP2001249848A (ja) | 先行特権レベルに基づく特権昇格 | |
JP4643201B2 (ja) | バッファオーバーフロー脆弱性分析方法、データ処理装置、分析情報提供装置、分析情報抽出処理用プログラムおよび分析情報提供処理用プログラム | |
CN113312623A (zh) | 访问控制中的进程检测方法、装置、电子设备和存储介质 | |
WO2022093186A1 (en) | Code execution using trusted code record | |
CN114981811A (zh) | 用于软件安全的装置和方法 | |
CN111625784B (zh) | 一种应用的反调试方法、相关装置及存储介质 | |
CN113434247B (zh) | 一种java卡虚拟机的安全防护方法 | |
US11989572B2 (en) | Computer system enabled with runtime software module tracking | |
CN110610086B (zh) | 非法代码识别方法、系统、装置及存储介质 |
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 |