从受病毒感染的闪存驱动器中删除 RECYCLER 目录

Mas*_*oor 15 windows usb-drive malware ntfs ntfs-3g

在您告诉我使用gparted保存文件和格式化驱动器的选项之前,请理解我本可以在几个小时前完成,而这只需要几分钟。实际上,我想了解这里到底发生了什么。这种情况正在破坏我多年来获得的所有经验。


我的印象是,如果我将受病毒感染的闪存驱动器插入我的 Ubuntu 机器,我需要做的就是简单地删除病毒文件,我很高兴。

今天,我从一台 Windows 机器上收集了一些 NTFS 格式的闪存驱动器中的文件,我完全知道该机器感染了病毒。当我将闪存驱动器插入我的机器时,我发现它确实收集了许多文件和文件夹。我已经删除了大部分。唯一一个表现出强烈抵抗的是 RECYCLER 目录(及其子目录)。


此目录的属性。

drwx------ 1 masroor masroor 4.0K May  7 16:01 RECYCLER/
Run Code Online (Sandbox Code Playgroud)

如果我执行rm命令,

sudo rm -rvf RECYCLER/
Run Code Online (Sandbox Code Playgroud)

我得到了很长的输出,

rm: cannot remove `RECYCLER/S-2-4-27-3777257131-1806073332-421880436-8537/OagFrAIX.exe': Input/output error
rm: cannot remove `RECYCLER/S-2-4-27-3777257131-1806073332-421880436-8537/viJbcvrJ.cpl': Input/output error
<rest snipped>
Run Code Online (Sandbox Code Playgroud)

有趣的是,上面报告的文件由ls具有无数属性集的命令显示。

ls -l RECYCLER/S-2-4-27-3777257131-1806073332-421880436-8537/

ls: cannot access RECYCLER/S-2-4-27-3777257131-1806073332-421880436-8537/OagFrAIX.exe: Input/output error
ls: cannot access RECYCLER/S-2-4-27-3777257131-1806073332-421880436-8537/viJbcvrJ.cpl: Input/output error
total 0
-????????? ? ? ? ?            ? OagFrAIX.exe
-????????? ? ? ? ?            ? viJbcvrJ.cpl
Run Code Online (Sandbox Code Playgroud)

如果尝试查找那些有问题的文件夹的属性,

ls -dl RECYCLER/S-2-4-27-3777257131-1806073332-421880436-8537/
Run Code Online (Sandbox Code Playgroud)

我明白了,

drwx------ 1 masroor masroor 4096 May  7 15:58 RECYCLER/S-2-4-27-3777257131-1806073332-421880436-8537/
Run Code Online (Sandbox Code Playgroud)

chmod使 RECYCLER 文件夹全局可写的命令失败。

sudo chmod -vR ugo+w RECYCLER/
Run Code Online (Sandbox Code Playgroud)

输出在行中。

