基于Windows系统的进程黑白名单控制方法技术方案

技术编号:8161723 阅读:589 留言:0更新日期:2013-01-07 19:38
基于Windows系统的进程黑白名单控制方法,采用PsSetCreateProcessNotifyRoutine注册进程通知回调,对NtCreateSection、NtClose、NtCreateProcess函数进行挂钩,用于拦截和监控进程创建过程。同时还需拦截在创建进程时执行的函数NtCreateProcess、NtCreateProcessEx,用于判断被创建的进程是否允许运行,对非法的进程创建进行拦截。当系统调用“进程通知回调函数”时,则会对正在创建的进程再次进行判断,以确保能够准确的获取该进程所对应的用户名,实现按用户控制进程是否允许运行。本发明专利技术提供一种高效的黑白名单控制方法。

【技术实现步骤摘要】

本专利技术涉及一种。
技术介绍
目前Windows系统上进程监控技术大多米用PsSetCreateProcessNotifyRoutine、PsSetLoadImageNotifyRoutine注册进程创建回调和镜像加载回调来实现,或是采用HookNtCreateSection 或 NtCreateProcess 来实现。PsSetCreateProcessNotifyRoutine通过注册回调函数实现进程监控,而此时进程实际上已经在运行,无法在进程运行之前阻止进程运行,PsSetLoadImageNotifyRoutine和NtCreateSection在非创建进程的情况下也会被调用,因此对当前是否为创建进程的判断显得比较麻烦,也无法准确获取当前创建进程的用户,无法按用户控制进程的使用权限。拦截NtCreateProcess,利用这种方式在获取进程路径不一定是真实的进程路径,存在较大局限性。这种方式一般只是对父进程进行判断,在程序修改令牌情况下则无法正确识别。有鉴于此,本专利技术人针对现有技术的缺陷深入研究,并有本案产生。
技术实现思路
本专利技术所要解决的技术问题在于提供一种高效的。本专利技术采用以下技术方案解决上述技术问题,包括如下步骤步骤I :采用PsSetCreateProcessNotifyRoutine注册进程通知回调函数;步骤2dll^SSDT Hook对NtCreateSection、NtCreateProcess、NtCreateP;rocessEx、NtClose函数进行挂钩,使之被拦截;步骤3 :控制程序将事件标志发送到拦截驱动中;步骤4:用户打开程序;步骤5 :系统调用NtCreateSection,调用原有的流程,并记录Section与FileObject之间的对应关系;步骤6 :系统调用NtCreateProcess创建进程,此时根据Section获取对应的FileObject获取文件路径,即进程全路径,获取父进程用户SID,并将数据缓存在缓冲区中;步骤7 :设置通知事件,等待控制程序判断,若等待超时则执行步骤11 ;步骤8 :控制程序从拦截驱动缓冲中获取进程信息;步骤9 :控制程序根据进程全路径计算进程特征值,通过获取进程PE结构,以及数据段部分数据,计算md5,及用户名,并进行策略比较;如果程序禁止启动,则执行步骤10,并记录日志,如果程序允许启动,则执行步骤11 ;所述策略比较,包括若当前的策略为白名单模式,则比较进程的全路径,如果进程的全路径不在白名单列表中,则禁止进程启动,否则允许进程启动;若当期的策略为黑名单模式,先判断进程名称是否在黑名单列表,若进程名称在黑名单列表中则禁止进程启动,并记录进程MD5值,若进程名称不在黑名单列表中,则继续判断进程的md5值是否保护在黑名单列表中,若在黑名单列表中则禁止进程启动;都不在黑白的列表中时则允许进程启动;步骤10 :拦截驱动返回 STATUS_ACCESS_DENIED ;步骤11 :拦截驱动调用原有NtCreateProcess,允许进程启动;步骤12 :系统调用步骤I中所注册的回调函数,若为创建进程,执行步骤13 ;若为结束进程,则不进行处理;步骤13 :获取进程PID,进程路径,进程所属用户SID,并通知控制程序进行判断;步骤14 :控制程序根据进程全路径计算进程特征值,通过获取进程PE结构,以及数据段部分数据,计算md5及用户名,并进行策略比较,一旦进程禁止启动,则调用TerminateProcess结束进程,并记录日志;步骤15 :系统调用NtClose释放资源,解除Section FileObject的关系,调用原有NtClose函数。进一步地,还包括,步骤16 :控制程序更新策略进行策略变更时,由控制程序进行策略更新;若策略为白名单模式,则将白名单的进程路径写入到白名单列表中;若策略为黑名单模式,则将黑名单中的进程路径、进程名写入到黑名单列表中。本专利技术的优点在于通过进程特征识别能够对程序进行有效的控制。通过监控以上内核函数的调用,能够有效实现按用户管控进程,本专利技术在进程创建回调上再对进程信息进行获取,从而保证了获取进程信息的有效性,避免了单独采用NtCreateSenction在判断是否为程序加载上的复杂度和兼容性,非创建进程被误判断为进程创建行为。本专利技术通过对进程管控,保证只有受信任的进程才能在客户机上运行,极大的降低了客户机中病毒或非法入侵的概率,保障了客户机系统的安全性。附图说明下面参照附图结合实施例对本专利技术作进一步的描述。图I是本专利技术工作过程中的进程黑白名单控制时序图。图2是本专利技术中各模块关联图。具体实施方式本专利技术采用PsSetCreateProcessNotifyRoutine注册进程通知回调,对NtCreateSection、NtClose、NtCreateProcess函数进行挂钩,用于拦截和监控进程创建过程。拦截NtCreateSection和NtClose函数的目的是为了保证获取进程路径的正确性。同时还需拦截在创建进程时执行的函数NtCreateProcess、NtCreateProcessEx,用于判断被创建的进程是否允许运行,对非法的进程创建进行拦截。当系统调用“进程通知回调函数”时,则会对正在创建的进程再次进行判断,以确保能够准确的获取该进程所对应的用户名,实现按用户控制进程是否允许运行。综上分析,为了实现有效的进程管控,需要对NtCreateSection、NtClose、NtCreateProcess、NtCreateProcessEx 函数进行挂钩、也需要注册进程通知回调函数,以解决现有单一技术管控进程导致的局限性。下面请参阅图I和图2,详细描述具体步骤步骤I :采用PsSetCreateProcessNotifyRoutine注册进程通知回调函数;步骤2 :使用 SSDT Hook 对 NtCreateSection、NtCreateProcess>NtCreateProcessEx、NtClose函数进行挂钩,使之被拦截;步骤3 :控制程序将事件标志发送到拦截驱动中;步骤4:用户打开程序;步骤5 :系统调用NtCreateSection,调用原有的流程,并记录Section与FileObject之间的对应关系;步骤6 :系统调用NtCreateProcess创建进程,此时根据Section获取对应的FileObject获取文件路径,即进程全路径,获取父进程用户SID,并将数据缓存在缓冲区中;步骤I :设置通知事件,等待控制程序判断,若等待超时则执行步骤11 ;步骤8 :控制程序从拦截驱动缓冲中获取进程信息;步骤9 :控制程序根据进程全路径计算进程特征值,通过获取进程PE结构,以及数据段部分数据,计算md5,及用户名,并进行策略比较;如果程序禁止启动,则执行步骤10,并记录日志,如果程序允许启动,则执行步骤11 ;所述策略比较,包括若当前的策略为白名单模式,则比较进程的全路径,如果进程的全路径不在白名单列表中,则禁止进程启动,否则允许进程启动;若当期的策略为黑名单模式,先判断进程名称是否在黑名单列表,若进程名称在黑名单列表中则禁止进程启动,并记录进程MD5值,若进程名称不本文档来自技高网...

