Windows环境下驱动保护进程浅析

来源 :数字化用户 | 被引量 : 0次 | 上传用户:lk656lk55lk6
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  【摘 要】随着技术的发展,计算机系统已经通过特定程序可实现任意操作,微软的windows是使用最广泛的系统之一,其中,Rootkit技术在windows下最常见的实现方式当属驱动级的内存技术对抗,它被广泛的应用于游戏保护,杀毒软件防护等方面。
  【关键词】对抗 驱动 Windows API Hook
  一、Intel X86处理器
  Intel的X86处理器是通过Ring级别来控制访问权限的,级别共分4层,从Ring0到Ring3(后面简称R0,R1,R2,R3)。R0层拥有最高的权限,R3层拥有最低权限。而现在的操作系统,包括Windows和Linux都没有采用4层权限,而只是使用了2层—R0层和R3层,分别用来存放操作系统数据和应用程序数据。
  二、用户模式和内核模式
  Windows从总体上分为内核模式(Kernel Mode)和用户模式(User Mode),Windows将内核模式运行在CPU的R0层,而将用户模式运行在CPU的R3层。而驱动程序一旦加载,就运行在R0层,就拥有了和操作系统同样的权限,可以做任何事情。
  三、WIN32子系统
  Win32是Windows的一个子系统,还有另外的子系统如OS/2、POSIX、WOW等。不同的子系统系统提供了不同的编程接口,即API,一般说的API指的就是Win32 API。Win32子系统是最纯正的Windows子系统,提供了大量的API函数,程序员只需要熟练的使用这些API就可以写出Windows应用程序,当然程序员也可以考虑第三方库,如VC提供的MFC,但这些库不过是在应用程序和Win32子系统中间加了一层封装而以,没有本质的区别。Windows API 分为三类 分别是USER函数,GDI函数,和KERNEL函数。USER函数(user32.dll):这类函数管理窗口,菜单,对话框和控件;GDI函数(gdi32.dll):这类函数在物理设备上执行绘图操作;KERNEL函数(kernel32.dll):这类函数管理非GUI资源,如进程、线程和同步服务等。
  四、Native API(Ntdll.dll)
  大部分Win32子系统的API都是通过Native API实现的。Native API的函数一般都是在Win32 API上加上Nt两个字母。Native API 是可由用户模式和内核模式程序调用的NT系统服务集接口,它们直接由操作系统实现。
  五、SSDT
  SSDT的全称是System Services Descriptor Table,系统服务描述符表。这个表就是一个把R3的Win32 API和R0的内核API联系起来。SSDT并不仅仅只包含一个庞大的地址索引表,它还包含着一些其它有用的信息,诸如地址索引的基地址、服务函数個数等。系统服务是由操作系统提供的一个函数集,这些函数可以帮助调用者实现系统的各种功能。用户态的应用程序可以通过API函数间接地调用系统服务。在内核态中,系统通过服务描述符表寻找相应系统服务函数。在系统中有2个描述符表(SYSTEM_DESCRIPTOR_TABLE 结构):(1)KeServiceDescriptorTable,由ntosknl.exe导出,主要为KERNEL32和ADVAPI32中的API提供服务;(2)KeServiceDescriptorTable Shadow,未被导出,主要完成USER32/GUI32中的请求。每个描述符表由4个连续的系统服务表(System Service Table, SST)的表项组成,每项可以描述一组服务。每组服务由一个系统服务分发表(System Service Dispatch Table, SSDT)和一个系统服务参数表(System Service Parameter Table, SSPT)组成,分别对服务的入口地址和所需参数进行索引。每个服务有一个服务序号,系统根据这个序号查找2个表,最终可找到相应的服务函数和参数信息。
  六、sysenter和sysexit指令
  从R3切换到R0层,早期的操作系统一般通过中断来实现,如Linux下的 int 80h,Windows NT和Windows2000下的 int 2Eh。而在Windows XP以后则使用了快速系统调用sysenter和sysexist来进行系统调用和返回。
  七、驱动文件
  亦为PE格式的一种,含有用户模式驱动、文件系统驱动等,各类驱动配合操作系统内核组成了庞大的windows系统,用户层应用程序调用API,该API对应用程序提供的参数进行校验再将所有东西转化为unicode,然后调用ntdll.dll中的KiFastSystemCall函数切换入内核,如将服务序号放入eax、将存放参数的用户栈指针放入edx,再切换到内核态。当程序的处理流程进入R0之后,系统会根据服务号(eax)在SSDT这个系统服务描述符表中查找对应的表项,这个找到的表项就是系统服务函数的真正地址。之后,系统会根据这个地址调用相应的系统服务函数,并把结果原路返回给ntdll.dll中的API。在调用sysenter或int 2Eh之后,Windows系统将会捕获你的这个调用,然后进入ring0层,调用内核服务函数NtOpenProcess。由此,如果驱动程序在内核态Hook住了NtOpenProcess函数,通过对传入参数的进行过滤,如果是被保护的程序则返回参数为0,即可实现对程序的简单保护。
  八、SSDT HOOK的简单实现
  (环境 Windows XP sp3 32bit)驱动层代码t_addr=(LONG)KeServiceDescriptorTable->ServiceTableBase;SSDT_Adr=(PLONG)(t_addr+0x23*4); //SSDT表索引值0x23(即NtOpenProcess)SSDT_NtOpenProcess_Cur_Addr=*SSDT_Adr; RealNtOpenAddress = *SSDT_Adr; //保留原始地址RealNtOpenProcess = ( NTOPENPROCESS *)RealNtOpenAddress; __asm //去掉页面保护。在驱动入口DriverEntry()派遣函数中调用Hook(),从exe文件中传入进程PID,设置SSDT Hook,实现对进程的简单保护。
  九、结语
  在内核下存在着我们看不到的战争,随着技术的发展,先前颇为流行的窗口挂钩、inline hook、API挂钩、进程注入等技术已然成为昨日黄花,大有逐渐淡出之势,取而代之的,则是更狠毒、更为赤裸裸的词汇:驱动、隐藏进程、Rootkit……驱动级的对抗技术如今已被广泛应用到了杀毒软件的主动防御、各种软件的自我保护以及游戏的保护、反外挂等技术中去。如360的驱动加载拦截,就是创建了一个LoadImage()的系统回调函数,用XueTr删除后发现其他程序加载驱动后360就无再提示,进入了Ring0态可以完成任何操作,如结束掉杀毒软件等为下一步利用计算机做准备;将合理利用驱动还可以实现提示用户有恶意程序结束掉可信赖的程序,并给出程序名称与路径等关键信息,为进一步查杀病毒提供了便利;监视注册表;监视磁盘读取;系统还原等。正因为Ring0如此重要的地位,使其成了兵家必争之地,可以说谁抢占了先机,凌驾Ring3之上,谁就在这场战争中增加了胜算。
  参考文献:
  [1]《天书夜读-从汇编语言到Windows内核编程》.电子工业出版社 2009
  [2]《Windows驱动开发技术详解》.电子工业出版社 2009
  [3]《内核态下的系统服务挂钩对抗》.计算机工程 2010
  [4]《多态技术加壳软件的实现》.甘肃科技 2010
