一种基于Windows内核的二进制可执行文件更改监测方法技术

技术编号:27936120 阅读:38 留言:0更新日期:2021-04-02 14:16
本发明专利技术公开了一种基于Windows内核的二进制可执行文件更改监测系统、监测方法和应用,包括如下功能模块:中央服务器(1)、白盾服务器(2)、web管理端(6)和多个白盾客服端(7);所述白盾服务器(2)包括web接入模块(3)、安全控制器(4)和日志服务器(5);所述web管理端和所述web接入模块数据通信连接,各所述白盾客服端(7)和所述安全控制器(4)数据通信连接,所述web接入模块(3)和所述安全控制器(4)数据通信连接,所述安全控制器(4)和所述日志服务器(5)数据连接,所述中央服务器(1)和所述白盾服务器(2)数据通信连接。本发明专利技术的目的就是以最大兼容性为前提,监控整个系统的文件的相关操作,甚至是以映射方式对文件的操作,这些操作有读取,写入,删除,改名等等,用了这些方式,甚至可以从系统级的角度禁止整个系统的升级操作。

【技术实现步骤摘要】
一种基于Windows内核的二进制可执行文件更改监测方法
本专利技术涉及计算机防御系统
,具体为一种基于Windows内核的二进制可执行文件更改监测方法。
技术介绍
现有的杀毒软件也可以实现对系统的监测,不过主要的方式是通过HOOK系统的系统调用入口来实现;Hook是Windows中提供的一种用以替换DOS下“中断”的系统机制,中文译为“挂钩”或“钩子”。在对特定的系统事件进行hook后,一旦发生已hook事件,对该事件进行hook的程序就会受到系统的通知,这时程序就能在第一时间对该事件做出响应。钩子(Hook)是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。钩子的本质是一段用以处理系统消息的程序,通过系统调用,将其挂入系统。钩子的种类有很多,每种钩子可以截获并处理相应的消息,每当特定的消息发出,在到达目的窗口之前,钩子程序先行截获该消息、得到对此消息的控制权。此时在钩子函数中就可以对截获的消息进行加工处理,甚至可以强制结束消息的传递。而键盘钩子,只是为了截获键盘消息的。全局钩子可以捕获在Windows平台下任意窗口上的键盘操作。我们把所有被HOOK的系统服务的过滤函数放在了一个表里,索引即对应的系统服务在该过滤函数表中的索引。所有列出来的函数都会被HOOK掉的,是否处理指某个系统服务有没有相应的过滤函数进行处理,拒绝还是放行就是在过滤函数中完成判断的。不处理的系统服务,将会直接调用原始服务例程而所有HOOK的入口就是KiFastCallEntry这个内核函数,KiFastCallEntry是ring3经sysenter进入内核后的第一个必经之地(不考虑sysenterhook),但是KiFastCallEntry所作的工作也很多,比如设置DS,ES,FS段寄存器的值,从ETHREAD中取ServiceTable,判断ServiceIndex是否合法,若合法则判断应使用哪张表(SSDT还是ShadowSSDT),然后从表中取出服务例程地址,从用户栈复制参数到内核栈,然后调用服务例程,调用完之后再做一点准备工作然后就由KiServiceExit再飞回ring3,相应的执行代码为;代码:首先不能hook在开头,这样太多的准备工作需要自己来完成,而且涉及到的操作太多的话,兼容性和稳定性就很成问题。显然我们又不能hook在call服务例程之后,这时该办的事都办完了,我们再接手就已经晚了,所以必须在call服务例程之前。KiFastCallEntry中的指令,真是有点寸士寸金的感觉,寄存器也不能随意改变,所以,我们可以在sub这个命令的地方修改,因为这里所有的环境都已经准备好了,这里可以改成jmp命令,这样就完成了HOOK的工作,jmp之后二级跳,就可以跳到自己的处理函数了。专利CN104008337B公开一种基于Linux系统的主动防御方法及装置,该专利技术公开了一种基于Linux系统的主动防御方法及装置,属于系统安全领域。所述方法包括:采用钩子Hook监测Linux内核的系统调用;当监测到设置了Hook的系统调用被用户态进程调用时,判断所述用户态进程是否存在于白名单中;当所述用户态进程存在于所述白名单中时,允许所述用户态进程调用所述系统调用;当所述用户态进程不存在于所述白名单中时,禁止所述用户态进程调用所述系统调用;其中,所述白名单包括一个或多个允许执行系统调用的用户态进程。可以对Linux系统运行的程序等进行有效检测,对于Linux运行的恶意程序,后门木马程序等进行及时拦截,是一种Linux下的有效的主动防御方法。专利CN109033869A公开一种加密文件系统挂载方法及装置,本申请适用于文件挂载领域,提供了加密文件系统挂载方法及装置,其方法包括:在启动系统后,从存储的配置文件提取预存环境参数;判断启动系统的环境参数是否与所述预存环境参数匹配;若与所述预存环境参数匹配,则解密第一密钥;根据所述第一密钥解密并挂载加密文件系统。本申请可保护加密文件系统的数据安全,同时保证加密文件系统无人为干预下正常运行,减少运营成本。其面对的是现有的加密文件系统,包括针对整个硬盘或分区加密的系统,如LUKS(LinuxUnifiedKeySetup,Linux统一密钥配置),BitLocker(一种磁盘加密工具)等,或者针对目录的加密覆盖文件系统,比如Encfs(免费的、开源的、基于GPL的、FUSE级别的加密文件系统)。然而此类方案都是基于人机交互的,需要用户参与才可执行。例如,用户在登录系统后,需要输入密码,解密加密分区或文件。这对于自启动的服务器而言,是一种无法接受的缺陷。本申请实施例与现有技术相比存在的有益效果是:在加密文件系统被挂载前,检测启动系统的环境参数,当检测到的环境参数不与预存环境参数匹配,停止挂载加密文件系统,保证了加密文件系统的数据安全性;当检测到的环境参数与预存环境参数匹配,先解密第一密钥,再使用第一密钥解密并挂载加密文件系统,无需人为干预,减少运营成本。专利CN101350052B公开了一种发现计算机程序的恶意行为的方法和装置。利用本专利技术提出的方法和装置利用了被监视进程集合的概念来分析恶意程序的行为特征。本专利技术提出的发现计算机程序的恶意行为的方法包括:监视计算机程序执行的动作;在被监视进程集合库中,搜索与所监视的动作相关的一个进程集合,所述进程集合至少包括在创建关系上相互关联的至少一个可疑进程的信息;如果搜索到所述与所监视的动作相关的进程集合,则根据所述搜索出的进程集合中记载的信息,通过关联性分析判断所监视动作是否属于恶意行为。专利CN102833228A公开了一种云计算环境下免疫网络的病毒检测系统及方法,本专利技术涉及云计算环境下一种基于MapReduce免疫网络的病毒检测系统及方法,属于网络安全
本专利技术包括:不同类型的免疫细胞构成的细胞库、基于MapReduce的免疫网络模块和基于MapReduce免疫网络的病毒检测模块。基于MapReduce模型,将免疫网络的构建和动态平衡分解成数以万计的子程序,再将拆分后的子程序上交给由无数服务器组成的云计算环境进行处理,生成记忆检测器;云环境中的服务器再利用这些记忆检测器的分布、并行检测云环境中的病毒。本专利技术结合了云计算平台强大的数据处理能力和免疫网络的优越性,使用本专利技术,能有效提高检测器的检测效率,降低检测器的冗余度,提高整个云计算环境的病毒检测率,加强云计算环境的安全性。专利CN105844146A公开了一种保护驱动程序的方法、装置及电子设备,并具体公开了包括:本文档来自技高网
...

