| 引用: |
【tom2000的贴子】当瑞星主程序被禁止启动后,其内部集成的功能是无法开启。
瑞星可以察看进程,而且可以进行比对验证其安全性。但是驱动级的注入还是弱项,这个在感染以SYS文件作为病毒恢复项的样本测试你会有个直观的体现
我个人建议瑞星完全可以出品一个类似“卡卡工具包”的安全工具,把一些功能从主程序分离出来,这样不会出现瑞星程序被禁止后其附带的安全工具也无法启动的尴尬! ……………… |
从你这段话,驱动级的注入,指的是病毒加载驱动进ring0的行为?
那你的意思是,瑞星应该监控程序加载驱动或进ring0的举动,还是说,瑞星应该列出当前系统加载的所有内核驱动的列表?
1. 如果是指监控程序加载驱动或进ring0的举动,这属于“主动防御”的内容。进ring0(获得对内核空间地址的读写权限)不一定要加载驱动,如可以通过读取PhysicalMemory实现。加载驱动也不一定通过CreateService,可以通过NtLoadDriver、NtSetSystemInformation等其他方法来实现(当然每种实现方法都受到系统版本的限制,多多少少有兼容性问题)。目前主动防御的方法,是拦截以上这些动作(也就是说,不是判断程序是否有ring0权限,而是通过监测以上这些动作,来判断程序是否有进入ring0的意图)。
但是为什么有时机器狗只是一个CreateServiceA,瑞星却拦不住?并不是瑞星监测不到CreateServiceA的操作,而是瑞星的“智能判断”还不够“智能”,有时没能识别其为有危害的操作,因此被放行了。
2. 如果指的是列出当前系统加载的所有内核驱动的列表,那就看你要做得要多深入了:最简单的,调用ZwQuerySystemInformation,其中SystemInformationClass参数指定为SystemModuleInformation,就可以得到当前系统加载的所有内核模块的列表信息,类似IceSword所显示的内核驱动列表。代码请google之,相当简单的。
然而,一旦rootkit进了ring0(它怎么进的ring0,前面一段已经说过一些了),就没有权限限制了,为了隐藏自己的内核模块,它会把内核驱动对象抹得乱七八糟,要找到被自身隐藏掉的内核模块,就远不是调用ZwQuerySystemInformation这种现成的API能解决的了。
要对付这些,即是anti-rootkit的范畴。然而,瑞星作为一个商业杀毒软件厂商,是否应将anti-rootkit进行到底?这个问题我在版家发表过看法了,见
http://forum.ikaka.com/topic.asp?board=38&artid=8383900。简而言之,anti-rootkit是“越猥琐越强大”,这样可能使用大量未公开的内核结构,从而在兼容性与稳定性上面临诸多不可知的问题。因此目前的商业杀毒软件厂商,对于anti-rootkit技术的使用,基本趋于保守,非不能也,是不为也。
综上,一个“内核驱动列表”,说说容易,但是到底是要搞个“花架子”,用ZwQuerySystemInformation等现身的东西来偷懒,使之变成一个“鸡肋功能”,还是要加入anti-rootkit的成份,从而担负稳定性和兼容性等风险,又或者来个折衷?对于杀毒软件厂商来说,这是需要权衡的。
更何况,这个功能对普通用户而言,真的实用么?
(1)是否要提供对查找到的驱动文件的卸载功能?
驱动的卸载,可跟结束进程的危险性不可同日而语,操作不当的话,分分钟会使系统立即崩溃。把一个这样危险的功能放给用户,可行么?
而如果不这样做,仅搞个列表,用户只看得见驱动文件,却动手不得,只得“望洋兴叹”,是否又是徒增烦恼?更何况普通用户能不能分辨哪些驱动碰得,哪些驱动碰不得?!
(2)病毒真的会留个驱动让你看见么?
如机器狗,加载驱动实现穿还原后,马上删除文件并卸载驱动。这样事后你再看内核空间,这驱动模块早没影了。
因此这种只能动态监控,也就属于上面说的主动防御的范畴。而涉及主动防御的功能,实时监控的程序,就必须常驻内存,你想让瑞星搞成一个独立程序单独出来,可能么?!
另外,“卡卡工具包”的说法,我也看得一头雾水,你的意思似乎是,在有了瑞星听诊器、卡卡助手等工具之后,瑞星还必须再搞一个“卡卡工具包”,这不是重复建设么?
所以我在前一个回帖中已经说过了,还不如要求瑞星把卡卡助手搞好一些,让它能够改名运行、不被病毒轻易关闭,并加上你所说的某些功能(前提是真的能加得上去)。这难道不比把卡卡助手扔在那里“烂尾”掉,然后又再搞一个所谓“卡卡工具包”的建议,更实在一点么?!