CN112597492A - 一种基于Windows内核的二进制可执行文件更改监测方法 - Google Patents

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

Info

Publication number
CN112597492A
CN112597492A CN202011544814.3A CN202011544814A CN112597492A CN 112597492 A CN112597492 A CN 112597492A CN 202011544814 A CN202011544814 A CN 202011544814A CN 112597492 A CN112597492 A CN 112597492A
Authority
CN
China
Prior art keywords
file
monitoring
callback function
change
mode
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
Application number
CN202011544814.3A
Other languages
English (en)
Other versions
CN112597492B (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.)
INSIGMA TECHNOLOGY CO LTD
Original Assignee
INSIGMA TECHNOLOGY 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 INSIGMA TECHNOLOGY CO LTD filed Critical INSIGMA TECHNOLOGY CO LTD
Priority to CN202011544814.3A priority Critical patent/CN112597492B/zh
Publication of CN112597492A publication Critical patent/CN112597492A/zh
Application granted granted Critical
Publication of CN112597492B publication Critical patent/CN112597492B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/554Detecting local intrusion or implementing counter-measures involving event detection and direct action
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/552Detecting local intrusion or implementing counter-measures involving long-term monitoring or reporting

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Storage Device Security (AREA)

Abstract

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

Description

一种基于Windows内核的二进制可执行文件更改监测方法
技术领域
本发明涉及计算机防御系统技术领域,具体为一种基于Windows内核的二进制可执行文件更改监测方法。
背景技术
现有的杀毒软件也可以实现对系统的监测,不过主要的方式是通过HOOK系统的系统调用入口来实现;Hook是Windows中提供的一种用以替换DOS下“中断”的系统机制,中文译为“挂钩”或“钩子”。在对特定的系统事件进行hook后,一旦发生已hook事件,对该事件进行hook的程序就会受到系统的通知,这时程序就能在第一时间对该事件做出响应。钩子(Hook)是Windows消息处理机制的一个平台,应用程序可以在上面设置子程以监视指定窗口的某种消息,而且所监视的窗口可以是其他进程所创建的。当消息到达后,在目标窗口处理函数之前处理它。钩子机制允许应用程序截获处理window消息或特定事件。钩子实际上是一个处理消息的程序段,通过系统调用,把它挂入系统。每当特定的消息发出,在没有到达目的窗口前,钩子程序就先捕获该消息,亦即钩子函数先得到控制权。这时钩子函数即可以加工处理(改变)该消息,也可以不作处理而继续传递该消息,还可以强制结束消息的传递。
钩子的本质是一段用以处理系统消息的程序,通过系统调用,将其挂入系统。钩子的种类有很多,每种钩子可以截获并处理相应的消息,每当特定的消息发出,在到达目的窗口之前,钩子程序先行截获该消息、得到对此消息的控制权。此时在钩子函数中就可以对截获的消息进行加工处理,甚至可以强制结束消息的传递。而键盘钩子,只是为了截获键盘消息的。全局钩子可以捕获在Windows平台下任意窗口上的键盘操作。
我们把所有被HOOK的系统服务的过滤函数放在了一个表里,索引即对应的系统服务在该过滤函数表中的索引。所有列出来的函数都会被HOOK掉的,是否处理指某个系统服务有没有相应的过滤函数进行处理,拒绝还是放行就是在过滤函数中完成判断的。不处理的系统服务,将会直接调用原始服务例程
而所有HOOK的入口就是KiFastCallEntry这个内核函数,KiFastCallEntry是ring3经sysenter进入内核后的第一个必经之地(不考虑sysenter hook),但是KiFastCallEntry所作的工作也很多,比如设置DS,ES,FS段寄存器的值,从ETHREAD中取ServiceTable,判断ServiceIndex是否合法,若合法则判断应使用哪张表(SSDT还是ShadowSSDT),然后从表中取出服务例程地址,从用户栈复制参数到内核栈,然后调用服务例程,调用完之后再做一点准备工作然后就由KiServiceExit再飞回ring3,相应的执行代码为;
代码:
Figure BDA0002855642470000021
Figure BDA0002855642470000031
首先不能hook在开头,这样太多的准备工作需要自己来完成,而且涉及到的操作太多的话,兼容性和稳定性就很成问题。显然我们又不能hook在call服务例程之后,这时该办的事都办完了,我们再接手就已经晚了,所以必须在call服务例程之前。KiFastCallEntry中的指令,真是有点寸士寸金的感觉,寄存器也不能随意改变,所以,我们可以在sub这个命令的地方修改,因为这里所有的环境都已经准备好了,这里可以改成jmp命令,这样就完成了HOOK的工作,jmp之后二级跳,就可以跳到自己的处理函数了。
专利CN104008337B公开一种基于Linux系统的主动防御方法及装置,该发明公开了一种基于Linux系统的主动防御方法及装置,属于系统安全领域。所述方法包括:采用钩子Hook监测Linux内核的系统调用;当监测到设置了Hook的系统调用被用户态进程调用时,判断所述用户态进程是否存在于白名单中;当所述用户态进程存在于所述白名单中时,允许所述用户态进程调用所述系统调用;当所述用户态进程不存在于所述白名单中时,禁止所述用户态进程调用所述系统调用;其中,所述白名单包括一个或多个允许执行系统调用的用户态进程。可以对Linux系统运行的程序等进行有效检测,对于Linux运行的恶意程序,后门木马程序等进行及时拦截,是一种Linux下的有效的主动防御方法。
专利CN109033869A公开一种加密文件系统挂载方法及装置,本申请适用于文件挂载领域,提供了加密文件系统挂载方法及装置,其方法包括:在启动系统后,从存储的配置文件提取预存环境参数;判断启动系统的环境参数是否与所述预存环境参数匹配;若与所述预存环境参数匹配,则解密第一密钥;根据所述第一密钥解密并挂载加密文件系统。本申请可保护加密文件系统的数据安全,同时保证加密文件系统无人为干预下正常运行,减少运营成本。其面对的是现有的加密文件系统,包括针对整个硬盘或分区加密的系统,如LUKS(Linux Unified Key Setup,Linux统一密钥配置),BitLocker(一种磁盘加密工具)等,或者针对目录的加密覆盖文件系统,比如Encfs(免费的、开源的、基于GPL的、FUSE级别的加密文件系统)。然而此类方案都是基于人机交互的,需要用户参与才可执行。例如,用户在登录系统后,需要输入密码,解密加密分区或文件。这对于自启动的服务器而言,是一种无法接受的缺陷。本申请实施例与现有技术相比存在的有益效果是:在加密文件系统被挂载前,检测启动系统的环境参数,当检测到的环境参数不与预存环境参数匹配,停止挂载加密文件系统,保证了加密文件系统的数据安全性;当检测到的环境参数与预存环境参数匹配,先解密第一密钥,再使用第一密钥解密并挂载加密文件系统,无需人为干预,减少运营成本。
专利CN 101350052B公开了一种发现计算机程序的恶意行为的方法和装置。利用本发明提出的方法和装置利用了被监视进程集合的概念来分析恶意程序的行为特征。本发明提出的发现计算机程序的恶意行为的方法包括:监视计算机程序执行的动作;在被监视进程集合库中,搜索与所监视的动作相关的一个进程集合,所述进程集合至少包括在创建关系上相互关联的至少一个可疑进程的信息;如果搜索到所述与所监视的动作相关的进程集合,则根据所述搜索出的进程集合中记载的信息,通过关联性分析判断所监视动作是否属于恶意行为。
专利CN102833228A公开了一种云计算环境下免疫网络的病毒检测系统及方法,本发明涉及云计算环境下一种基于MapReduce免疫网络的病毒检测系统及方法,属于网络安全技术领域。本发明包括:不同类型的免疫细胞构成的细胞库、基于MapReduce的免疫网络模块和基于MapReduce免疫网络的病毒检测模块。基于MapReduce模型,将免疫网络的构建和动态平衡分解成数以万计的子程序,再将拆分后的子程序上交给由无数服务器组成的云计算环境进行处理,生成记忆检测器;云环境中的服务器再利用这些记忆检测器的分布、并行检测云环境中的病毒。本发明结合了云计算平台强大的数据处理能力和免疫网络的优越性,使用本发明,能有效提高检测器的检测效率,降低检测器的冗余度,提高整个云计算环境的病毒检测率,加强云计算环境的安全性。
专利CN 105844146A公开了一种保护驱动程序的方法、装置及电子设备,并具体公开了包括:在预先注入到内核层中的钩子函数监测到应用层进程调用预先设置的驱动程序加载函数时,钩住所述驱动程序加载函数;提取调用所述驱动程序加载函数的应用层进程的文件路径信息,获取所述文件路径信息映射的驱动程序;如果获取的驱动程序与预先设置的驱动程序特征库中的任一驱动程序相同,拒绝所述应用层进程的驱动程序加载请求。这样,通过Hook驱动程序加载函数,当应用程序调用驱动程序加载函数以加载对应的驱动程序时,能够及时拦截应用程序的加载行为,提升了操作系统的安全防护效率,增强了操作系统的安全性。
可见,目前,Windows系统中监视中对文件的监测中具备以下缺陷;
1.现有的系统防御方法,监测全系统文件的更改,也可以使用系统调用HOOK或者是用户层DLL注入的方式,系统调用HOOK,是对windows操作系统SSDT的注入方式,需要在插入模块的时候对每个需要HOOK的系统调用单独进行HOOK,兼容性不好,并且对整体的功能实现不利,这容易造成系统崩溃,给用于带来不便,容易对该系统防御方法产生不友好的形象;
2.其次,用户层DLL注入的方式,在windows系统中启用类似linux的PRELOAD操作,对每个新进程进行DLL注入,此方法有可能造成用户层进程的不稳定;
3.Windows系统是一个在不断更新的系统,如从最初的Windows1.1、windows XP等,到现在Windows10,开发公司在不断更新操作系统时,可能会对内核做一些修改,因此,在最新的windows系统上,这种方法的效果越来越差,有的时候是无法实现的,因此需要同步不断更新系统防御系统和防御方法,否则无法执行,或者防御效果差。
面对上述技术问题,人们希望提供一种能够能对Windows系统件兼容性好、并且成本低、误码率低、环保和反应速度快的系统防御方法。但到目前为止,现有技术中并无有效办法解决上述技术难题。
发明内容
本发明的目的在于提供一种基于Windows内核的二进制可执行文件更改监测方法,以解决系统兼容性的问题,能够更全面的监测系统情况,更适合新的windows系统。
为实现上述目的,本发明提供如下技术方案:
一种基于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),来进行一些额外的操作,所述额外的操作包括判断这个关闭的文件是否先前进行了写入操作,如果有写入操作,就进行相应的操作,以实现监测文件更改的重要一环;
步骤S7,关闭文件,完成回调函数NPPostCleanUp,此时文件操作结束。
优选的,利用windows系统中官方提供的可以HOOK的点,挂入回调回调函数来监控文件系统的访问。
优选的,采用所述回调函数回调函数点,通过FltRegisterFilter来注册,每一个回调函数用来分别控制不同的操作流程中的点。
优选的,在文件覆盖方式(FILE_OVERWRITE_IF和FILE_OVERWRITE)打开,如果处理拦截了这个,就禁止全系统进行覆盖写的操作;其中,在回调函数NtPreCreate中,文件对象FileObject还没有产生。
优选的,步骤S3中,把所述PE文件的文件控制块解构挂入一个队列中(writeCachedInode),以阻止后续对这些文件新的写入操作,以及在回调函数NPCleanUp中进行额外的操作。
优选的,所述操作的类型包括文件改名,文件删除,其中对删除操作,以指定系统中的某些文件无法被删除,只要在回调函数NPPreSetInfomation返回的时候返回FLT_PEOB_COMPLETE值。
另外一方面,本申请还提供一种基于Windows内核的二进制可执行文件更改监测系统,执行基于Windows内核的二进制可执行文件更改监测方法,包括如下功能模块:中央服务器、白盾服务器、web管理端和多个白盾客服端;所述白盾服务器包括web接入模块、安全控制器和日志服务器;
其中:所述web管理端和所述web接入模块数据通信连接,各所述白盾客服端和所述安全控制器数据通信连接,所述web接入模块和所述安全控制器数据通信连接,所述安全控制器和所述日志服务器数据连接,所述中央服务器和所述白盾服务器数据通信连接。
优选的,应用在白盾windows客户端中,以文件系统模块存在,在白盾系统初始化的时候,注册所述文件模块。
另外一方面,本申请还提供一种基于Windows内核的二进制可执行文件更改监测系统的应用优选的,所述文件模块根据监测方法,在全系统抓取PE格式的文件,阻止或通过指定文件的更改操作又或者将指定格式的文件发送给白盾的内核线程进行更多的指定操作。
优选的,所述指定操作包括CRC的计算、文件长度的计算和文件等级的评估。
与现有技术相比,本发明的有益效果是:
1、本发明的目的就是以最大兼容性为前提,监控整个系统的文件的相关操作,甚至是以映射方式对文件的操作,这些操作有读取,写入,删除,改名等等,用了这些方式,甚至可以从系统级的角度禁止整个系统的升级操作。
2、本发明可以实现系统文件级操作的监测,处理,比如可以实现系统级的禁止指定文件写入的操作,禁止系统自动升级,禁止外来文件的写入等等。
附图说明
图1为本发明的基于Windows内核的二进制可执行文件更改监测方法的监测流程图;
图2为本发明的白盾的系统结构的示意图。
图中:1、中央服务器;2、白盾服务器;3、web接入模块;4、安全控制器;5、日志服务器;6、web管理端;7、白盾客服端。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
具体实施例一:
请参阅图1-2,本发明提供一种技术方案:一种基于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),来进行一些额外的操作,所述额外的操作包括判断这个关闭的文件是否先前进行了写入操作,如果有写入操作,就进行相应的操作,以实现监测文件更改的重要一环;
步骤S7,关闭文件,完成回调函数NPPostCleanUp,此时文件操作结束。
优选的,利用windows系统中官方提供的可以HOOK的点,挂入回调回调函数来监控文件系统的访问。
优选的,采用所述回调函数回调函数点,通过FltRegisterFilter来注册,注册的数据解构如下,解构中的函数就是我们需要实现的回调函数,每一个回调函数用来分别控制不同的操作流程中的点:
Figure BDA0002855642470000131
Figure BDA0002855642470000141
优选的,在文件覆盖方式(FILE_OVERWRITE_IF和FILE_OVERWRITE)打开,如果处理拦截了这个,就禁止全系统进行覆盖写的操作;其中,在回调函数NtPreCreate中,文件对象FileObject还没有产生。
优选的,步骤S3中,把所述PE文件的文件控制块解构挂入一个队列中(writeCachedInode),以阻止后续对这些文件新的写入操作,以及在回调函数NPCleanUp中进行额外的操作。
优选的,所述操作的类型包括文件改名,文件删除,其中对删除操作,以指定系统中的某些文件无法被删除,只要在回调函数NPPreSetInfomation返回的时候返回FLT_PEOB_COMPLETE值。
具体实施例二:
另外一方面,本申请还提供一种基于Windows内核的二进制可执行文件更改监测系统,执行基于Windows内核的二进制可执行文件更改监测方法,包括如下功能模块:中央服务器、白盾服务器、web管理端和多个白盾客服端;所述白盾服务器包括web接入模块、安全控制器和日志服务器;
其中:所述web管理端和所述web接入模块数据通信连接,各所述白盾客服端和所述安全控制器数据通信连接,所述web接入模块和所述安全控制器数据通信连接,所述安全控制器和所述日志服务器数据连接,所述中央服务器和所述白盾服务器数据通信连接。
优选的,应用在白盾windows客户端中,以文件系统模块存在,在白盾系统初始化的时候,注册所述文件模块。
具体实施例三:
本申请还提供一种基于Windows内核的二进制可执行文件更改监测系统的应用优选的,所述文件模块根据监测方法,在全系统抓取PE格式的文件,阻止或通过指定文件的更改操作又或者将指定格式的文件发送给白盾的内核线程进行更多的指定操作。
优选的,所述指定操作包括CRC的计算、文件长度的计算和文件等级的评估。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。

