一種基于過(guò)濾驅(qū)動(dòng)的安全審計(jì)系統(tǒng)的制作方法
【專利摘要】本發(fā)明提出一種基于過(guò)濾驅(qū)動(dòng)的安全審計(jì)系統(tǒng),包括:系統(tǒng)過(guò)濾驅(qū)動(dòng)模塊、客戶端采集模塊、客戶端處理模塊和客戶端發(fā)送模塊,其中系統(tǒng)過(guò)濾驅(qū)動(dòng)模塊包括NDIS(Network?Driver?Interface?Specification,網(wǎng)絡(luò)驅(qū)動(dòng)接口規(guī)范)驅(qū)動(dòng)模型的中間層過(guò)濾驅(qū)動(dòng)模塊和PNP(Plug-and-Play,即插即用)驅(qū)動(dòng)模型的USB設(shè)備過(guò)濾驅(qū)動(dòng)模塊。本發(fā)明提高了安全審計(jì)系統(tǒng)的安全性。
【專利說(shuō)明】一種基于過(guò)濾驅(qū)動(dòng)的安全審計(jì)系統(tǒng)
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及安全審計(jì)領(lǐng)域。具體來(lái)說(shuō)是一種基于過(guò)濾驅(qū)動(dòng)的分布式的安全審計(jì)系 統(tǒng)。
【背景技術(shù)】
[0002] 計(jì)算機(jī)技術(shù)的迅猛發(fā)展帶來(lái)的信息數(shù)字化大幅度提高工作效率促進(jìn)社會(huì)發(fā)展的 同時(shí),安全問(wèn)題也日益成為影響很多領(lǐng)域效能的重要問(wèn)題。數(shù)字信息的安全相比傳統(tǒng)數(shù)據(jù) 文件安全更受關(guān)注是由于數(shù)字信息本身具有易于復(fù)制的特性,利用這一特性,信息更易于 受到難以控制和追溯的盜取威脅。安全審計(jì)是對(duì)系統(tǒng)記錄和過(guò)程的檢查和審查,審計(jì)系統(tǒng) 可以通過(guò)記錄可疑數(shù)據(jù)、入侵信息、敏感信息等,對(duì)網(wǎng)絡(luò)進(jìn)行動(dòng)態(tài)實(shí)時(shí)監(jiān)控;通過(guò)尋找入侵 和違規(guī)行為,記錄網(wǎng)絡(luò)上發(fā)生的一切,作為取證和跟蹤使用。安全審計(jì)的常用方式是在正常 系統(tǒng)行為之前加裝安全審計(jì)過(guò)濾行為,只有通過(guò)了安全審計(jì)過(guò)濾行為中相應(yīng)安全規(guī)則的系 統(tǒng)行為才可以進(jìn)入正常的系統(tǒng)流程,在安全審計(jì)過(guò)濾行為中,會(huì)對(duì)所有系統(tǒng)行為進(jìn)行檔案 留存。
[0003] 現(xiàn)有安全審計(jì)系統(tǒng)存在審計(jì)內(nèi)容不全,審計(jì)粒度過(guò)粗,審計(jì)系統(tǒng)安全性不足等問(wèn) 題?,F(xiàn)有安全審計(jì)系統(tǒng)審計(jì)內(nèi)容不全,主要表現(xiàn)為,審計(jì)項(xiàng)目過(guò)于單一,不能涵蓋用戶從接 入涉密信息系統(tǒng)到離開(kāi)涉密信息系統(tǒng)的完整行為過(guò)程;現(xiàn)有安全審計(jì)系統(tǒng)審計(jì)粒度過(guò)粗, 主要表現(xiàn)為,審計(jì)內(nèi)容過(guò)于簡(jiǎn)單,不能涵蓋用戶的具體操作行為;現(xiàn)有安全審計(jì)系統(tǒng)審計(jì)安 全性不足,主要表現(xiàn)為,用戶層的安全審計(jì)軟件容易被繞過(guò),失去審計(jì)效能。
【發(fā)明內(nèi)容】
[0004] 本發(fā)明技術(shù)解決問(wèn)題:克服現(xiàn)有技術(shù)的審計(jì)內(nèi)容不全,審計(jì)粒度過(guò)粗,審計(jì)系統(tǒng)安 全性不足等問(wèn)題,提供一種基于過(guò)濾驅(qū)動(dòng)的安全審計(jì)系統(tǒng),解決了以上3類問(wèn)題,提高了安 全審計(jì)系統(tǒng)的安全性。
[0005] 本發(fā)明技術(shù)解決方案:一種基于過(guò)濾驅(qū)動(dòng)的安全審計(jì)系統(tǒng),包括:系統(tǒng)過(guò)濾驅(qū)動(dòng) 模塊、客戶端采集模塊、客戶端處理模塊和客戶端發(fā)送模塊,其中系統(tǒng)過(guò)濾驅(qū)動(dòng)模塊包括 NDIS(Network Driver Interface Specification,網(wǎng)絡(luò)驅(qū)動(dòng)接口規(guī)范)驅(qū)動(dòng)模型的中間層過(guò) 濾驅(qū)動(dòng)模塊和PNP (Plug-and-Play,即插即用)驅(qū)動(dòng)模型的USB設(shè)備過(guò)濾驅(qū)動(dòng)模塊;
[0006] NDIS驅(qū)動(dòng)模型的中間層過(guò)濾驅(qū)動(dòng)模塊,創(chuàng)建NDIS協(xié)議驅(qū)動(dòng)設(shè)備,將此設(shè)備綁定所 有NDIS小端口驅(qū)動(dòng),以獲取網(wǎng)卡設(shè)備接收的網(wǎng)絡(luò)數(shù)據(jù);創(chuàng)建NDIS小端口驅(qū)動(dòng)設(shè)備,將此設(shè) 備綁定所有NDIS協(xié)議驅(qū)動(dòng),以獲取NDIS協(xié)議驅(qū)動(dòng)發(fā)送的網(wǎng)絡(luò)數(shù)據(jù);設(shè)置分發(fā)函數(shù),將獲取 的網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行Kerberos協(xié)議和CIFS協(xié)議關(guān)鍵字匹配,將以上兩種協(xié)議的敏感網(wǎng)絡(luò)數(shù)據(jù) 通過(guò)共享內(nèi)存?zhèn)鬏斀o客戶端采集模塊;
[0007] PNP驅(qū)動(dòng)模型的USB設(shè)備過(guò)濾驅(qū)動(dòng)模塊,通過(guò)綁定PCI總線設(shè)備驅(qū)動(dòng),設(shè)置USB設(shè) 備添加設(shè)備分發(fā)函數(shù),USB設(shè)備插入時(shí),通過(guò)構(gòu)造IRP (I/O Request Package,輸入輸出請(qǐng)求 包)獲取USB設(shè)備類型和型號(hào)信息,將捕獲的USB設(shè)備數(shù)據(jù)通過(guò)共享內(nèi)存?zhèn)鬏斀o客戶端采 集模塊;
[0008] 客戶端采集模塊:初始化兩個(gè)采集線程和信息緩存隊(duì)列,兩個(gè)采集線程和信息緩 存隊(duì)列分別對(duì)應(yīng)接收緩存NDIS驅(qū)動(dòng)模型的中間層過(guò)濾驅(qū)動(dòng)模塊和PNP驅(qū)動(dòng)模型的USB過(guò) 濾驅(qū)動(dòng)模塊的數(shù)據(jù);在每個(gè)采集線程中,各自初始化共享內(nèi)存,將共享內(nèi)存?zhèn)鬟f給對(duì)應(yīng)的過(guò) 濾驅(qū)動(dòng),作為客戶數(shù)據(jù)緩存區(qū),各自初始化共享事件,作為跟對(duì)應(yīng)的過(guò)濾驅(qū)動(dòng)進(jìn)行事件通信 的標(biāo)志;當(dāng)系統(tǒng)過(guò)濾驅(qū)動(dòng)模塊捕獲客戶數(shù)據(jù)時(shí),將數(shù)據(jù)緩存至共享內(nèi)存,并觸發(fā)對(duì)應(yīng)的共享 事件,采集線程讀取客戶數(shù)據(jù),采集線程首先讀取對(duì)應(yīng)的共享內(nèi)存數(shù)據(jù),將數(shù)據(jù)緩存至對(duì)應(yīng) 的信息緩存隊(duì)列,將對(duì)應(yīng)的共享事件置位,將對(duì)應(yīng)的共享內(nèi)存清空,繼續(xù)等待共享事件被觸 發(fā);當(dāng)信息緩存隊(duì)列中存在數(shù)據(jù)時(shí),客戶端采集模塊會(huì)創(chuàng)建處理線程,調(diào)用對(duì)應(yīng)的客戶端處 理模塊處理接口,對(duì)客戶信息緩存隊(duì)列中的數(shù)據(jù)進(jìn)行處理;
[0009] 客戶端處理模塊:首先初始化緩存客戶端基本信息,客戶端基本信息包括客戶 登錄用戶名、客戶登錄主機(jī)名、作為審計(jì)日志基本信息;然后接收客戶端采集模塊采集的 CIFS協(xié)議、Kerberos協(xié)議和USB設(shè)備數(shù)據(jù),進(jìn)行CIFS協(xié)議文件操作數(shù)據(jù)處理或者進(jìn)行 Kerberos協(xié)議登錄數(shù)據(jù)處理或者進(jìn)行USB設(shè)備數(shù)據(jù)處理;所述CIFS協(xié)議文件操作數(shù)據(jù)處 理初始化FID緩存隊(duì)列,通過(guò)解析CIFS協(xié)議網(wǎng)絡(luò)數(shù)據(jù)包中的操作命令字段,采取相應(yīng)的操 作命令處理流程,將CIFS協(xié)議網(wǎng)絡(luò)數(shù)據(jù)包中的操作信息和審計(jì)基本信息,生成相應(yīng)的審計(jì) 日志,調(diào)用客戶端發(fā)送模塊發(fā)送審計(jì)日志;所述進(jìn)行Kerberos協(xié)議登錄數(shù)據(jù)處理,首先初 始化登錄用戶名緩存隊(duì)列,通過(guò)解析獲取Kerberos協(xié)議請(qǐng)求包中的客戶端登錄用戶名和 Kerberos協(xié)議返回包中的登錄結(jié)果,將以上信息緩存到登錄用戶名緩存隊(duì)列,當(dāng)前登錄用 戶名出錯(cuò)次數(shù)如果是5的倍數(shù),將登錄用戶名和審計(jì)日志基本信息組成審計(jì)日志,調(diào)用客 戶端發(fā)送模塊發(fā)送審計(jì)日志;所述進(jìn)行USB設(shè)備數(shù)據(jù)處理,解析數(shù)據(jù)獲取其中的USB設(shè)備型 號(hào)信息和設(shè)備ID信息,將USB設(shè)備型號(hào)信息、設(shè)備ID信息和審計(jì)日志基本信息組成審計(jì)日 志,調(diào)用客戶端發(fā)送模塊發(fā)送審計(jì)日志;
[0010] 客戶端發(fā)送模塊:初始化日志緩存隊(duì)列和網(wǎng)絡(luò)套接字連接,將客戶端處理模塊中 的審計(jì)日志放入日志緩存隊(duì)列中,通過(guò)網(wǎng)絡(luò)套接字將日志發(fā)送到日志服務(wù)器。
[0011] 所述NDIS驅(qū)動(dòng)模型的中間層過(guò)濾驅(qū)動(dòng)模塊設(shè)置分發(fā)函數(shù)實(shí)現(xiàn)過(guò)程如下:
[0012] a.通過(guò)設(shè)置驅(qū)動(dòng)分發(fā)函數(shù),將本驅(qū)動(dòng)捕獲的網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行處理,根據(jù)網(wǎng)絡(luò)數(shù)據(jù) 包中的網(wǎng)絡(luò)協(xié)議類型TCP協(xié)議或者UDP協(xié)議分別執(zhí)行b和C ;
[0013] b.針對(duì)TCP協(xié)議數(shù)據(jù)包,過(guò)濾其中的kerberos協(xié)議網(wǎng)絡(luò)數(shù)據(jù)包,將其放入共享內(nèi) 存,并通知客戶端采集模塊讀取共享內(nèi)存數(shù)據(jù);
[0014] c.針對(duì)UDP協(xié)議數(shù)據(jù)包,過(guò)濾其中的CIFS協(xié)議網(wǎng)絡(luò)數(shù)據(jù)包,將其放入共享內(nèi)存,并 通知客戶端采集模塊讀取共享內(nèi)存數(shù)據(jù).
[0015] 所述PNP驅(qū)動(dòng)模型的USB設(shè)備過(guò)濾驅(qū)動(dòng)設(shè)置分發(fā)函數(shù)實(shí)現(xiàn)過(guò)程如下:
[0016] a.設(shè)置USB設(shè)備過(guò)濾驅(qū)動(dòng)分發(fā)函數(shù),設(shè)置針對(duì)IRP_MJ_PNP類型IRP包的分發(fā)函 數(shù),當(dāng)IRP_MJ_PNP類型IRP包到達(dá)本驅(qū)動(dòng),本驅(qū)動(dòng)會(huì)調(diào)用相應(yīng)的分發(fā)函數(shù)對(duì)此IRP包進(jìn)行 處理;
[0017] b.在分發(fā)函數(shù)中,解析IRP_MJ_PNP類型IRP包,判斷是否為新USB設(shè)備插入;
[0018] c.新USB設(shè)備插入時(shí),構(gòu)造查詢IRP包,將查詢IRP包發(fā)送到新USB設(shè)備,在返回 數(shù)據(jù)中,獲取新USB設(shè)備的設(shè)備類型和型號(hào)信息;
[0019] d.將USB設(shè)備的設(shè)備類型和型號(hào)信息放入共享內(nèi)存,并通知客戶端采集模塊讀取 共享內(nèi)存數(shù)據(jù)。
[0020] 所述客戶端處理模塊流程數(shù)據(jù)處理實(shí)現(xiàn)過(guò)程如下:
[0021] (l)CIFS協(xié)議文件操作數(shù)據(jù)處理,針對(duì)CIFS協(xié)議網(wǎng)絡(luò)數(shù)據(jù)包,首先獲取網(wǎng)絡(luò)數(shù)據(jù) 包包頭數(shù)據(jù),解析包頭數(shù)據(jù)中的CIFS協(xié)議命令字段,根據(jù)CIFS協(xié)議命令字段采取相應(yīng)處理 流程。
[0022] a.針對(duì)CIFS協(xié)議NT_CREATE命令數(shù)據(jù)包,進(jìn)行CIFS協(xié)議打開(kāi)文件命令處理流程, 獲取FID與文件目錄關(guān)聯(lián)數(shù)據(jù),并緩存到FID緩存隊(duì)列。將NT_CREATE命令數(shù)據(jù)包中的文 件打開(kāi)信息(文件路徑)和審計(jì)日志基本信息,生成客戶打開(kāi)文件的審計(jì)日志,調(diào)用客戶端 發(fā)送模塊發(fā)送審計(jì)日志。
[0023] b.針對(duì)CIFS協(xié)議READ/WRITE命令數(shù)據(jù)包,進(jìn)行CIFS協(xié)議讀/寫命令處理流程,獲 取當(dāng)前數(shù)據(jù)包FID字段,通過(guò)FID緩存隊(duì)列查找當(dāng)前FID所關(guān)聯(lián)文件目錄。將READ/WRITE 命令數(shù)據(jù)包中的文件讀寫信息和審計(jì)日志基本信息,生成客戶讀取/修改文件的審計(jì)日 志,調(diào)用客戶端發(fā)送模塊發(fā)送審計(jì)日志。
[0024] c.針對(duì)CIFS協(xié)議CLOSE命令數(shù)據(jù)包,進(jìn)行CIFS協(xié)議關(guān)閉文件命令處理流程,獲取 當(dāng)前數(shù)據(jù)包FID字段,通過(guò)FID緩存隊(duì)列查找當(dāng)前FID所關(guān)聯(lián)文件目錄。將CLOSE命令數(shù) 據(jù)包中的文件關(guān)閉信息和審計(jì)日志基本信息,生成客戶關(guān)閉文件的審計(jì)日志,調(diào)用客戶端 發(fā)送模塊發(fā)送審計(jì)日志。
[0025] d.針對(duì)CIFS協(xié)議NEGOTIATE命令數(shù)據(jù)包,進(jìn)行CIFS協(xié)議協(xié)商命令處理流程,獲取 當(dāng)前數(shù)據(jù)包CIFS協(xié)議協(xié)商數(shù)據(jù),判斷當(dāng)前用戶是否已經(jīng)連接服務(wù)器,將NEGOTIATE命令數(shù) 據(jù)包中的協(xié)議協(xié)商信息和審計(jì)日志基本信息,生成客戶連接服務(wù)器的審計(jì)日志,調(diào)用客戶 端發(fā)送模塊發(fā)送審計(jì)日志。
[0026] e.針對(duì)CIFS協(xié)議DELETE命令數(shù)據(jù)包,進(jìn)行CIFS協(xié)議刪除文件/目錄命令處理流 程,獲取當(dāng)前數(shù)據(jù)包FID字段,通過(guò)FID緩存隊(duì)列查找當(dāng)前FID做關(guān)聯(lián)文件目錄。將DELETE 命令數(shù)據(jù)包中的刪除文件/目錄信息和審計(jì)日志基本信息,生成客戶刪除文件的審計(jì)日 志,調(diào)用客戶端發(fā)送模塊發(fā)送審計(jì)日志。
[0027] f.針對(duì)CIFS協(xié)議RENAME命令數(shù)據(jù)包,進(jìn)行CIFS協(xié)議重命名文件命令處理流程, 獲取當(dāng)前數(shù)據(jù)包源文件名字段和新文件名字段,將RENAME命令數(shù)據(jù)包中的重命名文件信 息和審計(jì)日志基本信息,生成客戶重命名文件的審計(jì)日志,調(diào)用客戶端發(fā)送模塊發(fā)送審計(jì) 日志。
[0028] (2)Kerberos協(xié)議登錄數(shù)據(jù)處理,針對(duì)Kerberos協(xié)議網(wǎng)絡(luò)數(shù)據(jù)包,首先獲取網(wǎng)絡(luò) 數(shù)據(jù)包的請(qǐng)求應(yīng)答數(shù)據(jù)字段和錯(cuò)誤碼數(shù)據(jù)字段,針對(duì)以上字段分別調(diào)用Kerberos協(xié)議請(qǐng) 求處理流程和Kerberos協(xié)議錯(cuò)誤回復(fù)處理流程,根據(jù)請(qǐng)求應(yīng)答字段獲取請(qǐng)求用戶名,根據(jù) 錯(cuò)誤回復(fù)數(shù)據(jù)字段獲取用戶輸入錯(cuò)誤密碼次數(shù),當(dāng)同一用戶名輸入錯(cuò)誤密碼次數(shù)累計(jì)為五 的倍數(shù),生成審計(jì)日志。
[0029] 本發(fā)明與現(xiàn)有技術(shù)相比的優(yōu)點(diǎn)在于:本發(fā)明基于過(guò)濾驅(qū)動(dòng)的分布式安全審計(jì)系統(tǒng) 可以支持局域網(wǎng)環(huán)境下的大規(guī)模,多用戶的審計(jì)需求,分布在網(wǎng)絡(luò)分散節(jié)點(diǎn)上的審計(jì)客戶 端驅(qū)動(dòng)可以收集被審計(jì)客戶端的所有異常系統(tǒng)行為,并將審計(jì)信息發(fā)送到審計(jì)服務(wù)器上進(jìn) 行統(tǒng)一的分析和處理,過(guò)濾驅(qū)動(dòng)對(duì)被審計(jì)客戶端的系統(tǒng)行為不會(huì)進(jìn)行任何干擾,被審計(jì)客 戶端的運(yùn)行效率不會(huì)受到任何影響。該系統(tǒng)部署方便,可擴(kuò)展性強(qiáng),過(guò)濾驅(qū)動(dòng)可以隨系統(tǒng)鏡 像一同安裝到涉密計(jì)算機(jī)終端,在驅(qū)動(dòng)層面上對(duì)系統(tǒng)行為進(jìn)行審查,有效地提高了安全審 計(jì)系統(tǒng)的可靠性和可信性。
【專利附圖】
【附圖說(shuō)明】
[0030] 圖1為本發(fā)明系統(tǒng)組成框圖;
[0031] 圖2為本發(fā)明的基于NDIS模型的網(wǎng)絡(luò)過(guò)濾驅(qū)動(dòng)模塊實(shí)現(xiàn)流程圖;
[0032] 圖3為本發(fā)明的基于WDM模型的USB過(guò)濾驅(qū)動(dòng)模塊實(shí)現(xiàn)流程圖;
[0033] 圖4為本發(fā)明的客戶端采集模塊實(shí)現(xiàn)流程圖;
[0034] 圖5為本發(fā)明的客戶端處理模塊CIFS部分實(shí)現(xiàn)流程圖;
[0035] 圖6為本發(fā)明中客戶端處理模塊Kerberos部分流程圖;
[0036] 圖7為本發(fā)明中客戶端處理模塊USB部分實(shí)現(xiàn)流程圖。
【具體實(shí)施方式】
[0037] 基于過(guò)濾驅(qū)動(dòng)的安全審計(jì)系統(tǒng),涉及一系列計(jì)算機(jī)專業(yè)術(shù)語(yǔ),以下進(jìn)行相關(guān)知識(shí) 介紹:
[0038] NDIS驅(qū)動(dòng)模型中間層過(guò)濾驅(qū)動(dòng)簡(jiǎn)介,Windows的網(wǎng)絡(luò)結(jié)構(gòu)是以ISO的7層網(wǎng)絡(luò)模 型為基礎(chǔ)的,它的網(wǎng)絡(luò)驅(qū)動(dòng)部分實(shí)現(xiàn)了傳輸層、網(wǎng)絡(luò)層、鏈路層,由此形成了 NDIS(Wind〇ws 網(wǎng)絡(luò)驅(qū)動(dòng)程序接口規(guī)范)驅(qū)動(dòng)模型。NDIS支持以下幾種網(wǎng)絡(luò)驅(qū)動(dòng)程序:微端口(網(wǎng)絡(luò)接口 卡)、中間層驅(qū)動(dòng)程序、傳輸協(xié)議驅(qū)動(dòng)程序。中間層驅(qū)動(dòng)程序位于微端口驅(qū)動(dòng)程序和傳輸協(xié) 議驅(qū)動(dòng)程序中間。既與上層協(xié)議驅(qū)動(dòng)又與下層微端口驅(qū)動(dòng)通信。在下邊界,中間層驅(qū)動(dòng)層 程序提供了協(xié)議入口點(diǎn)函數(shù),NDIS調(diào)用這些函數(shù)傳遞底層微端口請(qǐng)求。對(duì)于下層微端口驅(qū) 動(dòng)程序,中間層驅(qū)動(dòng)程序就像一個(gè)傳輸協(xié)議驅(qū)動(dòng)程序,在上邊界,中間層驅(qū)動(dòng)程序提供了微 端口入口點(diǎn),NDIS調(diào)用這些函數(shù),傳遞一個(gè)或多個(gè)上層協(xié)議的請(qǐng)求。對(duì)于上層協(xié)議驅(qū)動(dòng)程 序,中間層驅(qū)動(dòng)程序就像一個(gè)微端口驅(qū)動(dòng)程序。
[0039] USB過(guò)濾驅(qū)動(dòng)簡(jiǎn)介,USB過(guò)濾驅(qū)動(dòng)是一種基于WDM (Windows Driver Model,微軟驅(qū) 動(dòng)模型)分層驅(qū)動(dòng)模型的過(guò)濾驅(qū)動(dòng),在WDM模型中,每個(gè)硬件設(shè)備至少有兩個(gè)驅(qū)動(dòng)程序:功 能驅(qū)動(dòng)程序和總線驅(qū)動(dòng)程序。一個(gè)設(shè)備還可能有用來(lái)變更標(biāo)準(zhǔn)設(shè)備驅(qū)動(dòng)行為的過(guò)濾驅(qū)動(dòng)程 序,例如,USB過(guò)濾驅(qū)動(dòng)。這些服務(wù)于同一個(gè)設(shè)備的驅(qū)動(dòng)程序組成了一個(gè)鏈表,成為設(shè)備棧。 當(dāng)一個(gè)用戶需要改變或新添一些功能到一個(gè)設(shè)備、一類設(shè)備或一種總線時(shí),就可以編寫一 個(gè)過(guò)濾驅(qū)動(dòng)程序。在設(shè)備棧里,過(guò)濾驅(qū)動(dòng)程序安裝在一個(gè)或幾個(gè)設(shè)備驅(qū)動(dòng)程序的上面或下 面。過(guò)濾驅(qū)動(dòng)程序攔截對(duì)具體設(shè)備、類設(shè)備、總線的請(qǐng)求,并做相應(yīng)的處理,以改變?cè)O(shè)備的行 為或添加新的功能,USB過(guò)濾驅(qū)動(dòng)只處理那些它所關(guān)心的1/0請(qǐng)求,對(duì)于其他請(qǐng)求可以交給 其他的驅(qū)動(dòng)程序來(lái)處理。
[0040] IRP簡(jiǎn)介,IRP為1/0 request packets的簡(jiǎn)稱,即輸入輸出請(qǐng)求包,它是Windows 內(nèi)核中的一種非常重要的數(shù)據(jù)結(jié)構(gòu)。上層應(yīng)用程序與底層驅(qū)動(dòng)通信時(shí),應(yīng)用程序會(huì)發(fā)送1/0 請(qǐng)求,操作系統(tǒng)將相應(yīng)的1/0請(qǐng)求轉(zhuǎn)換成相應(yīng)的IRP,不同的IRP會(huì)根據(jù)類型被分派到不同 的派遣例程中進(jìn)行處理。IRP有兩個(gè)基本的屬性,即MajorFunction和MinorFunction,分 別記錄IRP的主類型和子類型,操作系統(tǒng)根據(jù)MajorFunction決定將IRP分發(fā)到哪個(gè)派遣 例程,然后派遣例程根據(jù)MinorFunction進(jìn)行細(xì)分處理。上文中提到的IRP_MJ_PNP是IRP 主功能號(hào)MajorFunction的一種。
[0041] CIFS協(xié)議簡(jiǎn)介,即通用Internet文件系統(tǒng),也稱為服務(wù)器消息塊(SMB),是一種 網(wǎng)絡(luò)協(xié)議,其最常見(jiàn)的用途是共享局域網(wǎng)(LAN)的文件。該協(xié)議允許客戶端對(duì)文件進(jìn)行操 作,支持操作包括:讀、寫、創(chuàng)建、刪除、重命名等,唯一的區(qū)別是,該文件不存在于本地計(jì)算 機(jī)上,而是位于遠(yuǎn)程服務(wù)器上。CIFS協(xié)議的每個(gè)數(shù)據(jù)包的開(kāi)頭包含一個(gè)命令字段,本安全 系統(tǒng)關(guān)心的命令字段包括:SMB_COM_NT_CREATE_ANDX(文件打開(kāi)命令字段,針對(duì)此命令采 取NT_CREATE命令處理流程)、SMB_COM_NT_RENAME (文件重命名命令字段,針對(duì)此命令采取 RENAME命令處理流程)、SMB_COM_READ_ANDX (文件讀取命令字段,針對(duì)此命令采取READ命 令處理流程)、SMB_COM_WRITE_ANDX (文件修改命令字段,針對(duì)此命令采取WRITE命令處理 流程)、SMB_C0M_CL0SE (文件關(guān)閉命令字段,針對(duì)此命令采取CLOSE命令處理流程)、SMB_ C0M_NEG0TIATE (連接服務(wù)器,協(xié)議協(xié)商命令字段,針對(duì)此命令采取NEGOTIATE命令處理流 程)、SMB_C0M_TRANSACTI0N_SEC0NDY (文件刪除命令字段,針對(duì)此命令采取DELETE命令處 理流程)。
[0042] Kerberos協(xié)議簡(jiǎn)介,Kerberos協(xié)議是一種網(wǎng)絡(luò)認(rèn)證協(xié)議,其設(shè)計(jì)目標(biāo)是通過(guò)迷藥 系統(tǒng)為客戶機(jī)/服務(wù)器應(yīng)用程序提供強(qiáng)大的認(rèn)證服務(wù)。該認(rèn)證過(guò)程的實(shí)現(xiàn)不依賴于主機(jī) 操作系統(tǒng)的認(rèn)證,無(wú)需基于主機(jī)地址的信任,不要求網(wǎng)絡(luò)中所有主機(jī)的物理安全,并假定網(wǎng) 絡(luò)上傳輸?shù)臄?shù)據(jù)包可以被任意地讀取、修改和插入數(shù)據(jù)。在以上情況下,Kerberos作為一 種可信任的第三方認(rèn)證服務(wù),是通過(guò)傳統(tǒng)的密碼技術(shù)執(zhí)行認(rèn)證服務(wù)的。安全審計(jì)系統(tǒng)通過(guò) Kerberos協(xié)議RequestBody (請(qǐng)求數(shù)據(jù)包)中UserName (用戶名)字段獲取當(dāng)前請(qǐng)求用戶 用戶名和用戶登錄次數(shù)。
[0043] 如圖1所示,本發(fā)明一種基于過(guò)濾驅(qū)動(dòng)的安全審計(jì)系統(tǒng),包括:系統(tǒng)過(guò)濾驅(qū)動(dòng)模 塊、客戶端采集模塊、客戶端處理模塊和客戶端發(fā)送模塊,其中系統(tǒng)過(guò)濾驅(qū)動(dòng)模塊包括NDIS 驅(qū)動(dòng)模型的中間層過(guò)濾驅(qū)動(dòng)模塊和PNP (Plug-and-Play,即插即用)驅(qū)動(dòng)模型的USB設(shè)備過(guò) 濾驅(qū)動(dòng)模塊。
[0044] 如圖2所示,基于NDIS模型的網(wǎng)絡(luò)過(guò)濾驅(qū)動(dòng)模塊的實(shí)現(xiàn)流程如下:
[0045] (1)構(gòu)造上下層驅(qū)動(dòng)接口,注冊(cè)接口回調(diào)函數(shù),NDIS過(guò)濾驅(qū)動(dòng)需要符合NDIS的 分層標(biāo)準(zhǔn),網(wǎng)絡(luò)數(shù)據(jù)包在NDIS框架中由下至上分別經(jīng)過(guò)了小端口驅(qū)動(dòng)層,協(xié)議驅(qū)動(dòng)層, TDI (Transport Driver Interface,傳輸層驅(qū)動(dòng)程序接口)傳輸層及用戶接口層。本發(fā)明的 過(guò)濾驅(qū)動(dòng)附著在NDIS框架的底層,S卩小端口驅(qū)動(dòng)層和協(xié)議驅(qū)動(dòng)層之間,對(duì)下需要注冊(cè)協(xié)議 驅(qū)動(dòng)接口,來(lái)契合小端口驅(qū)動(dòng),進(jìn)而捕獲所有小端口上傳的數(shù)據(jù)包;對(duì)上需要注冊(cè)小端口驅(qū) 動(dòng)接口,來(lái)契合協(xié)議驅(qū)動(dòng),進(jìn)而捕獲所有協(xié)議驅(qū)動(dòng)下發(fā)的數(shù)據(jù)包;
[0046] (2)生成驅(qū)動(dòng)控制設(shè)備,過(guò)濾驅(qū)動(dòng)需要與用戶層的應(yīng)用程序進(jìn)行通信,確定過(guò)濾 策略并隨時(shí)通知過(guò)濾狀態(tài),應(yīng)用程序與驅(qū)動(dòng)程序之間是通過(guò)控制設(shè)備進(jìn)行通信的,生成的 控制設(shè)備向應(yīng)用程序提供一個(gè)符號(hào)鏈接名,應(yīng)用程序通過(guò)該名字打開(kāi)設(shè)備并向設(shè)備傳遞參 數(shù),從而完成通信功能;
[0047] (3)綁定上下層接口,完成初始化工作,過(guò)濾驅(qū)動(dòng)的上邊界(小端口驅(qū)動(dòng)接口)和 下邊界(協(xié)議驅(qū)動(dòng)接口)需要分別與系統(tǒng)提供的協(xié)議驅(qū)動(dòng)和小端口驅(qū)動(dòng)進(jìn)行綁定,從而可 以加入系統(tǒng)的NDIS體系,綁定工作是由NDIS框架在加載驅(qū)動(dòng)的過(guò)程中進(jìn)行的,過(guò)濾驅(qū)動(dòng)在 綁定過(guò)程中需要從框架參數(shù)中獲取被綁定設(shè)備的基本信息,并為自身需要的定制化參數(shù)分 配系統(tǒng)空間;
[0048] (4)捕獲從小端口上傳和從協(xié)議下發(fā)的所有數(shù)據(jù)包,當(dāng)有網(wǎng)絡(luò)數(shù)據(jù)包從系統(tǒng)的小 端口驅(qū)動(dòng)層上傳時(shí),過(guò)濾驅(qū)動(dòng)的協(xié)議接口會(huì)被NDIS框架調(diào)用,將數(shù)據(jù)包以參數(shù)的形式傳入 協(xié)議接口的接收回調(diào)函數(shù),當(dāng)有網(wǎng)絡(luò)數(shù)據(jù)包從系統(tǒng)的協(xié)議驅(qū)動(dòng)下發(fā)時(shí),過(guò)濾驅(qū)動(dòng)的小端口 接口會(huì)被NDIS框架調(diào)用,同樣,也會(huì)將數(shù)據(jù)包以參數(shù)的形式傳入小端口接口的接收回調(diào), 從而實(shí)現(xiàn)兩個(gè)方向上的數(shù)據(jù)包的捕獲。在這一過(guò)程中,系統(tǒng)的正常數(shù)據(jù)傳遞流程依然會(huì)進(jìn) 行,唯一不同的是將數(shù)據(jù)包多分發(fā)了一次給過(guò)濾驅(qū)動(dòng),所以不會(huì)的系統(tǒng)原有流程造成任何 影響,保證了系統(tǒng)的穩(wěn)定性;
[0049] (5)運(yùn)行過(guò)濾策略,通過(guò)對(duì)數(shù)據(jù)包進(jìn)行協(xié)議分析,確定數(shù)據(jù)包使用的網(wǎng)絡(luò)協(xié)議,源 地址,目的地址,端口號(hào)和包數(shù)據(jù),并根據(jù)過(guò)濾策略有選擇性地將符合條件的數(shù)據(jù)包保存至 緩存隊(duì)列,并生成事件通知用戶層應(yīng)用程序有符合條件的審計(jì)數(shù)據(jù)包到達(dá),對(duì)于不符合過(guò) 濾策略的數(shù)據(jù)包,則直接丟棄;
[0050] (6)數(shù)據(jù)包入隊(duì)并通知用戶層程序,驅(qū)動(dòng)層不對(duì)數(shù)據(jù)包內(nèi)容進(jìn)行審計(jì),內(nèi)容審計(jì)是 一個(gè)較為耗時(shí)的操作,因此會(huì)放在用戶層應(yīng)用程序進(jìn)行。驅(qū)動(dòng)和應(yīng)用程序之間共享一個(gè)事 件變量,應(yīng)用程序等待該共享事件,驅(qū)動(dòng)程序每收到一個(gè)數(shù)據(jù)包,就將數(shù)據(jù)包緩存至一個(gè)內(nèi) 核隊(duì)列,然后觸發(fā)事件來(lái)完成對(duì)應(yīng)用程序的通知,應(yīng)用程序收到事件后立刻去隊(duì)列中讀取 當(dāng)前隊(duì)列中所有的數(shù)據(jù)包,并依次對(duì)數(shù)據(jù)包內(nèi)容進(jìn)行分析和審計(jì),形成審計(jì)日志,發(fā)往審計(jì) 日志服務(wù)器,內(nèi)核隊(duì)列保存在非分頁(yè)內(nèi)存中,因此長(zhǎng)度不能太長(zhǎng),需要驅(qū)動(dòng)程序和應(yīng)用程序 密切配合,完成數(shù)據(jù)通信的功能。
[0051] 如圖3所示,基于WDM模型的USB過(guò)濾驅(qū)動(dòng)模塊的實(shí)現(xiàn)流程如下:
[0052] (1)生成過(guò)濾設(shè)備,過(guò)濾設(shè)備是基于WDM模型的USB過(guò)濾驅(qū)動(dòng)的基本組成部分,過(guò) 濾設(shè)備在初始化的時(shí)候由驅(qū)動(dòng)程序生成,主要作用是接收上下層設(shè)備傳遞的IRP請(qǐng)求,并 提供給應(yīng)用程序一個(gè)設(shè)備鏈接名,可以通過(guò)過(guò)濾設(shè)備與應(yīng)用程序通信,WDM框架在加載過(guò)濾 驅(qū)動(dòng)的過(guò)程中生成過(guò)濾設(shè)備;
[0053] (2)注冊(cè)PNP (Plug-and-Play,即插即用)回調(diào)函數(shù),USB過(guò)濾驅(qū)動(dòng)的主要目的是檢 測(cè)USB設(shè)備在目標(biāo)主機(jī)上的插拔操作,從而記錄插拔的時(shí)間和USB設(shè)備序列號(hào),形成審計(jì)記 錄,插拔操作可以在PNP回調(diào)函數(shù)中檢測(cè)到,這一操作需要向WDM框架注冊(cè)PNP回調(diào)函數(shù), 當(dāng)總線驅(qū)動(dòng)程序檢測(cè)到新的PNP設(shè)備被接入目標(biāo)主機(jī)時(shí),會(huì)調(diào)用PNP回調(diào)函數(shù),具體的過(guò)濾 策略在該函數(shù)中進(jìn)行處理;
[0054] (3)將過(guò)濾設(shè)備附加到USB設(shè)備棧底,基于WDM模型的驅(qū)動(dòng)采用設(shè)備棧的形式進(jìn)行 消息的傳遞,每一種類型的驅(qū)動(dòng)都會(huì)對(duì)應(yīng)一個(gè)設(shè)備棧,本發(fā)明中創(chuàng)建的USB過(guò)濾設(shè)備則附 加在設(shè)備棧的底端,攔截從驅(qū)動(dòng)發(fā)往設(shè)備的所有IRP請(qǐng)求,處理之后再向上層設(shè)備傳遞,因 此不會(huì)對(duì)系統(tǒng)的正常流程造成任何影響,被附著的物理設(shè)備對(duì)象在WDM框架生成過(guò)濾設(shè)備 時(shí)通過(guò)參數(shù)傳入;
[0055] (4)捕獲并記錄插拔事件,完成設(shè)備的創(chuàng)建和綁定流程后,就可以開(kāi)始監(jiān)聽(tīng)USB 設(shè)備插拔事件了,當(dāng)PNP回調(diào)函數(shù)被調(diào)用時(shí),表示一次PNP事件的發(fā)生??梢酝ㄟ^(guò)事件的 MinorFunction字段判斷事件類型。
[0056] (5)如果此PNP事件為USB設(shè)備插入事件,則通過(guò)構(gòu)造兩個(gè)IRP分別設(shè) 置 IRP 的 ioStackLocation->Parameters. Queryld.IdType 為 BusQueryDevicelD 和 BusQuerylnstancelD,獲取USB設(shè)備編號(hào),記錄本次事件并通知應(yīng)用程序讀取數(shù)據(jù)。
[0057] 如圖4所示,所述的客戶端采集模塊流程實(shí)現(xiàn)過(guò)程如下:
[0058] (1)用戶信息隊(duì)列管理,包括初始化消息隊(duì)列,創(chuàng)建隊(duì)列插入節(jié)點(diǎn)函數(shù),創(chuàng)建隊(duì)列 刪除節(jié)點(diǎn)函數(shù),創(chuàng)建隊(duì)列讀取節(jié)點(diǎn)函數(shù);
[0059] a.創(chuàng)建隊(duì)列初始化函數(shù),初始化消息隊(duì)列,初始化互斥區(qū)域指針,初始化隊(duì)列頭, 初始化隊(duì)列長(zhǎng)度;
[0060] b.創(chuàng)建隊(duì)列插入節(jié)點(diǎn)函數(shù),驗(yàn)證隊(duì)列參數(shù),拷貝接口參數(shù)中的數(shù)據(jù)到新隊(duì)列節(jié)點(diǎn), 進(jìn)入互斥區(qū)域,將新隊(duì)列節(jié)點(diǎn)插入隊(duì)列,更改隊(duì)列長(zhǎng)度,判斷隊(duì)列長(zhǎng)度是否超出閾值,如果 超出則執(zhí)行流程C,離開(kāi)互斥區(qū)域;
[0061] c.創(chuàng)建隊(duì)列刪除節(jié)點(diǎn)函數(shù),緩存隊(duì)列指針,更改隊(duì)列指針,釋放刪除節(jié)點(diǎn)內(nèi)存,變 更隊(duì)列長(zhǎng)度;
[0062] d.創(chuàng)建隊(duì)列讀取節(jié)點(diǎn)函數(shù),驗(yàn)證隊(duì)列參數(shù),進(jìn)入互斥區(qū)域,判斷隊(duì)列長(zhǎng)度,讀取隊(duì) 列節(jié)點(diǎn)信息,調(diào)用流程c,退出互斥區(qū)域。
[0063] (2)用戶信息讀取,包括初始化用戶信息讀取線程,初始化用戶信息數(shù)據(jù)到達(dá)事 件,開(kāi)啟用戶信息讀取線程,在讀取線程中當(dāng)檢測(cè)到內(nèi)核態(tài)用戶數(shù)據(jù)到達(dá)則調(diào)用用戶信息 分類處理函數(shù)進(jìn)行處理;
[0064] a.初始化用戶信息讀取線程,初始化用戶信息數(shù)據(jù)到達(dá)事件,創(chuàng)建事件到達(dá)訪問(wèn) 控制句柄,創(chuàng)建數(shù)據(jù)讀取線程,設(shè)置線程處理函數(shù);
[0065] b.開(kāi)啟用戶信息讀取線程,創(chuàng)建用戶信息數(shù)據(jù)緩存,開(kāi)啟讀取循環(huán),在循環(huán)中訪問(wèn) 事件到達(dá)訪問(wèn)控制句柄,當(dāng)數(shù)據(jù)達(dá)到事件被觸發(fā)時(shí),調(diào)用隊(duì)列訪問(wèn)控制函數(shù)中的讀取隊(duì)列 節(jié)點(diǎn)函數(shù),獲取用戶數(shù)據(jù),調(diào)用用戶信息分類函數(shù),通過(guò)判斷返回值調(diào)用相應(yīng)的處理函數(shù)對(duì) 數(shù)據(jù)進(jìn)行處理;
[0066] (3)用戶信息分類,判斷用戶數(shù)據(jù)為CIFS協(xié)議數(shù)據(jù)、Kerberos協(xié)議數(shù)據(jù)或者USB 設(shè)備數(shù)據(jù),分別調(diào)用其相應(yīng)處理函數(shù);
[0067] 用戶信息分類函數(shù),創(chuàng)建用戶數(shù)據(jù)緩存,將用戶數(shù)據(jù)分別按照CIFS協(xié)議、 Kerberos協(xié)議、USB設(shè)備數(shù)據(jù)進(jìn)行分析,如果用戶數(shù)據(jù)符合其中一種,則返回相應(yīng)的標(biāo)識(shí) 碼。
[0068] 客戶端處理模塊流程實(shí)現(xiàn)過(guò)程如下:
[0069] (1)如圖5所示,用戶文件操作CIFS協(xié)議流程如下:
[0070] a.審計(jì)信息處理模塊讀取采集模塊傳輸過(guò)來(lái)的數(shù)據(jù),緩存數(shù)據(jù)中的原IP地址、目 的IP地址和時(shí)間戳信息;
[0071] b.讀取SMB數(shù)據(jù)包的第5個(gè)BYTE,將SMB包取出包頭,按照SMB header的格式存 儲(chǔ),讀取SMB包的第5個(gè)byte,獲取其中的co_and數(shù)據(jù);
[0072] c.判斷此command是否為關(guān)鍵命令,如果不是關(guān)鍵命令則直接將包丟棄,如果是 關(guān)鍵命令,則根據(jù)關(guān)鍵命令類型選擇不同的處理流程,NT_CREATE命令則執(zhí)行流程d,READ/ WRITE命令則執(zhí)行流程e,CLOSE命令則執(zhí)行流程f,NEGOTIATE命令執(zhí)行流程g,DELETE命 令執(zhí)行流程h,RENAME命令執(zhí)行流程i ;
[0073] d.針對(duì)CIFS協(xié)議NT_CREATE命令數(shù)據(jù)包,進(jìn)行CIFS協(xié)議打開(kāi)文件命令處理流程, 獲取FID與文件目錄關(guān)聯(lián)數(shù)據(jù),并緩存到FID緩存隊(duì)列。將NT_CREATE命令數(shù)據(jù)包中的文 件打開(kāi)信息(文件路徑)和審計(jì)日志基本信息,生成客戶打開(kāi)文件的審計(jì)日志,調(diào)用客戶端 發(fā)送模塊發(fā)送審計(jì)日志;
[0074] e.針對(duì)CIFS協(xié)議READ/WRITE命令數(shù)據(jù)包,進(jìn)行CIFS協(xié)議讀/寫命令處理流程, 獲取當(dāng)前數(shù)據(jù)包FID (File Identification,文件身份)字段,通過(guò)FID緩存隊(duì)列查找當(dāng)前 FID所關(guān)聯(lián)文件目錄。將READ/WRITE命令數(shù)據(jù)包中的文件讀寫信息和審計(jì)日志基本信息, 生成客戶讀取/修改文件的審計(jì)日志,調(diào)用客戶端發(fā)送模塊發(fā)送審計(jì)日志;
[0075] f.針對(duì)CIFS協(xié)議CLOSE命令數(shù)據(jù)包,進(jìn)行CIFS協(xié)議關(guān)閉文件命令處理流程,獲取 當(dāng)前數(shù)據(jù)包FID字段,通過(guò)FID緩存隊(duì)列查找當(dāng)前FID所關(guān)聯(lián)文件目錄。將CLOSE命令數(shù) 據(jù)包中的文件關(guān)閉信息和審計(jì)日志基本信息,生成客戶關(guān)閉文件的審計(jì)日志,調(diào)用客戶端 發(fā)送模塊發(fā)送審計(jì)日志;
[0076] g.針對(duì)CIFS協(xié)議NEGOTIATE命令數(shù)據(jù)包,進(jìn)行CIFS協(xié)議協(xié)商命令處理流程,獲取 當(dāng)前數(shù)據(jù)包CIFS協(xié)議協(xié)商數(shù)據(jù),判斷當(dāng)前用戶是否已經(jīng)連接服務(wù)器,將NEGOTIATE命令數(shù) 據(jù)包中的協(xié)議協(xié)商信息和審計(jì)日志基本信息,生成客戶連接服務(wù)器的審計(jì)日志,調(diào)用客戶 端發(fā)送模塊發(fā)送審計(jì)日志。
[0077] h.針對(duì)CIFS協(xié)議DELETE命令數(shù)據(jù)包,進(jìn)行CIFS協(xié)議刪除文件/目錄命令處理流 程,獲取當(dāng)前數(shù)據(jù)包FID字段,通過(guò)FID緩存隊(duì)列查找當(dāng)前FID做關(guān)聯(lián)文件目錄。將DELETE 命令數(shù)據(jù)包中的刪除文件/目錄信息和審計(jì)日志基本信息,生成客戶刪除文件的審計(jì)日 志,調(diào)用客戶端發(fā)送模塊發(fā)送審計(jì)日志;
[0078] i.針對(duì)CIFS協(xié)議RENAME命令數(shù)據(jù)包,進(jìn)行CIFS協(xié)議重命名文件命令處理流程, 獲取當(dāng)前數(shù)據(jù)包源文件名字段和新文件名字段,將RENAME命令數(shù)據(jù)包中的重命名文件信 息和審計(jì)日志基本信息,生成客戶重命名文件的審計(jì)日志,調(diào)用客戶端發(fā)送模塊發(fā)送審計(jì) 日志;
[0079] (2)如圖6所示,用戶Kerberos協(xié)議處理流程如下:
[0080] a.創(chuàng)建用戶Kerberos協(xié)議數(shù)據(jù)緩存,拷貝Kerberos協(xié)議請(qǐng)求回復(fù)狀態(tài)位和 Kerberos錯(cuò)誤狀態(tài)碼;
[0081] b.判斷請(qǐng)求回復(fù)狀態(tài)位,若請(qǐng)求則進(jìn)入Kerberos協(xié)議請(qǐng)求流程。若為回復(fù),判斷 其Kerberos協(xié)議錯(cuò)誤狀態(tài)碼,如果Kerberos協(xié)議錯(cuò)誤狀態(tài)碼為30,則進(jìn)入Kerberos協(xié)議 錯(cuò)誤處理流程;
[0082] c. Kerberos協(xié)議請(qǐng)求流程,解析Kerberos協(xié)議請(qǐng)求數(shù)據(jù)包,獲取其中的 RequestBody (請(qǐng)求數(shù)據(jù)包)中的UserName (用戶名)字段,將UserName保存至當(dāng)前登錄用 戶名和用戶登錄次數(shù)隊(duì)列中;
[0083] d. Kerberos協(xié)議錯(cuò)誤處理流程,獲取當(dāng)前登錄用戶名,解析Kerberos協(xié)議錯(cuò)誤代 碼,如果是用戶密碼錯(cuò)誤碼,則在當(dāng)前登錄用戶錯(cuò)誤次數(shù)加1,如果錯(cuò)誤次數(shù)累計(jì)為5的倍 數(shù),則生成審計(jì)日志。
[0084] (3)如圖7所示,用戶USB設(shè)備處理流程如下:
[0085] a.解析數(shù)據(jù)獲取其中的USB設(shè)備型號(hào)信息和設(shè)備ID信息;
[0086] b.將USB設(shè)備型號(hào)信息、設(shè)備ID信息和審計(jì)日志基本信息組成審計(jì)日志;
[0087] c.調(diào)用客戶端發(fā)送模塊發(fā)送審計(jì)日志U。
[0088] 具體實(shí)施例:
[0089] 本實(shí)施例的實(shí)驗(yàn)條件如下
[0090] 1.硬件環(huán)境,
[0091] CPU :Intel(R)Core(TM)i3-2120CPUi3. 30GHz, 3. 29GHz
[0092] 內(nèi)存:1.88GB
[0093] 硬盤:450G
[0094] 2.軟件環(huán)境,
[0095] 操作系統(tǒng):Windows XP SP3
[0096] 3.源代碼:過(guò)濾驅(qū)動(dòng)源代碼,客戶端應(yīng)用程序源代碼
[0097] 結(jié)合上述實(shí)驗(yàn)環(huán)境,根據(jù)說(shuō)明書附圖中的流程,下面對(duì)本發(fā)明的實(shí)施方式進(jìn)行詳 細(xì)說(shuō)明:
[0098] (1)在驅(qū)動(dòng)配置文件中配置審計(jì)日志服務(wù)器的IP地址和端口號(hào),并測(cè)試連接是否 成功;
[0099] (2)如果測(cè)試與審計(jì)日志服務(wù)器的連接成功后,使用驅(qū)動(dòng)安裝包中的INF文件安 裝過(guò)濾驅(qū)動(dòng)到目標(biāo)機(jī)器上;
[0100] (3)啟動(dòng)客戶端應(yīng)用程序,該程序會(huì)檢查底層驅(qū)動(dòng)是否已正常運(yùn)行并和驅(qū)動(dòng)進(jìn)行 測(cè)試性通信,如果一切正常,則應(yīng)用程序會(huì)開(kāi)啟所有模塊并嘗試讀取驅(qū)動(dòng)程序的內(nèi)核隊(duì)列, 至此客戶端審計(jì)系統(tǒng)部署完畢;
[0101] (4)如果此時(shí)有符合過(guò)濾條件的網(wǎng)絡(luò)數(shù)據(jù)包到達(dá),或者有USB設(shè)備的插拔事件發(fā) 生,驅(qū)動(dòng)就會(huì)觸發(fā)審計(jì)事件,應(yīng)用程序會(huì)立刻讀取驅(qū)動(dòng)內(nèi)核隊(duì)列,并分析隊(duì)列數(shù)據(jù),形成審 計(jì)條目;
[0102] (5)應(yīng)用程序在形成審計(jì)條目后會(huì)以固定格式的數(shù)據(jù)包將審計(jì)條目發(fā)送到審計(jì)日 志服務(wù)器,形成最終的審計(jì)日志并存檔。
[0103] 本發(fā)明未詳細(xì)闡述部分屬于本領(lǐng)域技術(shù)人員公知技術(shù)。
【權(quán)利要求】
1. 一種基于過(guò)濾驅(qū)動(dòng)的安全審計(jì)系統(tǒng),其特征在于包括:系統(tǒng)過(guò)濾驅(qū)動(dòng)模塊、客戶端 采集模塊、客戶端處理模塊和客戶端發(fā)送模塊,其中系統(tǒng)過(guò)濾驅(qū)動(dòng)模塊包括NDIS(Netw 〇rk Driver Interface Specification,網(wǎng)絡(luò)驅(qū)動(dòng)接口規(guī)范)驅(qū)動(dòng)模型的中間層過(guò)濾驅(qū)動(dòng)模塊和 PNP (Plug-and-Play,即插即用)驅(qū)動(dòng)模型的USB設(shè)備過(guò)濾驅(qū)動(dòng)模塊; NDIS驅(qū)動(dòng)模型的中間層過(guò)濾驅(qū)動(dòng)模塊,創(chuàng)建NDIS協(xié)議驅(qū)動(dòng)設(shè)備,將此設(shè)備綁定所有 NDIS小端口驅(qū)動(dòng),以獲取網(wǎng)卡設(shè)備接收的網(wǎng)絡(luò)數(shù)據(jù);創(chuàng)建NDIS小端口驅(qū)動(dòng)設(shè)備,將此設(shè)備 綁定所有NDIS協(xié)議驅(qū)動(dòng),以獲取NDIS協(xié)議驅(qū)動(dòng)發(fā)送的網(wǎng)絡(luò)數(shù)據(jù);設(shè)置分發(fā)函數(shù),將獲取的 網(wǎng)絡(luò)數(shù)據(jù)進(jìn)行Kerberos協(xié)議和CIFS協(xié)議關(guān)鍵字匹配,將以上兩種協(xié)議的敏感網(wǎng)絡(luò)數(shù)據(jù)通 過(guò)共享內(nèi)存?zhèn)鬏斀o客戶端采集模塊; PNP驅(qū)動(dòng)模型的USB設(shè)備過(guò)濾驅(qū)動(dòng)模塊,通過(guò)綁定PCI總線設(shè)備驅(qū)動(dòng),設(shè)置USB設(shè)備添 加設(shè)備分發(fā)函數(shù),USB設(shè)備插入時(shí),通過(guò)構(gòu)造IRP (I/O Request Package,輸入輸出請(qǐng)求包) 獲取USB設(shè)備類型和型號(hào)信息,將捕獲的USB設(shè)備數(shù)據(jù)通過(guò)共享內(nèi)存?zhèn)鬏斀o客戶端采集模 塊; 客戶端采集模塊:初始化兩個(gè)采集線程和信息緩存隊(duì)列,兩個(gè)采集線程和信息緩存隊(duì) 列分別對(duì)應(yīng)接收緩存NDIS驅(qū)動(dòng)模型的中間層過(guò)濾驅(qū)動(dòng)模塊和PNP驅(qū)動(dòng)模型的USB過(guò)濾驅(qū) 動(dòng)模塊的數(shù)據(jù);在每個(gè)采集線程中,各自初始化共享內(nèi)存,將共享內(nèi)存?zhèn)鬟f給對(duì)應(yīng)的過(guò)濾 驅(qū)動(dòng),作為客戶數(shù)據(jù)緩存區(qū),各自初始化共享事件,作為跟對(duì)應(yīng)的過(guò)濾驅(qū)動(dòng)進(jìn)行事件通信的 標(biāo)志;當(dāng)系統(tǒng)過(guò)濾驅(qū)動(dòng)模塊捕獲客戶數(shù)據(jù)時(shí),將數(shù)據(jù)緩存至共享內(nèi)存,并觸發(fā)對(duì)應(yīng)的共享 事件,采集線程讀取客戶數(shù)據(jù),采集線程首先讀取對(duì)應(yīng)的共享內(nèi)存數(shù)據(jù),將數(shù)據(jù)緩存至對(duì)應(yīng) 的信息緩存隊(duì)列,將對(duì)應(yīng)的共享事件置位,將對(duì)應(yīng)的共享內(nèi)存清空,繼續(xù)等待共享事件被觸 發(fā);當(dāng)信息緩存隊(duì)列中存在數(shù)據(jù)時(shí),客戶端采集模塊會(huì)創(chuàng)建處理線程,調(diào)用對(duì)應(yīng)的客戶端處 理模塊處理接口,對(duì)客戶信息緩存隊(duì)列中的數(shù)據(jù)進(jìn)行處理; 客戶端處理模塊:首先初始化緩存客戶端基本信息,客戶端基本信息包括客戶登錄用 戶名、客戶登錄主機(jī)名、作為審計(jì)日志基本信息;然后接收客戶端采集模塊采集的CIFS協(xié) 議、Kerberos協(xié)議和USB設(shè)備數(shù)據(jù),進(jìn)行CIFS協(xié)議文件操作數(shù)據(jù)處理或者進(jìn)行Kerberos協(xié) 議登錄數(shù)據(jù)處理或者進(jìn)行USB設(shè)備數(shù)據(jù)處理;所述CIFS協(xié)議文件操作數(shù)據(jù)處理初始化FID 緩存隊(duì)列,通過(guò)解析CIFS協(xié)議網(wǎng)絡(luò)數(shù)據(jù)包中的操作命令字段,采取相應(yīng)的操作命令處理流 程,將CIFS協(xié)議網(wǎng)絡(luò)數(shù)據(jù)包中的操作信息和審計(jì)基本信息,生成相應(yīng)的審計(jì)日志,調(diào)用客 戶端發(fā)送模塊發(fā)送審計(jì)日志;所述進(jìn)行Kerberos協(xié)議登錄數(shù)據(jù)處理,首先初始化登錄用戶 名緩存隊(duì)列,通過(guò)解析獲取Kerberos協(xié)議請(qǐng)求包中的客戶端登錄用戶名和Kerberos協(xié)議 返回包中的登錄結(jié)果,將以上信息緩存到登錄用戶名緩存隊(duì)列,當(dāng)前登錄用戶名出錯(cuò)次數(shù) 如果是5的倍數(shù),將登錄用戶名和審計(jì)日志基本信息組成審計(jì)日志,調(diào)用客戶端發(fā)送模塊 發(fā)送審計(jì)日志;所述進(jìn)行USB設(shè)備數(shù)據(jù)處理,解析數(shù)據(jù)獲取其中的USB設(shè)備型號(hào)信息和設(shè)備 ID信息,將USB設(shè)備型號(hào)信息、設(shè)備ID信息和審計(jì)日志基本信息組成審計(jì)日志,調(diào)用客戶端 發(fā)送模塊發(fā)送審計(jì)日志; 客戶端發(fā)送模塊:初始化日志緩存隊(duì)列和網(wǎng)絡(luò)套接字連接,將客戶端處理模塊中的審 計(jì)日志放入日志緩存隊(duì)列中,通過(guò)網(wǎng)絡(luò)套接字將日志發(fā)送到日志服務(wù)器。
2. 根據(jù)權(quán)利要求1的一種基于過(guò)濾驅(qū)動(dòng)的安全審計(jì)系統(tǒng),其特征在于:所述NDIS驅(qū)動(dòng) 模型的中間層過(guò)濾驅(qū)動(dòng)模塊設(shè)置分發(fā)函數(shù)實(shí)現(xiàn)過(guò)程如下: a. 通過(guò)設(shè)置驅(qū)動(dòng)分發(fā)函數(shù),將本驅(qū)動(dòng)捕獲的網(wǎng)絡(luò)數(shù)據(jù)包進(jìn)行處理,根據(jù)網(wǎng)絡(luò)數(shù)據(jù)包中 的網(wǎng)絡(luò)協(xié)議類型TCP協(xié)議或者UDP協(xié)議分別執(zhí)行b和c ; b. 針對(duì)TCP協(xié)議數(shù)據(jù)包,過(guò)濾其中的kerberos協(xié)議網(wǎng)絡(luò)數(shù)據(jù)包,將其放入共享內(nèi)存,并 通知客戶端采集模塊讀取共享內(nèi)存數(shù)據(jù); c. 針對(duì)UDP協(xié)議數(shù)據(jù)包,過(guò)濾其中的CIFS協(xié)議網(wǎng)絡(luò)數(shù)據(jù)包,將其放入共享內(nèi)存,并通知 客戶端采集模塊讀取共享內(nèi)存數(shù)據(jù)。
3. 根據(jù)權(quán)利要求1的一種基于過(guò)濾驅(qū)動(dòng)的安全審計(jì)系統(tǒng),其特征在于:所述PNP驅(qū)動(dòng) 模型的USB設(shè)備過(guò)濾驅(qū)動(dòng)設(shè)置分發(fā)函數(shù)實(shí)現(xiàn)過(guò)程如下: a. 設(shè)置USB設(shè)備過(guò)濾驅(qū)動(dòng)分發(fā)函數(shù),設(shè)置針對(duì)IRP_MJ_PNP類型IRP包的分發(fā)函數(shù),當(dāng) IRP_MJ_PNP類型IRP包到達(dá)本驅(qū)動(dòng),本驅(qū)動(dòng)會(huì)調(diào)用相應(yīng)的分發(fā)函數(shù)對(duì)此IRP包進(jìn)行處理; b. 在分發(fā)函數(shù)中,解析IRP_MJ_PNP類型IRP包,判斷是否為新USB設(shè)備插入; c. 新USB設(shè)備插入時(shí),構(gòu)造查詢IRP包,將查詢IRP包發(fā)送到新USB設(shè)備,在返回?cái)?shù)據(jù) 中,獲取新USB設(shè)備的設(shè)備類型和型號(hào)信息; d. 將USB設(shè)備的設(shè)備類型和型號(hào)信息放入共享內(nèi)存,并通知客戶端采集模塊讀取共享 內(nèi)存數(shù)據(jù)。
4. 根據(jù)權(quán)利要求1的一種基于過(guò)濾驅(qū)動(dòng)的安全審計(jì)系統(tǒng),其特征在于:所述客戶端處 理模塊流程數(shù)據(jù)處理實(shí)現(xiàn)過(guò)程如下: (l)CIFS協(xié)議文件操作數(shù)據(jù)處理,針對(duì)CIFS協(xié)議網(wǎng)絡(luò)數(shù)據(jù)包,首先獲取網(wǎng)絡(luò)數(shù)據(jù)包包 頭數(shù)據(jù),解析包頭數(shù)據(jù)中的CIFS協(xié)議命令字段,根據(jù)CIFS協(xié)議命令字段采取相應(yīng)處理流 程; a. 針對(duì)CIFS協(xié)議NT_CREATE命令數(shù)據(jù)包,進(jìn)行CIFS協(xié)議打開(kāi)文件命令處理流程,獲 取FID與文件目錄關(guān)聯(lián)數(shù)據(jù),并緩存到FID緩存隊(duì)列。將NT_CREATE命令數(shù)據(jù)包中的文件 打開(kāi)信息和審計(jì)日志基本信息,生成客戶打開(kāi)文件的審計(jì)日志,調(diào)用客戶端發(fā)送模塊發(fā)送 審計(jì)日志; b. 針對(duì)CIFS協(xié)議READ/WRITE命令數(shù)據(jù)包,進(jìn)行CIFS協(xié)議讀/寫命令處理流程,獲取 當(dāng)前數(shù)據(jù)包FID字段,通過(guò)FID緩存隊(duì)列查找當(dāng)前FID所關(guān)聯(lián)文件目錄。將READ/WRITE命 令數(shù)據(jù)包中的文件讀寫信息和審計(jì)日志基本信息,生成客戶讀取/修改文件的審計(jì)日志, 調(diào)用客戶端發(fā)送模塊發(fā)送審計(jì)日志; c. 針對(duì)CIFS協(xié)議CLOSE命令數(shù)據(jù)包,進(jìn)行CIFS協(xié)議關(guān)閉文件命令處理流程,獲取當(dāng)前 數(shù)據(jù)包FID字段,通過(guò)FID緩存隊(duì)列查找當(dāng)前FID所關(guān)聯(lián)文件目錄。將CLOSE命令數(shù)據(jù)包 中的文件關(guān)閉信息和審計(jì)日志基本信息,生成客戶關(guān)閉文件的審計(jì)日志,調(diào)用客戶端發(fā)送 模塊發(fā)送審計(jì)日志; d. 針對(duì)CIFS協(xié)議NEGOTIATE命令數(shù)據(jù)包,進(jìn)行CIFS協(xié)議協(xié)商命令處理流程,獲取當(dāng)前 數(shù)據(jù)包CIFS協(xié)議協(xié)商數(shù)據(jù),判斷當(dāng)前用戶是否已經(jīng)連接服務(wù)器,將NEGOTIATE命令數(shù)據(jù)包 中的協(xié)議協(xié)商信息和審計(jì)日志基本信息,生成客戶連接服務(wù)器的審計(jì)日志,調(diào)用客戶端發(fā) 送模塊發(fā)送審計(jì)日志; e. 針對(duì)CIFS協(xié)議DELETE命令數(shù)據(jù)包,進(jìn)行CIFS協(xié)議刪除文件/目錄命令處理流程, 獲取當(dāng)前數(shù)據(jù)包FID字段,通過(guò)FID緩存隊(duì)列查找當(dāng)前FID做關(guān)聯(lián)文件目錄。將DELETE命 令數(shù)據(jù)包中的刪除文件/目錄信息和審計(jì)日志基本信息,生成客戶刪除文件的審計(jì)日志, 調(diào)用客戶端發(fā)送模塊發(fā)送審計(jì)日志; f.針對(duì)CIFS協(xié)議RENAME命令數(shù)據(jù)包,進(jìn)行CIFS協(xié)議重命名文件命令處理流程,獲 取當(dāng)前數(shù)據(jù)包源文件名字段和新文件名字段,將RENAME命令數(shù)據(jù)包中的重命名文件信息 和審計(jì)日志基本信息,生成客戶重命名文件的審計(jì)日志,調(diào)用客戶端發(fā)送模塊發(fā)送審計(jì)日 志; (2)Kerberos協(xié)議登錄數(shù)據(jù)處理,針對(duì)Kerberos協(xié)議網(wǎng)絡(luò)數(shù)據(jù)包,首先獲取網(wǎng)絡(luò)數(shù)據(jù) 包的請(qǐng)求應(yīng)答數(shù)據(jù)字段和錯(cuò)誤碼數(shù)據(jù)字段,針對(duì)以上字段分別調(diào)用Kerberos協(xié)議請(qǐng)求處 理流程和Kerberos協(xié)議錯(cuò)誤回復(fù)處理流程,根據(jù)請(qǐng)求應(yīng)答字段獲取請(qǐng)求用戶名,根據(jù)錯(cuò)誤 回復(fù)數(shù)據(jù)字段獲取用戶輸入錯(cuò)誤密碼次數(shù),當(dāng)同一用戶名輸入錯(cuò)誤密碼次數(shù)累計(jì)為五的倍 數(shù),生成審計(jì)日志。
【文檔編號(hào)】G06F21/10GK104063633SQ201410178630
【公開(kāi)日】2014年9月24日 申請(qǐng)日期:2014年4月29日 優(yōu)先權(quán)日:2014年4月29日
【發(fā)明者】王斌, 王海濤, 譚東宇, 王守信, 劉華, 劉翔宇 申請(qǐng)人:航天恒星科技有限公司