999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于Windows內核的用戶行為收集解決方案

2018-10-22 06:56:08趙曉華趙樹升
軟件工程 2018年7期

趙曉華 趙樹升

摘 要:規范企業PC用戶的行為使之符合安全性、有用性的要求,借助技術手段收集用戶的行為是一種行之有效的方式。分析基于Windows內核技術,實現對用戶上網行為、進程操作、文件的讀寫、刪除和重命名進行收集。采用C/S架構,在服務器端文件記錄客戶端訪問的網站信息和進程操作信息,方便對歷史記錄進行查詢,完全基于內核,無進程也無DLL支持,可靠性和安全性高。

關鍵詞:Windows內核;進程操作;上網行為;文件行為

中圖分類號:TP309 文獻標識碼:A

文章編號:2096-1472(2018)-07-28-03

1 引言(Introduction)

隨著計算機在各行各業的重要性日益凸顯,如何規范工作人員的行為,提高工作效率已成為各公司機構需要解決的問題。采用強有力的技術手段,實時查看用戶上網行為,以及用戶進程操作,確保員工高效、安全的使用計算機。

本文基于Windows內核技術,通過采用一系列的技術手段,收集用戶上網、進程,以及文件操作行為,可用于分析用戶是否有違規行為。

2 系統結構(System structure)

系統結構圖如圖1所示,由監控客戶端、Windows服務器組成,一個服務器可以接收多臺PC客戶端收集的信息??蛻舳诉\行監控程序能夠對每個客戶端用戶的上網行為進行即時的收集。Windows服務器部署在與監控客戶端同一局域網,在Windows服務器上運行管理程序。監控客戶端程序和Windows服務器的管理服務模塊通信采用了C/S架構。下面對這兩個功能模塊進行簡要的介紹。

(1)監控客戶端

監控客戶端部署在局域網內需要被監控的各計算機上,它的主要功能是收集用戶的網絡和進程操作行為。

采用進程回調方式捕獲進程調用,記錄進程創建、進程退出等。采用基于Minifilter(Mini-Filter Installable File System文件系統微過濾驅動)的文件過濾技術,記錄文件的打開、讀、寫、重命名操作。WFP(Windows Filtering Platform Windows過濾平臺)對TCP/IP協議棧進行全方位的過濾攔截,接收發送的TCP數據包,分析用戶的網絡行為。

