CN105068916B - 一种基于内核hook的进程行为监控方法 - Google Patents

一种基于内核hook的进程行为监控方法 Download PDF

Info

Publication number
CN105068916B
CN105068916B CN201510538498.1A CN201510538498A CN105068916B CN 105068916 B CN105068916 B CN 105068916B CN 201510538498 A CN201510538498 A CN 201510538498A CN 105068916 B CN105068916 B CN 105068916B
Authority
CN
China
Prior art keywords
monitored
monitoring
driver
monitoring programme
subprocess
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.)
Active
Application number
CN201510538498.1A
Other languages
English (en)
Other versions
CN105068916A (zh
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.)
Haikou Bomei Network Technology Co.,Ltd.
Original Assignee
FUJIAN LIUREN NETWORK SECURITY 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 FUJIAN LIUREN NETWORK SECURITY Co Ltd filed Critical FUJIAN LIUREN NETWORK SECURITY Co Ltd
Priority to CN201510538498.1A priority Critical patent/CN105068916B/zh
Publication of CN105068916A publication Critical patent/CN105068916A/zh
Application granted granted Critical
Publication of CN105068916B publication Critical patent/CN105068916B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Stored Programmes (AREA)

Abstract

本发明涉及一种基于内核hook的进程行为监控方法,首先启动监控程序并判断用户是否加载驱动程序,若没有加载,提示用户加载驱动程序,然后进行初始化操作,监控程序将自身的进程ID通过DeviceIoControl发送给所述驱动程序进行进程保护;监控程序选择受监控进程,并创建一个消息接收线程用以接收所述驱动程序的消息;驱动程序对受监控进程及其子进程的行为进行监控,并将监控结果发送给监控程序;监控程序的消息接收线程显示并记录接收到的监控结果;当受监控进程及其子进程全部退出或者监控程序选择停止监控时,结束受监控进程及其子进程,监控程序的消息接收线程退出,本次监控结束,重复上述步骤进行新一轮监控。本发明能够有效防止恶意进程行为的发生。

Description