Claims (10)

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),来进行一些额外的操作,所述额外的操作包括判断这个关闭的文件是否先前进行了写入操作,如果有写入操作,就进行相应的操作,以实现监测文件更改的重要一环;
步骤S7,关闭文件,完成回调函数NPPostCleanUp,此时文件操作结束。
2.根据权利要求1所述的一种基于Windows内核的二进制可执行文件更改监测方法,其特征在于:利用windows系统中官方提供的可以HOOK的点,挂入回调回调函数来监控文件系统的访问。
3.根据权利要求1所述的一种基于Windows内核的二进制可执行文件更改监测方法,其特征在于:采用所述回调函数回调函数点,通过FltRegisterFilter来注册,每一个回调函数用来分别控制不同的操作流程中的点。
4.根据权利要求1所述的一种基于Windows内核的二进制可执行文件更改监测方法,其特征在于:在文件覆盖方式(FILE_OVERWRITE_IF和FILE_OVERWRITE)打开,如果处理拦截了这个,就禁止全系统进行覆盖写的操作;其中,在回调函数NtPreCreate中,文件对象FileObject还没有产生。
5.根据权利要求1所述的一种基于Windows内核的二进制可执行文件更改监测方法,其特征在于:步骤S3中,把所述PE文件的文件控制块解构挂入一个队列中(writeCachedInode),以阻止后续对这些文件新的写入操作,以及在回调函数NPCleanUp中进行额外的操作。
6.根据权利要求1所述的一种基于Windows内核的二进制可执行文件更改监测方法,其特征在于:所述操作的类型包括文件改名,文件删除,其中对删除操作,以指定系统中的某些文件无法被删除,只要在回调函数NPPreSetInfomation返回的时候返回FLT_PEOB_COMPLETE值。
7.一种基于Windows内核的二进制可执行文件更改监测系统,执行如权利要求1-6中任意一项所述的基于Windows内核的二进制可执行文件更改监测方法,包括如下功能模块:中央服务器(1)、白盾服务器(2)、web管理端(6)和多个白盾客服端(7);所述白盾服务器(2)包括web接入模块(3)、安全控制器(4)和日志服务器(5);
其中:所述web管理端和所述web接入模块数据通信连接,各所述白盾客服端(7)和所述安全控制器(4)数据通信连接,所述web接入模块(3)和所述安全控制器(4)数据通信连接,所述安全控制器(4)和所述日志服务器(5)数据连接,所述中央服务器(1)和所述白盾服务器(2)数据通信连接。
8.根据权利要求7所述的一种基于Windows内核的二进制可执行文件更改监测系统,其特征在于:应用在白盾windows客户端中,以文件系统模块存在,在白盾系统初始化的时候,注册所述文件模块。
9.根据权利要求8所述的一种基于Windows内核的二进制可执行文件更改监测系统的应用,其特征在于:所述文件模块根据监测方法,在全系统抓取PE格式的文件,阻止或通过指定文件的更改操作又或者将指定格式的文件发送给白盾的内核线程进行更多的指定操作。
10.根据权利要求9所述的一种基于Windows内核的二进制可执行文件更改监测应用,其特征在于:所述指定操作包括CRC的计算、文件长度的计算和文件等级的评估。
CN202011544814.3A 2020-12-24 2020-12-24 一种基于Windows内核的二进制可执行文件更改监测方法 Active CN112597492B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011544814.3A CN112597492B (zh) 2020-12-24 2020-12-24 一种基于Windows内核的二进制可执行文件更改监测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011544814.3A CN112597492B (zh) 2020-12-24 2020-12-24 一种基于Windows内核的二进制可执行文件更改监测方法

