通过逻辑缺陷撸穿金山安全套装(含具体分析)

漏洞概要

缺陷编号:WooYun-2015-0124016

漏洞标题:通过逻辑缺陷撸穿金山安全套装(含具体分析)

相关厂商:金山毒霸

漏洞作者:cssembly

提交时间:2015-07-02 08:20

公开时间:2015-08-16 09:10

漏洞类型:设计错误/逻辑缺陷

危害等级:高

自评Rank:20

漏洞状态:厂商已经确认

Tags标签:

漏洞详情

披露状态:

2015-07-02: 细节已通知厂商并且等待厂商处理中
2015-07-02: 厂商已经确认,细节仅向厂商公开
2015-07-05: 细节向第三方安全合作伙伴开放(绿盟科技、唐朝安全巡航、无声信息)
2015-08-26: 细节向核心白帽子及相关领域专家公开
2015-09-05: 细节向普通白帽子公开
2015-09-15: 细节向实习白帽子公开
2015-08-16: 细节向公众公开

简要描述:

程序只需要起个好名字,然后增加注册表项,就能够实力大增,撸穿金山安全套装

详细说明:

ksapi.sys对关键位置未保护,导致绕过限制,撸穿安全套装

漏洞证明:

ksapi.sys中sub_13F10处理上层驱动打开动作

其调用了sub_1C2F0函数,改函数对当前试图打开驱动的进程进行校验,判断是否应该允许进程打开驱动,该函数进行了很多的目录判断

这里就包含对\Registry\Machine\SOFTWARE\Kingsoft\AntiVirus注册表项的ProgramPath键值的判断,当我们尝试对ProgramPath的值进行修改时,就会发现已经被保护了

通过对sub_1C2F0函数进行进一步分析,发现它使用了dword_21F54,该值读取自\Registry\Machine\SOFTWARE\Kingsoft\Kavudisk的Path键值,同时将“sysfixkill.exe”黏贴在键值之后,也就是说sysfixkill.exe在白名单之列,它能够打开驱动

通过查看注册表,发现程序没有创建这一键值,也未对起进行保护,尝试创建改键值为c:\

这样放在桌面的sysfixkill.exe无法打开ksapi.sys,而放在c:\的sysfixkill.exe就能打开ksapi.sys

通过对ksapi.dll发送的DeviceIoControl进行逆向,能够得到参数的格式,下图是文件打开动作的参数

通过向驱动发消息,能够修改、删除系统文件、注册表等功能,原本在应用层不能完成的动作,现在就能够完成了,例如删除\\Registry\\Machine\\SYSTEM\\CurrentControlSet\\Services\\ksapi中的ImagePath的值,因为被保护,所以会得到

尝试不关闭explorer.exe进程,直接删除可执行文件,会得到

但是通过给驱动发送命令就能够实现这些功能,修改ImagePath的值为C:\windows\system32\calc.exe,删除explore.exe,并用calc替换

通过这种方式,就能够轻松替换系统文件,也能轻松的替换和删除ksapi.sys等文件,轻易的持久驻留在系统中

修复方案:

保持校验的一致性

漏洞回应

厂商回应:

危害等级:高

漏洞Rank:10

确认时间:2015-07-0209:09

厂商回复:

非常感谢提交,立刻反馈处理

最新状态:

暂无

评价

  1. 2010-01-01 00:00 白非白 白帽子 | Rank:312 漏洞数:27)

    顶一下~

  2. 2010-01-01 00:00 苏安泽 白帽子 | Rank:55 漏洞数:4)

    前排瓜子。