自执行文件

信息安全 病毒
2021-08-29 12:25:23

我一直对了解病毒如何进行活动感到好奇。出于这个原因,我阅读了很多关于不同类型病毒以及它们在系统中运行方式的书籍和文章。我从未在任何地方找到并且我真的很好奇的一件事是:

例如,假设我成功开发了一种病毒,并让它渗透到系统中。此时,该特定病毒如何开始其工作。他们会在没有用户参与的情况下自动启动吗?我的意思是如果病毒被复制到硬盘驱动器中,则需要触发一个事件来触发一个动作。是什么让它运行并执行其邪恶的职责,甚至没有被双击(显式启动)。

我发现在 Linux 中可以通过编写某些脚本来完成,但在 Windows 中,你不能这样做。对上述内容的见解将不胜感激。

3个回答

(这是对整个过程的非常非技术性的描述,欢迎评论和提问)

实践中的机制在所有系统中都是相同的,这与为什么将这些东西称为病毒而不是细菌有很大关系。

病毒不是“活的”,因为它缺乏必要的机制。它所做的是劫持一个更复杂的实体(例如细胞)的机器,并让它执行它的竞价——病毒可能只不过是一种以“竞价”列表作为有效载荷的劫持机制。

计算机病毒与这种简单的结构非常相似。

劫持如何运作?

计算机系统必须有一个启动序列——首先你这样做,然后你这样做,进一步的说明在这里,然后......——和一个动作序列(用于启动程序)。

例如,当您尝试运行一个可执行文件时,系统会打开该文件,找出它需要什么(如果它不能满足这些需求,就会抱怨——例如“缺少库”),找出如何放置所有组件打包在.exe内存中的文件中,确定在哪里执行,用彼此的信息更新组件以便它们可以通信,解包组件并将它们放置在内存中准备好的位置,最后释放对组件的控制措施标记为“第一”。

病毒通过(两个例子)劫持了这个过程:

  • 找到将要激活可执行代码的位置列表(MBR、引导扇区、操作系统加载程序、操作系统存根、自动执行脚本、引导进程……)
  • 将自己注入到这个列表中,以便系统在启动时还有一件事要做,那就是为病毒蛹注入生命。这可以通过修改操作系统的待办事项列表来完成,或者将其放置在一些方便的地方,例如 Windows 中的auto-run文件夹或Run registry分支。任何放置在那里的东西都会在启动时运行。
  • 或者它可以替换其中一个组件,将其保存在其他地方。当系统激活组件认为它是合法的时,病毒会做它的事情,然后它也会检索休眠的组件并激活它,就好像它是系统一样。因此,实际上,序列又长了一步,但“官方”从外部看,步数没有变化。

该病毒还可能将自身写入操作系统的诊断程序中,因此它们不会报告任何异常情况。这个过程可能在非常接近硬件的地方运行,因此感染很难被检测到。

为了感染可执行文件,病毒会以稍微不同的方式进行相同的操作。它可以修改文件的内部“清单”,使系统真正运行病毒。然后病毒会从其臃肿的“身体”中提取出原始过程的残骸,并依次激活它。用户将看到所需的进程正在运行,而不会注意到激活的轻微延迟。

消毒需要了解病毒,以便可以从受感染的对象中提取原始文件,并用于完全替换它。

存在更复杂的隐藏方法:许多可执行文件的内部区域大多为零,用作一种或另一种的临时存储。病毒隐藏在那里,并且只对文件进行了轻微的修改,因此要激活的“第一个组件”不是原来的组件,而是病毒现在所在的空白区域。作为“内部”文件,文件大小现在没有变化。病毒一旦获得控制权,就会将自己移动到其他地方,再次将其隐藏的区域(内存中)归零,并将控制权交给旧的“第一个组件”,然后它不会发现任何异常。

每个程序都是系统中的一个进程,病毒也不例外。任何进程都应该由父进程启动(在 Linux 中只有一个名为 init 的第一个进程,在它之前没有进程可以运行)。因此病毒应该由用户(如启动恶意程序)或系统中的另一个程序开始运行(例如,如果有人可以将代码放在系统检查以查找任何可执行文件并像Linux 中的cron一样运行它的地方) .

这可能会以多种方式发生,但通常会在受感染的代码被执行时发生。

如果是受感染的可执行文件,病毒将在该可执行文件运行时被激活,这可能是因为用户单击了它,也可能是因为该程序被添加到了许多地方之一,例如 Windows 中可能导致程序在启动时运行。如果它是 Word 文档中的宏病毒,该病毒会在有人打开文档时激活。另一种非常常见的可能性是引导扇区病毒。这些可能会感染磁盘的 MBR(主引导记录)或操作系统分区本身的引导扇区。两个引导扇区都携带少量代码,这些代码作为系统引导的一部分执行。病毒可以将自己插入那里(通常病毒代码的主体将在磁盘上的其他地方,因此只有加载程序插入此处)因此它是作为系统启动的一部分加载的。