Publications (2)

Publication Number Publication Date
CN112597492A true CN112597492A (zh) 2021-04-02
CN112597492B CN112597492B (zh) 2023-09-19

Family

ID=75200642

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011544814.3A Active CN112597492B (zh) 2020-12-24 2020-12-24 一种基于Windows内核的二进制可执行文件更改监测方法

Country Status (1)

Country Link
CN (1) CN112597492B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112966313A (zh) * 2021-04-07 2021-06-15 北京安天网络安全技术有限公司 安全删除文件的方法、装置及计算机可读介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120079594A1 (en) * 2010-09-27 2012-03-29 Hyun Cheol Jeong Malware auto-analysis system and method using kernel callback mechanism
CN102542182A (zh) * 2010-12-15 2012-07-04 苏州凌霄科技有限公司 基于Windows平台的强制访问控制装置及控制方法
US10055572B1 (en) * 2017-06-12 2018-08-21 Mucteba Celik Systems and methods for preventing windows kernel code or drivers from being executed
CN111177665A (zh) * 2019-12-27 2020-05-19 浙大网新科技股份有限公司 一种新生成可执行文件的安全追溯方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120079594A1 (en) * 2010-09-27 2012-03-29 Hyun Cheol Jeong Malware auto-analysis system and method using kernel callback mechanism
CN102542182A (zh) * 2010-12-15 2012-07-04 苏州凌霄科技有限公司 基于Windows平台的强制访问控制装置及控制方法
US10055572B1 (en) * 2017-06-12 2018-08-21 Mucteba Celik Systems and methods for preventing windows kernel code or drivers from being executed
CN111177665A (zh) * 2019-12-27 2020-05-19 浙大网新科技股份有限公司 一种新生成可执行文件的安全追溯方法

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112966313A (zh) * 2021-04-07 2021-06-15 北京安天网络安全技术有限公司 安全删除文件的方法、装置及计算机可读介质