【技术保护点】
1.一种基于Windows内核的二进制可执行文件更改监测方法,其特征在于:具体更改监测方法如下;/n步骤S1,当开始系统内核开始操作文件时,在打开文件前,回调函数NtPreCreate负责对文件打开前开始建立监测,回调函数通过判断文件打开的参数Option来分辨是以何种打开方式打开文件的;所述打开方式包括删除方式,写文件方式,写添加方式和文件覆盖方式;/n步骤S2,在打开文件后,回调函数NPPostCreate负责对文件打开后开始建立监测,回调函数NPPostCreate可以通过判断文件打开的参数Option来分辨是以何种打开方式打开文件的,所述打开方式包括删除方式,写文件方式,写添加方式和文件覆盖方式,在回调函数NPPostCreate中,对指定文件进行额外的监测更改操作;/n步骤S3,文件打开后且执行了回调函数NPPostCreate之后,回调函数NPPreRead、NpostRead、NPPreWrite和NPPostWrite这四个回调函数负责对文件读写更改的监测,判断Parameters.Write.ByteOffset.QuadPart的大小来判断这次写操作是否是正在写一个新的文件,而不是对老文件的局部修改,该判断只是针对PE格式的文件,假设QuadPart等于0,而且写入缓冲区的头部又是PE的格式,那么可以断定,这次的写操作是对新文件进行的;/n其中,在文件打开前,回调函数NPPreRead执行对文件读写更改的监测,在文件打开后,回调函数NpostRead负责执行对文件读写更改的监测;在文件写操作前,NPPreWrite执行对文件读写更改的监测;在文件写操作后,回调函数NPPostWrite负责对文件读写更改的监测;/n步骤S4,回调函数NPPreSetInfomation和NPPostSetInfomation对文件属性更改操作的监测,回调函数通过判断FileInformationClass这个参数来判断现在的操作是属于何种类类型,对每个类型都可以进行单独的监测和处理,还通过FltObjects来判断目标操作对象是目录还是文件或者是其他的特殊类型;/n步骤S5,回调函数NPPreSectionSync和NPPostSectionSync对文件映射同步到磁盘的监测,在windows中文件写入操作不仅仅是正常的write回调函数操作,还包括把文件映射到内存中,在内存中进行文件修改,然后在关闭文件的时候,系统把内存中的内容flush到磁盘当中,为实现对系统文件操作的全监测,监测回调函数NPPreSectionSync和NPPostSectionSync,通过判断SyncType的类型以及PageProtection的类型来进行文件映射的监测操作,把监测到的文件以节点的方式加入到队列(syncCacehdInode)当中,以便后续对这些文件进行额外的操作,在NPPreCleanup中对写入的文件进行删除操作;/n步骤S6,回调函数NPPreCleanUp和NPPostCleanUp负责对文件关闭的监测,利用回调函数NPPreCleanUp和NPPostCleanUp挂入队列的节点(writeCachedInode和syncCacehdInode),来进行一些额外的操作,所述额外的操作包括判断这个关闭的文件是否先前进行了写入操作,如果有写入操作,就进行相应的操作,以实现监测文件更改的重要一环;/n步骤S7,关闭文件,完成回调函数NPPostCleanUp,此时文件操作结束。/n...

