我想知道如何检测病毒或恶意软件或任何存在于硬盘上的东西(我正在考虑外部硬盘驱动器)。快速搜索导致了这些不完全相关的结果:
这与我所说的更接近:
Quora说:
这取决于恶意软件。重新格式化将移除大部分恶意软件,但也有例外。只需确保吹走恢复分区和安装从已知的好媒体.一些恶意软件可以修改BIOS或计算机的其他部分,以保存硬盘驱动器的格式。这种类型的恶意软件是罕见的,因为它是特定于硬件。
对于这个问题,我对非硬盘病毒不感兴趣,只对HDD硬盘感兴趣(对于外部硬盘驱动器,只是为了保持这个问题不太广泛)。我不太明白硬盘是如何工作的,除了使用磁性材料来存储数据外。
在编程中(我只是一个程序员,不是很多安全方面的东西),我只是想“我把文件存储在硬盘上”。其中一些文件可以是“可执行文件”。但是,如果不执行这些文件,您就不会得到病毒(这里忽略了获取HDD之外病毒的其他方法)。如果你确实运行了这个文件,并且它“有病毒”,我看不出你的电脑一次又一次的关机并不能阻止程序的运行。我知道有一些启动守护进程,所以它可能是一个启动守护进程,但是如果您刚才查看了ps ax
,我会假设您会看到列出的进程。但这只是表明我不太了解病毒是如何工作的。与问题没有直接关系,只是想在主体问题中添加一些上下文。
所以主要的问题是,如何检查HDD上有病毒。更普遍的是,如何检查是否有任何软件或恶意软件安装在硬盘上。想知道在工具/软件独立的层次(即理论层面)需要做些什么。从某种意义上讲,了解一些标准工具也会有所帮助,可能会让人更容易通过实例来理解。
我的知识基本上局限于“只输入ps ax
并检查流程”。但也许病毒不是在上面列出来的,就是改名了。而且,这只是一个unix命令,我不知道还有什么要做的。也许你可以手动扫描驱动器的内容,并寻找某种类型的功能。或者我不知道,这就是我想知道的。
在标题中所说的“从头开始”,我的意思是不依赖像“只运行杀毒软件X”这样的工具。如果您只想编写一些C代码或程序集,想知道在那个级别(不一定是特定的实现)编写代码是为了解决问题。
发布于 2018-11-22 11:26:38
在理论层面上,您需要首先将设备的电子布局与预期的原理图(您可能还没有)或另一个完全相同的驱动器的好版本进行比较。如果它不同,找出什么不同和后果是什么?有没有像微控制器这样的新的“智能”部件?它和什么有关?
然后看一看所有可编程的电子设备,然后将二进制代码转储到那里。(使用JTAG,SPI,任何您需要的)。
然后,将此二进制代码与已知的好版本(可能没有)或从该驱动器的已知好版本中转储的版本进行比较。
然后,通过分解代码并了解代码所做的事情,您可以准确地分析这些差异。这仅仅是制造商的错误修复/更新,还是恶意代码?
您可以查找在这个博客上的一些好的波图和描述如何改变驱动器固件工作。
如果您确定硬件和固件没有被篡改,您可以继续驱动器上的数据。
除非UEFI/BIOS/.或者操作系统就是这样做的。
因此,首先您需要检查引导加载程序在那里。驱动器包含引导加载程序吗?如果是,请查看它是否是已知的良好引导加载程序(例如,WindowsBootloader、默认grub、.)。如果没有,请拆卸代码并进行分析。
如果您确信硬件、固件和引导加载程序不是恶意的,那么执行代码的唯一方法就是您的操作系统。
找出您的操作系统是否自动从连接的驱动器加载和执行代码(它不应该),如果应该的话,从哪里准确地。看看您的驱动器上是否有此位置的代码。分析一下。
如果您走了这么远,那么驱动器上就没有自动执行的恶意代码。当然,仍然有一些恶意代码不能自动运行。
发布于 2018-11-22 09:55:26
你的主要问题似乎是你信任ps ax
。也就是说,输入这两个单词,并假设它们是按照您的意愿执行的。随着恶意软件的运行,这个假设是有缺陷的。
实际上,答案是,不要从那个硬盘上运行任何东西。将其放入USB机箱中,并将其连接到一个已知的良好系统,该系统不会自动从USB存储开始执行内容。为了获得更多的安全性,您可以在Linux上将dsk挂载为noexec
。
现在,您可以检查普通恶意软件可以访问的所有比特。但是,仍然存在着国家一级的行为者替换了磁盘本身的固件的风险。但如果你是在应对这种程度的威胁,你就不应该问这样的问题。
https://security.stackexchange.com/questions/198203
复制相似问题