主機保護區域

主機保護區域(英語: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). 

外部連結