基于Hook的程序异常行为检测系统设计与实现[1]

基于Hook的程序异常行为检测系统设计与实现[1]

2023年7月6日发(作者:)

第28卷第18期Vol.28No.18计算机工程与设计ComputerEngineeringandDesign2007年9月Sept.2007基于Hook的程序异常行为检测系统设计与实现郝东白1,2,3,郭林1,2,黄皓1,2(1.南京大学计算机科学与技术系,江苏南京210093;2.南京大学软件新技术国家重点实验室,江苏南京210093;3.南京陆军指挥学院信息作战与指挥系,江苏南京210045)摘要:从程序访问的资源入手,从中重点选取了注册表、文件以及创建其它进程这些资源的操作为主要监控点,实时检测进程操作资源的行为,并进行关联分析,给出了一种基于系统服务Hook的程序异常行为检测系统。重点介绍了Hook相关技术和该系统的设计结构与实现要点。最后,通过实验验证了该系统的可行性和有效性。关键词:资源;进程;钩子;系统服务;监控;关联中图法分类号:TP393.08文献标识码:A文章编号:1000-7024(2007)18-4373-04DesignandimplementationofprogrambehavioranomalydetectionsystembasedonsystemservicehookHAODong-bai1,2,3,GUOLin1,2,HUANGHao1,2(mentofComputerScienceandTechnology,NanjingUniversity,Nanjing210093,China;eyLaboratoryforNovelSoftwareTechnology,NanjingUniversity,Nanjing210093,China;mentofInformationOperation,NanjingArmyCommandCollege,Nanjing210045,China)Abstract:ryandfileandprocessresourcecreationarefo-cusedonandassociatedtodetectprogrambehavioranomalyatruntime,aprogrambehavioranomalydetectionsystemisdesignedandimplementedbasedonoperatingsystemserviceHooksomekeytechniquesofHookareintroduce,theexperds:resource;process;hook;systemservice;monitoring;association0引言为了便于对进程异常行为检测的描述,并建立进程和资源二者之间的约束关系,需要对系统资源进行归纳总结。文献[2]从Windows操作系统工作原理和分析攻击途径的基础上,对系统资源进行了分类。(1)系统服务资源:主要是操作系统本身计算机环境的支撑软件系统的资源,即把操作系统内核及构建在其上的子系统的资源为考虑对象,对这类资源防护的目标是保证计算机系统的完整性。(2)系统配置资源:主要是指操作系统及应用的系统参数配置文件资源。在Windows操作系统中,配置资源主要包括注册表等影响系统初始化和服务进程行为的配置文件。(3)通信资源:主要是指系统为实现网络通信功能所提供的各层通信协议(TCP/UDP、IP、ICMP、IGMP、PPP)驱动、服务、端口、拨号连接以及套接字、命名管道等网络通信组件。这类资源是主机系统实现与外界通信所必须利用的资源,也是恶意代码攻击的主要途径。程序在数据集合上一次动态执行的过程称之为进程,进程是操作系统进行资源分配的基本单位[1]。其是为某一或某些应用而编写,自身具有很强的专用性和目的性,其预设的功能决定了动态执行的进程对系统资源的操作也是可以被预知的。由于种种原因,程序总是存在着漏洞,利用这些漏洞,病毒、木马或恶意代码可以操纵这些程序对系统资源进行非法滥用,进而危及数据的完整性、保密性、可用性和可控性,最终表现为进程在运行的过程中偏离了正常的轨道,即产生了异常的行为。例如,MSWord是一款文字编辑程序,主要用于编辑,保存和打印文档,它的正常行为表现为读写它所支持的文件格式的文档,操作打印机进行打印;如果发现Word通过网络下载了一个可执行程序并通过修改注册表把它设置为开机自动运行,这显然是一个异常行为,这个异常行为的产生可能是Word受到了宏病毒或者木马程序的攻击所造成的。收稿日期:2006-11-15E-mail:jackie_dragon@基金项目:江苏省高技术研究计划基金项目(BG2004030)。作者简介:郝东白(1976-),男,河南信阳人,硕士研究生,讲师,研究方向为网络与信息安全;郭林,硕士研究生,工程师;黄皓,教授,博士生导师。-4373-(4)文件资源:主要指存储在系统上可执行程序和数据,主要以目录和文件的形式存在。对这类资源的防护主要是实现文件访问控制。在Windows系统中,进程访问系统资源的类型通常主要有:系统配置资源、文件资源和通信资源等。当程序访问的资源是已知的,固定的,那么进程的行为就是可预测的。我们可以根据不同程序自身特殊的目的性,设定其访问资源的范围,实时监控进程操作资源的动作,检测出程序的异常行为。本文从程序访问的资源入手,从中重点选取了系统配置资源中的注册表、文件资源中文件以及进程创建其它进程这些资源为主要监控点,建立进程和资源二者间的对应关系,实时检测进程访问资源的行为,并对这些行为进行关联分析,给出了一种基于系统服务Hook的程序异常行为检测系统。该模型能够对常被病毒、木马或恶意代码攻击的程序如:IE、OutlookEx-press和QQ等程序设定行为规范,在这些程序产生异常行为前及时阻止,并能够在很大程度上防范未知病毒、木马或恶意代码的攻击,从而保护系统的安全。进程文件注册表对象操作表1相关API函数API函数RegCreateKeyEx,RegOpenKeyExRegQueryInfoKey,RegQueryValue-ExRegEnumKeyEx,RegEnumValueRegSetValueExRegDeleteKey,RegDeleteValueCreateFileReadFile,WriteFileDeleteFileSHFileOperationCreateProcessOpenProcess创建、打开注册表读注册表写注册表删除注册表创建、打开文件读、写文件文件删除文件重命名创建进程打开进程服务进程,应用程序,环境子系统应用程序编程接口基于的本地系统服务系统服务调用执行体系统内核,设备驱动程序用户模式内核模式1相关技术介绍进程是通过Windows系统提供的API(applicationprogram-硬件抽象层minginterface)函数来对注册表、文件和创建其它进程等资源来实施操作的。通过对进程调用的这些API函数进行Hook就可以达到监控的目的。通常的Hook技术可分为用户模式APIHook和系统服务Hook。图1表2对象操作创建、打开注册表注册表读注册表写注册表删除注册表创建、打开文件文件读、写文件文件删除文件重命名进程创建进程打开进程Windows体系结构相关系统服务函数系统服务函数ZwCreateKey,ZwOpenKeyZwQueryKey,ZwQueryValueKeyZwEnumerateKey,ZwEnumerateValueKeyZwSetValueKeyZwDeleteKey,ZwDeleteValueKeyZwCreateFile,ZwOpenFileZwReadFile,ZwWriteFileZwSetInformationFileZwSetInformationFileZwCreateSection,ZwCreateProcess,ZwCreateProcessExZwOpenProcess1.1APIHookIAT(importaddresstable)是Windows平台下的可移植的执行体(portableexecutable,PE)格式文件的一个重要组成部分,其中存放着本PE文件执行过程中可能调用到的所有系统API的名字,当进程运行时,它的可执行文件被调入内存,同时其IAT表的API名字将会被映射到相应的API在当前进程空间中的函数体入口地址,以后该进程所发出的API调用都将通过IAT跳转到相应的API函数体上[3]。因此,只需要在进程载入时修改IAT表,将要截取的API的入口地址转向新的一段代码,这段代码首先将此次API调用的函数名和参数记录下来,再转到原来的API真实地址继续执行。即通过修改应用程序内存映像的IAT中API函数的入口地址,就可以达到重定向API的目的。将API地址改为我们自己函数的地址,这样我们的函数就可以完成对该API的监控了。操作注册表、文件和创建其它进程的API函数如表1所示。其中ZwOpenProcess,ZwCreateProcess和ZwCreateProcessEx是未公开的。APIHook实现较简单,但要求PE文件格式比较熟悉,若进程是通过动态加载Dll的话,还需对LoadLibraryA、LoadLib-raryW、LoadLibraryExA、LoadLibraryExW和GetProcaddress等API函数进行处理,才能全部拦截到所有的特定API调用,系统开销较大。系统服务Hook实现和调试复杂,但避免了上述的不足,能以较小的代价达到整个系统范围内的拦截。所以选用系统服务Hook来设计实现程序的异常行为检测系统。1.2系统服务HookWindows操作系统的体系结构简图如图1所示。Windows工作模式分为用户模式和内核模式,用户模式的应用层API调用都是通过调用基于的本地系统服务,进入内核模式,由系统服务调度表根据所传入系统服务号在相应的系统服务表中查找所需的服务函数入口地址,最终调用内核模式中的系统服务来完成真正操作的。所以,Hook系统服务表中我们所需监控的系统服务,修改系统服务表中需要监控的系统服务函数指针指向我们自定义的系统服务函数,就能以最小的代价达到整个系统范围内的访问控制。操作注册表、文件和创建其它进程的系统服务函数如表2所示。22.1基于系统服务Hook的程序异常行为检测系统系统的总体架构总体设计结构如图2所示。用户通过应用层GUI界面设置要监控的程序及行为规-4374-用户模式GUI界面内核模式I/O接口监控检测模块关联注册表文件进程创建分析模块图2系统总体设计则;内核层驱动程序根据用户的设置实时检测被监控进程的注册表操作、文件操作和创建其它进程操作。当用户使用简单规则时,有进程企图执行文件操作、注册表操作和创建进程操作时,监控检测模块根据用户设置的行为规则对其操作合法性进行检查,如果合法,则继续执行操作;如果非法,则阻止;当用户启用关联分析规则时,则关联分析模块对该进程以上3种行为进行关联分析后再做出最后判断,发现进程异常行为时向用户告警。2.2设计要点及实现2.2.1对进程操作注册表行为的检测以检测进程创建注册表项的操作为例,相关的数据结构定义及函数实现如下:typedefNTSTATUS(*T_ZwCreateKey)(OUTPHANDLEKeyHandle,INACCESS_MASKDesiredAccess,INPOBJECT_ATTRIBUTESObjectAttributes,INULONGTitleIndex,INPUNICODE_STRINGClassOPTIONAL,INULONGCreateOptions,OUTPULONGDispositionOPTIONAL);staticT_ZwCreateKeyReal_ZwCreateKey,Hook_ZwCreateKey;//Real_ZwCreateKey用于保存原始的系统服务函数入口点;Real_ZwCreateKey=SYSCALL(ZwCreateKey);//Hook_ZwCreateKey为替换的系统服务函数入口点;SYSCALL(ZwCreateKey)=(PVOID)Hook_ZwCreateKey;对进程创建注册表项检测流程如图3所示。2.2.2对文件资源的监控以检测进程创建文件的操作为例,相关的数据结构定义及函数实现与进程对注册表项检测的类似。进程对创建文件检测流程如图4所示。2.2.3对进程创建的检测进程在运行的过程中创建并启动其它的进程是一种较典型的异常行为。相关的数据结构定义及函数实现与进程对注册表项检测的类似。对进程创建其它进程检测流程如图5所示。2.2.4对进程行为关联分析当用户启用关联分析规则时,关联分析模块通过检测进程对注册表资源、文件资源和创建其它进程的操作,分别生成以下进程行为记录。(1)进程创建注册表项行为记录E1={行为描述,进程名,进程路径,注册表项,当前时间};进程创建文件请求获取进程名,文件路径名是否是受监控的进程此类型文件是否允许创建Y调用原始系统函数Real_ZwCreateFile返回错误图4创建文件检测流程例如进程P1(路径为R1)在某个时间T,在注册表项HKLMSoft-wareMicrosoftWindowsCurrentVersionRun中创建项K,K的值V,表示方式为:E1=(创建注册表项键值,P1,R1,K,V,T)。(2)进程创建文件行为记录E2={行为描述,进程名,进程路径,新文件名称,新文件路径,当前时间};例如进程P1(路径为R1)在某个时间T,在路径R2中创建文件F2,表示方式:E2=(创建文件,P1,R1,F2,R2,T)。(3)进程创建其它进程并启动该进程行为记录E3={行为描述,进程名,进程路径,文件的名称,文件的路径,文件的进程名称,当前时间};例如进程P1(路径为R1)在某个时间T,加载运行了文件F2(路径为R2),生成进程P2,记录为:E3=(创建并启动进程,P1,R1,F2,R2,P2,T)。为了便于描述,全体行为记录用集合E表示,E={Ei|0

发布者:admin,转转请注明出处:http://www.yc00.com/web/1688598609a153680.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信