欢迎来到学术参考网

基于Windows内核进程监控机制的技术建设

发布时间:2015-08-06 09:11

  1 引言
  目前Windows进程监控技术主要有两类:一类是进程过滤驱动程序。其实现机制是定义每一个进程操作相关的过滤函数,类似于开源的Linux内核技术机制,来完成对系统进程进行监控的功能;二类是API HOOK技术。这是许多杀毒软件和安全防护软件采用的技术,特别是在实现某些嵌入式实时安全检测的功能的时候使用较多。当前HOOK技术种类繁多,并不能确定杀毒软件具体采用哪种技术,这也是目前为什么不同的杀毒软件可能会相冲突的重要原因。表1为两种技术的区别,采用API HOOK开发技术生成的结果为.dll文件,作用于用户模式,而采用驱动模式生成的为.sys内核文件,作用于内核模式。本文研究中,为了不与系统的杀毒软件相冲突,采用内核模块驱动技术来实现。
  2 Windows进程监控研究与实现
  2.1 Windows内核进程驱动模块开发技术
  在Windows操作系统中,设备驱动程序是操作系统的底层部分,能够直接对计算机系的所有硬件资源进行操作。在应用环境中,任何的应用程都不能直接对系统设备进行操作,只能通过调用相应的系统函数,再通过相应的设备驱动程序来操作系统的硬件资源。所以,为了应对这种对硬件的特殊依赖性机制,Windows NT操作系统使用了一个简化的特权检查机制,使其映射到指定的CPU上的模型来描述硬件特权级。DDK作为一种综合的驱动程序开发工具包(DDK),它支持多个 Windows操作系统版本的驱动程序开发。
  WDM驱动程序的基本结构:DriverEntry例程。和NT驱动程序比较起来,类似的是DriverEntry也是WDM驱动程序的入口程序,但其初始化作用被分散在其他的历程中,比如后者在AddDevice例程中创建设备对象,而不是在DriverEntry中。AddDevice例程。AddDevice例程是WDM驱动所独有的,其主要是完成驱动程序初始化。DriverUnload例程。DriverUnload例程在NT式驱动中主要负责做删除设备和取消符号链接,但是在WDM驱动中,这部分由IRP_MN_REMOVE_ DEVICEIRP的处理函数所处理,此例程相对简单。
  2.2 Windows进程监控设计与实现
  Windows客户端进程监控模块总体方案是从当前的主流的Windows 服务器操作系统出发,根据 WDM这个微软全新的驱动程序模型,使用Microsoft公司提供的驱动程序开发工具包DDK,设计并实现了Windows进程监控驱动程序。在该驱动程序的开发中利用Windows多线程,在Windows 服务器中部署的监控程序启动时调起该驱动程序的线程,根据相应的配置规则对进程进行监控。研究和实现用户信任列表中进程的监控、恶意进程的拦截为本系统的主要研究内容;为Windows服务器系统提供保护,可以根据其安全特性要求设定保护规则进行系统进程记录,便于后续分析;直接对恶意列表中进程的开启限制为系统的安全运行提供了保护,可根据实际系统的需要对恶意列表进行修改和设定,系统通过驱动程序技术读取用户设置的恶意进程并对其进行拦截。本文研究的进程监控模式如表2所示。
  Window进程监控流程机制。
  (1)监控系统程序运行,利用Windows内核驱动开发的进程驱动模块(.sys文件)创建进程监控系统服务,系统进程监控线程被启动。
  (2)循环进行系统进程的监控,具体用户程序监控过程,如图1所示。
  A.当有进程起来时,获取当前的开启的进程名字。
  B.根据设定的监控规则,对当前进程名进行匹配,根据表2中描述,有三种设置模式。a.高级模式(只允许信任列表中的进程执行):对当前进程在用户设置的信任进程列表中查找,如果没有找到,则直接禁用此进程。b.中级模式(允许信任列表进行和含有数字签名的进程执行):对当前启动的进程名在信任进程列表中和对应的数字签名进行匹配,如果没找到则禁止该进程。c.低级模式(只禁止恶意列表中的进程执行时):对当前进程在恶意进程列表中查找,如果找到则禁用当前进程,否则启动该进程。
  (3) 内核驱动程序处理根据用户程序传递的控制信号进行处理,如图2所示。
  (4)退出当前进程的监控流程,开启下一个进程监控循环。
  启用内核驱动模块的相关函数如下:
  CreateService(sch, "***", "***",…….); //启动进程监控系统服务
  GetProcAddress(GetModuleHandle(""),"NtCreateProcess"));//获取进程信息
  DeviceIoControl (m_Device, ,….); //向内核驱动函数传递进程参数
  内核驱动模块的相关函数如下:
  DriverEntry( ……….) //入口函数
  {//设置AddDevice函数
  //设置各个IRP的派遣函数
  theDriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] = DevDispatch ;
  theDriverObject->DriverUnload = OnUnload;
  }
 AddDevice(….) //创建设备对象
  HandelRemoveDevice( ….) //设备取消
  3 系统测试及运行
  如图3所示,系统客户端的进程监控图根据设置的信任进程列表和恶意进程列表来对进程进行监控。根据系统的设计和使用规则,在系统恶意进程列表中添加“D:\Program Files\Tencent\QQ2013\Bin\”,来对系统的恶意进程拦截功能进行测试,设置规则界面如图3所示。
  重启客户端程序,在客户端机器上启动上述恶意进程列表中设置的QQ程序,发现该进程被拦截,并产生日志,如图4所示。
  从上面的测试结果表明,该系统能够根据用户设置的进程监控规则,对Windows服务器中的系统进程进行监控;在对设定的恶意进程进行拦截时,能够记录日志。该功能的主要目的是防止Windows服务器系统中的恶意程序,比如说恶意进程、木马程序、病毒程序等对服务器系统造成破坏,导致其宕机,造成具体损失和影响。
  4 结束语
  从互联网发展过程中出现的状况出发,服务器系统安全是提供稳定、可靠的互联网服务的保证,信息安全是必不可少的环节,抓住系统进程这个方面,对系统进程的启动、运行进行了分析和控制。深入研究了Windows进程监控的技术,并采用事件触发的机制,通过编写系统内核驱动模块,实现对系统进程的监控,能够对 设定的恶意进程进行拦截,对重要的进程进行保护,为系统进程提供实时可靠的监控。通过这样的技术方式实现的方案,对系统安全软件的开发具有重要的指导意义,能够使计算机针对不同的用户提供不同的使用方式;同时,对系统进程的控制除了保证系统安全外,还可以具体其他的应用场景。
  参考文献
  [1] 高连生,盛柏林.动态链接库在组态软件中的应用[J].工业控制计算机,2010(6):21—22.
  .电子世界,2013(10):83—84.
  .计算机应用 2003(12):23.
  .北京:电子工业出版社,2008.
  [5] 黄竞斌,彭新一,黄志伟.Windows环境下的进程监视系统的设计与实现.计算机与现代化,2010,182(10):38—42.
  [6] 张涛,焦英楠 ,禄立杰,文伟平.一种基于Windows内核驱动的可疑样本采集系统的设计与实现. 信息网络安全,2014,12(2):41-47.
  [7] 左黎明.Windows内核恶意代码分析与检测技术研究.计算机技术与发展,2008,18(9):145—147.
  作者简介:
  习慧丹(1982-),女,湖南益阳人,中南大学,计算机专业,硕士,副教授;主要研究方向和关注领域:数据库技术、信息安全技术。

上一篇:一种基于粗糙集的兼类词词性自动校对技术创新

下一篇:我国自主可控信息安全的思考与实践路径建设