跳至內容

主機保護區域

本頁使用了標題或全文手工轉換
維基百科,自由的百科全書

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

外部連結