其他文献
【摘 要】随着计算机的普及,计算机已经成为人们学习和工作中的重要工具。但是,在对计算机进行使用的过程中,因为操作者对计算机维护的生疏,很容易导致故障的出现。本文从计算机硬件故障检测维修遵循的原则和计算機硬件维修的基本方法两方面进行了分析与探讨。  【关键词】计算机 硬件维修 故障检测  随着科学技术的不断发展,计算机已经逐步渗透到人类生活的各个领域,并且逐步改变传统的工作学习和生活方式,推动社会向
期刊
【摘 要】伴随着近年来计算机网络的快速发展,计算机网络系统在社会经济发展过程中被广泛应用,在应用的过程中难免会出现各种各样的安全性问题。据观察,在其整个过程中计算机数据的基本信息在社会经济的发展中具有关键性作用,因此,必須采取相应的措施针对计算机数据基本信息设备进行保护,规避不必要干扰问题的出现。本文主要针对计算机数据库的入侵检测技术的基本概念、主要功能以及检测的技术方法等方面进行了a简要分析。 
期刊
【摘 要】大数据与云计算是一个问题的两面:一个是问题,一个是解决问题的方法。通过云计算对大数据进行分析、预测,会使得决策更为精准,释放出更多数据的隐藏价值。数据,这个21世纪人类探索的新边疆,正在被云计算发现、征服。  【关键词】云计算 虚拟技术(Xen Server) Xen Center VMware ESX Server Microsoft Hyper-V  信息的几何式增长促使互联网计算资
期刊
【摘 要】用户在使用电脑的过程中,往往会出现各种故障,在这些故障中有很多都是最常见的故陈,通过简单处理后即可解决。因此掌握一些常见的电脑故障排除方法很有必要。  【关键词】电脑故障 分类 检测  我们在使用电脑的过程中,会出现各种各样的问题。掌握—些基本的电脑故障排除知识有助于我们更有效地利用电脑工作和学习,下面是——些比较常见的电脑故障以及相应的排除方法。电脑的故障有很多,大概可以分为两类:  
期刊
【摘 要】随着信息技能的快速进步,对于有关计算机人才的需要也逐渐升高,这样的状况就要求学校和社会设立有效健全的计算机科学与技能专业人才的训练机制,从而为社会供应高涵养的人才,构成社会前进的促进动力。文章把简要介绍了有关信息社会所要求的人才情况,并做出了有关机制设立的方式。  【关键词】计算机技术 训练机制 专业人才 设立  现如今全球性的计算机技术的都处于迅速进步阶段,然而为美国目前的计算机人才标
期刊
【摘 要】热力系统中有关控制污染的思路大都是集中于流程尾部脱除中,也就是延续污染在前,治理在后的方式,这种治理模式显然不符合相关要求。为了打破这种治理模式,利用能量转化原理及与二氧化碳控制一体化原理,这样的原理能够结合化学能阶梯利用与降低二氧化碳能源消耗分离,使能量利用率有效提高,同时使二氧化碳的排放量得到了降低。本文简要介绍了多联产系统集成理论,并指出了多联产系统的主要类型和系统优化的有关思路,
期刊
【摘 要】结合马鞍山长江公路大桥工程实例,进行大型桥梁中压电路供电系统的设计,对跨江工程段供电系统构成与功能作出论述。  【关键词】大型桥梁 中压供电 供电路由 供电照明  一、项目概况  马鞍山长江公路大桥全线总里程36.14公里,其中南岸接线长19.49公里,跨江主体部分长11公里,北岸接线长5.65公里。跨江工程指左汊大桥至马鞍山南互通段,主要包括左汊悬索桥、江心洲服务区、江心洲互通、右汊斜
期刊
【摘 要】随着社会经济的快速发展,我国的计算机技术,也在飞速发展。随着信息时代的到来,计算机软件开发技术,收到了越来越多人的关注。其中,分层技术是一个应用较为广泛的技术。计算机软件开发应用,促进计算机软件处理的业务正不断地,由单项发展为多层次的结构。本文研究分析了分层技术,在计算机软件开发中的,具体应用措施。  【关键词】分层技术 计算机软件 开发  随着科学技术的不断创新与发展,促进了计算机软件
期刊
【摘 要】使用ZIGBEE无线传输技术理论,结合智能仪表和CC2530芯片为核心,设计基于ZIGBEE技术的铁路信号器材检测系统,应用到铁路局中各种铁路信号器材的检测,提高铁路检修人员工作效率,达到科学化管理的要求。同时,介绍了系统构成的结构、硬件设计和软件设计实现的方法。系统运行结果表明,系统测量准确、操作简捷方便。  【关键词】铁路信号器材 ZIGBEE技术 智能仪表 Visual Basic
期刊
【摘 要】伴随现代新闻媒资制作网络的逐步建立,人们对电视播出技术的质量也提出越来越高的要求。而多格式、高标准的新闻类节目从制作到播出离不开上载,该环节的作用是紧密连接。主要播出源为硬盘,其取代了其它介质,而具有标准化流程的上载系统是电视节目安全播出的前提保证。  【关键词】人性化设计 标准化 上载  播出的声音及图像的质量就是指播出技术质量,节目制作质量决定了播出质量的好坏,对此,无论是电视台技术
期刊