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