![为什么访问网站会感染病毒或木马?](https://linux22.com/image/1230384/%E4%B8%BA%E4%BB%80%E4%B9%88%E8%AE%BF%E9%97%AE%E7%BD%91%E7%AB%99%E4%BC%9A%E6%84%9F%E6%9F%93%E7%97%85%E6%AF%92%E6%88%96%E6%9C%A8%E9%A9%AC%EF%BC%9F.png)
我最近经常看到这些。你点击链接,木马病毒就来了。无需下载或做任何事情。
这怎么可能?有没有办法让我在访问之前扫描链接以确保不会被感染?
答案1
回答这是如何可能的:
该网站有一些脚本会在您加载页面时执行。这就是感染您的 Windows PC 的原因 - 但我不确定具体细节,它是下载代码还是运行代码。这一页有一个案例,说明了如何做到这一点。还需要一个易受攻击的浏览器,实际上任何流行的浏览器都是易受攻击的,因为许多计算机上运行的东西都值得攻击。
由于人们以管理员身份而不是受限用户身份运行,因此大多数 Windows PC 都会受到感染。造成这种情况的原因多种多样。正如 Roger 在他的评论中指出的那样,主要因素是它的流行性,而不是任何内在的弱点:
Windows 之所以受到更多攻击,是因为它更受欢迎。有人说 Windows 也比其他系统更不安全,但我不得不说,正如你强调的那样,事实并非如此。我在家里运行 Linux,如果木马可以在我的用户帐户下运行,它仍然可以对我非常关心的文件造成相当大的损害,只是无法接管系统。
虽然通过以受限权限用户身份运行可以限制损害,但不一定能消除损害。
Vista 和现在的 7 对以管理员身份运行的内容有更严格的控制,可能开始看到此类网站数量的下降 - 尽管只有当大多数网站运行较新的操作系统时才会出现这种情况。
答案2
好吧,当你打开一个网站时,该网站可以指示浏览器代其执行各种操作。在最简单的情况下,它只会发送要显示的文本和图片,但它也可以发送浏览器将运行的小程序(以浏览器内置的 JavaScript 或使用 Java 或 Flash 等浏览器插件)。
原则上,仅仅访问一个网站而感染病毒是不可能的:
虽然浏览器会代表您访问的网站执行程序,但这些程序受到严格限制,因此它们只能执行“无害”的操作。例如,您可以通过 JavaScript 更改 JavaScript 所属的页面(由于两者都来自同一个网站,因此不会造成危害),但 JavaScript 不得更改来自其他网站的页面(因此低俗网站无法更改您的家庭银行显示),并且它不能直接访问您计算机上的文件。
大多数插件都存在类似的限制(至少对于 Java 和 Flash 而言)。这通常被称为沙盒,因为代码本质上是放在一个独立的盒子里,与运行它的计算机隔离。具体来说,它不能读取硬盘上的文件,也不能像计算机上运行的“常规”程序那样为你启动程序。
现在,事情是这样的:原则你安全了,在实践中你可能不是。原因是沙盒系统和所有程序一样,都有错误。有时这些错误允许程序“破坏”沙盒并欺骗浏览器或插件执行不允许执行的操作。这些技巧可能非常复杂。
例子:
- 与常规程序一样,浏览器或插件的实现可能存在缓冲区溢出,这可以允许网站通过将特制代码作为输入发送到浏览器来运行该代码。
- Sun 的旧版 Java 插件在沙盒方面存在漏洞。沙盒禁止(现在仍然禁止)访问所有可能允许程序造成破坏的 Java 函数,例如读取或删除本地文件。然而,虽然沙盒确实正确地阻止了 Java 小程序对这些函数的访问,但浏览器也允许 JavaScript 间接访问这些函数(通过一种称为“反射”的技术)。开发人员没有充分考虑这个“后门”,并允许绕过沙盒限制,从而破坏沙盒。参见https://klikki.fi/adv/javaplugin.html了解详情。
不幸的是,JavaScript、Java 和 Flash 的沙箱中存在多个漏洞,这只是其中几个。恶意黑客会发现这些漏洞并加以利用,而优秀的黑客和开发人员则会发现并修复这些漏洞,这仍然是一场竞赛。通常情况下,这些漏洞会很快得到修复,但有时会出现漏洞窗口。
顺便说一句:沙盒是一些 Java 小程序在启动时弹出“您是否信任此小程序”警告的原因:这些小程序问允许他们离开沙箱并允许他们访问您的计算机。这有时是必要的,但只有在有充分理由的情况下才应允许。
PS:原因是活动窗口(至少是早期版本)非常不安全,因为 ActiveX不是使用沙盒。网页上的任何 ActiveX 代码都可以完全访问您的系统。公平地说,这个问题在后续版本中得到了(部分)纠正。
答案3
我提到这一点是为了回答你关于先发制人的行动的最后一个问题。一个不太常见的选择是使用虚拟机(嗯,这在安全圈很常见)。有几种免费的虚拟机可用。在虚拟机中安装操作系统、浏览器和插件并保存状态。然后,你可以浏览任何网站。完成后,你将恢复到保存的状态,并且虚拟机中此后发生的任何事情都将被丢弃。一旦你熟悉它,它就非常简单,但可能会带来轻微的学习曲线。
注意:恢复状态实际上会丢弃对虚拟机的任何更改;包括浏览器历史记录、cookie、更新等。在这种情况下,您可以恢复到该状态,应用更新并保存新状态。对于您希望保留的任何其他内容,也可以执行相同的操作。这些都不会影响您的实际计算机,只会影响虚拟机。