计算机病毒

作者:invalid s
链接:https://www.zhihu.com/question/26443384/answer/32853881
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

DOS时代:任何程序无需任何手续即可做任何事,包括修改操作系统内核、直接发指令字操控硬件。甚至,如直接修改中断向量表,替换操作系统或BIOS提供的中断服务程序(用大白话说,就是篡改运行中的操作系统内核),以使自己的程序代码藏身中断向量区、在条件合适时可以继续执行的TSR技术(即程序终止驻留内存技术),在当时竟然是普通软件的必修技术之一,不然很多功能都做不到。普通软件都玩的这么high了……那病毒呢?——有个病毒每3个字节一解密,然后执行解密出来的指令;执行完指令再解密三个字节;而且前面指令解密后的结果,是后面解密流程的密钥,以至于根本不能下断点,因为下断点就破坏了密钥,使得几乎无法分析它。而且这个病毒还可以在每次感染时变形,两个不同副本不会出现连续3个字节相同……既然完全没有控制,病毒泛滥就是理所当然的了。——————————————————————————windows 9x/me时代:内核置入IA32架构保护模式的ring 0,其它应用隔离到低权限的ring 3,得到了相当的安全性;DOS以共用硬盘的虚拟机形式,提供给过去的DOS程序使用;为了兼容,仍然在内核中使用了一些16位代码,以及其他很多兼容措施:这种混合导致漏洞多多;对DOS的兼容导致只能使用不携带权限信息的FAT16/32文件系统,使得恶意程序仍然可以随便访问任何信息。结果仍然是病毒泛滥;但已经比DOS时代大有好转。(甚至当windows 95推出时,就有文章预言windows 95将结束病毒时代:这个预言虽然并未实现,但windows 9x下的病毒,无论是数量、花样、涌现速度,比起DOS时代,的确全都有了几个数量级的衰减。所以说效果还是非常显著的)——————————————————————————windows XP时代:个人桌面终于迁移到NT内核上,有了真正的权限限制;有了携带权限信息的NTFS文件系统,保护私密信息成为可能(但很多人仍然使用不携带权限信息的FAT32)。这个时代,情况已经很好了,裸奔也成为可能。我就曾连续裸奔5、6年,直到arp-iframe病毒出现,才不得不装了AVG。但XP的弱点是:第一,其上自带的IE太烂,几乎等于不设防,所以只要局域网一台机器中了arp-iframe病毒,整个网络所有装XP的系统只要上网,就必然中招;第二,它默认使用有管理员权限的帐号登录(也不得不用,不然很多软件根本不能启动),而这种帐号有权动电脑中的一切,这就相当于部分回归到了DOS时代,自然不能阻挡病毒泛滥;第三,大多个人用户仍然沿用过去的FAT32文件系统,这种系统不携带权限信息,所以仍然无法保护敏感文件。————————————————————————windows vista/7 时代:有了强制性的UAC,任何程序想做点非法活动,就必然惊动用户,用户不同意你就不能继续(除非你照那些三脚猫的教程关了UAC);同时,这个时代的主流浏览器(如chrome、ie、firefox等等),全部有了沙箱机制,即便被网络攻击,也很难影响到操作系统。然后,携带权限信息的NTFS文件系统终于成为大部分人的默认选项(如果你不知道说的是什么,那么就用的就是NTFS文件系统),敏感信息得到妥善保护。如此一来,自然就没什么病毒了。———————————————————————类似的,linux下为何干脆就没杀毒软件呢?因为linux权限管理非常严格。所谓Windows因为用户太多所以病毒多,完全是厂商的误导宣传。linux还服务器多呢。攻陷一个热门网站的服务器,给网页挂马,瞬间就能控制一大批的肉鸡,何乐而不为呢?事实上,正是因为linux权限控制太严,所以哪怕一台很多人用的服务器,一个用户2X感染了病毒,也没法影响同一个系统中的其他人(从病毒破坏到偷窥其它用户私人资料,都办不到)。之后只要删掉这个中毒的用户,一切就恢复了。举例来说,当初Windows有个输入法帮助漏洞:在登录界面切换中文或其它输入法,点帮助,然后在帮助界面导航栏输入c:\,就能以管理员权限浏览硬盘、启动任意程序。这权限管理何其烂也。这么烂的权限管理,怎么可能阻止病毒入侵呢?更可笑的是,这居然被认为是输入法软件公司的bug:它们本该检查是不是登录状态,不是登录状态就应该灰掉帮助按钮的!可要是这个软件公司本身就是个流氓呢?你也让它随随便便就能执行本来必需管理员权限才能执行的危险操作而不需要任何用户凭据?而在linux下呢,未登录就是nobody,除了极少几个在登录时必须能接触的东西(passwd、shadow文件),其它任何东西都不允许你接触。至于输入法?它必须以当前用户(未登录就是nobody)身份启动,没有哪个管理员能脑残到给它设置setuid,让任何人使用它时,都能临时切换成root身份的。所以,只要不给权限,任何程序根本就没能力在硬盘上写入任何不良信息(除了设置为nobody可写的文件),也不可能去“启动任意程序”“读取任意信息”,更不可能居然还能得到管理员权限为所欲为——有些部署于互联网的linux服务器,甚至允许任何人以guest登录,都不可能影响到系统安全。原因就是权限控制得好。————————————————————最后,说说0 day——因为一说这个,很多半桶水都喜欢跳出来说有0 day,0 day可牛比了,啥都能干。先解释下,0 day其实是操作系统里面的、能够非法得到高权限的、暂时未能修复的漏洞。打个比方的话,权限是无法逾越的高墙,而0 day是高墙上无意留下的狗洞——不封住,坏人就可能从狗洞里钻进去。任何系统都无法避免0 day。在0 day被厂商修复之前,的确是可以用来写“能够一传一大片”的病毒的。但是,0 day问题和权限问题有一点根本上的不同。比如,Windows xp的权限设置,普通用户的使用方式和默认权限设置下,到处都是漏洞。但,对较为专业的用户,他们就可以控制好权限(比如,大企业都有自己的安全策略,所有机器都必须应用这个安全策略):在他们手里,即便是xp,也是相当安全的。这点和linux以及后来的win7等系统不同,后者默认就有极高安全性。因此,权限问题,外行急,普通百姓急,因为他们正被病毒困扰;而有专家的大企业、国家要害部门,不急。而0 day呢,它不仅威胁大众,同样也可能威胁诸如金融、国防等要害部门。这些部门可比你着急得多。所以,一旦这类漏洞一旦发现,一般都会被火速修复。那么,如果你是黑客,好不容易发现了一个别人没发现的0 day;你舍得用这样一个珍贵的0 day随便攻击无确切价值的普通用户,导致杀手锏过早暴露吗?注意,一旦0 day暴露,可是会被厂商用紧急补丁修复的哦。(一个0 day,国外黑市报价数万美元,而且可以卖给多个买主,所以“珍贵”绝不是空口白话)————————————————————————换句话说,攻击XP及之前的windows/DOS系统,无需任何特殊技术,因为它们要么根本没权限概念、要么权限形同虚设;而攻击windows vista/7之后的系统,就必须先找个未修复的0 day漏洞,绕过权限机制。更形象点说:一个半吊子程序员,在以管理员身份登录的xp用户那里,轻松就能写一个程序肆意破坏;但想去攻击被权限严密保护的windows vista/7、unix用户,就必须先挖出一个0 day……这可不是一般半吊子能做到的;能做到的,也不会再屑于做过于“小儿科”的病毒了。综上,所以一旦权限控制好,病毒自然就销声匿迹

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值