【技术特征摘要】
1.一种基于Windows内核的二进制可执行文件更改监测方法,其特征在于:具体更改监测方法如下;
步骤S1,当开始系统内核开始操作文件时,在打开文件前,回调函数NtPreCreate负责对文件打开前开始建立监测,回调函数通过判断文件打开的参数Option来分辨是以何种打开方式打开文件的;所述打开方式包括删除方式,写文件方式,写添加方式和文件覆盖方式;
步骤S2,在打开文件后,回调函数NPPostCreate负责对文件打开后开始建立监测,回调函数NPPostCreate可以通过判断文件打开的参数Option来分辨是以何种打开方式打开文件的,所述打开方式包括删除方式,写文件方式,写添加方式和文件覆盖方式,在回调函数NPPostCreate中,对指定文件进行额外的监测更改操作;
步骤S3,文件打开后且执行了回调函数NPPostCreate之后,回调函数NPPreRead、NpostRead、NPPreWrite和NPPostWrite这四个回调函数负责对文件读写更改的监测,判断Parameters.Write.ByteOffset.QuadPart的大小来判断这次写操作是否是正在写一个新的文件,而不是对老文件的局部修改,该判断只是针对PE格式的文件,假设QuadPart等于0,而且写入缓冲区的头部又是PE的格式,那么可以断定,这次的写操作是对新文件进行的;
其中,在文件打开前,回调函数NPPreRead执行对文件读写更改的监测,在文件打开后,回调函数NpostRead负责执行对文件读写更改的监测;在文件写操作前,NPPreWrite执行对文件读写更改的监测;在文件写操作后,回调函数NPPostWrite负责对文件读写更改的监测;
步骤S4,回调函数NPPreSetInfomation和NPPostSetInfomation对文件属性更改操作的监测,回调函数通过判断FileInformationClass这个参数来判断现在的操作是属于何种类类型,对每个类型都可以进行单独的监测和处理,还通过FltObjects来判断目标操作对象是目录还是文件或者是其他的特殊类型;
步骤S5,回调函数NPPreSectionSync和NPPostSectionSync对文件映射同步到磁盘的监测,在windows中文件写入操作不仅仅是正常的write回调函数操作,还包括把文件映射到内存中,在内存中进行文件修改,然后在关闭文件的时候,系统把内存中的内容flush到磁盘当中,为实现对系统文件操作的全监测,监测回调函数NPPreSectionSync和NPPostSectionSync,通过判断SyncType的类型以及PageProtection的类型来进行文件映射的监测操作,把监测到的文件以节点的方式加入到队列(syncCacehdInode)当中,以便后续对这些文件进行额外的操作,在NPPreCleanup中对写入的文件进行删除操作;
步骤S6,回调函数NPPreCleanUp和NPPostCleanUp负责对文件关闭的监测,利用回调函数NPPreCleanUp和NPPostCleanUp挂入队列的节点(writeCachedInode和syncCacehdInode),来进行一些额外的操作,所述额外的操作包括判断这个关闭的文件是否先前进行了写入操作,如果有写入操作,...

【专利技术属性】
技术研发人员:徐鼎鼎胡晨展周力炜
申请(专利权)人:浙大网新科技股份有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1