主机保护区域

本页使用了标题或全文手工转换
维基百科,自由的百科全书

主机保护区域(英語:host protected area,缩写HPA)也称主机保护区,是普通硬盘固态硬盘上的一个操作系统一般不可见的区域,于2001年在ATA-4标准CXV (T13)中引入。[1]

工作方式[编辑]

IDE控制器具有可以使用ATA命令来查询数据的多个寄存器。返回的数据给出了有关连接到控制器的驱动器的信息。共有三个ATA命令涉及创建和使用主机保护区,它们是:

  • IDENTIFY DEVICE
  • SET MAX ADDRESS
  • READ NATIVE MAX ADDRESS

操作系统使用“IDENTIFY DEVICE”命令来查找硬盘驱动器的可寻址空间。而“IDENTIFY DEVICE”命令会查询IDE控制器上的特定寄存器来确定驱动器的大小。

该寄存器可以通过SET MAX ADDRESS ATA命令更改。如果将该值设置为小于实际硬盘大小,则有效地创建了一个主机保护区域。因为操作系统只能处理由“IDENTIFY DEVICE”命令返回的寄存器值,通常无法寻址HPA内的驱动器部分,所以该区域受到保护。

只有其他软件或固件(如BIOS)能够使用主机保护区域时,该技术才能发挥作用。此类软件被称为“HPA aware”。它们使用ATA命令“READ NATIVE MAX ADDRESS”,该命令会访问包含硬盘真实大小的寄存器。要使用主机保护区域时,此类软件会使用READ NATIVE MAX ADDRESS代替IDENTIFY DEVICE的寄存器值。

使用[编辑]

  • 在HPA最早在硬盘固件上被实现时,当时的某些BIOS难以通过大容量硬盘启动。此时可以通过硬盘上的某些跳线来设置一个初始HPA,将柱面数限制为4095或4096,以便早期的BIOS启动。然后引导加载程序再重置HPA,以便操作系统看到完整的硬盘存储空间。
  • 各种引导和诊断工具可以使用HPA,这通常配合BIOSPhoenix英语Phoenix Technologies FirstBIOS英语FirstBIOS就是此种实现的一个例子,其中使用了启动工程扩展记录(Boot Engineering Extension Record,缩写BEER)和保护区运行时接口扩展服务(Protected Area Run Time Interface Extension Services,缩写PARTIES)。[2]另一个例子是Gujin安装程序,它可以在BEER中安装引导程序,命名伪分区为/dev/hda0或/dev/sdb0;这样只有冷启动(断电再开机)才能成功,因为热启动(Control-Alt-Delete)将无法读取HPA。
  • 计算机制造商可以使用此区域来容纳预装的操作系统,以用于安装和恢复,从而代替提供DVD或CD光盘。
  • 戴爾笔记本电脑在HPA中隐藏Dell MediaDirect英语Dell MediaDirect实用工具。IBMLG笔记本电脑在HPA中隐藏系统恢复软件。
  • 各防盗找回和监控服务供应商也会利用HPA。例如,笔记本电脑安全公司Computrace英语Computrace使用HPA来加载向服务器报告机器启动的软件。HPA的优势是即便被盗的笔记本电脑硬盘被格式化,HPA也不会改变。
  • HPA也可能被用来存储不合法的数据以逃避取证。[3]
  • 部分Rootkit在HPA中隐藏以躲避反Rootkit和反病毒安全软件。
  • 某些NSA攻击工具使用HPA[4]实现应用程序持久化。

识别和操控[编辑]

有许多工具和方法可以识别硬盘驱动器上的HPA。

HPA功能可以通过DCO英语Device configuration overlay隐藏, 并且可以“冻结”(至下次硬盘关机)或受到密码保护。

识别工具[编辑]

识别方法[编辑]

Windows程序ATATool英语ATATool可以检测HPA。例如,使用下列命令查看第一个磁盘是否具有HPA:

ATATOOL /INFO \\.\PhysicalDrive0

Linux中有多种方法可以检测是否存在HPA。较新版本的Linux在系统启动时如果检测到HPA,将显示一条消息,例如:

dmesg | less
[...]
hdb: Host Protected Area detected.
    current capacity is 12000 sectors (6 MB)
    native  capacity is 120103200 sectors (61492 MB)

使用下列参数调用程序hdparm英语hdparm(版本 >= 8.0)将检测sdX上的HPA:

hdparm -N /dev/sdX

操控方法[编辑]

Windows程序ATATool英语ATATool可以用来创建一个HPA。例如,创建一个10GB HPA:

Linux程序hdparm英语hdparm(版本 >= 8.0)使用下列参数调用 可以创建一个HPA:(sdX:目标驱动器,#:非HPA可见扇区数量)

hdparm -N p# /dev/sdX

参见[编辑]

参考资料[编辑]

  1. ^ Host Protected Areas (PDF). [2018-04-14]. (原始内容存档 (PDF)于2020-10-20). 
  2. ^ Blunden, Bill. The Rootkit Arsenal: Escape and Evasion in the Dark Corners of the System. 1st ed. Jones & Bartlett Publishers, 2009 p.538
  3. ^ Nelson, Bill; Phillips, Amelia; Steuart, Christopher. Guide to computer forensics and investigations 4th. Boston: Course Technology, Cengage Learning. 2010: 334. ISBN 1-435-49883-6. 
  4. ^ 存档副本. [2018-04-14]. (原始内容存档于2020-10-30). 

外部链接[编辑]