亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Windows內(nèi)核的用戶行為收集解決方案

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

        趙曉華 趙樹(shù)升

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

        關(guān)鍵詞:Windows內(nèi)核;進(jìn)程操作;上網(wǎng)行為;文件行為

        中圖分類號(hào):TP309 文獻(xiàn)標(biāo)識(shí)碼:A

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

        1 引言(Introduction)

        隨著計(jì)算機(jī)在各行各業(yè)的重要性日益凸顯,如何規(guī)范工作人員的行為,提高工作效率已成為各公司機(jī)構(gòu)需要解決的問(wèn)題。采用強(qiáng)有力的技術(shù)手段,實(shí)時(shí)查看用戶上網(wǎng)行為,以及用戶進(jìn)程操作,確保員工高效、安全的使用計(jì)算機(jī)。

        本文基于Windows內(nèi)核技術(shù),通過(guò)采用一系列的技術(shù)手段,收集用戶上網(wǎng)、進(jìn)程,以及文件操作行為,可用于分析用戶是否有違規(guī)行為。

        2 系統(tǒng)結(jié)構(gòu)(System structure)

        系統(tǒng)結(jié)構(gòu)圖如圖1所示,由監(jiān)控客戶端、Windows服務(wù)器組成,一個(gè)服務(wù)器可以接收多臺(tái)PC客戶端收集的信息??蛻舳诉\(yùn)行監(jiān)控程序能夠?qū)γ總€(gè)客戶端用戶的上網(wǎng)行為進(jìn)行即時(shí)的收集。Windows服務(wù)器部署在與監(jiān)控客戶端同一局域網(wǎng),在Windows服務(wù)器上運(yùn)行管理程序。監(jiān)控客戶端程序和Windows服務(wù)器的管理服務(wù)模塊通信采用了C/S架構(gòu)。下面對(duì)這兩個(gè)功能模塊進(jìn)行簡(jiǎn)要的介紹。

        (1)監(jiān)控客戶端

        監(jiān)控客戶端部署在局域網(wǎng)內(nèi)需要被監(jiān)控的各計(jì)算機(jī)上,它的主要功能是收集用戶的網(wǎng)絡(luò)和進(jìn)程操作行為。

        采用進(jìn)程回調(diào)方式捕獲進(jìn)程調(diào)用,記錄進(jìn)程創(chuàng)建、進(jìn)程退出等。采用基于Minifilter(Mini-Filter Installable File System文件系統(tǒng)微過(guò)濾驅(qū)動(dòng))的文件過(guò)濾技術(shù),記錄文件的打開(kāi)、讀、寫(xiě)、重命名操作。WFP(Windows Filtering Platform Windows過(guò)濾平臺(tái))對(duì)TCP/IP協(xié)議棧進(jìn)行全方位的過(guò)濾攔截,接收發(fā)送的TCP數(shù)據(jù)包,分析用戶的網(wǎng)絡(luò)行為。

        為了防止客戶端監(jiān)控程序被非法關(guān)閉或異常退出,系統(tǒng)采用一系列自我保護(hù)措施。包括注冊(cè)表回調(diào)防止刪除注冊(cè)表啟動(dòng)項(xiàng)、基于IRP((I/O Request Package)的獨(dú)占方式打開(kāi)程序、防止加載專業(yè)工具刪除監(jiān)控程序。

        (2)服務(wù)器端

        維護(hù)所有客戶端監(jiān)控程序的工作狀態(tài),采用內(nèi)核TDI(Transport Driver Interface傳輸層接口)將客戶端收集到的網(wǎng)絡(luò)和進(jìn)程操作行為記錄到文件,方便對(duì)歷史記錄查詢。

        3 相關(guān)技術(shù)概述(Overview of related technologies)

        3.1 進(jìn)程回調(diào)

        采用進(jìn)程回調(diào)記錄進(jìn)程創(chuàng)建、退出等操作。當(dāng)一個(gè)進(jìn)程被創(chuàng)建或者刪除時(shí),一系列的例程將會(huì)被調(diào)用。PsSetCreateProcessNotifyRoutine進(jìn)程回調(diào)函數(shù)的原型如下:NTSTATUS PsSetCreateProcessNotifyRoutine(

        IN PCREATE_PROCESS_NOTIFY_ROUTINE NotifyRoutine,

        IN BOOLEAN Remove

        );

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

        PCREATE_PROCESS_NOTIFY_ROUTINE為回調(diào)指針,聲明如下:

        VOID(*PCREATE_PROCESS_NOTIFY_ROUTINE)(

        IN HANDLE ParentId,

        IN HANDLE ProcessId,

        IN BOOLEAN Create

        );

        ParentId和ProcessId用于確定進(jìn)程,Create參數(shù)表明進(jìn)程是創(chuàng)建還是刪除。當(dāng)Create為True時(shí),例程在新創(chuàng)建的進(jìn)程的初始化線程被創(chuàng)建后被調(diào)用。當(dāng)Create為False時(shí),例程在進(jìn)程的最后一個(gè)線程被關(guān)閉,進(jìn)程的地址空間將被釋放時(shí)調(diào)用。當(dāng)進(jìn)程被刪除時(shí),例程運(yùn)行在進(jìn)程的最后一個(gè)線程中。

        3.2 基于Minifilter的文件過(guò)濾

        MiniFilter相對(duì)于傳統(tǒng)的sfilter方式,Minifilter編寫(xiě)微小而簡(jiǎn)單。速度增加的同時(shí),不同軟件之間兼容性也得到了提升[1]。

        (1)文件過(guò)濾中對(duì)文件的讀寫(xiě)操作進(jìn)行過(guò)濾

        注冊(cè)微過(guò)濾器時(shí),填寫(xiě)微過(guò)濾器注冊(cè)結(jié)構(gòu)FLT_REGISTRATION,在FLT_OPERATION_REGISTRATION域中,定義文件打開(kāi)、文件讀IRP_MJ_READ、文件寫(xiě)IRP_MJ_WRITE、文件刪除IRP_MJ_SET_INFORMATION、文件重命名等文件操作的回調(diào)函數(shù)NPPreCreate、NPPostRead、NPPreWrite、NPPreDelete、NPPRERENAME。

        (2)獲取文件操作信息

        在回調(diào)函數(shù)中NPPreXXX在請(qǐng)求完成之前進(jìn)行處理,攔截請(qǐng)求本身。在回調(diào)數(shù)據(jù)包FLT_CALLBACK_DATA中包含了請(qǐng)求相關(guān)的全部信息,獲取到打開(kāi)的文件名、操作的進(jìn)程號(hào)、文件路徑等等。NPPostXXX在請(qǐng)求完成之后,對(duì)返回結(jié)果進(jìn)行攔截。

        3.3 基于WFP的網(wǎng)絡(luò)傳輸信息

        WFP由Filter Engine(過(guò)濾引擎)、Callout Driver、Filter組成[2]。Filter Engine的內(nèi)核模式可以對(duì)TCP/IP協(xié)議棧進(jìn)行全方位的過(guò)濾攔截。Callout Driver是WFP擴(kuò)展功能的一種機(jī)制。Callout Driver由一組Callout函數(shù)組成,其中,ClassifyFn函數(shù)處理收到的網(wǎng)絡(luò)數(shù)據(jù),例如端口號(hào)、ip地址等。Filter包含過(guò)濾條件,指定過(guò)濾器的action類型、處理action的Callout。

        WFP的過(guò)濾過(guò)程[3]:首先,在過(guò)濾引擎(Filter Engine)中注冊(cè)Callout,在Callout處理函數(shù)classifyFn函數(shù)中處理數(shù)據(jù)。然后,初始化Filter,為Filter添加過(guò)濾條件,指示哪些數(shù)據(jù)符合filter的要求,把數(shù)據(jù)交給Callout處理。處理網(wǎng)絡(luò)數(shù)據(jù)包的classifyFn函數(shù),函數(shù)原型如下:

        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_的結(jié)構(gòu)體

        typedef struct FWPS_INCOMING_VALUES0_ {

        UINT16 layerId;

        UINT32 valueCount;

        FWPS_INCOMING_VALUE0*incomingValue;

        } FWPS_INCOMING_VALUES0;

        (1)獲取網(wǎng)絡(luò)連接的端口號(hào)

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

        通過(guò)inFixedValues->incomingValue[FWPS_FIELD_ALE_FLOW_ESTAB-

        LISHED_V4_IP_LOCAL_PORT].value.uint16獲取發(fā)送方端口。

        通過(guò)inFixedValues->incomingValue[FWPS_FIELD_ALE_FLOW_ESTAB-

        LISHED_V4_IP_LOCAL_ADDRESS].value.uint32獲取發(fā)送方IP。

        通過(guò)inMetaValues->processId獲取進(jìn)程id。

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

        在classifyFn處理函數(shù)中l(wèi)ayerData參數(shù)包含了要傳輸?shù)臄?shù)據(jù)。TCP數(shù)據(jù)對(duì)應(yīng)的數(shù)據(jù)類型為FWPS_STREAM_CALLOUT_IO_PACKET。

        streamPacket=(FWPS_STREAM_CALLOUT_IO_PACKET*)packet;

        streamBuffer=streamPacket->streamData;

        獲取緩沖區(qū)的內(nèi)容:

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

        此時(shí)已經(jīng)獲取了streamBuffer中的內(nèi)容,對(duì)tmpStream進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換即可進(jìn)行數(shù)據(jù)分析。

        3.4 自我保護(hù)

        在服務(wù)器端、客戶端安裝exe程序執(zhí)行收集,要防止程序被修改或刪除,需要采取一系列的自我保護(hù)措施。本文采用三種方式,采用注冊(cè)表回調(diào)方式防止刪除注冊(cè)表啟動(dòng)項(xiàng),基于IRP實(shí)現(xiàn)獨(dú)占方式打開(kāi)文件,防止加載專業(yè)工具刪除程序。

        3.4.1 注冊(cè)表回調(diào)防止刪除注冊(cè)表啟動(dòng)項(xiàng)

        內(nèi)核模式驅(qū)動(dòng)程序調(diào)用CmRegisterCallback函數(shù)注冊(cè)一個(gè)回調(diào),在配置管理每一次注冊(cè)表操作的信息都會(huì)被填充到REG_XXX_KEY_INFORMANTION結(jié)構(gòu)體里?;卣{(diào)例程能夠阻止注冊(cè)表操作[4]。

        CmRegisterCallback函數(shù)原型如下:

        NTKERNELAPI NTSTATUS CmRegisterCallback(

        PEX_CALLBACK_FUNCTION Function,

        PVOID Context,

        PLARGE_INTEGER Cookie

        );

        其中,F(xiàn)unction是回調(diào)函數(shù)指針,Context作為回調(diào)函數(shù)的參數(shù),Cookie是回調(diào)的句柄。EX_CALLBACK_FUNCTION的原型如下:

        EX_CALLBACK_FUNCTION ExCallbackFunction;

        NTSTATUS ExCallbackFunction(

        PVOID CallbackContext,

        PVOID Argument1,

        PVOID Argument2)

        Argument1記錄操作類型,Argument2記錄有關(guān)操作信息的結(jié)構(gòu)指針。若已經(jīng)注冊(cè)了注冊(cè)表回調(diào),當(dāng)有刪除注冊(cè)表項(xiàng)的操作發(fā)生時(shí),Argument1為RegNtPreDeleteKey,Argument2指向一個(gè)REG_DELETE_KEY_INFORMATION結(jié)構(gòu)體的指針。此函數(shù)如果返回STATUS_SUCCESS,注冊(cè)表操作就會(huì)繼續(xù)執(zhí)行,如果返回STATUS_ACCESS_DENIED,注冊(cè)表操作就不會(huì)執(zhí)行了。

        3.4.2 基于IRP的獨(dú)占方式打開(kāi)程序

        當(dāng)上層應(yīng)用程序操作某個(gè)設(shè)備時(shí),I/O管理器會(huì)將I/O請(qǐng)求轉(zhuǎn)化成IRP(I/O Request Package)數(shù)據(jù)結(jié)構(gòu)對(duì)象和一個(gè)IRP_STACK_LOCATION數(shù)據(jù)結(jié)構(gòu)對(duì)象數(shù)組,IRP中的CurrentStackLocation字符指向IRP_STACK_LOCATION中的某一個(gè)元素。IRP_STACK_LOCATION數(shù)組中的每一個(gè)元素由上一層驅(qū)動(dòng)負(fù)責(zé)填充。

        打開(kāi)文件函數(shù)原型如下:

        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,

        );

        其中,F(xiàn)ileObject是指向文件的指針,F(xiàn)ilePath指明文件路徑,IoStatusBlock是指向結(jié)構(gòu)體IO_STATUS_BLOCK的指針,當(dāng)打開(kāi)文件時(shí),結(jié)構(gòu)體中Information值為FILE_OPENED。DesiredAccess指定訪問(wèn)權(quán)限,F(xiàn)ileAttributes表明文件對(duì)象屬性,將文件屬性設(shè)置為FILE_SHARE_READ共享讀。設(shè)備和中間層驅(qū)動(dòng)一般設(shè)置ShareAccess為0,表示調(diào)用者以獨(dú)占方式打開(kāi)文件。CreateDisposition指定如果文件存在或不存在時(shí)所做的操作。CreateOptions指定驅(qū)動(dòng)創(chuàng)建或者打開(kāi)文件時(shí)需要應(yīng)用的選項(xiàng)。

        3.4.3 防止加載專業(yè)工具刪除

        專業(yè)工具強(qiáng)制刪除文件,通?;贗RP來(lái)完成的:構(gòu)造IRP,先設(shè)置文件的屬性,將SECTION_OBJECT_POINTERS結(jié)構(gòu)的DataSectionObject和ImageSectionObject兩個(gè)域清空,然后刪除文件。文件以獨(dú)占方式打開(kāi)并且只共享讀,即使專業(yè)工具使用IRP也不能刪除。

        3.5 基于TDI的信息上傳

        基于TDI將用戶的進(jìn)程操作、網(wǎng)絡(luò)行為、文件讀寫(xiě)等信息從客戶端內(nèi)核上傳服務(wù)器。TDI是一套接口的集合,這套接口連著socket和協(xié)議驅(qū)動(dòng),由協(xié)議層驅(qū)動(dòng)實(shí)現(xiàn)。傳輸?shù)牟襟E如下:

        (1)建立并連接TDI

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

        szIpAddress表示服務(wù)器端ip,Port表示服務(wù)器端端口。

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

        將客戶端機(jī)器的mac地址,以及客戶端機(jī)器的網(wǎng)絡(luò)行為、文件讀寫(xiě)、進(jìn)程操作等信息發(fā)送給服務(wù)器端。

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

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

        其中,pData表示傳輸?shù)臄?shù)據(jù)指針。

        4 結(jié)論(Conclusion)

        網(wǎng)絡(luò)行為的結(jié)果如圖2所示。按行顯示網(wǎng)絡(luò)操作,每行內(nèi)容為網(wǎng)絡(luò)操作發(fā)生時(shí)間、進(jìn)程號(hào)、訪問(wèn)的網(wǎng)絡(luò)ip、端口號(hào)、訪問(wèn)的網(wǎng)址。

        進(jìn)程創(chuàng)建、退出,以及文件的創(chuàng)建、讀寫(xiě)操作等收集的結(jié)果如圖3所示。按行顯示操作,每行內(nèi)容為操作發(fā)生時(shí)間、標(biāo)識(shí)、操作的進(jìn)程號(hào)、文件路徑。其中,標(biāo)識(shí)有進(jìn)程PROCESS、文件寫(xiě)WRITE、進(jìn)程創(chuàng)建PCREATE、文件讀READ、文件刪除DELETE等。

        本文完全采用基于內(nèi)核的方式,沒(méi)有監(jiān)控程序和服務(wù)器端進(jìn)程。也無(wú)DLL支持,可靠性好、安全性高。

        參考文獻(xiàn)(References)

        [1] 譚文,楊瀟,邵堅(jiān)磊.寒江獨(dú)釣:Windows內(nèi)核安全編程[M].北京:電子工業(yè)出版社,2009.

        [2] 黃君勝.基于WFP的終端信息泄漏監(jiān)控系統(tǒng)的研究與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,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的注冊(cè)表監(jiān)控和過(guò)濾技術(shù)[J].黑客防線,2009(7):82-85.

        作者簡(jiǎn)介:

        趙曉華(1990-),女,碩士,助教.研究領(lǐng)域:軟件開(kāi)發(fā).

        趙樹(shù)升(1968-),男,碩士,副教授.研究領(lǐng)域:安全操作系統(tǒng)內(nèi)核.

        av熟妇一区二区三区| 毛片av在线播放亚洲av网站| 天堂女人av一区二区| 中文字幕一区二区三区日日骚| 国产亚洲精品成人aa片新蒲金| 性高朝久久久久久久| 精品久久久久中文字幕APP| 人妖与人妖免费黄色片| av网站免费线看精品| 国产精品igao视频网| 一本大道久久东京热无码av| 亚洲五码av在线观看| 成人无码一区二区三区| 国产精品欧美成人| 人妖另类综合视频网站| 亚洲av本道一本二本三区| 欧美成人午夜免费影院手机在线看| av无码免费永久在线观看| 亚洲欧美成人中文在线网站| 色婷婷亚洲精品综合影院| 国产夫妇肉麻对白| 亚洲熟妇色xxxxx欧美老妇y| 国产杨幂AV在线播放| 蜜桃传媒网站在线观看| 亚洲精品www久久久| 亚洲综合欧美在线| 午夜国产在线精彩自拍视频| 五月色婷婷丁香无码三级| 亚洲男人的天堂在线播放 | 中文无码久久精品| 亚洲综合色区无码专区| 最新国产精品国产三级国产av| 999精品无码a片在线1级| 欧美丰满大乳高跟鞋| 国内精品九九久久精品小草| 日本在线一区二区三区视频观看 | 毛片a级毛片免费观看| 国产激情在观看| 久久久精品网站免费观看| 大ji巴好深好爽又大又粗视频| 美女高潮无遮挡免费视频|