一种基于内核hook的进程行为监控方法
技术领域
本发明涉及系统安全的软件技术领域,特别是一种基于内核hook的进程行为监控方法。
背景技术
在互联网不断发展的过程中,网民在享受网上冲浪的同时,也时刻冒着被恶意程序攻击的风险。恶意软件层出不穷,这严重威胁着网民的主机系统安全。传统的特征码扫描技术由于其滞后性以及高误报率急需改善,而行为监控技术以其对未知恶意程序的有效识别与准确性被广泛运用于各种主机防御系统。
著名的卡巴斯基、国内安全厂商360公司的360安全卫士都加入了主动防御功能,当恶意程序产生诸如远程线程注入、添加用户等可疑行为的时会发出警告并交由用户决定如何处理。然而,对行为的监控同样存在准确性的问题。
沙盒模拟技术等虚拟执行技术也得到相当广泛的运用。然而由于与真实系统存在差异,恶意程序可以通过这些差异来判断自身处境,如果是处于虚拟系统中,则隐藏自己的恶意功能,表现得如正常程序一般,这样一来沙盒就无能为力了。而一旦走出了沙盒,恶意程序就又开始执行自己的恶意代码,给用户带来威胁。
不难看出,行为监控技术不依赖于传统的特征库,对未知恶意代码有着传统特征扫描无法实现的有效识别。
用户行为分析指运用多学科知识研究和分析用户的构成、特点及其在应用过程中行为活动上所表现出来的规律。图书服务系统的数字化与个性化已经是发展趋势,友好的交互性功能设计是提高服务系统用户满意度的关键之一,准确获取用户行为对此类系统设计具有较高参考价值。日常应用软件如即时通讯工具、网络导航等对用户来说必不可少,但是随着网络的普及,这些应用会带给个人用户一些安全隐患。若能捕获应用软件的行为则对提高系统安全性有益。文件安全保护的常用手段是信息加密、设置访问权限,但是由于应用软件的漏洞及病毒的侵害,这些方法对文件的安全防护无法达到令人满意的效果。一些恶意应用大都使用加载驱动的方式进行入侵式访问操作,普通用户层的防护难以达到文件安全防护目的。
发明内容
有鉴于此,本发明的目的是提出一种基于内核hook的进程行为监控方法,能够有效防止恶意进程行为的发生。
本发明采用以下方案实现:一种基于内核hook的进程行为监控方法,具体包括以下步骤:
步骤S1:启动监控程序并判断用户是否加载驱动程序,若没有加载,提示用户加载驱动程序,进入步骤S2;若已经加载,进入步骤S3;
步骤S2:进行初始化操作,加载所述驱动程序;
步骤S3:所述驱动程序进行相关初始化操作;
步骤S4:所述监控程序将自身的进程ID通过DeviceIoControl发送给所述驱动程序进行进程保护用以防止恶意程序强行停止监控程序;
步骤S5:所述监控程序选择受监控进程,所述受监控进程为可执行文件执行或者指定进程,之后创建一个消息接收线程用以接收所述驱动程序的消息;
步骤S6:所述驱动程序对受监控进程及其子进程的行为进行监控,并将监控结果发送给所述监控程序;
步骤S7:所述监控程序的消息接收线程显示并记录接收到的步骤S6中的监控结果;
步骤S8:当受监控进程及其子进程全部退出或者监控程序选择停止监控时,结束受监控进程及其子进程,监控程序的消息接收线程退出,本次监控结束;
步骤S9:判断是否开始新一轮监控,若是,则返回步骤S5;若否,进入步骤S10;
步骤S10:监控程序退出或卸载驱动程序。
进一步地,所述驱动程序具体为:
步骤S01:调用HOOK函数;
步骤S02:在HOOK函数中通过比对当前的进程ID与待监控进程的ID是否相同来判断当前进程是否为被监控进程;若是,则进入步骤S03;若否,则进入步骤S04;
步骤S03:获取当前进程的句柄信息,填充消息结构体,将消息发送到所述监控程序,最后调用当前进程的原系统调用;
步骤S04:判断当前进程的当前操作是否为预先定义的高危操作,如果是则直接拦截该操作,否则直接放行。
进一步地,所述待监控进程的ID包括待监控进程的ID与待监控进程的子进程的ID。
进一步地,所述步骤S3具体为:驱动程序创建设备、设置IRP派遣函数、完成HOOK操作、初始化进程链表和消息链表、初始化自旋锁、初始化信号量;
进一步地,步骤S6中所述受监控进程及其子进程的行为包括文件操作、驱动加载、注册表操作、进程操作。
进一步地,所述的卸载驱动包括删除设备、释放申请的lookaside内存空间。
与现有技术相比,本发明提出的方法可以完全捕获对文件的操作、注册表和进程行为,提高了Windows文件系统的安全性,可以在文件数据安全、病毒防御等方面发挥重要作用。
附图说明
图1为本发明的方法流程图。
具体实施方式
下面结合附图及实施例对本发明做进一步说明。
如图1所示,本实施例提供了一种基于内核hook的进程行为监控方法,具体包括以下步骤:
步骤S1:启动监控程序并判断用户是否加载驱动程序,若没有加载,提示用户加载驱动程序,进入步骤S2;若已经加载,进入步骤S3;
步骤S2:进行初始化操作,加载所述驱动程序;
步骤S3:所述驱动程序进行相关初始化操作;
步骤S4:所述监控程序将自身的进程ID通过DeviceIoControl发送给所述驱动程序进行进程保护用以防止恶意程序强行停止监控程序;
步骤S5:所述监控程序选择受监控进程,所述受监控进程为可执行文件执行或者指定进程,之后创建一个消息接收线程用以接收所述驱动程序的消息;
步骤S6:所述驱动程序对受监控进程及其子进程的行为进行监控,并将监控结果发送给所述监控程序;
步骤S7:所述监控程序的消息接收线程显示并记录接收到的步骤S6中的监控结果;
步骤S8:当受监控进程及其子进程全部退出或者监控程序选择停止监控时,结束受监控进程及其子进程,监控程序的消息接收线程退出,本次监控结束;
步骤S9:判断是否开始新一轮监控,若是,则返回步骤S5;若否,进入步骤S10;
步骤S10:监控程序退出或卸载驱动程序。
在本实施例中,所述驱动程序具体为:
步骤S01:调用HOOK函数;
步骤S02:在HOOK函数中通过比对当前的进程ID与待监控进程的ID是否相同来判断当前进程是否为被监控进程;若是,则进入步骤S03;若否,则进入步骤S04;
步骤S03:获取当前进程的句柄信息,填充消息结构体,将消息发送到所述监控程序,最后调用当前进程的原系统调用;
步骤S04:判断当前进程的当前操作是否为预先定义的高危操作,如果是则直接拦截该操作,否则直接放行。
特别的,当Ring3层对驱动程序所创建的设备调用DeviceIoControl时,驱动程序会受到一个IRP_MJ_DEVICE_CONTROL的IRP消息并调用预先设置的IRP消息处理函数,可以实现应用程序与驱动程序数据的相互传递。
例如,可以使用如下控制码,只要修改0x801的值就可以表示不同的消息:
#define IO_START_HOOK (ULONG)CTL_CODE(FILE_DEVICE_UNKNOWN,0x801,METHOD_BUFFERED, FILE_ANY_ACCESS)
之后在驱动程序的IRP_MJ_DEVICE_CONTROL处理函数中针对不同的控制码进行不同的操作,如开启服务、停止服务、开始监控、停止监控等。Ring3应用程序运行待监控程序并向Ring0发送一个IO_START_RECORD控制码,同时传入的还有待监控进程的进程ID。
值得注意的是,在本实施例中,所述待监控进程的ID包括待监控进程的ID与待监控进程的子进程的ID。待监控进程有可能会创建子进程来完成操作,因此驱动程序维护一个待监控进程的进程ID链表,一旦待监控创建子进程,则将其子进程的进程ID加入到链表中,若进程退出,则从链表中移除该进程的进程ID。
较佳地,内核态HOOK函数需要根据参数中对象的句柄来获取其对应的信息,如进程的路径和命令行参数、文件的路径、注册表的路径和注册表键名等。通过进程句柄获取句柄对应的对象结构,之后一步步地获取成员结构。通FILE_OBJECT结构的DeviceObject成员可以获取所在的逻辑盘符,通过FileName成员可以获取进程所在的路径。最终,获取到的路径为进程的全路径。
在本实施例中,所述步骤S3具体为:驱动程序创建设备、设置IRP派遣函数、完成HOOK操作、初始化进程链表和消息链表、初始化自旋锁、初始化信号量;
在本实施例中,步骤S6中所述受监控进程及其子进程的行为包括文件操作、驱动加载、注册表操作、进程操作。
在本实施例中,所述的卸载驱动包括删除设备、释放申请的lookaside内存空间。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。

