技術報告基于Windows內核的用戶行為收集解決方案_第1頁
技術報告基于Windows內核的用戶行為收集解決方案_第2頁
技術報告基于Windows內核的用戶行為收集解決方案_第3頁
技術報告基于Windows內核的用戶行為收集解決方案_第4頁
技術報告基于Windows內核的用戶行為收集解決方案_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、計劃類別 項目編號 項目技術報告課題名稱 項目主持人 承擔單位 題目:基于Windows內核的用戶行為收集解決方案規(guī)范企業(yè)PC用戶的行為使之符合安全性、有用性的要求,借助技術手段收集用戶的行為是一種行之有效的方式。分析基于Windows內核技術,實現(xiàn)對用戶上網行為、進程操作、文件的讀寫、刪除和重命名進行收集。采用C/S架構,在服務器端文件記錄客戶端訪問的網站信息和進程操作信息,方便對歷史記錄進行查詢,完全基于內核,無進程也無DLL支持,可靠性和安全性高。關鍵詞:Windows內核;進程操作;上網行為;文件行為文章編號:2096-1472(2018)-07-28-031 引言(Introduct

2、ion)隨著計算機在各行各業(yè)的重要性日益凸顯,如何規(guī)范工作人員的行為,提高工作效率已成為各公司機構需要解決的問題。采用強有力的技術手段,實時查看用戶上網行為,以及用戶進程操作,確保員工高效、安全的使用計算機。本文基于Windows內核技術,通過采用一系列的技術手段,收集用戶上網、進程,以及文件操作行為,可用于分析用戶是否有違規(guī)行為。2 系統(tǒng)結構(System structure)系統(tǒng)結構圖如圖1所示,由監(jiān)控客戶端、Windows服務器組成,一個服務器可以接收多臺PC客戶端收集的信息??蛻舳诉\行監(jiān)控程序能夠對每個客戶端用戶的上網行為進行即時的收集。Windows服務器部署在與監(jiān)控客戶端同一局域網

3、,在Windows服務器上運行管理程序。監(jiān)控客戶端程序和Windows服務器的管理服務模塊通信采用了C/S架構。下面對這兩個功能模塊進行簡要的介紹。(1)監(jiān)控客戶端監(jiān)控客戶端部署在局域網內需要被監(jiān)控的各計算機上,它的主要功能是收集用戶的網絡和進程操作行為。采用進程回調方式捕獲進程調用,記錄進程創(chuàng)建、進程退出等。采用基于Minifilter(Mini-Filter Installable File System文件系統(tǒng)微過濾驅動)的文件過濾技術,記錄文件的打開、讀、寫、重命名操作。WFP(Windows Filtering Platform Windows過濾平臺)對TCP/IP協(xié)議棧進行全方位

4、的過濾攔截,接收發(fā)送的TCP數據包,分析用戶的網絡行為。為了防止客戶端監(jiān)控程序被非法關閉或異常退出,系統(tǒng)采用一系列自我保護措施。包括注冊表回調防止刪除注冊表啟動項、基于IRP(I/O Request Package)的獨占方式打開程序、防止加載專業(yè)工具刪除監(jiān)控程序。(2)服務器端維護所有客戶端監(jiān)控程序的工作狀態(tài),采用內核TDI(Transport Driver Interface傳輸層接口)將客戶端收集到的網絡和進程操作行為記錄到文件,方便對歷史記錄查詢。3 相關技術概述(Overview of related technologies)3.1 進程回調采用進程回調記錄進程創(chuàng)建、退出等操作。當

5、一個進程被創(chuàng)建或者刪除時,一系列的例程將會被調用。PsSetCreateProcessNotifyRoutine進程回調函數的原型如下:NTSTATUS PsSetCreateProcessNotifyRoutine(IN PCREATE_PROCESS_NOTIFY_ROUTINE NotifyRoutine,IN BOOLEAN Remove);其中,NotifyRoutine表示例程函數的入口地址,Remove為FALSE時,添加例程到鏈表,為TRUE時,從鏈表中刪除該例程。PCREATE_PROCESS_NOTIFY_ROUTINE為回調指針,聲明如下:VOID(*PCREATE_PR

6、OCESS_NOTIFY_ROUTINE)(IN HANDLE ParentId,IN HANDLE ProcessId,IN BOOLEAN Create);ParentId和ProcessId用于確定進程,Create參數表明進程是創(chuàng)建還是刪除。當Create為True時,例程在新創(chuàng)建的進程的初始化線程被創(chuàng)建后被調用。當Create為False時,例程在進程的最后一個線程被關閉,進程的地址空間將被釋放時調用。當進程被刪除時,例程運行在進程的最后一個線程中。3.2 基于Minifilter的文件過濾MiniFilter相對于傳統(tǒng)的sfilter方式,Minifilter編寫微小而簡單。速度增

