基本计算机安全/为什么有些计算机仍然会生病
恶意软件几乎与 Unix 一样古老。事实上,第一个恶意软件应用程序是针对 Unix 的一个 rootkit,由 Cohen 记录。它允许通过绕过密码进入超级用户帐户的后门。它独特之处在于,它嵌入在编译器中,因此无法编译不包含它的 UNIX 版本。
你可能会认为,到目前为止,大多数形式的恶意软件都应该被发现并防御。但是,这假设防御的人总是诚实的,而且创建恶意软件的新方法并不总是被构建出来。这个假设并不现实。没有理由相信那些被雇用来防御一个环境中的恶意软件的人也会在另一个环境中这样做。事实上,有理由不信任,因为通常,修复一种入侵类型的安全专业人员正在为下一次入侵埋下种子。
以编译器为例。你可能会认为 Cohen 的文章会让我们查看编译器并消除它被用作恶意软件载体的任何可能性,但相反,我们发现每个编译器制造商都以其标准库函数中存在漏洞而闻名,这些漏洞使它们能够被用作破坏软件的载体。
病毒防御者呢?好吧,一个病毒扫描程序实际上雇佣了病毒黑客来测试其软件。结果是,从那以后,那个特定的病毒工具一直容易受到黑客攻击。为什么呢?好吧,事实证明,存在一个行业收集有关防御恶意软件的尝试以及试图阻止它们的信息,就像有一个行业收集有关恶意软件的信息并试图防御它们一样。这两个行业一直在不断冲突,国家往往支持坏人。你采取的每一项保护自己的措施都会被下一代恶意软件抵消。
更糟糕的是,一些最糟糕的恶意软件甚至不是病毒,而是软件,它扭曲了系统软件的设计,以便嵌入它自己的软件包版本,这些软件包在其他情况下可能是宝贵的或有吸引力的。如今,每个人都听说过弹出窗口拦截器,但很少有人意识到,我们需要它们的原因是微软的某个人有一个很棒的想法,他们应该在有人登录 MSN 时触发一个子窗口来进行广告宣传。恶意软件专家们找到了腐蚀这个概念的方法,突然之间,人们面临着一系列他们必须在阅读基础页面之前摆脱的窗口。恶意软件专家并不关心广告是否雅观,因此许多广告最终变成了色情网站的广告。当足够多的老太太和家长抱怨时,弹出窗口拦截器就开发出来了。请注意,在很多情况下,弹出窗口仍然可以穿透,例如,就在上周,我有一个网站的 61 个选项卡在我的浏览器上弹出。但是,它们不再与页面一起加载,而是必须等待用户触发一个被破坏的锚点。
由于大多数时候你都不知道正在浏览的 HTML 页面的来源,因此这种类型的恶意软件可以安装在任何外部人员可以访问页面源代码的地方。一旦微软传播了这个想法,弹出窗口拦截器就成为必需,并且注定会失败,因为存在其他方法可以解决这个问题,其中一些方法是微软自己构建到其操作系统中的。
想想微软的这个很棒的想法:当你更新落后并登录 MSN 时,将你重定向到更新网站。这难道不是一种更激进的弹出窗口形式吗?有趣的是,弹出窗口拦截器在这方面毫无用处,不是吗?微软继续尝试构建可以绕过弹出窗口拦截器的自动弹出窗口式软件。如果恶意软件行业从他们那里学习了如何绕过拦截器并在你的屏幕上放置一个网站的广告,我们应该感到惊讶吗?你认为病毒黑客不聪明吗?我一直看到的病毒检查程序的一个问题是,一旦你找到了病毒,它已经投放了有效载荷。当然,除了病毒源代码在病毒检查器检查它之前不会执行的情况。这或多或少消除了已知的病毒(只要它们可以被及时检测到)并通过电子邮件传播,但不会消除其他形式的传播。
即使我们能检测到所有病毒,仍然存在特洛伊木马,即伪装成有价值或有用应用程序的恶意软件,同时它也是某种形式的恶意软件的交付工具。由于互联网上有数百种软件来源,因此发现许多形式的恶意软件都是基于特洛伊木马感染并不奇怪。因此,病毒检查器必须在特洛伊木马投放有效载荷之前检测到它。如果动态链接库更安全,这将容易得多,但相反,感染往往会通过说服库它正在使用更新版本更新自己,将自己嵌入系统库中。
即使是微软产品中备受赞誉的注册表也容易受到恶意软件的插入,仅仅因为它将启动过程的一部分隐藏在一个数据库中,在那里它可以影响计算机的启动,每次计算机重新启动时都会启动一个恶意软件工具,但用户不知道软件已安装自己,因此无法始终防御它。
微软希望用一个存储所有详细信息的数据库来隐藏启动的复杂性,最终只是给了恶意软件另一个隐藏的地方。
UNIX 和 LINUX 操作系统声称它们没有病毒,但事实上,一些最早和最著名的病毒是在 UNIX 机器上发现的,但是它们加强了网络,以至于有人在没有网络软件学位或安装错误的情况下几乎不可能安装基于网络的程序。如果你需要学位才能在你的免费操作系统上安装软件,这没什么用。