mode of `RECYCLER/' changed from 0700 (rwx------) to 0722 (rwx-w--w-)
mode of `RECYCLER/S-2-4-27-3777257131-1806073332-421880436-8537' changed from 0700 (rwx------) to 0722 (rwx-w--w-)
chmod: cannot access `RECYCLER/S-2-4-27-3777257131-1806073332-421880436-8537/OagFrAIX.exe': Input/output error
<snipped>
Run Code Online (Sandbox Code Playgroud)

这些文件夹包含许多.exe和其他文件,其中大部分我已经成功删除(除了上面报告的那些)。

如果我检查这些文件夹之一的属性,

lsattr -ad RECYCLER/S-2-4-27-3777257131-1806073332-421880436-8537/
Run Code Online (Sandbox Code Playgroud)

我得到

lsattr: Inappropriate ioctl for device While reading flags on RECYCLER/S-2-4-27-3777257131-1806073332-421880436-8537/
Run Code Online (Sandbox Code Playgroud)

我已clamtk按照此处的建议在此设备上运行。但是,它没有发现威胁。

我知道我可以简单地将我的闪存驱动器内容保存在某处,然后对其进行格式化。但是,我更感兴趣的是找出在这些文件夹中设置了哪些阻止进一步更改的属性。(当然,我也想对我的闪存驱动器进行消毒。)


更新 1

进一步来自Patro的评论。

  1. 访问文件夹时,即使我尝试将它们视为隐藏文件,也不会显示具有无数属性的文件。
  2. 删除这些文件失败。rm -rvf *目录内的命令因S-2-4-27-3777257131-1806073332-421880436-8537输入/输出错误而失败。

更新 2

soulsourcegirardengo发表评论后,我尝试运行 ntfsckntfsfix. 另外,这个问题有帮助。

这是输出。

ntfsck

sudo ntfsck  /dev/sdc1

Unsupported: replay_log()
Unsupported: check_volume()
Checking 7796 MFT records.
Unsupported cases found.
Run Code Online (Sandbox Code Playgroud)

ntfsfix

sudo ntfsfix -d /dev/sdc1

Mounting volume... OK
Processing of $MFT and $MFTMirr completed successfully.
NTFS volume version is 3.1.
NTFS partition /dev/sdc1 was processed successfully.
Run Code Online (Sandbox Code Playgroud)

但最初的情况仍然存在。没有任何改善。


更新 3(已解决)

正如这篇文章中所建议,我将驱动器插入 Windows 机器并执行(从终端),

chkdsk <drive letter> /R
Run Code Online (Sandbox Code Playgroud)

有一系列关于检查和维修的活动。还有一些关于坏扇区的消息。任务不到一分钟就完成了。然后我发现已经为恢复区域创建了一些新文件夹。

我将闪存驱动器重新插入 Linux 机器,然后可以毫无问题地删除 RECYCLER 文件夹。

作为一个附加步骤,现在我已经格式化了驱动器(使用 gparted,到 NTFS),因为我认为我已经获得了洞察力。

看起来该病毒确实能够导致(临时/软)硬件问题。请参阅上面提到的帖子以获取详细的技术说明。

Lui*_*ado 6

好的,我必须在这里澄清一些事情:

  1. 关于 NTFS 的逆向工程部分在这里不适用,特别是对于格式化的 NTFS 闪存驱动器。即使这样做了,也将是非常不正常的事情。我使用过许多 NTFS 格式的闪存驱动器,在 Windows XP、Vista、7 和 8 中格式化。

    所以 Linux 没有正确检测 NTFS 的问题不是它。NTFS-3G 项目并不慢,也不与那个级别不兼容,您甚至可以看到上次更新是在同年几个月前。它肯定会不时出现一些问题,例如缓存支持和大量 CPU 使用率,但就像我说的那样,对于闪存驱动器来说,这不太可能发生,或者发生的可能性很小。

  2. 我在闪存驱动器上也遇到过类似的问题????符号或完全错误的符号(例如:!@#%$@%#@ 而不是文件名)。一些用户建议使用ntfsfixorntfck但如果您无法通过在驱动器上的 Windows 上运行 chkdsk 来修复它们。它的引导记录/文件系统可能存在一些问题。

  3. 文件/文件夹的所有者无关紧要,只要他使用sudo. 它可以是任何用户,但当他使用该sudo命令rm时,无论谁拥有它,都会将其删除。这同样适用于这个 NTFS 格式的闪存驱动器。

  4. 当我第一次看到这个问题时,我会要求运行命令,sudo但我读到你已经这样做了。然后打算建议使用 ntfs 修复工具,但您已经这样做了。然后我在最后看到了输入/输出错误。看到文件的名称如何出现完全混乱只是告诉我存在一个实际的文件系统问题,只能通过以下方式更正:

    • 在 Windows 上使用 chkdsk。既ntfsfix不会也ntfsck不会解决 chkdsk 只能解决的几个问题。

    • At this moment it does not look like a hardware problem, more likely a filesystem problem. If chkdsk does not work, then the only solution is to format the flash drive again (No need for low level). In the case a simple format does not help (and tested in Windows and gparted), then we are looking at a hardware level problem.

如果病毒实际上必须对这个问题做任何事情,那将是因为它影响/附加到文件系统表 (MFT)。这会产生一些问题,比如看到文件系统的一部分正常而其他部分不正常。在一个系统上看不到文件而在另一个系统中看到它们。查看所有文件或某些文件已损坏(例如:!@#!#!LOL!@#!)以及其他在文件系统表损坏时可能发生的奇怪事情。它可能像病毒改变文件系统表中的一个字段一样简单,也可能像病毒改变 MFT 或几个文件的大小一样可怕。

除了病毒之外,您应该知道,如果问题严重到无法格式化驱动器(新文件系统)(很少看到病毒这样做),那么您的闪存驱动器硬件问题很可能是由以下原因引起的热、冲击等。

对于闪存驱动器或任何存储单元(尤其是闪存驱动器)上的数据损坏,许多情况下的原因是在所有信息正确保存之前移除该单元。如果用户在没有确保所有内容都已完成写入并且设备会话已关闭的情况下移除闪存驱动器,则在 Windows 和 Linux 中都可能发生这种情况。

在 Linux 的情况下,您将开始收到有关整个闪存驱动器中不允许的读/写操作或文件(如电影)丢失整个大小的 50% 以上的警告(如仅重 500MB 的 1.2GB 电影及其中的所有内容)损坏)。在大多数情况下,fsck 可以解决这个问题。在 Windows 的情况下,它将显示输入/输出错误,并且可能会损坏整个单元,因为 MFT 没有正确保存信息。因此,建议等待会话关闭或在可用时使用“安全删除”选项。


Rma*_*ano 5

我认为问题在于Linux中的NTFS 实现是逆向工程且不完整---向 Microsoft 询问源代码 ;-)。

您有“找到不支持的案例”警告的提示。可能 Windows 机器防病毒软件使用了一些 Linux 驱动程序无法掌握的高级/晦涩的 NTFS 文件系统特征。

您应该仅在本机系统上对文件系统进行低级管理(在此处搜索 gparted 调整 NTFS 分区大小的频率,只是为了使系统无法启动...)。

另请参阅主 NTFS-3g 页面,尤其是此常见问题问答