驱动程序文档
cattom
这个作者很懒,什么都没留下…
展开
-
恢复Win2K/XP系统服务描述表(翻译)
Win2K/XP SDT Restore 0.2 (Proof-Of-Concept)by Tan Chew Keong恢复Win2K/XP系统服务描述表网址:http://www.security.org.sg/code/sdtrestore.html简介Win32内核Rootkits一般都通过对内核Native API进行hook来完成,它需要修改服务描述表(SDT)。这种修改必须让Rootk翻译 2005-08-17 14:24:00 · 2185 阅读 · 0 评论 -
键盘驱动笔记
前段时间想写一个简单的键盘驱动,就找网上找了一些文档看看。JIURL的键盘驱动5篇文章都很精彩,让人很快就能明白键盘驱动的原理。一般情况微软建议写的键盘驱动都是属于keyboard filter driver,它位于kbdclass和i8042prt驱动之间。利用IOCTL_INTERNAL_KEYBOARD_CONNECT来挂接KeyboardClassServiceCallback,然后在I8原创 2006-04-13 10:19:00 · 3670 阅读 · 0 评论 -
Kaspersky Flaw(1) --- 动态修改系统服务
动态修改系统服务虽然KAV使用了反病毒软件常用的文件系统过滤来截取对于文件的获取,同时还使用对一系列API的挂钩来截取对不同文件的获取。在内核空间中使用挂钩API函数的方法非常危险:首先必须仔细交验所有从用户空间传入的参数,否则系统的安全性可能会受到未授权的恶意程序的威胁;其次很难安全的恢复这种内核空间的挂钩而不使系统崩溃,因为很难判断当时是否有线程正在使用这部分程序。此外KAV还错误地挂钩一翻译 2006-08-08 09:20:00 · 1113 阅读 · 0 评论 -
Kaspersky Flaw(2) --- 不正确校验用户空间指针
不正确校验用户空间指针很多KAV安装的挂钩(包括KAV自定义的系统服务)都会因为操作系统的不同而出现问题。比如,在KAV修改的NtOpenProcess函数中企图通过直接和硬编码的0x7FFF0000比较,来判断是否是用户空间地址。在绝大部分x86 Windows系统上,用户空间地址的最大值都是0x7FFEFFFF。但是硬编码用户空间的最大值并不是好办法。比如把Boot.in翻译 2006-08-08 09:34:00 · 906 阅读 · 0 评论 -
Kaspersky Flaw(3) --- 隐藏用户空间线程
隐藏用户空间线程KAV错误使用系统服务挂钩不仅是对NtOpenProcess。另外一个被KAV挂钩的系统服务是NtQuerySystemInfomation,在接收到SystemProcessAndThreads类别调用的时候,挂钩函数将截掉某些特定进程的线程列表。这将影响从用户空间获取应用程序进程的线程列表。使用这种技术令人费解,因为对用户空间隐藏线程都是和Rootkit联翻译 2006-08-08 09:47:00 · 956 阅读 · 0 评论 -
Kaspersky Flaw(6) -- 允许用户模式代码操作内核内存
允许用户模式代码操作内核内存现代操作系统的一条重要原则是内核与用户模式的分离,不允许用户模式代码直接操作内核空间内存.这条原则对保证系统的稳定性非常必要,比如阻止有错误的用户模式程序破坏内核并导致系统崩溃。可是KAV程序员并不认为这种分离原则很重要。KAV一个非常奇怪的不安全实现是让用户模式可以直接调用其内核驱动的部分函数,而不是采用加载用户模式DLL,或者加载用户模式代码到目标进程的方式。这翻译 2006-08-12 12:34:00 · 1136 阅读 · 0 评论 -
Kaspersky Flaw(4) -- 不正确的校验内核对象类型
不正确的校验内核对象类型Windows通过一系列的"内核对象"来揭示很多内核特性。这些内核对象在用户模式下被包装为句柄。这些句柄本身是整数值,在内核模式下被转换为指向内核对象的指针,用来和内核函数进行通信(尤其是系统服务)。所有的内核对象都是使用共同的句柄空间。由于这个句柄空间被不同类型的内核对象所共享,系统服务的一个任务就是校验句柄是否指向正确的类别。校验是通过对象管理器中ObRefer翻译 2006-08-10 23:51:00 · 966 阅读 · 0 评论 -
Kaspersky Flaw(5) -- 修改没有输出和不是系统服务的内核函数
修改没有输出和不是系统服务的内核函数KAV的内核补丁还不仅局限于系统服务,其中最危险的就是挂钩一个既不是输出函数又不是系统服务的内核函数nt!SwapContext(因此并没有可靠的办法,只能从编码的特殊痕迹来获取它的地址)。nt!SwapContext在内核每一次上下文切换的时候都会被调用,以便进行内部数据的保存。作者认为,通过不可靠的编码特殊痕迹来对未输出的重要核心函数进行补丁的方式并翻译 2006-08-12 00:35:00 · 1024 阅读 · 0 评论