所以最近我在思考病毒,想知道杀毒软件到底是如何跟上的?考虑到任何只学了几周代码的人都可以破解某些东西,对某人的电脑进行恶意攻击,光是数量就足以让一个简单的哈希列表望而却步,那么杀毒软件是如何做到的呢?它们是否监控进程活动并对类似病毒的行为制定了三振出局规则?如果是这样,是什么阻止了它触发完全无害的事情(比如我在 \system32 中移动文件)?
我进行了一些谷歌搜索,但常规的地方并没有特别的帮助,而且我在这里找不到重复的东西,所以我想问问 :)
答案1
本文将从开发人员/软件工程师的角度描述从头开发反病毒程序所涉及的基本思想、概念、组件和方法。本文将重点介绍反病毒引擎(以下称为 AV 引擎)的主要元素,并将排除图形用户界面、实时监视器、文件系统驱动程序和某些应用软件(如 Microsoft Exchange 或 Microsoft Office)的插件等方面。虽然可以以相同的方式设计运行/扫描单个平台(如 Palm OS 或 EPOC/Symbian OS)的 AV 引擎,但本文将重点介绍设计多平台扫描引擎,这些引擎要复杂得多。
答案2
大约一年前,我参加了 F-Secure 的主要研究人员之一 Mikko Hyyppönen 的讲座。他展示了他们的自动测试网络,他们为发送给他们的每个样本创建虚拟机,分析其结构,让其运行,记录其所做的一切,将其与以前的样本进行交叉引用,并生成摘要以供人类稍后检查。如果人类得出结论认为这是一种病毒,系统会自动生成检测签名并向客户发送更新。我想其他供应商也有类似的系统来保持他们的签名数据库是最新的。
答案3
从防病毒软件如何工作?(防病毒世界):
防病毒软件程序是一种可用于扫描文件以识别和消除计算机病毒和其他恶意软件(恶意软件)的计算机程序。
防病毒软件通常使用两种不同的技术来实现此目的:
- 通过病毒字典检查文件以查找已知病毒,识别任何可能表明感染的计算机程序的可疑行为
- 大多数商业防病毒软件都使用这两种方法,但重点是病毒字典方法。
病毒字典方法 在病毒字典方法中,当防病毒软件检查文件时,它会参考防病毒软件作者已识别的已知病毒字典。如果文件中的一段代码与字典中识别的任何病毒相匹配,则防病毒软件可以删除该文件,将其隔离,以使其他程序无法访问该文件,病毒也无法传播,或者尝试通过从文件中删除病毒本身来修复该文件。
要想在中长期取得成功,病毒字典方法需要定期在线下载更新的病毒字典条目。当新病毒在“野外”被发现时,具有公民意识和技术倾向的用户可以将其受感染的文件发送给反病毒软件的作者,然后作者会将有关新病毒的信息纳入其字典中。
基于字典的防病毒软件通常在计算机操作系统创建、打开和关闭文件时以及通过电子邮件发送文件时检查文件。这样,在收到文件后可以立即检测到已知病毒。通常还可以安排软件定期检查用户硬盘上的所有文件。
尽管字典方法被认为是有效的,但病毒作者试图通过编写“多态病毒”领先此类软件一步,这些病毒会加密自身的部分内容或以其他方式修改自身作为伪装方法,以便无法与字典中的病毒特征相匹配。
可疑行为处理方法 相比之下,可疑行为方法并不试图识别已知病毒,而是监控所有程序的行为。例如,如果一个程序试图将数据写入可执行程序,则将其标记为可疑行为,并向用户发出警报,询问用户应采取何种措施。
因此,与字典方法不同,可疑行为方法可以针对尚不存在于任何病毒字典中的全新病毒提供保护。但是,它也会产生大量的误报,用户可能会对所有警告变得麻木不仁。如果用户在每个这样的警告上都点击“接受”,那么防病毒软件对该用户来说显然是无用的。这个问题在过去 7 年里尤其严重,因为许多非恶意程序设计选择修改其他 .exe,而没有考虑到这个误报问题。因此,大多数现代防病毒软件越来越少使用这种技术。
检测病毒的其他方法 某些防病毒软件会在将控制权转交给可执行文件之前尝试模拟每个正在执行的新可执行文件的代码开头。如果程序似乎在使用自修改代码或以其他方式显示为病毒(它会立即尝试查找其他可执行文件),则可以假设可执行文件已感染病毒。但是,这种方法会导致很多误报。
另一种检测方法是使用沙盒。沙盒模拟操作系统并在模拟中运行可执行文件。程序终止后,将分析沙盒中可能表明存在病毒的变化。由于性能问题,这种检测通常仅在按需扫描期间执行。
值得关注的问题
宏病毒可以说是最具破坏性和传播范围最广的计算机病毒,如果微软能够修复 Microsoft Outlook 和 Microsoft Office 中与执行下载代码以及文档宏的传播和破坏能力相关的安全漏洞,那么就可以更便宜、更有效地预防宏病毒,并且不需要所有用户购买防病毒软件。
用户教育与防病毒软件同样重要;只需培训用户安全的计算习惯,例如不要从互联网上下载和执行未知程序,就可以减缓病毒的传播,而无需防病毒软件。
计算机用户不应该总是以管理员权限运行自己的计算机。如果他们只是以用户模式运行,那么某些类型的病毒将无法传播。
由于新病毒不断涌现,字典法检测病毒往往不够充分,而可疑行为法由于误报问题而无效;因此,目前对防病毒软件的理解永远无法征服计算机病毒。
恶意软件的加密和打包方法多种多样,即使是众所周知的病毒也无法被防病毒软件检测到。检测这些“伪装”病毒需要强大的解包引擎,该引擎可以在检查文件之前对其进行解密。不幸的是,许多流行的防病毒程序没有此功能,因此通常无法检测到加密病毒。
销售反病毒软件的公司似乎有经济动机去编写和传播病毒,并让公众对病毒威胁感到恐慌。
(我喜欢这篇文章,我只是从 AntivirusWorld 复制粘贴过来的。)
答案4
观察病毒的一个非常重要的方法是反过来看。病毒如何破坏系统?这通常是通过软件漏洞。防病毒软件知道这些漏洞并寻找影响这些漏洞的软件。无论哪种方式,病毒总是会做一些事情。所以它们需要一个工作进程来做它们最擅长的事情。有时这是一个现有的进程,有时它们自己创建一个。
但是,大多数病毒的工作方式都类似,病毒扫描程序很容易区分它们。有许多不同的病毒利用了相同的漏洞!