豐洪才,向云柱
(武漢工業(yè)學院計算機與信息工程系,湖北武漢 430023)
硬盤保護卡自身關鍵數(shù)據(jù)的安全保護方法
豐洪才,向云柱
(武漢工業(yè)學院計算機與信息工程系,湖北武漢 430023)
針對硬盤保護卡自身的數(shù)據(jù)安全問題,分析了保護卡系統(tǒng)的原理,提出了充分利用硬盤的保留扇區(qū),使用數(shù)據(jù)寫入陷阱、端口 I/O攔截、數(shù)據(jù)備份與恢復的技術,實現(xiàn)硬盤保護卡關鍵數(shù)據(jù)的安全保護的方法。
保護卡;關鍵數(shù)據(jù);保留扇區(qū)
計算機機房是學校計算機教學和實驗的場所,它承擔著學生上機與實驗、機房開放、各種計算機培訓和科研實驗等任務。計算機硬盤保護卡已在教育行業(yè)計算機機房、網(wǎng)吧等大型計算機機房得到了廣泛應用,對公共機房的計算機起到很好的保護作用。
雖然保護卡是一種即插即用設備,但在其安裝與使用過程中還必須作一些必要的常規(guī)性配置,否則保護卡不能正常工作;同時基于硬盤保護卡開發(fā)的一些特殊管理功能,比如虛擬系統(tǒng)、單系統(tǒng)多頻道等有許多關鍵性的數(shù)據(jù)需要安全保存,這些數(shù)據(jù)的破獲將對保護卡構成極大的威脅;此外在保護卡的使用過程中還經(jīng)常出現(xiàn)一些非常規(guī)性問題,比如進入保護卡管理模式時管理員密碼失效、機器啟動時提示重新安裝保護卡并要求插入驅動軟盤、機器啟動時發(fā)出更新 CMOS信息的請求并要求輸入管理員密碼、沒有任何提示信息還原保護功能部分失效等,對于這些非常規(guī)問題,用戶無法獲得足夠的相關信息,增加了保護卡的維護難度,影響了系統(tǒng)的安全性與可靠性。
產(chǎn)生這些問題的主要原因是某些惡意病毒的攻擊和某些共享軟件的登記操作導致了硬盤保護卡所依照的關鍵數(shù)據(jù)被破壞,這表明了保護卡自身的數(shù)據(jù)安全與恢復是需要引起重視和值得研究的問題。筆者與武漢噢易科技有限公司聯(lián)合開發(fā)并完成了噢易 Free卡電腦教室自主維護系統(tǒng),較好地解決了保護卡系統(tǒng)關鍵數(shù)據(jù)的安全保護問題。
硬盤的第 1個物理扇區(qū) (即 0柱面 0磁頭上的第 1個扇區(qū))稱為主引導扇區(qū),也稱為MBR,其后的第 2~第 63扇區(qū)就是保留扇區(qū),它們與主引導扇區(qū)一樣獨立于硬盤的任何分區(qū)[1]。眾所周知,現(xiàn)有的W indows操作系統(tǒng) (9X/NT/2K/XP等)都不對這 62個保留扇區(qū)實施寫操作,事實上,通常的軟件也不對其操作,像高級格式化程序 FORMAT因只對硬盤的具體分區(qū)有效,而不能對其操作,所以保留扇區(qū)是公認的安全區(qū),它就是本文所特指的保留扇區(qū)。通常保護卡正是充分利用這個閑置區(qū)域的安全性,把它們中的一部分當作自己的靜態(tài)工作區(qū),用于存放一些靜態(tài)的設置信息和關鍵數(shù)據(jù)。
事實上,硬盤的保留扇區(qū)不止這一部分。當硬盤上含有擴展分區(qū)時,擴展分區(qū)中的每一個邏輯分區(qū) (又稱邏輯盤)的第 1個扇區(qū)稱為擴展主引導扇區(qū),其后緊跟的若干個扇區(qū)也是保留扇區(qū),這里的保留扇區(qū)的數(shù)目與該分區(qū)的格式有關。
保護卡在首次安裝后其設置信息便自動形成,其中的有些信息可隨保護卡的重新設置而改變,也就是說,這些信息在保護卡末次設置后是不變的。保護卡的設置信息主要包括主引導扇區(qū)的備份、CMOS信息的備份、操作保護卡的各類管理密碼、硬盤各分區(qū)是否進行還原保護的標志信息和保護卡簽字 (識別)信息等,此外基于硬盤保護卡開發(fā)的一些特殊的管理功能,比如虛擬系統(tǒng)、單系統(tǒng)多頻道等有許多關鍵性的數(shù)據(jù),這些信息被保存在它的靜態(tài)工作區(qū)中,即分散保存在保留扇區(qū)域的某些扇區(qū)中。
保護卡之所以能夠實現(xiàn)系統(tǒng)還原,是因為在文件系統(tǒng)和磁盤驅動之間嵌入一層磁盤過濾驅動,正常情況下操作系統(tǒng)和各種應用程序對硬盤的訪問必須經(jīng)過磁盤過濾驅動,而磁盤過濾驅動將按照各家的保護算法,對磁盤的讀寫進行映射,使所有的磁盤讀寫都映射到緩沖區(qū),保證原有數(shù)據(jù)不會被真正改寫,從而實現(xiàn)系統(tǒng)還原。
為了達到控制和保護磁盤的目的,還原系統(tǒng)必須在操作系統(tǒng)啟動之前獲取引導權[2],將硬盤原來的 0頭 0道 1扇保存在一個其他的扇區(qū),將自己的代碼寫入 0頭 0道 1扇,從而能在操作系統(tǒng)啟動之前得到執(zhí)行權,然后在操作系統(tǒng)啟動之前完成 INT 13H的修改工作,并將保護卡用于代替 INT 13H的代碼常駐內存,將中斷向量表中 INT 13H的入口地址改為保護卡代替 INT 13H的代碼常駐程序的入口地址。通常還原系統(tǒng)在修改 INT 13H的入口后通過常駐程序修改一些其他中斷的入口,這些中斷用來實現(xiàn)對中斷向量表中 INT 13H入口地址監(jiān)控,一旦發(fā)現(xiàn)被修改,就馬上把它改回。用來替代 BIOS提供的 INT13H的代碼主要實現(xiàn)如下的一些功能[3]:①攔截所有 INT 13H中對硬盤 0頭 0道 1扇的操作,這些包括讀寫操作,把所有對 0頭 0道 1扇的操作改為對虛擬還原程序備份的那個扇區(qū)的操作,這樣做的目的是保護還原代碼不被破壞,并且不能被有心人讀出進行破解,即使用扇區(qū)編輯工具查看主引導區(qū),實際上看到的是備份的主引導區(qū)。②攔截所有 INT 13H中的寫硬盤操作,這里包括對 8G以下的硬盤的普通通過磁頭、磁道、扇區(qū)定位的 INT 13H中的寫操作和擴展 INT13H中基于扇區(qū)地址方式的對大硬盤的寫操作,甚至包括擴展 INT 13H中對一些非 IDE接口的硬盤的寫操作。攔截后對硬盤進行一些必要的寫操作,比如對虛擬內存的寫操作,用最少的時間和最少的硬盤空間把對虛擬內存所進行的寫操作做一個記錄,等系統(tǒng)重新啟動后還原這一記錄。③備份端口 70H,71H中的內容,并把最后一次執(zhí)行時端口 70H,71H的內容和備份的內容做比較,不一樣就提示 B IOS被修改,是否還原并通過密碼驗證修改 BIOS是否合法。
為了確保保護卡自身關鍵數(shù)據(jù)的安全,可以采取數(shù)據(jù)寫入陷阱、端口 I/O攔截、數(shù)據(jù)備份與恢復等安全措施。
數(shù)據(jù)寫入陷阱是將磁盤系統(tǒng)的關鍵區(qū)域做數(shù)據(jù)冗余處理,并將硬盤保護系統(tǒng)的磁盤過濾驅動與數(shù)據(jù)冗余算法相結合,使穿透型病毒繞過硬盤保護系統(tǒng)之后,只能得到棄用的寫入地址,從而使病毒無法完成感染。
如圖1所示,數(shù)據(jù)寫入陷阱采用對關鍵區(qū)域進行冗余的方法,對于通過硬盤保護系統(tǒng)過濾驅動得讀寫請求總是能得到關鍵區(qū)域的正常數(shù)據(jù),保證了系統(tǒng)的正確可靠運行;而對于繞過保護系統(tǒng)過濾驅動的讀寫總是得到關鍵區(qū)域的錯誤的數(shù)據(jù)。
圖1 數(shù)據(jù)寫入陷阱示意圖
對于操作系統(tǒng)或者非穿透型程序通過保護系統(tǒng)進行硬盤讀寫,而穿透型病毒繞過保護系統(tǒng)直接讀寫硬盤,數(shù)據(jù)寫入陷阱可以保證穿透型病毒不能通過硬盤系統(tǒng)的關鍵區(qū)域得到正確的寫入位置,從而保證保護系統(tǒng)不被病毒穿透感染。
保護卡不但要實現(xiàn)攔截所有硬盤寫操作、攔截對主引導區(qū)的讀寫操作,更應該攔截對硬盤的讀寫端口的操作,只有這樣才可能使基于硬盤的讀寫端口操作所對硬盤的破壞或是對虛擬還原技術的破解變成不可能。因為保護卡芯片內置的“I/O攔截模塊”處于系統(tǒng)設備鏈的最底層,可以攔截和過濾所有的硬盤讀寫請求?!癐/O攔截模塊”通過和保護卡原有的過濾驅動配合,實現(xiàn)對硬盤讀寫請求進行合法性驗證,攔截所有非法請求對硬盤的真實操作。經(jīng)過正常途徑產(chǎn)生的硬盤讀寫請求,一定會經(jīng)過保護卡過濾驅動。保護卡過濾驅動在下發(fā)請求之前,會依據(jù)特有算法在數(shù)據(jù)中隨機位置插入特殊的身份標記數(shù)據(jù)。當請求到達最底層的“I/O攔截模塊”時,首先“I/O攔截模塊”會提取數(shù)據(jù)中的身份標記數(shù)據(jù),如果標記數(shù)據(jù)和攔截模塊自己保存的標記數(shù)據(jù)一致,說明這個請求是經(jīng)過正常途徑下發(fā)的。然后攔截模塊會檢查數(shù)據(jù)的讀寫區(qū)域是否是合法區(qū)域,如果是操作系統(tǒng)可訪問的合法區(qū)域,說明請求是合法請求,可以通過攔截,對硬盤進行真實讀寫操作。對于未通過上述任意一個驗證步驟的請求,均判定為非法請求,攔截模塊會執(zhí)行攔截功能,丟棄非法請求。同時向操作系統(tǒng)返回虛假成功信息,返回虛假成功信息可以誤導病毒以為操作成功。
3.2.1 硬盤 I/O端口的監(jiān)控
硬盤讀寫操作有幾種模式[4],包括讀寫文件、讀寫扇區(qū)和讀寫 I/O端口,并最終都要通過讀寫 I/O端口實現(xiàn)寫盤操作。因此,寫保護最強的就是由硬盤保護卡的 B IOS使 CPU進入保護模式,然后在保護模式監(jiān)控 CMOS和硬盤的 I/O端口,非硬盤保護卡的寫請求立刻攔截,并使用扇區(qū)映射技術映射到虛擬磁盤空間,在讀操作時類似 INT 13H HOOK方式進行檢查。因為它所處的級別最低,所以這種方案的保護性最強。CPU直接通過 1F0-1F7端口向硬盤發(fā)送待讀寫的物理扇區(qū)的位置、長度與讀 /寫命令,并通過 1F7端口返回硬盤的狀態(tài)信息。因此,硬盤數(shù)據(jù)保護在這一層上進行,保護的可靠性是最高的。硬盤保護卡程序可以利用 HOOK PORT機制實現(xiàn) I/O端口的監(jiān)控。當計算機有讀 /寫命令出現(xiàn)時,I/O端口陷阱服務程序將使讀/寫命令陷入相應的處理程序中去,在相應的處理程序中通過修改 I/O端口的值,使該次操作的硬盤地址發(fā)生改變來實現(xiàn)對硬盤的保護。相應地,70H、71H兩個 CMOS端口的陷阱服務程序可實現(xiàn)對 CMOS的讀寫監(jiān)控。具體的實施方案如下:①編寫靜態(tài)的 VxD PORT設備驅動程序,并在啟用硬盤保護時,將其加載成為設備驅動程序。②在保護模式下,工作在 RING0特權級的VxD安裝 lF0-lF7端口的陷阱處理函數(shù) (使用 Install_ IO_Handler或 Install_Multi_ IO_Handlers等 VMM函數(shù)調用來編寫),如果有用戶程序訪問了端口,則系統(tǒng)會調用陷阱處理函數(shù)來管理和監(jiān)控對硬盤的讀寫控制,新的端口陷阱服務程序實際上是一個 VSD程序,相當于在原來端口服務程序上加了一個鉤子。③當用戶進程訪問 lF7端口時,則系統(tǒng)會調用陷阱處理函數(shù)來管理和監(jiān)控對硬盤的讀寫控制。④對CMOS數(shù)據(jù)的讀寫保護采用類似技術監(jiān)控 70H和7lH端口也可實現(xiàn)。⑤組織程序數(shù)據(jù),以滿足擴展卡BIOS芯片數(shù)據(jù)格式的需要。
3.2.2 虛擬設備驅動程序及其加載方法
VxD即虛擬設備驅動程序[5],用作 W indows系統(tǒng)和物理設備之間的接口。VxD技術的實質是通過加載具有 Ring0最高優(yōu)先級的 VxD,運行于 Ring3上的應用程序能夠以一定的接口控制 VxD的動作,從而達到控制系統(tǒng)的目的。硬盤保護卡之所以要使用 VxD技術,關鍵有兩點,其一是 VxD擁有系統(tǒng)最高運行權限;其二是許多W indows系統(tǒng)底層功能只能在 VxD中調用,應用程序如果要用,必須編寫VxD程序作為中介。VxD作為應用程序在系統(tǒng)中的一個代理,應用程序通過它來完成任何自己本身做不到的事情,通過這一手段,W indows系統(tǒng)為普通應用程序留下了擴充接口。
概括地說加載VxD的方法有三種,一種是在注冊表中加入注冊信息,這需要在硬盤保護卡數(shù)據(jù)區(qū)H_I_MsystemCurrent Control SetservicesVxDKeyStaticVxD=VxD帶路徑文件名。此方式要求在物理盤建立*.reg的注冊文件,并在系統(tǒng)引導加載保護卡時創(chuàng)建,在進入 Win32Enh后執(zhí)行它。第二種方法是將硬盤保護卡常駐內存,通過調用 INT2FH的 1605h功能來激活它。第三種方法是通過System.ini加載[386Enh]device=VxD路徑文件名。
3.2.3 端口陷阱服務
端口陷阱服務相當于是一種端口驅動上的鉤子,其的主要功能包括支持原端口驅動的主要功能,如端口驅動需要的排隊、輪詢服務、回調、File_ IO_Ring0等功能,同時支持實模式和塊操作設備的端口功能支持;同時能對 I/O敏感指令進行甄別,區(qū)分不同情況進行不同的處理;此外具有開放的機制,允許其他應用程序對端口加鉤,如 SCSI驅動的加載與正常執(zhí)行。筆者與武漢噢易科技有限公司聯(lián)合開發(fā)并完成了噢易 Free卡系統(tǒng)主要設計了硬盤狀態(tài)寄存器端口 1F7和 CMOS寄存器端口 71兩個 I/O端口的陷阱服務。從以上分析還可以看出,端口陷阱由于其所處的層次低,因此應該可以提供更徹底的硬盤保護。
數(shù)據(jù)備份是指保護卡剛剛安裝完畢或重新設置生效時的全部保留扇區(qū)的數(shù)據(jù)進行備份。為了使用方便,可以把這些數(shù)據(jù)讀出并保存在一個文件中,再把該文件保存到相對安全的地方去,一旦由于各種原因導致保護卡系統(tǒng)問題出現(xiàn)時,即使用保存的文件將全部保留扇區(qū)的數(shù)據(jù)加以恢復。
由于保護卡不攔截對硬盤 0柱面 0磁頭的讀操作,因此數(shù)據(jù)備份操作比較容易實現(xiàn)。比如在Windows 9X系統(tǒng)下,可通過其虛擬 DOS環(huán)境下的DEBUG命令執(zhí)行 INT 13H操作實現(xiàn);在 Windows NT/2K/XP系統(tǒng)下,用 Create File函數(shù)打開一個名為.PHYSICALDR IVE0的文件,并用 Read File函數(shù)對物理硬盤進行讀操作即可實現(xiàn)。
由于保護卡屏蔽了對硬盤 0柱面 0磁頭的寫操作,因此數(shù)據(jù)恢復操作相對困難一些,因為這些操作必須在系統(tǒng)的核心級上才能完成。具體來講,從80386以后 CPU分為 4個特權級別 (即 Ring0-Ring3)[6],供不同級別的進程使用,其中,Ring0的級別最高,Ring3的級別最低。Windows 9X/NT/2K/XP系統(tǒng)在設計時只使用了 CPU的兩個特權級別,即 Ring0核心級和 Ring3用戶級。在這兩個級別中,Windows系統(tǒng)的虛擬機管理、各種驅動程序運行在 Ring0核心級,其他應用程序都運行在 Ring3用戶級。在 Ring0核心級上可以執(zhí)行 CPU的全部指令,而在 Ring3用戶級上只能執(zhí)行 CPU的部分指令,像磁盤 I/O指令就被限制在 Ring0核心級上執(zhí)行。
在Windows 9X系統(tǒng)下,保護卡攔截了 INT 13H中斷處理程序,但沒有攔截磁盤 I/O;在 Windows NT/2K/XP系統(tǒng)下,保護卡攔截了 Ring3用戶級的磁盤 I/O,但沒有攔截 Ring0核心級的磁盤 I/O,所以在 Ring0核心級執(zhí)行磁盤 I/O操作就能實現(xiàn)數(shù)據(jù)恢復?;谝陨戏治?進行數(shù)據(jù)恢復的操作流程如下:①打開備份的數(shù)據(jù)文件;②將數(shù)據(jù)備份的文件中的數(shù)據(jù)讀到指定緩沖區(qū);③進入 Windows系統(tǒng)的Ring0核心級;④執(zhí)行磁盤 I/O寫操作;⑤退出W indows系統(tǒng)的 Ring0核心級并關閉數(shù)據(jù)備份文件。
基于噢易 Free卡的電腦教室自主維護系統(tǒng)已經(jīng)廣泛的應用于國內 100余所高等學校和許多網(wǎng)吧等大型計算機場所,也與國內著名 PC機生產(chǎn)廠家結成合作聯(lián)盟,此外產(chǎn)品也已經(jīng)銷售到海外十幾個國家和地區(qū),得到各類學校的普遍認可,為學校高質量的教學提供了技術支持和保障,該系統(tǒng)在教育行業(yè)、培訓機構中的應用必將減輕機房維護和管理人員的工作量。
[1] 熊志勇.硬盤保留扇區(qū)的軟件保護方法[J].電腦編程技巧與維護,2006(12):78-80.
[2] 謝建全.一種對公用機房硬盤進行有效保護的實現(xiàn)機制 [J].計算機工程,2003,29(5):177-179.
[3] 21CN網(wǎng)絡安全小組.一種可以穿透還原卡和還原軟件的代碼 [EB/OL].http://www.20cn. net/ns/wz/sys/data/20040418173003.htm,2009-09-01.
[4] 蘭高志.網(wǎng)卡中硬盤保護功能的增設[J].計算機工程,2004,3(6):133-134.
[5] 孟建波.VxD技術及其在實時反病毒中的應用[J].中國西部科技,2004(7):26-27.
[6] 李全忠,張軍本,岳訓,等.硬盤保護卡設置信息的安全恢復[J].計算機工程,2008,34(6):281-283.
Method of critical data security and protection for hard protect card itself
FENG Hong-cai,XIANG Yun-zhu
(Department of Computer and Information Engineering,Wuhan Polytechnic University,Wuhan 430023,China)
To solve the data security problem of hard protect card system,the paper analyzes the principle of the protect card systems,and further proposes a method of security protection for critical data in protect card system by utilizing hard disk retained sector fully and using technologies of data writing trap,port I/O block,data backup and recovery.
protect card;critical data;retained sector
TP 309.2
A
1009-4881(2010)01-0053-04
10.3969/j.issn.1009-4881.2010.01.015
2009-09-09.
豐洪才 (1963-),男,教授,博士,E-mail:fenghc@whpu.edu.cn.