7、加的同時,不同軟件之間兼容性也得到了提升1。(1)文件過濾中對文件的讀寫操作進行過濾注冊微過濾器時,填寫微過濾器注冊結構FLT_REGISTRATION,在FLT_OPERATION_REGISTRATION域中,定義文件打開、文件讀IRP_MJ_READ、文件寫IRP_MJ_WRITE、文件刪除IRP_MJ_SET_INFORMATION、文件重命名等文件操作的回調函數NPPreCreate、NPPostRead、NPPreWrite、NPPreDelete、NPPRERENAME。(2)獲取文件操作信息在回調函數中NPPreXXX在請求完成之前進行處理,攔截請求本身。在回調數據包FLT_C

8、ALLBACK_DATA中包含了請求相關的全部信息,獲取到打開的文件名、操作的進程號、文件路徑等等。NPPostXXX在請求完成之后,對返回結果進行攔截。3.3 基于WFP的網絡傳輸信息WFP由Filter Engine(過濾引擎)、Callout Driver、Filter組成2。Filter Engine的內核模式可以對TCP/IP協(xié)議棧進行全方位的過濾攔截。Callout Driver是WFP擴展功能的一種機制。Callout Driver由一組Callout函數組成,其中,ClassifyFn函數處理收到的網絡數據,例如端口號、ip地址等。Filter包含過濾條件,指定過濾器的acti

9、on類型、處理action的Callout。WFP的過濾過程3:首先,在過濾引擎(Filter Engine)中注冊Callout,在Callout處理函數classifyFn函數中處理數據。然后,初始化Filter,為Filter添加過濾條件,指示哪些數據符合filter的要求,把數據交給Callout處理。處理網絡數據包的classifyFn函數,函數原型如下:VOID NTAPI classifyFn(IN const FWPS_INCOMING_VALUES0*inFixedValues,IN const FWPS_INCOMING_METADATA_VALUES0*inMetaVal

10、ues,IN OUT VOID*layerData,IN const FWPS_FILTER0*filter,IN UINT64 flowContext,OUT FWPS_CLASSIFY_OUT0*classifyOut);其中,intFixedValues是指向FWPS_INCOMING_VALUES0_的結構體typedef struct FWPS_INCOMING_VALUES0_ UINT16 layerId;UINT32 valueCount;FWPS_INCOMING_VALUE0*incomingValue; FWPS_INCOMING_VALUES0;(1)獲取網絡連接的端口

11、號TCP傳輸在FWPM_LAYER_ALE_FLOW_ESTABLISHED_V4層建立連接,獲取建立連接的信息。通過inFixedValues-incomingValueFWPS_FIELD_ALE_FLOW_ESTAB-LISHED_V4_IP_LOCAL_PORT.value.uint16獲取發(fā)送方端口。通過inFixedValues-incomingValueFWPS_FIELD_ALE_FLOW_ESTAB-LISHED_V4_IP_LOCAL_ADDRESS.value.uint32獲取發(fā)送方IP。通過inMetaValues-processId獲取進程id。(2)傳輸數據信息的獲

12、取在classifyFn處理函數中l(wèi)ayerData參數包含了要傳輸的數據。TCP數據對應的數據類型為FWPS_STREAM_CALLOUT_IO_PACKET。streamPacket=(FWPS_STREAM_CALLOUT_IO_PACKET*)packet;streamBuffer=streamPacket-streamData;獲取緩沖區(qū)的內容:RtlCopyMemory(tmpStream,streamBuffer,streamBuffer-dataLength);此時已經獲取了streamBuffer中的內容,對tmpStream進行數據類型轉換即可進行數據分析。3.4 自我保護