Also Published As

Publication number Publication date
CN112597492B (zh) 2023-09-19

Similar Documents

Publication Publication Date Title
US10291634B2 (en) System and method for determining summary events of an attack
US9769199B2 (en) Centralized storage and management of malware manifests
US9501310B2 (en) Micro-virtual machine forensics and detection
US9195823B1 (en) System and method for intercepting process creation events
US9292328B2 (en) Management of supervisor mode execution protection (SMEP) by a hypervisor
US9922192B1 (en) Micro-virtual machine forensics and detection
KR101122787B1 (ko) 보안관련 프로그래밍 인터페이스
US7665139B1 (en) Method and apparatus to detect and prevent malicious changes to tokens
US20170076092A1 (en) Micro-virtual machine forensics and detection
US8281410B1 (en) Methods and systems for providing resource-access information
US20110239306A1 (en) Data leak protection application
JP2004537105A (ja) 状態参照モニタ
CN104598823A (zh) 一种安卓系统中内核级rootkit检测方法及其系统
US10783041B2 (en) Backup and recovery of data files using hard links
CN109815700B (zh) 应用程序的处理方法及装置、存储介质、计算机设备
US9064130B1 (en) Data loss prevention in the event of malware detection
CN110135151B (zh) 基于lsm与系统调用拦截相配合的可信计算实现系统及方法
US20180026986A1 (en) Data loss prevention system and data loss prevention method
US9659182B1 (en) Systems and methods for protecting data files
CN109997138A (zh) 用于检测计算设备上的恶意进程的系统和方法
US9552481B1 (en) Systems and methods for monitoring programs
US7487548B1 (en) Granular access control method and system
CN108038380B (zh) 用于计算机安全的接种器和抗体
US9967263B2 (en) File security management apparatus and management method for system protection
CN112597492B (zh) 一种基于Windows内核的二进制可执行文件更改监测方法

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