為了防止客戶端監控程序被非法關閉或異常退出,系統采用一系列自我保護措施。包括注冊表回調防止刪除注冊表啟動項、基于IRP((I/O Request Package)的獨占方式打開程序、防止加載專業工具刪除監控程序。

(2)服務器端

維護所有客戶端監控程序的工作狀態,采用內核TDI(Transport Driver Interface傳輸層接口)將客戶端收集到的網絡和進程操作行為記錄到文件,方便對歷史記錄查詢。

3 相關技術概述(Overview of related technologies)

3.1 進程回調

采用進程回調記錄進程創建、退出等操作。當一個進程被創建或者刪除時,一系列的例程將會被調用。PsSetCreateProcessNotifyRoutine進程回調函數的原型如下:NTSTATUS PsSetCreateProcessNotifyRoutine(

IN PCREATE_PROCESS_NOTIFY_ROUTINE NotifyRoutine,

IN BOOLEAN Remove

);

其中,NotifyRoutine表示例程函數的入口地址,Remove為FALSE時,添加例程到鏈表,為TRUE時,從鏈表中刪除該例程。

PCREATE_PROCESS_NOTIFY_ROUTINE為回調指針,聲明如下:

VOID(*PCREATE_PROCESS_NOTIFY_ROUTINE)(

IN HANDLE ParentId,

IN HANDLE ProcessId,

IN BOOLEAN Create

);

ParentId和ProcessId用于確定進程,Create參數表明進程是創建還是刪除。當Create為True時,例程在新創建的進程的初始化線程被創建后被調用。當Create為False時,例程在進程的最后一個線程被關閉,進程的地址空間將被釋放時調用。當進程被刪除時,例程運行在進程的最后一個線程中。

3.2 基于Minifilter的文件過濾

MiniFilter相對于傳統的sfilter方式,Minifilter編寫微小而簡單。速度增加的同時,不同軟件之間兼容性也得到了提升[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_CALLBACK_DATA中包含了請求相關的全部信息,獲取到打開的文件名、操作的進程號、文件路徑等等。NPPostXXX在請求完成之后,對返回結果進行攔截。

3.3 基于WFP的網絡傳輸信息

WFP由Filter Engine(過濾引擎)、Callout Driver、Filter組成[2]。Filter Engine的內核模式可以對TCP/IP協議棧進行全方位的過濾攔截。Callout Driver是WFP擴展功能的一種機制。Callout Driver由一組Callout函數組成,其中,ClassifyFn函數處理收到的網絡數據,例如端口號、ip地址等。Filter包含過濾條件,指定過濾器的action類型、處理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*inMetaValues,

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)獲取網絡連接的端口號

TCP傳輸在FWPM_LAYER_ALE_FLOW_ESTABLISHED_V4層建立連接,獲取建立連接的信息。

通過inFixedValues->incomingValue[FWPS_FIELD_ALE_FLOW_ESTAB-

LISHED_V4_IP_LOCAL_PORT].value.uint16獲取發送方端口。

通過inFixedValues->incomingValue[FWPS_FIELD_ALE_FLOW_ESTAB-

LISHED_V4_IP_LOCAL_ADDRESS].value.uint32獲取發送方IP。

通過inMetaValues->processId獲取進程id。

(2)傳輸數據信息的獲取

在classifyFn處理函數中layerData參數包含了要傳輸的數據。TCP數據對應的數據類型為FWPS_STREAM_CALLOUT_IO_PACKET。

streamPacket=(FWPS_STREAM_CALLOUT_IO_PACKET*)packet;

streamBuffer=streamPacket->streamData;

獲取緩沖區的內容:

RtlCopyMemory(tmpStream,streamBuffer,streamBuffer->dataLength);

此時已經獲取了streamBuffer中的內容,對tmpStream進行數據類型轉換即可進行數據分析。

3.4 自我保護

在服務器端、客戶端安裝exe程序執行收集,要防止程序被修改或刪除,需要采取一系列的自我保護措施。本文采用三種方式,采用注冊表回調方式防止刪除注冊表啟動項,基于IRP實現獨占方式打開文件,防止加載專業工具刪除程序。

3.4.1 注冊表回調防止刪除注冊表啟動項

內核模式驅動程序調用CmRegisterCallback函數注冊一個回調,在配置管理每一次注冊表操作的信息都會被填充到REG_XXX_KEY_INFORMANTION結構體里。回調例程能夠阻止注冊表操作[4]。

CmRegisterCallback函數原型如下:

NTKERNELAPI NTSTATUS CmRegisterCallback(

PEX_CALLBACK_FUNCTION Function,

PVOID Context,

PLARGE_INTEGER Cookie

);

其中,Function是回調函數指針,Context作為回調函數的參數,Cookie是回調的句柄。EX_CALLBACK_FUNCTION的原型如下:

EX_CALLBACK_FUNCTION ExCallbackFunction;

NTSTATUS ExCallbackFunction(

PVOID CallbackContext,

PVOID Argument1,

PVOID Argument2)

Argument1記錄操作類型,Argument2記錄有關操作信息的結構指針。若已經注冊了注冊表回調,當有刪除注冊表項的操作發生時,Argument1為RegNtPreDeleteKey,Argument2指向一個REG_DELETE_KEY_INFORMATION結構體的指針。此函數如果返回STATUS_SUCCESS,注冊表操作就會繼續執行,如果返回STATUS_ACCESS_DENIED,注冊表操作就不會執行了。

3.4.2 基于IRP的獨占方式打開程序

當上層應用程序操作某個設備時,I/O管理器會將I/O請求轉化成IRP(I/O Request Package)數據結構對象和一個IRP_STACK_LOCATION數據結構對象數組,IRP中的CurrentStackLocation字符指向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,

IN ULONG CreateOptions,

);

其中,FileObject是指向文件的指針,FilePath指明文件路徑,IoStatusBlock是指向結構體IO_STATUS_BLOCK的指針,當打開文件時,結構體中Information值為FILE_OPENED。DesiredAccess指定訪問權限,FileAttributes表明文件對象屬性,將文件屬性設置為FILE_SHARE_READ共享讀。設備和中間層驅動一般設置ShareAccess為0,表示調用者以獨占方式打開文件。CreateDisposition指定如果文件存在或不存在時所做的操作。CreateOptions指定驅動創建或者打開文件時需要應用的選項。

3.4.3 防止加載專業工具刪除

專業工具強制刪除文件,通常基于IRP來完成的:構造IRP,先設置文件的屬性,將SECTION_OBJECT_POINTERS結構的DataSectionObject和ImageSectionObject兩個域清空,然后刪除文件。文件以獨占方式打開并且只共享讀,即使專業工具使用IRP也不能刪除。

3.5 基于TDI的信息上傳

基于TDI將用戶的進程操作、網絡行為、文件讀寫等信息從客戶端內核上傳服務器。TDI是一套接口的集合,這套接口連著socket和協議驅動,由協議層驅動實現。傳輸的步驟如下:

