高發(fā)桂
(湖北民族學院 信息工程學院,湖北 恩施 445000)
一種基于Windows的通用外設(shè)管控系統(tǒng)
高發(fā)桂
(湖北民族學院 信息工程學院,湖北 恩施 445000)
提出一種基于Windows設(shè)備過濾驅(qū)動實現(xiàn)的外設(shè)管控方案,主要討論建立一種通用的Windows外部設(shè)備的管控系統(tǒng),即無需針對新型設(shè)備另外開發(fā)一套新的系統(tǒng).該外部設(shè)備主要指USB移動存儲設(shè)備、串口、并口、藍牙、紅外等物理設(shè)備.系統(tǒng)包括對設(shè)備使用權(quán)限的控制以及設(shè)備使用行為的審計并形成日志存儲在本地.該方法具有與操作系統(tǒng)聯(lián)系緊密,安裝監(jiān)控模塊便捷,在用戶無感知的情況下完成對終端外部設(shè)備的管控.
設(shè)備過濾驅(qū)動;Windows驅(qū)動程序模型;I/O請求包;權(quán)限控制;操作審計
隨著信息技術(shù)的發(fā)展,外部存儲設(shè)備的使用越來越普遍,同時外部設(shè)備的表現(xiàn)形式也是花樣繁多,比如USB接口的無線網(wǎng)卡等,這直接導(dǎo)致了用戶借助于硬件設(shè)備的途徑將機密數(shù)據(jù)泄露[1].對于局域網(wǎng)中的硬件設(shè)備本身不是很嚴謹,重要的數(shù)據(jù)很容易通過串、并口、可移動存儲設(shè)備拷貝,使得在局域網(wǎng)內(nèi)違規(guī)獲取機密信息變得十分快捷.缺少通用的外設(shè)管控系統(tǒng),使得局域網(wǎng)內(nèi)任何人都有可能有意或者無意的泄露機密信息.目前國內(nèi)針對設(shè)備的監(jiān)控采用Hook Windows API[2],通過在ring3模式下HOOK CreateFile、ReadFile、WriteFile等API以達到實現(xiàn)監(jiān)控硬件設(shè)備的目的,此種方式缺點非常明顯,比如在多線程調(diào)用下缺乏健壯性以及外部容易繞過而出現(xiàn)監(jiān)控不徹底的情況.張赟[3]等人通過SSDT HOOK內(nèi)核函數(shù),以達到外設(shè)監(jiān)控的目的,此種方式存在的缺陷在于Windows X64平臺的系統(tǒng)存在內(nèi)核patch,在該平臺上,此種方式會出現(xiàn)藍屏.楊思燕[4]提出基于Windows文件過濾驅(qū)動監(jiān)控USB可移動存儲設(shè)備,效果較好,但是只能針對USB等存儲設(shè)備監(jiān)控,無法對串口等設(shè)備進行有效的監(jiān)控.岳亮[5]提出了USB外設(shè)的監(jiān)控,較好的實現(xiàn)了USB設(shè)備的存儲控制以及USB訪問日志記錄,但是對于其他外設(shè)的監(jiān)控卻沒有提供支持.
本文提出的基于Windows的通用外設(shè)的管控系統(tǒng)實現(xiàn)方案,通過WDM設(shè)備過濾驅(qū)動程序[6]實現(xiàn)管控通用外設(shè)的目的.過濾驅(qū)動[7-8]是一種中層驅(qū)動程序,它位于其他的功能驅(qū)動程序的層次之間.處于功能驅(qū)動程序之上的被稱為上層過濾器,處于功能驅(qū)動程序之下的被稱為下層過濾器.上層過濾器的作用是通過攔截IRP驅(qū)動請求包來處理設(shè)備的附加功能,而下層過濾器的作用是可以攔截并且修改發(fā)往設(shè)備驅(qū)動的IRP驅(qū)動請求包,已達到攔截的目的[9].WDM模式的過濾驅(qū)動程序可以不斷的疊加,即任何一方的設(shè)備過濾驅(qū)動程序可以被更為底層的過濾驅(qū)動程序附加[10].
把硬件設(shè)備的管理與Windows功能設(shè)備驅(qū)動程序無縫集成,對設(shè)備的權(quán)限使用的控制以及操作行為的審計對用戶透明,用戶無感知,可以方便部署在局域網(wǎng)中主動防御通過硬件資源的泄密.本文首先介紹了本系統(tǒng)的目標,其次介紹了通用外設(shè)管控系統(tǒng)的實現(xiàn)原理;再次介紹了基于Windows設(shè)備過濾驅(qū)動的通用外設(shè)管控系統(tǒng)實現(xiàn);最后對系統(tǒng)做了功能以及性能測試.
為了克服現(xiàn)有硬件監(jiān)控系統(tǒng)的不足,使本文介紹的方案具有高安全性和實用性,提出以下目標:
1)管控徹底,從Windows底層入手,攔截一切外部設(shè)備的IRP_MJ_CREATE與IRP_MJ_WRITE等IRP,不會出現(xiàn)ring3層監(jiān)控容易繞過的問題;
2)用戶體驗好,效率高,整個監(jiān)控過程是在內(nèi)核中透明完成的,用戶無感知;
3)系統(tǒng)兼容性強,摒棄內(nèi)核HOOK的辦法,采用WDM下層過濾器的方式攔截設(shè)備操作,在X64平臺不會藍屏死機;
4)管控精細,不僅對硬件設(shè)備進行權(quán)限控制,同時也對硬件設(shè)備的使用行為進行審計,便于事后追溯;
5)策略靈活,系統(tǒng)控制應(yīng)該較為靈活,可以很快修改某類設(shè)備的權(quán)限;
2.1設(shè)備過濾驅(qū)動的工作原理
圖1 WDM過濾驅(qū)動層次圖Fig.1 WDM filter driven hierarchical diagram
WDM驅(qū)動是對NT模式驅(qū)動的有效補充,增加了對即插即用的支持[11],同時需要提供一個用以描述安裝過程的INF文件,在INF文件中注明過濾驅(qū)動程序所對應(yīng)的功能驅(qū)動程序在注冊表中子鍵的信息以及本過濾器自身的信息.WDM是一個層次化的驅(qū)動程序模型,在該模型中,驅(qū)動的層和堆棧一起協(xié)同處理I/O請求.Windows的子系統(tǒng)是基于對象的,同時也是包驅(qū)動的,每個I/O操作是通過一個IRP描述,驅(qū)動程序的工作過程即是IRP包處理的過程[12].WDM設(shè)備過濾驅(qū)動的層次如圖1所示.
圖2 基于設(shè)備過濾驅(qū)動的通用外設(shè)管控系統(tǒng)的總體設(shè)計模型Fig.2 A general design model of universal peripheral management and control system based on device filter driver
WDM使用了圖1所示的模型,右邊是一個設(shè)備對象的堆棧.任意一個物理硬件設(shè)備都可以有多個這樣的數(shù)據(jù)結(jié)構(gòu),處于堆棧最底層的設(shè)備對象稱為物理設(shè)備對象,簡稱PDO,在設(shè)備對象堆棧的中間某一層的對象稱為功能設(shè)備對象,簡稱FDO,位于FDO上面的稱為上層過濾器,位于FDO下面的稱為下層過濾器.操作系統(tǒng)的PNP管理器按照設(shè)備驅(qū)動程序的要求去構(gòu)造設(shè)備對象堆棧.一旦總線驅(qū)動檢測到新硬件的存在,那么PNP(即插即用)管理器即會創(chuàng)建一個PDO,之后開始生成上述數(shù)據(jù)結(jié)構(gòu)的堆棧.PNP管理器最先裝入最底層的過濾器驅(qū)動程序并調(diào)用AddDevice函數(shù),創(chuàng)建FIDO,然后AddDevice將PDO連接到FIDO上,PNP管理器繼續(xù)向上執(zhí)行,裝入并調(diào)用每個底層過濾器、功能驅(qū)動程序、高層過濾器,直至完成整個堆棧[13].在下層過濾器驅(qū)動的初始化過程中,AddDevice函數(shù)作用是創(chuàng)建設(shè)備類對象,即所過濾設(shè)備驅(qū)動的類對象[14],進一步是通過調(diào)用IoCreateDevice實現(xiàn)的.
2.2通用外設(shè)管控系統(tǒng)總體設(shè)計模型
基于設(shè)備過濾驅(qū)動的通用外設(shè)管控系統(tǒng)的總體設(shè)計模型如圖2所示.
用戶通過設(shè)置各類硬件設(shè)備的使用權(quán)限,設(shè)備過濾驅(qū)動模塊依據(jù)應(yīng)用程序所設(shè)置的硬件設(shè)備的權(quán)限,在IRP_MJ_CREATE以及IRP_MJ_WRITE上進行控制設(shè)備的打開以及寫入操作.同時在AddDevice處記錄通過事件通知應(yīng)用程序,有設(shè)備接入系統(tǒng),需要記錄接入行為.在IRP_MN_REMOVE_DEVICE派遣函數(shù)中通過事件通知應(yīng)用程序,有設(shè)備移除系統(tǒng),需要記錄移除行為.
2.3設(shè)備權(quán)限的管理
在應(yīng)用層與設(shè)備過濾驅(qū)動的交互中,設(shè)備權(quán)限的數(shù)據(jù)結(jié)構(gòu)如下:
typedef struct _tag_FilterDeviceType_Auth
{
INT32 dwDeviceType; //待監(jiān)控的設(shè)備類型
INT32 dwAuthFlag; //權(quán)限
} FilterDeviceType_Auth, *LPFilterDeviceType_Auth;
//設(shè)備類型表
enum _DEVICETYPE
{
DEVICETYPE_UDISK = 0x0000, //USB可移動存儲設(shè)備
DEVICETYPE_OPTICAL_DRIVER = 0x0001, //光驅(qū)設(shè)備
試劑:硫酸鋁銨(批號20120827),購自天津市光復(fù)精細化工研究所。氫氧化鈉(批號20160803)、硼酸(批號20130107)、甲基紅(批號20161020)、溴甲酚綠(批號20160330),均購自國藥集團化學試劑有限公司。0.05 mol·L-1硫酸滴定液(批號539906-161001),購自中國食品藥品檢定研究院。水為Milli-Q過濾水。
DEVICETYPE_BLUETOOTH = 0x0002, //藍牙設(shè)備
DEVICETYPE_INFRARED = 0x0003, //紅外設(shè)備
DEVICETYPE_PARALLEL = 0x0004, //串并口
DEVICETYPE_1394 = 0x0005, //1394線設(shè)備
DEVICETYPE_FLOPPY_DRIVER = 0x0006 //軟驅(qū)設(shè)備
};
//設(shè)備權(quán)限表
enum _DEVICE_AUTH_FLAG
{
_DEVICE_AUTH_FLAG_NORMAL = 0x00, //設(shè)備正常使用
_DEVICE_AUTH_FLAG_READONLY = 0x01, //設(shè)備只讀
_DEVICE_AUTH_FLAG_FORBID = 0x10, //設(shè)備完全禁用
};
在FilterDeviceType_Auth結(jié)構(gòu)成員中,dwDeviceType表示待監(jiān)控的設(shè)備類型,其取值為枚舉_ DEVICETYPE中對應(yīng)數(shù)據(jù),權(quán)限字段dwAuthFlag表示待監(jiān)控設(shè)備所具有的權(quán)限,其取值為枚舉_DEVICE_AUTH_FLAG中對應(yīng)的數(shù)據(jù).
對于外設(shè)正常的使用情況下,僅需過濾驅(qū)動將IRP向下層傳遞即可,而對于完全禁用和只讀的情況需要分開處理,下面分完全禁用和只讀兩種情況分別闡述攔截的流程.
圖3 設(shè)備完全禁用情況下的處理流程圖Fig.3 The flow chart of the processing when the device is completely disabled
a) 對于硬件設(shè)備完全禁用的處理流程如下圖3所示.
用戶通過設(shè)置各類硬件設(shè)備的使用權(quán)限,設(shè)備過濾驅(qū)動模塊依據(jù)應(yīng)用程序所設(shè)置的硬件設(shè)備的權(quán)限,控制設(shè)備完全禁用的情況下,只需要控制硬件設(shè)備的打開操作即可,控制了打開,其設(shè)備的讀寫無需控制.在IRP_MJ_CREATE例程中,先查詢設(shè)備的類型,根據(jù)設(shè)備類型查詢設(shè)備權(quán)限控制鏈表,如果不屬于完全禁用的設(shè)備,只需將IRP傳遞至下層總線驅(qū)動即可,如果屬于完全禁用的設(shè)備,需要在本層完成此IRP,同時返回狀態(tài)STATUS_INVALID_DEVICE_REQUEST.
b) 對于硬件設(shè)備只讀的處理流程如下圖4所示.
圖4 設(shè)備只讀情況下的處理流程圖Fig.4 Process flow chart for device read-only case
用戶通過設(shè)置各類硬件設(shè)備的使用權(quán)限,設(shè)備過濾驅(qū)動模塊依據(jù)應(yīng)用程序所設(shè)置的硬件設(shè)備的權(quán)限,控制設(shè)備只讀的情況下,只需要控制硬件設(shè)備的寫入操作即可.在IRP_MJ_WRITE例程中,先查詢設(shè)備的類型,根據(jù)設(shè)備類型查詢設(shè)備權(quán)限控制鏈表,如果不屬于正常的設(shè)備,只需將IRP傳遞至下層總線驅(qū)動即可,如果屬于只讀的設(shè)備,需要在本層完成此IRP,同時返回狀態(tài)STATUS_INVALID_DEVICE_REQUEST.不能返回STATUS_ACCESS_DENIED狀態(tài),因為在寫入的時候,如果返回拒絕寫入,I/O管理器會誤認為是權(quán)限問題,會多次寫入,造成資源管理器響應(yīng)緩慢的情況.
2.4硬件設(shè)備插拔行為審計
硬件設(shè)備插拔行為的審計依賴于AddDevice以及IRP_MN_REMOVE_DEVICE.應(yīng)用層通過與設(shè)備過濾驅(qū)動共享事件,設(shè)備過濾驅(qū)動一旦發(fā)現(xiàn)有設(shè)備接入,檢查設(shè)備類型是否為待管控設(shè)備,如果為管控設(shè)備,即將設(shè)備信息存儲在日志鏈表中,觸發(fā)共享事件,應(yīng)用程序檢測到共享事件被觸發(fā),即向設(shè)備過濾驅(qū)動請求日志信息.硬件設(shè)備插拔行為審計處理流程如下圖5所示.
圖5 硬件設(shè)備行為插拔審計的處理流程圖Fig.5 Hardware device behavior plug-in audit process flow chart
其中產(chǎn)生的外設(shè)審計日志結(jié)構(gòu)如下:
typedef struct _tag_AuthLogRecord
{
INT32 dwDeviceType; //設(shè)備類型
INT32 dwDevicePnpType; //設(shè)備插入/拔出行為
INT32 dwTime; //行為發(fā)生的時間
WCHAR szDeviceId[64]; //擴展字段,設(shè)備物理ID
} AuthLogRecord,*LPAuthLogRecord;
目前的系統(tǒng)在測試的過程中,記錄了設(shè)備類型,設(shè)備的行為,以及發(fā)生該行為的時間.只有USB可移動存儲設(shè)備獲取到了szDeviceId,針對其他的設(shè)備類型,此字段無效.
2.5通用設(shè)備管控系統(tǒng)方案分析
1)管控徹底,基于WDM的設(shè)備過濾驅(qū)動程序?qū)崿F(xiàn)外設(shè)的管控,為內(nèi)核層監(jiān)控,應(yīng)用層很難繞過,其管控較為徹底;
2)用戶無感知,整個監(jiān)控過程是在內(nèi)核中透明完成的,用戶無感知;
3) 系統(tǒng)兼容性強,摒棄內(nèi)核HOOK的辦法,采用WDM下層過濾器的方式攔截設(shè)備操作,在X64平臺不會藍屏死機;
4)管控精細,不僅對硬件設(shè)備進行權(quán)限控制,同時也對硬件設(shè)備的使用行為進行審計,便于事后追溯;
5)策略控制靈活,及時生效.用戶可以隨意設(shè)置某類硬件外設(shè)的使用權(quán)限,生效時間零等待.
3.1測試環(huán)境
主機:Inter(R) Core(TM) i3-2330M,3GB內(nèi)存
操作系統(tǒng):Win7系統(tǒng)
測試U盤規(guī)格:Kingston(DTIG4) 8G
3.2功能測試
U盤接入行為審計日志顯示見表1.
結(jié)果顯示,在序列號為9BC41C00FFFF5E48U盤接入系統(tǒng)時,當存在USB存儲設(shè)備的權(quán)限控制時,成功記錄了存儲設(shè)備的記錄日志.
針對USB可移動存儲設(shè)備,對其設(shè)置完全禁用策略后,鼠標、鍵盤不影響,對U盤而言,使用資源管理器打開設(shè)備,會出現(xiàn)“函數(shù)不正確”的提示,這是因為設(shè)備過濾驅(qū)動返回了無效設(shè)備的狀態(tài).
表1 U盤接入行為審計日志
針對串口的測試,在網(wǎng)上下載“武漢奮進串口通信助手”,在對其設(shè)置完全禁用策略后,在界面上點擊打開“COM1”,會提示打開失敗,這是因為設(shè)備過濾驅(qū)動返回了無效設(shè)備的狀態(tài).
在整個過程中,CPU占用率一直為0.
本文針對目前局域網(wǎng)內(nèi)硬件外設(shè)管控系統(tǒng)不足,提出了基于設(shè)備過濾驅(qū)動的通用管控模型.本方案對未來將要產(chǎn)生的指紋設(shè)備等的監(jiān)控也不需要大幅修改源代碼,只需要在設(shè)備過濾驅(qū)動的代碼中加入設(shè)備的類型即可,擴展性好.實驗結(jié)果表明,該操作方便,穩(wěn)定性高,適應(yīng)從Win xp到Win10的各個版本,具有較高的可靠性及安全性.
[1] 胡宏銀,姚峰,何成萬.一種基于文件過濾驅(qū)動的Windows文件安全保護方案[J].計算機應(yīng)用,2009,29(1):168-171.
[2] 郇義鵬,虞水俊.利用API攔截技術(shù)實現(xiàn)串口通信數(shù)據(jù)攔截 [J].計算機應(yīng)用,2003,23(11):144-146.
[3] 張赟,蔡皖東,王玥.基于IRP攔截技術(shù)的USB設(shè)備監(jiān)控系統(tǒng)[J].微電子學與計算機,2005,22(12):179-183.
[4] 楊思燕.USB可移動存儲設(shè)備監(jiān)控軟件研究與實現(xiàn)[J].計算機技術(shù)與發(fā)展,2013,23(12):151-154.
[5] 岳亮.USB移動外設(shè)監(jiān)控技術(shù)研究[D].成都:四川大學 2005.
[6] 譚文,楊瀟,邵堅磊.寒江獨釣-Windows內(nèi)核安全編程[M].北京:電子工業(yè)出版社,2009:500-545.
[7] 張景龍,白青海,王愛松,等.基于Windows平臺的數(shù)據(jù)安全的研究[J].內(nèi)蒙古民族大學學報(自然科學版),2015,39(4):292-294,313.
[8] 王小玲,易發(fā)勝.一種利用源地址信息的DDOS防御系統(tǒng)的設(shè)計與實現(xiàn)[J].西南民族大學學報(自然科學版),2015,41(4):462-467.
[9] 王洪,顧本斗.USB設(shè)備驅(qū)動程序的開發(fā)[J].計算機工程與設(shè)計,2002,23(3):17-22.
[10] 張帆,史彩成,毛二可.Windows驅(qū)動開發(fā)技術(shù)詳解[M].北京:電子工業(yè)出版社,2008.
[11] 司剛,付少鋒,周利華.WDM驅(qū)動程序中設(shè)備事件通知技術(shù)的研究[J].計算機技術(shù)與發(fā)展,2006,16(4):144-146.
[12] 熊聰聰,汪鵬.一種新型的USB存儲設(shè)備訪問控制[J].自動化儀表,2011,32(12):16-19.
[13] 微軟.Windows 2000驅(qū)動程序開發(fā)大全第1卷[M].北京:機械工業(yè)出版社.
[14] ONEY W.Programming the Microsoft Windows Driver Model[M].2nd Edition Ebook.Washington:Microsoft Press,2003.
責任編輯:時凌
AUniversalPeripheralManagementSystemBasedonWindows
GAO Fagui
(School of Information and Engineering,Hubei University for Nationalities,Enshi 445000,China)
This paper presents a peripheral device control scheme based on Windows device filter driver.A general management system for Windows external devices is established,that is,there is no need to develop a new system for new devices.The peripheral devices mainly refer to such physical devices as USB removable storage device,serial port,parallel port,Bluetooth and infrared device.The system has the functions of controlling the usage right of the devices and auditing the device using behavior and forming the log to be stored locally.The method has the advantages of close connection with the operating system and convenient installation of the monitoring module and can complete management and control of the peripheral devices of the terminal without being realized by the user.
device filter driver;Windows driver model;I/O request packet;access control;operation auditing
2016-12-05.
湖北省自然科學基金項目(2009CDB069).
高發(fā)桂(1964-),女,碩士,副教授,主要從事計算機網(wǎng)格安全的研究.
1008-8423(2017)04-0429-05
10.13501/j.cnki.42-1569/n.2017.12.017
TP309.7
A