为什么病毒编写者会在感染机器之前检查它是否被感染?

信息安全 恶意软件 病毒 杀毒软件
2021-08-12 12:00:14

我在看病毒的三方结构,它似乎在感染病毒之前检查计算机是否被感染。这是否会尝试使用已经存在的文件进行感染,而不是将另一个病毒副本转移到计算机上?

4个回答

大多数恶意软件的目标是尽可能长时间地保持活跃状态​​。它收集击键、参与 DDoS 攻击、重定向搜索结果、发送垃圾邮件、显示弹出广告等的时间越长,对创作者来说就越有利可图。为了达到这个目标,它必须不被发现。

如果一个恶意软件两次感染一台机器,它可能会使机器处于未定义状态,或者导致冲突。它也可能比平时消耗更多的资源。这可以通过多种操作进行检测:

  • 尝试锁定同一个文件两次,导致崩溃。
  • 两次注入正在运行的进程,导致内存损坏和崩溃。
  • 两次感染同一文件,导致其损坏。
  • 尝试在相同的 API/对象/系统消息上安装多个挂钩,导致不稳定或未定义的行为。
  • 安装多个副本的负担增加了 CPU、网络和磁盘使用率。

使用的资源越少,造成的干扰越少,用户就越不可能注意到有问题。一旦用户注意到某些东西无法正常工作,他们就会尝试修复它,这可能会导致恶意软件被删除。因此,恶意软件创建者最好防止这些问题并保持隐蔽。

早在 1988 年,第一个 Internet 蠕虫就扼杀了 Internet(当然只是一段时间),因为它在再次安装之前没有正确检查其存在。它包括一种启发式方法,但并没有像作者认为的那样奏效。所有的副本都阻塞了网络并阻塞了机器,这几乎不引人注意。

出于同样的原因,病毒会在感染之前检查它的存在:避免将宿主淹没在自身的多个副本之下。为了有效地传播,病毒不能太快地杀死它的宿主(顺便说一句,这同样适用于生物病毒)。

尽管如此,还是有一种微妙之处。有一些简单的病毒会破坏它们感染的文件,方法是在该位置的任何指令上写下自己。这种病毒可以在同一个文件上进行自我写入和重写,而不会产生额外的不良影响。但由于原文件已损坏,无法正常工作,从而使病毒变得不那么隐蔽,并可能提示用户进行一些清理。因此,高效的病毒会在受感染文件中复制指令,以便它们无论如何都会被执行。在此过程中,受感染的文件必然会被放大如果病毒反复感染一个文件,那么文件可能会无限增长,最终填满硬盘,就像 1988 年那样。

这部分是商业原因而不是技术原因。我曾经读过一篇详细介绍推销的博客文章,销售对受感染机器的访问权(出于垃圾邮件中继、窃取信用卡信息、DDoS 等目的)的人的压力很大,他不会加载每个机器人上都有多个二进制文件。

一台机器的个体感染越多,用户就越有可能注意到它,也就越有可能被清理干净。在雷达下飞行是值得的。

除了其他答案之外,我还要补充一点,不仅仅是检查是否感染了机器两次。

如果在那个领域,我会检查以确保机器没有感染其他东西以及我的东西。

安装的东西越多,机器就越有可能崩溃、运行缓慢或某些东西会引起所有者的注意。

抢先删除竞争对手的产品,以及验证我的产品没有以前的版本,将有助于保持系统属于我自己。如前所述,目标是让 CPU 保持“我的”。这意味着保持低调,不要引起注意。