Kaspersky Flaw(1) --- 动态修改系统服务

本文探讨了KAV通过挂钩API及系统服务实现自我保护的技术细节,并指出了这些做法中存在的安全漏洞,包括可能导致系统崩溃及权限提升的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

动态修改系统服务

虽然KAV使用了反病毒软件常用的文件系统过滤来截取对于文件的获取,同时还使用对一系列API的挂钩来截取对不同文件的获取。在内核空间中使用挂钩API函数的方法非常危险:首先必须仔细交验所有从用户空间传入的参数,否则系统的安全性可能会受到未授权的恶意程序的威胁;其次很难安全的恢复这种内核空间的挂钩而不使系统崩溃,因为很难判断当时是否有线程正在使用这部分程序。此外KAV还错误地挂钩一些系统服务试图“保护”它本身的进程不被调试和终止。

不幸的是,KAV的程序员并没有正确交验传送到已挂钩系统服务的参数。这个漏洞可以让未授权的用户空间程序使系统崩溃。还有一些漏洞可以导致本地权限的提升,但作者并没有花时间去证实。

KAV挂钩以下系统服务(用windbg比较已加载KAV系统和干净系统的nt!KeServiceDescriptorTableShadow):

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还通过修改SSDT创建了一些新的系统服务,作为用户空间调用内核函数的快捷方式。这并不是理想的用户空间和驱动程序之间的通讯方法。程序员应该通过传统的IOCTRL接口来通信,以避免动态修改内核结构的缺陷,以及操作系统版本的变迁导致系统服务编号变化的不便。

Kaspersky Flaw的都是翻译自Skywing的"What Were They Thinking? Anti-Virus Software Gone

Wrong",只对其中关于Kaspersky的部分进行翻译。
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值