是否有病毒设法将自己隐藏在硬盘驱动器之外的某个地方?像CPU缓存还是主板上的?
甚至可能吗?假设我感染了病毒,所以我摆脱了 HDD 并安装了一个新的。病毒还会在我的电脑上吗?
是否有病毒设法将自己隐藏在硬盘驱动器之外的某个地方?像CPU缓存还是主板上的?
甚至可能吗?假设我感染了病毒,所以我摆脱了 HDD 并安装了一个新的。病毒还会在我的电脑上吗?
很多地方:
现代硬件具有广泛的持久性数据存储,通常用于固件。运送像 GPU 或网卡这样的复杂设备并将固件放在无法更新的掩码 ROM上,然后出现故障导致大规模召回,这太昂贵了。因此,您需要两件事:该固件的可写位置,以及将新固件放置到位的方法。这意味着操作系统软件必须能够写入固件在硬件中的存储位置(通常是 EEPROM)。
现代 BIOS/UEFI 更新实用程序的状态就是一个很好的例子。您可以获取在您的操作系统(例如 Windows)上运行的 UEFI 映像和可执行文件,单击一个按钮,您的 UEFI 就会更新。简单的!如果您对这些工作方式进行反向工程(我已经做过几次),这主要是加载内核模式驱动程序的情况,该驱动程序从给定的 UEFI 映像中获取页面数据并使用out
指令直接与 UEFI 芯片对话,发送正确的命令来解锁闪存并开始更新过程。
当然,有一些保护措施。大多数 BIOS / UEFI 映像不会加载,除非它们由供应商签名。当然,一个足够先进的攻击者可能只是从供应商那里窃取签名密钥,但这会进入阴谋论和神一般的威胁参与者,这在几乎任何情况下都是不现实的。像 IME 这样的管理引擎旨在具有某些保护措施,以防止它们的内存部分被 ring0 代码访问,但研究表明存在许多错误和许多弱点。
所以,一切都搞砸了,对吧?嗯,是的,也不是。可以将 rootkit 放入硬件中,但也非常困难。每台单独的计算机在硬件和固件版本上都有很大的差异,以至于不可能为大多数事情构建通用的 rootkit。您不能只获得通用的华硕 BIOS 并将其刷写到任何板上;你会杀了它。您需要为每个单独的板类型创建一个 rootkit,有时甚至需要正确的修订范围。这也是一个涉及大量跨领域知识的安全领域,深入到现代计算平台的硬件和低级操作方面,以及强大的安全和密码知识,所以没有多少人有能力。
你有可能成为目标吗?不。
您是否可能感染 BIOS/UEFI/SMM/GPU/NIC 驻留的 rootkit?不。
所涉及的复杂性和差异性对于普通用户来说太大了,以至于实际上不必担心。即使从经济角度来看,这些东西也需要大量的技能、精力和金钱来构建,因此将它们烧毁在消费者恶意软件上是愚蠢的。这些威胁的针对性如此之强,以至于它们只真正属于民族国家威胁模型。
你的问题的简短回答是肯定的。
以下是病毒可能隐藏的一些地方:
病毒可能会针对任何存在被视为可执行代码的可写数据的对象。在计算机上,这基本上是任何地方。但是,为了让它在重启后仍然存在,它必须是某种持久存储。所以 CPU 缓存可能不是最好的隐藏位置。
但是,大多数病毒不会这样做,而只是存在于 HDD 上。这是因为病毒编写者(理性地)懒惰。当有很多容易实现的目标时,为什么要选择复杂的选择呢?
最常见但未经检查的地方之一是...带有“嵌入式驱动程序磁盘”的外围设备,例如许多 3G/4G USB 记忆棒。从技术上讲,他们有一个内部集线器,以及一个通用存储 + 设备本身。升级其固件通常会升级安装到通用存储部分的磁盘映像。它在常规使用中是从 PC 读取的,但很容易重新映射为带有 autoplay 的 CD-ROM。我在 2006 年至 2008 年亲身体验过的是为本地手机提供商提供的 4G 棒。它包含 CD-ROM 之类的本地销售点开箱即用的存储,包括自动播放和 torjan =) 下一个固件补丁 — 并且存储重新映射回 HDD,并且没有病毒。
任何类型的存储的主要问题是系统必须愿意执行恶意软件。在操作系统启动期间,这意味着它必须作为可执行文件、DLL、驱动程序或类似文件在硬盘上的某个位置。它不需要完全在那里,即它可以是一个小的可加载的东西,其余的可能驻留在其他地方(甚至在网络中)。
但恶意软件也可以在操作系统执行之前加载。操作系统的加载由 BIOS 或 UEFI 控制,因此如果恶意软件已包含在此阶段,则它不在操作系统的控制范围内。例如,请参阅Hacking Team 的恶意软件使用 UEFI rootkit 在重新安装操作系统时存活。
除此之外,您在网卡,显卡,硬盘等上都有固件,这些通常可以更换。因此,一些恶意软件也可能隐藏在那里并改变系统的行为,请参阅NSA 的固件黑客如何工作以及为什么如此令人不安。