国外高手谈卡巴斯基存隐患(1)
http://tech.ddvip.com 2007年06月22日 社区交流 收藏本文
内容摘要:我们这篇文章的核心就是要谈谈卡巴斯基的杀毒软件。跟很多其他的杀毒软件一样,卡巴斯基的杀毒软件也是既能手动操作扫描病毒也可以实时扫描病毒。我们这篇文章的核心就是要谈谈卡巴斯基的杀毒软件。跟很多其他的杀毒软件一样,卡巴斯基的杀毒软件也是既能手动操作扫描病毒也可以实时扫描病毒。
kd> dps poi ( nt!KeServiceDescriptorTableShadow ) l dwo ( nt!KeServiceDescriptorTableShadow + 8 )
8191c9c8 805862de nt!NtAcceptConnectPort
8191c9cc 8056fded nt!NtAccessCheck
...
8191ca2c f823fd00 klif!KavNtClose
...
8191ca84 f823fa20 klif!KavNtCreateProcess
8191ca88 f823fb90 klif!KavNtCreateProcessEx
8191ca8c 80647b59 nt!NtCreateProfile
8191ca90 f823fe40 klif!KavNtCreateSection
8191ca94 805747cf nt!NtCreateSemaphore
8191ca98 8059d4db nt!NtCreateSymbolicLinkObject
8191ca9c f8240630 klif!KavNtCreateThread
8191caa0 8059a849 nt!NtCreateTimer
...
8191cbb0 f823f7b0 klif!KavNtOpenProcess
...
8191cc24 f82402f0 klif!KavNtQueryInformationFile
...
8191cc7c f8240430 klif!KavNtQuerySystemInformation
...
8191cd00 f82405e0 klif!KavNtResumeThread
...
8191cd58 f82421f0 klif!KavNtSetInformationProcess
...
8191cdc0 f8240590 klif!KavNtSuspendThread
...
8191cdcc f82401c0 klif!KavNtTerminateProcess另外,KAV还试图建立很多全新的系统服务,它通过更新服务描述表的方法,把这些服务变成调用系统内核模块的捷径。这显然不是允许用户模块程序与驱动程序交互的最佳机制;程序人员应当使用传统的IOCTL接口,该接口不用实时地更新内核结构,并且可以避免很多不便,比如从一个系统升级成另一个系统的正常的系统服务更新。
用户层指针验证不足
KAV安装的很多关联(甚至还包括很多定制的系统服务)都不断出现对系统来说很致命的漏洞。例如,KAV修改过的NTOpenProcess试图通过与固定值0x7fff0000相对照来判定用户地址是否合法。在大多数x86系统上,这个地址是低于最高用户地址的(即0x7FFEFFFF)。但是,把用户地址空间固定这种做法并不明智。例如,有个可以在boot.ini文件中进行设置的boot参数"/3GB",能改变默认的地址空间分配方式,即将2GB内核、2GB用户空间修改成1GB内核、3GB用户空间。如果运行KAV的系统被设置了/3GB,那么只要参数地址是位于用户地址空间的前2GB里,任何对NtOpenProcess的调用(比如Win32的OpenProcess)都会随机失败。
来源:赛迪网 作者:杜莉 责编:豆豆技术应用
正在加载评论...