本发明专利技术公开了一种监控程序模块加载活动的系统过滤方法。本发明专利技术请求操作系统在发生程序模块加载活动时发出通知,并能够在有程序模块发生加载活动时接收到操作系统发出的加载程序模块活动的通知,此时,只要该程序模块对应的原始文件在其加载过程未发生非法篡改,则读取该程序模块的原始文件内容并计算散列结果,并根据散列结果与预置的过滤策略数据条件的匹配结果来决定该程序模块加载活动是否给予通过,从而能够提高系统安全保护。
【技术实现步骤摘要】
本专利技术涉及程序加载过滤技术,特别涉及一种监控程序模块加载活动的系统过滤 方法。
技术介绍
在学校机房或网吧等公共场所,电脑的系统安全性尤为受管理员和用户关注,人 们一般会考虑通过安装还原软件或杀毒软件来增强系统的防护,但这些方案在实际运作中 也存在着不足。一方面,还原软件通常并不能直接抵御恶意程序的加载运行,现在的恶意程序越 来越多以内核驱动的形式运行,因而往往能够强行突破还原软件的保护。另一方面,杀毒软件虽然能在恶意程序落地的第一时间进行查杀,但需要不断更 新特征库来效甄别新的病毒,对于维护几十台甚至几百台电脑的机构或营业场所来说,这 显然增加了系统的管理成本;另外,杀毒软件的使用也会一定程序上降低系统的性能,加上 难以避免的误报。
技术实现思路
有鉴于此,本专利技术提供了,该方法请 求操作系统在发生程序模块加载活动时发出通知,然后执行如下步骤步骤a、接收操作系统发出的程序模块加载活动通知,然后执行步骤b ;步骤b、获取上述程序模块在系统内存中处于加载状态下的PE头部信息、以及该 程序模块包含在磁盘中对应的原始文件内容中的PE头部信息;步骤c、比较所获取的加载状态下的PE头部信息与原始文件内容中的PE头部信息 是否匹配,如果不匹配则执行步骤f,如果匹配则执行步骤d ;步骤d、读取该程序模块的原始文件内容、并计算原始文件内容对应的散列结果;步骤e、根据散列结果与预置的过滤策略数据条件的匹配结果,决定上述程序模块 的加载活动是否给予通过,如果不给予通过则执行步骤f,如果给予通过则结束本流程;步骤f、修改上述处于加载活动中的程序模块的入口代码,用以终止其继续执行, 然后结束本流程。优选地,所述请求操作系统在发生程序模块加载活动时发出通知包括调用操作 系统的内核系统函数,注册程序模块加载通知回调例程。优选地,所述的操作系统为Windows系统,所述的内核系统函数为 PsSetLoadImageNotifyRoutine ο优选地,所述的通知中进一步包括发生加载活动的程序模块于磁盘中的原始文件 路径、该程序模块当前加载基址和加载后的模块长度。优选地,步骤a中所获取的加载状态下的PE头部信息,由上述程序模块的当前加 载基址及偏移量计算得到;步骤a中所获取的原始文件内容中的PE头部信息,由对应程序模块在原始文件中的内容通过附加文件偏移计算得到。优选地,所述步骤e包括el、判断原始文件内容的散列结果是否与过滤策略预置数据中的任一黑名单项或 任一白名单项匹配,如果匹配任一黑名单项,则直接拒绝加载活动的通过,然后结束本流 程;如果匹配任一白名单项,则直接允许加载活动的通过,然后结束本流程;否则,无匹配 的黑名单项和白名单项、并执行步骤e2 ;e2、判断过滤策略是否预置为默认拒绝通过,如果是,则直接拒绝加载活动的通 过,然后结束本流程;否则,允许加载活动的通过,然后结束本流程。由上述技术方案可见,本专利技术请求操作系统在发生程序模块加载活动时发出通 知,并能够在有程序模块发生加载活动时接收到操作系统发出的加载程序模块活动的通 知,此时,只要该程序模块对应的原始文件在其加载过程未发生非法篡改,则读取该程序模 块的原始文件内容并计算散列结果,并根据散列结果与预置的过滤策略数据条件的匹配结 果来决定该程序模块加载活动是否给予通过,从而能够提高系统安全保护。相比于现有技术中的软件还原方式,由于恶意程序即便是以内核驱动的形式运 行,其对应的程序模块也需要由操作系统负责加载和调度运行,因而本专利技术通过对处于加 载状态下的程序模块予以过滤,能够避免未经鉴别认证的程序模块的运行,从而能够克服 软件还原方式所存在的不足,提高系统安全防护的安全性;相比于现有技术中的软件杀毒方式,由于本专利技术不需要为了甄别新病毒而不断更 新特征库,因而降低了部署系统安全防护的管理成本;并且,由于本专利技术监控的是程序模块 的加载时机,无需实时对文件系统执行全局扫描和过滤,因而能够避免杀毒软件使用过程 中对系统性能带来的负面影响。附图说明图1为本专利技术实施例中监控程序模块加载活动的系统过滤方法的一示例性流程 图。具体实施例方式为使本专利技术的目的、技术方案及优点更加清楚明白,以下参照附图并举实施例,对 本专利技术进一步详细说明。图1为本专利技术实施例中监控程序模块加载活动的系统过滤方法的一示例性流程 图。如图1所示,本实施例中监控程序模块加载活动的系统过滤方法可以由一个底层内核 模式驱动程序来执行,例如,该底层内核模式驱动程序可命名为FilterDriver. sys,且该系 统过滤方法包括步骤100,底层内核模式驱动程序请求操作系统在发生程序模块加载活动时发出 通知。本步骤中,底层内核模式驱动程序可以通过调用操作系统的内核系统函数的方 式,向操作系统注册一个程序模块加载通知回调例程。例如,对于Windows系统来说,可供 底层内核模式驱动程序调用的内核系统函数可以选为PsSetLoadlmageNotifyRoutine,底 层内核模式驱动程序注册的回调例程可以命名为OnLoadlmageNotifyProc。步骤101,在有程序模块(如aaa. sys、bbb. exe.ccc. dll等)发生加载活动时,底 层内核模式驱动程序接收到操作系统发出的程序模块加载活动通知。步骤102,底层内核模式驱动程序获取上述程序模块在系统内存中处于加载状态 下的PE (Portable Executable,可移植的可执行文件)头部信息、以及该程序模块包含在 磁盘中对应的原始文件内容中的PE头部信息。以Windows系统为例,本步骤中所获取的加载状态下的PE头部信息、以及原始 文件内容中的PE头部信息,均可以包括IMAGE_NT_HEADERS、IMAGE_FILE_HEADER, IMAGE_ 0PTI0NAL_HEADER、以及 IMAGE_SECTION_HEADER 等 Windows 系统定义的结构。此外,步骤101所接收到通知中可以进一步包括发生加载活动的程序模块于磁盘 中的的原始文件路径、以及该程序模块当前加载基址和加载后的模块长度。这种情况下在 本步骤中所获取的加载状态下的PE头部信息,可以由上述程序模块的当前加载基址及偏 移量计算得到;而获取的原始文件内容中的PE头部信息,可以由对应程序模块在原始文件中的 内容通过附加文件偏移计算得到,例如,对于Windows操作系统来说,底层内核模式驱动程 序可以通过调用系统函数ZwReadFile来读取原始文件内容。步骤103,底层内核模式驱动程序比较所获取的加载状态下的PE头部信息与原始 文件内容中的PE头部信息是否匹配,如果不匹配则表示该程序模块加载过程中对应的原 始文件发生了非法篡改、并执行步骤105,如果匹配则表示该程序模块加载过程中对应的原 始文件未被非法篡改、并执行步骤104。步骤104、计算原始文件内容对应的散列结果。本步骤中,利用MD5,SHA-I或者CRC等现有算法计算原始文件内容对应的散列结^ ο步骤105、底层内核模式驱动程序根据散列结果与预置的过滤策略数据条件的匹 配结果,决定上述程序模块的加载活动是否给予通过,如果给予通过则结束本流程,如果不 给予通过则执行步骤106。本步骤中,底层内核模式驱动程序可以利用散本文档来自技高网...
【技术保护点】
一种监控程序模块加载活动的系统过滤方法,其特征在于,该方法请求操作系统在发生程序模块加载活动时发出通知,然后执行如下步骤:步骤a、接收操作系统发出的程序模块加载活动通知,然后执行步骤b;步骤b、获取上述程序模块在系统内存中处于加载状态下的PE头部信息、以及该程序模块包含在磁盘中对应的原始文件内容中的PE头部信息;步骤c、比较所获取的加载状态下的PE头部信息与原始文件内容中的PE头部信息是否匹配,如果不匹配则执行步骤f,如果匹配则执行步骤d;步骤d、读取该程序模块的原始文件内容、并计算原始文件内容对应的散列结果;步骤e、根据散列结果与预置的过滤策略数据条件的匹配结果,决定上述程序模块的加载活动是否给予通过,如果不给予通过则执行步骤f,如果给予通过则结束本流程;步骤f、修改上述处于加载活动中的程序模块的入口代码,用以终止其继续执行,然后结束本流程。
【技术特征摘要】
【专利技术属性】
技术研发人员:邝耀华,
申请(专利权)人:湖北盛天网络技术有限公司,
类型:发明
国别省市:83
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。