病毒,说白了就是可以做任意事情的破坏性程序,这不算什么,大不了只是一个地方黑社会。
木马,简而言之就是只要给我联网,我就可以黑掉你
微软已经把Windows系统给做烂了。exe可以在管理员权限下任意运行,从而导致病毒木马的泛滥。其实转过头来看很多手机操作系统,例如Android,也是使用WindowsXP后为exe引入的manifest概念,但是却从根本上解决了很多安全性弊病
Android中,每个运行入口,必须有一个manifest来让OS知道你这个程序需要做什么,由OS为你配备网络,磁盘读取等等需求。
如果将病毒的访问权限降低,例如跑在虚拟机里面,病毒就没有毒了,木马即便能获取机密信息,也发不出了。
而Windows呢,由于本身概念设计的缺陷,一个程序写好后拥有完全权限进行访问,OS并不了解一个程序能做什么,只有当这个程序调用API时才知道,但有时也决定于调用时的数据,比如只有打开系统盘文件才受到限制。于是乎,很多商家看到了money,使用API HOOK,rootkit等等底层钩子来模拟出了一套超级虚拟机,妄想用一个软件控制住另外一个软件的访问,简直是痴人说梦。
也许你会说,UNIX/Linux不是在这方面做的很好么?引入用户及权限,默认不在管理员下运行。这点Windows也做了,不过很好么?看看UAC,Linux下运行也很麻烦。
试想下,如果Windows也拥有和Android一样的manifest机制,那么病毒扫描也就仅仅需要检查manifest文件就可以。对于老的程序,可以开启一个权限自动检查模式进行运行,一段时间后,自动为这个老程序生成新的manifest,如果以后发现这个老程序有侵入系统的问题,马上修改这个manifest就可以解决问题。
你可能要说,如果程序试图修改自己的manifest呢?这个可以在操作系统内核进行验证,没哪个程序能修改Windows内核吧?就是这个道理,如果manifest的checksum与以前的不一样,那就需要一些用户手动验证。