硬盘 - 恶意软件感染后清除 HPA 和 DCO 等“隐藏区域”

硬盘 - 恶意软件感染后清除 HPA 和 DCO 等“隐藏区域”

背景:

我在 Windows 中感染了一些恶意软件,可能是 rootkit 或 bootkit。我不想冒任何风险,所以愚蠢地使用 DBAN(PRNG,8 次通过)擦除了我的驱动器。后来才知道 DBAN 不会杀死 HPA(主机保护区)或 DCO(驱动器配置覆盖),它们是一些硬盘使用的“隐藏区域”。

我看到 CMRR 制作的 HDDErase 可以删除 HPA 和 DCO(如果存在),但该项目在 2005 年或 2007 年停止了。因此,我转向 Linux,hdparm希望它能将我的硬盘 100% 清除干净,这样我就可以在 100% 干净的硬盘上再次安装 Windows。另外,我还查看了“BC Wipe Total Wipeout”,它可以删除 HPA 和 DCO,但价格为 50 美元。

我是一名普通的计算机用户,缺乏 Bash 技能,也就是说,我真的不知道自己在做什么。

问题:

我的硬盘是 320GB 7200RPM Seagate 硬盘。

输出sudo hdparm --dco-identify /dev/sda

/dev/sda:
DCO Revision: 0x0001
The following features can be selectively disabled via DCO:
    Transfer modes:
         mdma0 mdma1 mdma2
         udma0 udma1 udma2 udma3 udma4 udma5 udma6(?)
    Real max sectors: 625142448
    ATA command/feature sets:
         SMART self_test error_log security HPA 48_bit
         (?): selective_test conveyance_test write_read_verify
         (?): WRITE_UNC_EXT
    SATA command/feature sets:
         (?): NCQ interface_power_management SSP
  1. 这个输出是什么意思?如何确保 HPA DCO 上不存在恶意软件的可能性?

  2. 有没有办法找出以 GB 而不是扇区为单位的大小?

  3. 是否hdparm会彻底清除 HPA 和 DCO 中存在的所有恶意软件?

我也在 Wiki 页面上看到了这一点,有点担心:

hdparm 有一个更严重的缺点:如果某些参数被误用,它可能会导致计算机崩溃并使其磁盘上的数据无法访问。在约 67 个参数中,有几个参数很危险,如果滥用,可能会导致“大规模文件系统损坏”。

答案1

因此,愚蠢地使用 DBAN 擦除了驱动器(PRNG,8 次通过)。后来才知道 DBAN 不会杀死 HPA(主机保护区)和 DCO(驱动器配置覆盖)

因此,我们在此基本承认驱动器已被擦除,因此驱动器上没有分区表、文件系统或数据。因此,不可能存在数据损坏或文件系统损坏,因为两者都不存在,DBAN 已确保这一点,因此以下 HDPARM 警告不适用。

hdparm 有一个更严重的缺点:如果某些参数被误用,它可能会导致计算机崩溃并使其磁盘上的数据无法访问。在约 67 个参数中,有几个参数很危险,如果滥用,可能会导致“大规模文件系统损坏”。

启动 Linux 启动盘并运行hdparm


使用 HDPARM 清除 HPA

对于 x = 您所针对的设备,使用以下 HDPARM 命令显示您是否启用了 HPA。

# hdparm -N /dev/sdx

如果你定义了 HPA,它将返回类似以下内容:

/dev/sdx:
max sectors   = 78125000/78165360, HPA is enabled

要删除 HPA 并将可见区域扩展到驱动器的整个大小,请使用上述报告中的分母(可见区域/最大扇区):

# hdparm -N p78165360 /dev/sdx

它将返回一份报告,指出可见区域等于最大扇区数,并且 HPA 已被禁用。

/dev/sdx:
setting max visible sectors to 78165360 (permanent)
max sectors   = 78165360/78165360, HPA is disabled

使用 HDPARM 检查 DCO 是否到位并将其恢复为出厂默认设置

由于 DCO 是由制造商设置的,因此您必须接受,对其进行干扰可能会损坏驱动器。但是,如果您认为您遇到了一些可以干扰它的复杂恶意软件,那么这就是您最不用担心的问题了。要查看 DCO,请使用以下 HDPARM 命令。

# hdparm --dco-identify /dev/sdx

在您的示例中,它为您提供了:

/dev/sda:
DCO Revision: 0x0001
The following features can be selectively disabled via DCO:
    Transfer modes:
         mdma0 mdma1 mdma2
         udma0 udma1 udma2 udma3 udma4 udma5 udma6(?)
    Real max sectors: 625142448
    ATA command/feature sets:
         SMART self_test error_log security HPA 48_bit
         (?): selective_test conveyance_test write_read_verify
         (?): WRITE_UNC_EXT
    SATA command/feature sets:
         (?): NCQ interface_power_management SSP

因此,您的驱动器制造商使用 DCO 来定义允许的数据传输模式(MDMA、UDMA)、驱动器的实际大小(最大扇区)以及可以禁用的 ATA/SATA 命令。

如果您想尝试将 DCO 恢复为出厂默认设置,可以使用以下 HDPARM 命令:

# hdparm --dco-restore /dev/sdx

它会向你发出以下警告,即更改 DCO 将导致数据完全丢失。可以将其视为更改分区大小或擦除分区表并使用不正确的参数进行恢复。在擦除的磁盘上,你已经丢失了数据,是吗?基本上是很抱歉您在继续操作之前没有备份数据,如果在命令运行后 DCO 不匹配,并且您认为由于大小重新分配而可以从驱动器中恢复任何内容,那么您就麻烦了。

/dev/sdx:
Use of --dco-restore is VERY DANGEROUS.
You are trying to deliberately reset your drive configuration back to
the factory defaults.
This may change the apparent capacity and feature set of the drive,
making all data on it inaccessible.
You could lose *everything*.
Please supply the --yes-i-know-what-i-am-doing flag if you really want this.
Program aborted.

根据说明,您添加以下“我接受后果”开关:

# hdparm --yes-i-know-what-i-am-doing --dco-restore /dev/sdx

它会告诉你:

/dev/sdx:
issuing DCO restore command

答案2

我最近遇到了一个问题,1TB 驱动器显示为 1KB,而磁盘管理器显示没有介质。我使用了 Passmark.com 的免费程序 DiskCheckup。

运行程序并选择受影响的磁盘后,我单击“隐藏”选项卡以找到 3 个输入框。第一个“最大用户 LBA”仅显示 1:第二个和第三个(本机和磁盘)显示正确的数字。我勾选了允许更改的复选框,并在第一个框中输入了正确的数字,以便所有 3 个都显示相同的 LBA 数量。然后,单击“应用”按钮:全部完成。

返回磁盘管理器,我单击操作菜单中的“重新扫描”,然后我的完整分区信息就恢复了,并且可以完全访问驱动器。如果它是一个可启动驱动器,则可能需要使用 EasyRE 之类的工具替换 MBR。

抱歉,之前正在浏览答案,但没有意识到这是一个 Linux 网站,而我的答案仅适用于 Windows。

答案3

我对如何清理硬盘有一些建议。你可以在这里看到我的回答 -

https://serverfault.com/questions/56280/fastest-surest-way-to-erase-a-hard-drive/537341#537341

看来开源并不像看上去那么美好。一款售价 50 美元的闭源工具可以帮我完成工作,但我没有购买,因为它太贵了。

相关内容