国外高手谈卡巴斯基存隐患(1)

http://tech.ddvip.com   2007年06月22日    社区交流 收藏本文

内容摘要:我们这篇文章的核心就是要谈谈卡巴斯基的杀毒软件。跟很多其他的杀毒软件一样,卡巴斯基的杀毒软件也是既能手动操作扫描病毒也可以实时扫描病毒。我们这篇文章的核心就是要谈谈卡巴斯基的杀毒软件。跟很多其他的杀毒软件一样,卡巴斯基的杀毒软件也是既能手动操作扫描病毒也可以实时扫描病毒。

  该系统服务钩子的目的也是“不可靠的”。该钩子函数的功能是保证某些KAV进程不会被终止,即使是合法的系统管理员也无法终止KAV进程——这种功能更像是恶意软件,比如Rootkits,而不是商用软件应该有的功能。对此的合理解释可能是,它想要阻止病毒删除扫描病毒的进程,尽管如此,我们还是想知道如果KAV实时扫描机制真的如广告所说的那么有用话,那么这种情况发生的可能性究竟有多高?

  另外,KAV似乎只在进程与系统服务的关联终止前才跟踪其状态。而恰当的方法应当是通过PsSetCreateProcessNotifyRoutine这个有记录的内核功能来进行,该功能允许驱动程序注册那些进程创建和进程退出时被调用的callback函数。

  为非输出的、非系统服务的内核函数打补丁

  然而,KAV的内核补丁程序不仅限于系统服务。KAV安装的最危险的钩子函数就是nt!SwapContext功能中的一个,该钩子不是输出的也不是系统服务(因此没有可靠的驱动代码检测机制,更不用说验证代码指纹了)。为了执行一些内部记录任务,内核在每个相关的变更时调用nt!SwapContext。

  因为如此关键,而又是非输出、差不多没有代码指纹的、不可靠机制的内核功能打补丁,就我看来,这并不是什么好主意。更糟的是,KAV实际上还修改nt!SwapContext中的代码,而不是从函数的开始处打补丁,并且对使用该内核函数的内部注册机以及堆栈也好像是这么操作的。

kd> u nt!SwapContext
nt!SwapContext:
804db924 0ac9       or   cl,cl
804db926 26c6462d02    mov   byte ptr es:[esi+0x2d],0x2
804db92b 9c        pushfd
804db92c 8b0b       mov   ecx,[ebx]
804db92e e9dd69d677    jmp   klif!KavSwapContext (f8242310)
The unmodified nt!SwapContext has code that runs along the lines of this:
lkd> u nt!SwapContext
nt!SwapContext:
80540ab0 0ac9       or   cl,cl
80540ab2 26c6462d02    mov   byte ptr es:[esi+0x2d],0x2
80540ab7 9c        pushfd
80540ab8 8b0b       mov   ecx,[ebx]
80540aba 83bb9409000000  cmp   dword ptr [ebx+0x994],0x0
80540ac1 51        push  ecx
80540ac2 0f8535010000   jne   nt!SwapContext+0x14d (80540bfd)
80540ac8 833d0ca0558000 cmp dword ptr [nt!PPerfGlobalGroupMask (8055a00c)],0x0

来源:赛迪网    作者:杜莉    责编:豆豆技术应用

正在加载评论...