Claims (3)

1.一种基于内核hook的进程行为监控方法,其特征在于包括以下步骤:
步骤S1:启动监控程序并判断用户是否加载驱动程序,若没有加载,提示用户加载驱动程序,进入步骤S2;若已经加载,进入步骤S3;
步骤S2:进行初始化操作,加载所述驱动程序;
步骤S3:所述驱动程序进行相关初始化操作;
步骤S4:所述监控程序将自身的进程ID通过DeviceIoControl发送给所述驱动程序进行进程保护用以防止恶意程序强行停止监控程序;
步骤S5:所述监控程序选择受监控进程,所述受监控进程为可执行文件执行或者指定进程,之后创建一个消息接收线程用以接收所述驱动程序的消息;
步骤S6:所述驱动程序对受监控进程及其子进程的行为进行监控,并将监控结果发送给所述监控程序;
步骤S7:所述监控程序的消息接收线程显示并记录接收到的步骤S6中的监控结果;
步骤S8:当受监控进程及其子进程全部退出或者监控程序选择停止监控时,结束受监控进程及其子进程,监控程序的消息接收线程退出,本次监控结束;
步骤S9:判断是否开始新一轮监控,若是,则返回步骤S5;若否,进入步骤S10;
步骤S10:监控程序退出或卸载驱动程序;
其中,所述驱动程序具体为:
步骤S01:调用HOOK函数;
步骤S02:在HOOK函数中通过比对当前的进程ID与待监控进程的ID是否相同来判断当前进程是否为被监控进程;若是,则进入步骤S03;若否,则进入步骤S04;
步骤S03:获取当前进程的句柄信息,填充消息结构体,将消息发送到所述监控程序,最后调用当前进程的原系统调用;
步骤S04:判断当前进程的当前操作是否为预先定义的高危操作,如果是则直接拦截该操作,否则直接放行;
其中,所述待监控进程的ID包括待监控进程的ID与待监控进程的子进程的ID;
其中,步骤S6中所述受监控进程及其子进程的行为包括文件操作、驱动加载、注册表操作、进程操作。
2.根据权利要求1所述的一种基于内核hook的进程行为监控方法,其特征在于:所述步骤S3具体为:驱动程序创建设备、设置IRP派遣函数、完成HOOK操作、初始化进程链表和消息链表、初始化自旋锁、初始化信号量。
3.根据权利要求1所述的一种基于内核hook的进程行为监控方法,其特征在于:所述的卸载驱动包括删除设备、释放申请的lookaside内存空间。
CN201510538498.1A 2015-08-28 2015-08-28 一种基于内核hook的进程行为监控方法 Active CN105068916B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201510538498.1A CN105068916B (zh) 2015-08-28 2015-08-28 一种基于内核hook的进程行为监控方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510538498.1A CN105068916B (zh) 2015-08-28 2015-08-28 一种基于内核hook的进程行为监控方法