【技术保护点】
基于Windows系统的进程黑白名单控制方法,其特征在于:包括如下步骤:步骤1:采用PsSetCreateProcessNotifyRoutine注册进程通知回调函数;步骤2:使用SSDT?Hook对NtCreateSection、NtCreateProcess、NtCreateProcessEx、NtClose函数进行挂钩,使之被拦截;步骤3:控制程序将事件标志发送到拦截驱动中;步骤4:用户打开程序;步骤5:系统调用NtCreateSection,调用原有的流程,并记录Section与FileObject之间的对应关系;步骤6:系统调用NtCreateProcess创建进程,此时根据Section获取对应的FileObject获取文件路径,即进程全路径,获取父进程用户SID,并将数据缓存在缓冲区中;步骤7:设置通知事件,等待控制程序判断,若等待超时则执行步骤11;步骤8:控制程序从拦截驱动缓冲中获取进程信息;步骤9:控制程序根据进程全路径计算进程特征值,通过获取进程PE结构,以及数据段部分数据,计算md5,及用户名,并进行策略比较;如果程序禁止启动,则执行步骤10,并记录日志,如果程序允许启动,则执行步骤11;所述策略比较,包括:若当前的策略为白名单模式,则比较进程的全路径,如果进程的全路径不在白名单列表中,则禁止进程启动,否则允许进程启动;若当期的策略为黑名单模式,先判断进程名称是否在黑名单列表,若进程名称在黑名单列表中则禁止进程启动,并记录进程MD5值,若进程名称不在黑名单列表中,则继续判断进程的md5值是否保护在黑名单列表中,若在黑名单列表中则禁止进程启动;都不在黑白的列表中时则允许进程启动;步骤10:拦截驱动返回STATUS_ACCESS_DENIED;步骤11:拦截驱动调用原有NtCreateProcess,允许进程启动;步骤12:系统调用步骤1中所注册的回调函数,若为创建进程,执行步骤13;若为结束进程,则不进行处理;步骤13:获取进程PID,进程路径,进程所属用户SID,并通知控制程序进行判断;步骤14:控制程序根据进程全路径计算进程特征值,通过获取进程PE结构,以及数据段部分数据,计算md5及用户名,并进行策略比较,一旦进程禁止启动,则调用TerminateProcess结束进程,并记录日志;步骤15:系统调用NtClose释放资源,解除Section?FileObject的关系,调用原有NtClose函数。...

【技术特征摘要】

【专利技术属性】
技术研发人员:张辉
申请(专利权)人:福建升腾资讯有限公司
类型:发明
国别省市:

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

1
相关领域技术
  • 暂无相关专利