(1)建立并連接TDI

NTSTATUS OpenTDIConnection(char*szIpAddress, unsigned short Port);

szIpAddress表示服務器端ip,Port表示服務器端端口。

(2)客戶端傳輸數據、服務器端接收數據

將客戶端機器的mac地址,以及客戶端機器的網絡行為、文件讀寫、進程操作等信息發送給服務器端。

unsigned long SendData(char*pData,unsigned long bufferLength);

unsigned long RecvData(char*pData,unsigned long Length);

其中,pData表示傳輸的數據指針。

4 結論(Conclusion)

網絡行為的結果如圖2所示。按行顯示網絡操作,每行內容為網絡操作發生時間、進程號、訪問的網絡ip、端口號、訪問的網址。

進程創建、退出,以及文件的創建、讀寫操作等收集的結果如圖3所示。按行顯示操作,每行內容為操作發生時間、標識、操作的進程號、文件路徑。其中,標識有進程PROCESS、文件寫WRITE、進程創建PCREATE、文件讀READ、文件刪除DELETE等。

本文完全采用基于內核的方式,沒有監控程序和服務器端進程。也無DLL支持,可靠性好、安全性高。

參考文獻(References)

[1] 譚文,楊瀟,邵堅磊.寒江獨釣:Windows內核安全編程[M].北京:電子工業出版社,2009.

[2] 黃君勝.基于WFP的終端信息泄漏監控系統的研究與實現[J].計算機應用與軟件,2013,30(3):315-318;326.

[3] Windows Filtering Platform[EB/OL]. https://msdn.microsoft.com/en-us/library/windows/desktop/aa366510(v=vs.85).aspx.

[4] ly(cqupt),ljh(cqupt).淺談基于CallBack的注冊表監控和過濾技術[J].黑客防線,2009(7):82-85.

作者簡介:

趙曉華(1990-),女,碩士,助教.研究領域:軟件開發.

趙樹升(1968-),男,碩士,副教授.研究領域:安全操作系統內核.

主站蜘蛛池模板: 国产成人在线无码免费视频| 亚洲高清资源| 国产免费好大好硬视频| 欧美一区中文字幕| 国产女人爽到高潮的免费视频| AV不卡无码免费一区二区三区| 久久久久国色AV免费观看性色| 国产成人久久综合777777麻豆 | 国产在线第二页| 中国黄色一级视频| 伊人五月丁香综合AⅤ| 久久婷婷五月综合97色| 网久久综合| 午夜精品一区二区蜜桃| 91精品啪在线观看国产60岁| www.狠狠| 国产精品无码AV中文| 性色在线视频精品| 久久亚洲国产视频| 91久久国产综合精品女同我| 欧美成人a∨视频免费观看| 性欧美在线| 91在线高清视频| 四虎精品免费久久| 日韩一区二区三免费高清| 一区二区三区四区日韩| 亚洲高清在线天堂精品| 婷婷色狠狠干| 亚洲AV成人一区二区三区AV| 无码一区中文字幕| 国产成人精品在线1区| 日韩欧美国产另类| 无码中文字幕乱码免费2| 国产福利拍拍拍| 欧美色综合久久| 成人看片欧美一区二区| 综合社区亚洲熟妇p| 久久a级片| 午夜国产在线观看| 黄色a一级视频| 免费a级毛片视频| 久久大香香蕉国产免费网站| 成年女人a毛片免费视频| 国产亚洲美日韩AV中文字幕无码成人| 国产区精品高清在线观看| 日韩在线观看网站| 一本一本大道香蕉久在线播放| 亚洲日韩在线满18点击进入| 日日摸夜夜爽无码| 伊人久综合| 亚洲一级毛片在线播放| 亚洲大尺码专区影院| 日韩中文精品亚洲第三区| 欧美97欧美综合色伦图| 激情影院内射美女| 国产福利影院在线观看| 99视频全部免费| 欧美激情福利| 四虎永久在线视频| 91亚洲免费视频| 日韩精品无码一级毛片免费| WWW丫丫国产成人精品| 国产网站一区二区三区| 亚洲欧美h| 自慰高潮喷白浆在线观看| 亚洲一区二区三区麻豆| 香蕉久久国产超碰青草| 97色伦色在线综合视频| 在线观看亚洲成人| 亚洲天堂网视频| av午夜福利一片免费看| 国产亚洲现在一区二区中文| 日韩欧美在线观看| 亚洲国产亚洲综合在线尤物| 国产精品原创不卡在线| 99re免费视频| 呦系列视频一区二区三区| 国产精品hd在线播放| 日本www在线视频| 国产超碰一区二区三区| 人妻少妇久久久久久97人妻| 欧美在线视频a|