Publications (2)

Publication Number Publication Date
CN105068916A CN105068916A (zh) 2015-11-18
CN105068916B true CN105068916B (zh) 2017-12-08

Family

ID=54498293

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510538498.1A Active CN105068916B (zh) 2015-08-28 2015-08-28 一种基于内核hook的进程行为监控方法

Country Status (1)

Country Link
CN (1) CN105068916B (zh)

Families Citing this family (21)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105975384B (zh) * 2016-04-28 2018-10-26 北京小米移动软件有限公司 分布式进程的监控方法和装置
CN105956461B (zh) * 2016-05-03 2019-08-23 珠海豹趣科技有限公司 一种拦截驱动加载的方法及终端
CN106557693A (zh) * 2016-05-09 2017-04-05 哈尔滨安天科技股份有限公司 一种恶意Hook行为检测方法及系统
CN105893838A (zh) * 2016-05-11 2016-08-24 北京鼎源科技有限公司 一种针对安卓操作系统关键驱动程序的加固方法
CN106127031A (zh) * 2016-06-23 2016-11-16 北京金山安全软件有限公司 一种保护进程的方法、装置及电子设备
CN105956462B (zh) * 2016-06-29 2019-05-10 珠海豹趣科技有限公司 一种阻止恶意加载驱动的方法、装置及电子设备
CN106127053B (zh) * 2016-06-30 2018-11-20 北京金山安全软件有限公司 恶意进程结束方法及装置
CN106407016B (zh) * 2016-10-19 2021-06-25 腾讯科技(深圳)有限公司 一种多线程争抢资源的模拟方法及装置
CN106778284B (zh) * 2016-11-28 2021-03-26 北京奇虎科技有限公司 内核漏洞后端检测的方法及装置
CN107844700A (zh) * 2017-11-28 2018-03-27 郑州云海信息技术有限公司 一种智能防护操作系统用户账号的方法及系统
CN109164223A (zh) * 2018-09-14 2019-01-08 南京理工技术转移中心有限公司 一种水环境监控处理系统及其工作方法
CN108944377A (zh) * 2018-09-14 2018-12-07 南京理工技术转移中心有限公司 一种车内环境调节系统及其工作方法
CN109445877B (zh) * 2018-09-19 2022-03-18 珠海金山网络游戏科技有限公司 一种检测游戏服务器多线程使用同一虚拟机的方法
CN109408158B (zh) * 2018-11-06 2022-11-18 恒生电子股份有限公司 子进程随父进程退出的方法及装置、存储介质及电子设备
CN109583206B (zh) * 2018-11-23 2020-12-29 杭州迪普科技股份有限公司 监控应用程序的访问进程的方法、装置、设备及存储介质
CN109857625A (zh) * 2018-12-27 2019-06-07 江苏博智软件科技股份有限公司 一种基于windows驱动的软件行为收集方法
CN110532798B (zh) * 2019-07-26 2021-07-27 苏州浪潮智能科技有限公司 一种文件强制访问控制方法和装置
CN111898116B (zh) * 2019-12-26 2021-09-24 长扬科技(北京)有限公司 一种基于高速缓存的工业白名单学习方法和系统
CN111857971B (zh) * 2020-07-29 2024-03-15 福建多多云科技有限公司 一种安卓虚拟机系统下运行可执行文件的方法及存储介质
CN112084091B (zh) * 2020-09-09 2021-07-30 北京升鑫网络科技有限公司 一种系统行为审计方法、装置、终端及存储介质
CN115577347B (zh) * 2022-11-24 2023-03-24 摩尔线程智能科技(北京)有限责任公司 驱动程序防护方法及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101246536A (zh) * 2008-03-06 2008-08-20 北京鼎信高科信息技术有限公司 基于进程监控对计算机文件进行加解密的方法
CN101290587A (zh) * 2008-06-12 2008-10-22 中兴通讯股份有限公司 一种实现进程启动和监控的方法
US7707558B2 (en) * 2005-06-10 2010-04-27 Symantec Corporation Operating system loader modification
CN102147845A (zh) * 2011-04-18 2011-08-10 北京思创银联科技股份有限公司 进程监控方法
CN102314561A (zh) * 2010-07-01 2012-01-11 电子科技大学 基于api hook的恶意代码自动分析方法和系统
CN104156662A (zh) * 2014-08-28 2014-11-19 北京奇虎科技有限公司 进程监控的方法、装置和智能终端

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7707558B2 (en) * 2005-06-10 2010-04-27 Symantec Corporation Operating system loader modification
CN101246536A (zh) * 2008-03-06 2008-08-20 北京鼎信高科信息技术有限公司 基于进程监控对计算机文件进行加解密的方法
CN101290587A (zh) * 2008-06-12 2008-10-22 中兴通讯股份有限公司 一种实现进程启动和监控的方法
CN102314561A (zh) * 2010-07-01 2012-01-11 电子科技大学 基于api hook的恶意代码自动分析方法和系统
CN102147845A (zh) * 2011-04-18 2011-08-10 北京思创银联科技股份有限公司 进程监控方法
CN104156662A (zh) * 2014-08-28 2014-11-19 北京奇虎科技有限公司 进程监控的方法、装置和智能终端

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
SSDT Hook实现内核级的进程保护;曾是土木人;《http://www.cnblogs.com/hongfei/p/3161546.html》;20130629;正文第7-8页 *
基于Windows内核进程监控机制的研究与实现;习慧丹 等;《数码世界》;20141031;第5卷(第10期);第42-44页 *
基于进程行为的主机入侵防御系统的研究;岳俊琦;《中国优秀硕士学位论文全文数据库 信息科技辑》;20120715;全文 *

