摘要: 编写安全的驱动程序之输入输出检查输入输出检查是指对不可信的输入输出地址及数据长度进行合法性检查的过程。这种方法在Windows内核API中应用的十分广泛。例如,在NtReadFile函数中,如果PreviousMode不是KernelMode,即NtReadFile函数是从用户态被调用的,可以使用ProbeForWrite函数检测输入输出缓冲区是否可写,参见ReactOS中的代码如下:NTSTATUS NTAPI NtReadFile(INHANDLE FileHandle, IN HANDLE Event OPTIONAL, IN PIO_APC_ROUTINE ApcRoutineOPTI 阅读全文
posted @ 2011-07-11 19:33 博文视点(北京)官方博客 阅读(232) 评论(0) 推荐(0) 编辑
摘要: 验证驱动的调用者有很多驱动程序加载后,会在驱动程序入口函数DriverEntry中创建驱动设备,并创建符号链接,同时还会指定派遣例程。这样一来,所有用户态程序都可以通过DeviceIoControl函数,调用该驱动的派遣例程。即存在Ring3恶意调用Ring0驱动派遣例程的问题,对于这种调用Ring0程序应进行验证和过滤。作为不够健壮的第三方驱动程序,更容易因为这种恶意调用被干扰,发生逻辑错误,甚至触发可能存在的内核漏洞。因此需要考虑驱动程序的通信对象和调用来源,在派遣例程中对此进行必要的安全验证和过滤。验证和过滤的方法有很多,例如检查调用者进程的PEPROCESS,进程文件的MD5,等等。除 阅读全文
posted @ 2011-07-11 19:24 博文视点(北京)官方博客 阅读(275) 评论(0) 推荐(0) 编辑
摘要: 探索ring0之内核概述内核概述Intel x86系列处理器使用“环”的概念来实施访问控制,共有4个权限级别,由高到低分别为Ring0、Ring1、Ring2、Ring3,其中Ring0权限最高,Ring3权限最低。Windows(从NT开始)和Linux等多数操作系统在Intel x86处理器上只使用了Ring0和Ring3,其中内核态对应着Ring0,用户态对应着Ring3。两个特权级足以实现操作系统的访问控制,况且之前支持的有些硬件体系结构(比如CompaqAlpha和Silicon Graphics MIPS)只实现了两个特权级。本篇所讨论的内核程序漏洞特指Ring0程序中的能被利用的 阅读全文
posted @ 2011-07-11 19:19 博文视点(北京)官方博客 阅读(287) 评论(0) 推荐(0) 编辑
摘要: --安全技术大系0day安全:软件漏洞分析技术(第2版)王清主编ISBN978-7-121-13396-1 2011年6月出版定价:85.00元16开780页内 容 简 介本书分为5篇33章,系统、全面地介绍了Windows平台缓冲区溢出漏洞的分析、检测与防护。第一篇为漏洞exploit的基础理论和初级技术,可以引领读者迅速入门;第二篇在第一篇的基础上,结合国内外相关研究者的前沿成果,对漏洞技术从攻、防两个方面进行总结;第三篇站在安全测试者的角度,讨论了几类常用软件的漏洞挖掘方法与思路;第四篇则填补了本类书籍在Windows内核安全及相关攻防知识这个神秘领域的技术空白;第五篇以大量的0 day 阅读全文
posted @ 2011-07-11 19:16 博文视点(北京)官方博客 阅读(586) 评论(0) 推荐(0) 编辑