可能重复:
计算机是否可以通过网络浏览器感染恶意软件?
众所周知,访问网站就可能感染病毒。但是如何这可能吗?
这些病毒会攻击 Windows、Mac 和 Linux 用户吗?还是 Mac/Linux 用户不受其攻击?
我知道在 Windows 中下载并执行 .exe 显然会感染病毒,但是如何我访问一个网站就会感染病毒吗?
这些病毒是用 JavaScript 编写的吗?(这很有道理,因为它是一种在本地运行的编程语言。)如果是这样,那么最常用的 JavaScript 函数是什么?
答案1
众所周知,只要访问一个网站就可能感染病毒。有人能解释一下这是怎么回事吗?
括号中的示例。浏览器 (IE)、javascript 解释器或插件 (如 flash 或 java) 中存在错误。此错误会导致代码执行 - 这部分可能非常复杂,但它通常涉及释放后使用错误和堆操作。
然后我运行了一些 shellcode。shellcode 必须逃避浏览器的任何保护 - 对于 V8/Chrome 漏洞,您必须逃避 chrome 的沙盒并击败 DEP 和 ASLR。对于 IE,您必须击败 DEP 和 ASLR,然后摆脱低完整性模式。对于 Java,您必须...什么也不做 - 您就万事大吉了。(这就是为什么会出现大量 Java 漏洞。)
所以现在我已经在你的机器上运行了任意代码,作为你(你不是以管理员身份运行,对吗?),我可以从互联网上下载一个文件并运行它,将一些恶意软件放到你的机器上。
这些病毒是用 JavaScript 编写的吗?(这很有道理,因为它是一种在本地运行的编程语言。)如果是这样,那么最常用的 JavaScript 函数是什么?
具体来说 - 不是。JavaScript 是人们用来寻找浏览器漏洞的攻击媒介。他们还可以使用 Flash、Java 或 Silverlight 作为攻击媒介。在 JavaScript 的情况下,他们编写 JavaScript 来触发浏览器漏洞,然后病毒最终从互联网上被删除。
答案2
不幸的是,发生这种情况的方式有很多种。
您完全有理由感到惊讶,像浏览器这样的“阅读设备”竟然能够主动操纵您自己的系统(并造成伤害)。阅读一本书不会耗尽您的银行账户,阅读一份报纸也不会伤害您的孩子,那么为什么打开一个网站就能造成所有这些甚至更多的伤害呢?
只要来自互联网的外部数据有可能以某种方式被您的系统执行,就会出现问题,我们必须始终假设这些数据是出于极其恶意的目的而制作的。
如果您只是坐在命令行上输入wget http://evil.com/hitme.php
,wget HTTP 客户端只会将请求的二进制转储写入您的磁盘,不会发生任何不良情况(除了您的磁盘可能已满)。但是如果您在浏览器中输入地址,您的浏览器可以自由地做任何想做的事——格式化你的硬盘,发送你的信用卡信息等等。这取决于你相信你的浏览器不要这样做。大多数浏览器确实试图不做这些坏事,但我们这些绵羊用户要求浏览器能够玩更多“聪明的把戏”,并表现出自动行为根据互联网上的说明。我们的需求导致了 JavaScript 和 Flash 等客户端代码执行技术的诞生,这些技术可以下载任意的、外国的、不受信任的、恶意的代码并执行它,这一切都是为了我们的快乐。
提出这些技术的人之所以没有立即被处以死刑,是因为:a)它让我们的屏幕上兔子跳舞,b)他们声称在设计中加入了足够的安全检查,以防止任意恶意代码操纵本地系统(例如不允许读/写本地磁盘、读/写剪贴板、读/写其他选项卡中的表单字段)。
不幸的是,“首先允许一切,然后部分地掩盖我们能想到的几个坏点”的设计方法从根本上是有缺陷的,现在我们面临着源源不断的新方法,我们的客户端便利功能可以被用来危害我们的系统。
唯一比较安全的解决方法是禁用浏览器中的 JavaScript 和插件。就像 1995 年那样安全。
答案3
这些答案实际上都回避了这一点,而我真正想强调的是: 你从网页感染病毒的原因是,你运行的某些软件存在错误 - 即安全漏洞。
在软件开发过程的每一步,Flash、浏览器和操作系统的创建者都试图确保来自互联网的随机恶意代码无法找到执行自身的方法。不幸的是,这样做难的。 真的很难。
因此,和所有人一样,该软件的开发人员也难免会犯错:当你用 结束 html 时,HTML 解析器会意外地覆盖堆栈中的一个字节</p
。他们不小心用了signed int
而不是unsigned int
。JavaScript JIT 编译器会意外地尝试将数组索引取消引用为空指针。所有这些漏洞以及数百万个其他漏洞在软件中一直存在,要么是因为缺乏安全知识,要么是因为疏忽,甚至只是一个简单的错误。软件只是方式太复杂了,无法全部捕捉到。
因此,即使发现漏洞,操作系统也会内置机制来防止系统受到损害。你的操作系统可能具有环境保护署和澳大利亚的ASLR. 程序可以有各种保护由编译器添加。浏览器以较低的权限运行。程序通过自动分析和测试这可以发现很多此类漏洞。
我的观点是,没有人出租这种情况确实会发生——但设计出完全安全的软件是不可能的,就像设计出完全安全的保险箱是不可能的一样。有足够时间、知识、金钱和动力的人总能找到办法打开它。而问题在于这安全的是,一旦一些黑客破解了它的副本,他们就可以轻松地在世界各地的打开其他副本,而无需离开他们的房间。
答案4
这个术语叫做“驱动下载”
这是一个很好的例子你无需做任何事,只需访问一个网站就可以实现这一点。
施耐德表示,该公司的研究团队在该页面上发现了一段 JavaScript,该 JavaScript 正在注入指向恶意网站的 iframe。仔细检查后发现,它利用了 IE 的一个未知漏洞(0 天漏洞),该漏洞可导致该浏览器的完整修补版本崩溃并执行恶意代码。不过,这个 0 天漏洞很快就被攻破了,因为微软很快就公布了有关该漏洞的详细信息。
对 shellcode 的进一步分析发现了一个指向已知恶意服务器的明文 URL,该服务器存储在 M86 的存储库中,利用了众所周知的 iepeers.dll 漏洞 MS10-018。