Also Published As

Publication number Publication date
CN105068916A (zh) 2015-11-18

Similar Documents

Publication Publication Date Title
CN105068916B (zh) 一种基于内核hook的进程行为监控方法
US10075455B2 (en) Zero-day rotating guest image profile
Grimes Malicious mobile code: Virus protection for Windows
US8065728B2 (en) Malware prevention system monitoring kernel events
CN106778243B (zh) 基于虚拟机的内核漏洞检测文件保护方法及装置
Ren et al. WindowGuard: Systematic Protection of GUI Security in Android.
CN106557701B (zh) 基于虚拟机的内核漏洞检测方法及装置
CN103020527B (zh) 主动拦截恶意程序的方法、装置、系统
CN103020526B (zh) 恶意程序主动拦截方法和装置及客户端设备
US7665139B1 (en) Method and apparatus to detect and prevent malicious changes to tokens
US20160006756A1 (en) Trusted threat-aware microvisor
CN111931166B (zh) 基于代码注入和行为分析的应用程序防攻击方法和系统
CN107851155A (zh) 用于跨越多个软件实体跟踪恶意行为的系统及方法
CN108475217A (zh) 用于审计虚拟机的系统及方法
US20100306851A1 (en) Method and apparatus for preventing a vulnerability of a web browser from being exploited
US20040064736A1 (en) Method and apparatus for detecting malicious code in an information handling system
CN106778242B (zh) 基于虚拟机的内核漏洞检测方法及装置
CN112351017B (zh) 横向渗透防护方法、装置、设备及存储介质
CN101667235A (zh) 一种用于保护用户隐私的方法和装置
KR20080047261A (ko) 프로세스 행위 예측 기법을 이용한 비정형 악성코드 탐지방법 및 그 시스템
Wang et al. DroidChain: A novel Android malware detection method based on behavior chains
CN111651754A (zh) 入侵的检测方法和装置、存储介质、电子装置
Tang et al. Towards dynamically monitoring android applications on non-rooted devices in the wild
CN114238947A (zh) Windows系统的软件保护方法、系统、设备及介质
WO2015153037A1 (en) Systems and methods for identifying a source of a suspect event

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right

Effective date of registration: 20240321

Address after: F7-118, 6th Floor, Shenya Building, No. 47 Guomao Road, Longhua District, Haikou City, Hainan Province, 570100

Patentee after: Haikou Bomei Network Technology Co.,Ltd.

Country or region after: Zhong Guo

Address before: 350000 floor 4, Mawei library, Mawei District, Fuzhou City, Fujian Province (in the pilot Free Trade Zone)

Patentee before: FUJIAN LIUREN NETWORK SECURITY Co.,Ltd.

Country or region before: Zhong Guo

TR01 Transfer of patent right