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