13、在服務器端、客戶端安裝exe程序執(zhí)行收集,要防止程序被修改或刪除,需要采取一系列的自我保護措施。本文采用三種方式,采用注冊表回調方式防止刪除注冊表啟動項,基于IRP實現(xiàn)獨占方式打開文件,防止加載專業(yè)工具刪除程序。3.4.1 注冊表回調防止刪除注冊表啟動項內核模式驅動程序調用CmRegisterCallback函數注冊一個回調,在配置管理每一次注冊表操作的信息都會被填充到REG_XXX_KEY_INFORMANTION結構體里。回調例程能夠阻止注冊表操作4。CmRegisterCallback函數原型如下:NTKERNELAPI NTSTATUS CmRegisterCallback(PEX_C

14、ALLBACK_FUNCTION Function,PVOID Context,PLARGE_INTEGER Cookie);其中,F(xiàn)unction是回調函數指針,Context作為回調函數的參數,Cookie是回調的句柄。EX_CALLBACK_FUNCTION的原型如下:EX_CALLBACK_FUNCTION ExCallbackFunction;NTSTATUS ExCallbackFunction(PVOID CallbackContext,PVOID Argument1,PVOID Argument2)Argument1記錄操作類型,Argument2記錄有關操作信息的結構指針。若

15、已經注冊了注冊表回調,當有刪除注冊表項的操作發(fā)生時,Argument1為RegNtPreDeleteKey,Argument2指向一個REG_DELETE_KEY_INFORMATION結構體的指針。此函數如果返回STATUS_SUCCESS,注冊表操作就會繼續(xù)執(zhí)行,如果返回STATUS_ACCESS_DENIED,注冊表操作就不會執(zhí)行了。3.4.2 基于IRP的獨占方式打開程序當上層應用程序操作某個設備時,I/O管理器會將I/O請求轉化成IRP(I/O Request Package)數據結構對象和一個IRP_STACK_LOCATION數據結構對象數組,IRP中的CurrentStackL

16、ocation字符指向IRP_STACK_LOCATION中的某一個元素。IRP_STACK_LOCATION數組中的每一個元素由上一層驅動負責填充。打開文件函數原型如下:NTSTATUS IrpCreateFile(OUT PFILE_OBJECT*FileObject,IN ACCESS_MASK DesiredAccess,IN PUNICODE_STRING FilePath,OUT PIO_STATUS_BLOCK IoStatusBlock,IN ULONG FileAttributes,IN ULONG ShareAccess,IN ULONG CreateDisposition

17、,IN ULONG CreateOptions,);其中,F(xiàn)ileObject是指向文件的指針,F(xiàn)ilePath指明文件路徑,IoStatusBlock是指向結構體IO_STATUS_BLOCK的指針,當打開文件時,結構體中Information值為FILE_OPENED。DesiredAccess指定訪問權限,F(xiàn)ileAttributes表明文件對象屬性,將文件屬性設置為FILE_SHARE_READ共享讀。設備和中間層驅動一般設置ShareAccess為0,表示調用者以獨占方式打開文件。CreateDisposition指定如果文件存在或不存在時所做的操作。CreateOptions指定驅

18、動創(chuàng)建或者打開文件時需要應用的選項。3.4.3 防止加載專業(yè)工具刪除專業(yè)工具強制刪除文件,通?;贗RP來完成的:構造IRP,先設置文件的屬性,將SECTION_OBJECT_POINTERS結構的DataSectionObject和ImageSectionObject兩個域清空,然后刪除文件。文件以獨占方式打開并且只共享讀,即使專業(yè)工具使用IRP也不能刪除。3.5 基于TDI的信息上傳基于TDI將用戶的進程操作、網絡行為、文件讀寫等信息從客戶端內核上傳服務器。TDI是一套接口的集合,這套接口連著socket和協(xié)議驅動,由協(xié)議層驅動實現(xiàn)。傳輸的步驟如下:(1)建立并連接TDINTSTATUS OpenTDIConnection(char*szIpAddress, unsigned short Port);szIpAddress表示服務器端ip,Port表示服務器端端口。(2)客戶端傳輸數據、服務器端接收數據將客戶端機器的mac地址,以及客戶端機器的網絡行為、文件讀寫、進程操作等信息發(fā)送給服務器端。unsigned long SendData(char*pData,unsigned lo

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論