鬼佬大哥大
  • / 9
  • 下載費用:30 金幣  

一種基于完整性驗證的凈室實時監控方法.pdf

摘要
申請專利號:

CN201510670209.3

申請日:

2015.10.15

公開號:

CN105205391A

公開日:

2015.12.30

當前法律狀態:

授權

有效性:

有權

法律詳情: 授權|||實質審查的生效IPC(主分類):G06F 21/53申請日:20151015|||公開
IPC分類號: G06F21/53(2013.01)I 主分類號: G06F21/53
申請人: 中南大學
發明人: 王國軍; 羅恩韜; 孟大程; 張少波; 朱小玉; 周雷
地址: 410083 湖南省長沙市岳麓區麓山南路932號
優先權:
專利代理機構: 長沙市融智專利事務所 43114 代理人: 黃美成
PDF完整版下載: PDF下載
法律狀態
申請(專利)號:

CN201510670209.3

授權公告號:

||||||

法律狀態公告日:

2018.08.07|||2016.01.27|||2015.12.30

法律狀態類型:

授權|||實質審查的生效|||公開

摘要

本發明公開了一種基于完整性驗證的凈室實時監控方法,通過對用戶虛擬機的完整性檢測和對用戶程序的完整性驗證,來保證虛擬機的安全。對用虛擬機的監控主要是監控虛擬機的進程、內核模塊以及動態庫的完整性,通過實時監測虛擬機的運行狀態來保證虛擬機不被篡改,徹底的阻止了用戶未經授權的行為,保證云計算環境下的用戶虛擬機的安全運行,并且保護虛擬機中應用程序的安全。

權利要求書

權利要求書
1.  一種基于完整性驗證的凈室實時監控方法,其特征在于,包括以下幾個步驟:
步驟1:在服務器上安裝可信虛擬監視器,利用所述可信虛擬監視器提取服務器初始數據,并計算服務器初始數據的哈希函數值,將服務器初始數據以其對應的哈希函數值備份到服務器中的可信列表中;
所述服務器初始數據包括服務器的系統文件和進程數據;所述系統文件包括文件類型、文件名和文件大小;進程數據包括該進程的進程名、線程數量和線程峰值數量;
所述可信列表用于保存可信任的系統數據、可信任的虛擬機信息以及可信任的用戶程序信息;
步驟2:在可信虛擬監視器中安裝虛擬機陷入程序,利用虛擬機陷入程序的sh_page_fault函數獲得陷入可信虛擬監視器的虛擬機的進程、內核模塊及動態庫;
所述虛擬機陷入程序的安裝是通過將Vmx.c文件中的vmx_vmexit_handler函數的返回地址修改為非法地址完成;
步驟3:在可信虛擬機中運行完整性測量代理,對步驟2獲取的虛擬機完整性進行測量,如果虛擬機完整,則進入步驟4,否則,返回步驟2,等待虛擬機陷入程序獲取陷入可信虛擬監視器的虛擬機;
步驟4:計算步驟2所獲取的虛擬機的進程、內核模塊和動態庫的哈希值,并與步驟1所述可信列表中的數據進行比對;
若該虛擬機對應的哈希值存在于可信列表中,則continue函數修改guest_rip為原來的地址使虛擬機正常運行,進入步驟5,否則,調用kill函數終止虛擬機的運行,返回步驟2,等待虛擬機陷入程序獲取陷入可信虛擬監視器的虛擬機;
步驟5:在終端安裝應用程序監視器,截獲用戶程序產生的系統調用,得到傳遞給系統調用的全部參數;
步驟6:在終端運行完整性測量代理,對步驟5所獲取程序的事件類型、事件參數、運行程序的指令計算哈希值;
步驟7:使用netlink創建套接字將步驟6得到的哈希值數據發送到服務器,與服務器的可信列表中的項進行比對;
若步驟5截獲的程序對應的哈希值存在于服務器的可信列表中,則調用continue函數繼續用戶進程執行,并允許用戶進程進入步驟2所述虛擬機中運行,否則調用TerminateProcess函數終止程序的運行。

說明書

說明書一種基于完整性驗證的凈室實時監控方法
技術領域
本發明屬于計算機科學與技術領域,特別涉及一種基于完整性驗證的凈室實時監控方法。
背景技術
在云計算飛速發展的今天,數據的安全問題越來越嚴重,在使用凈室保證計算安全的同時,使用凈室保證用戶程序的安全性也是一項重要的任務。目前實現應用程序的監控和數據的檢測技術已經發展地非常豐富。然而對于虛擬機運行中的完整性檢測仍然不夠完善。在遠程服務器上,由于應用程序難以管理,以及網絡傳輸的不安全,可能導致用戶程序或者虛擬機被篡改,一旦這些被篡改過的程序進入到凈室,就會泄露用戶的隱私,甚至造成服務器崩潰等諸多問題,我們需要一種凈室實時監控技術,通過該技術能夠實時監控虛擬機的運行狀態,保證虛擬機的完整和安全,并在此基礎上,對進入虛擬機運行的應用程序進行監測,保證程序的合法運行,從而保障虛擬機和用戶程序運行環境的安全。
凈室實時監控技術是在凈室云計算的基礎上實施的,在凈室云理論中計算執行環境分為“服務態”和“凈室態”,用戶簽訂安全服務協議后執行環境就會切換到凈室態,凈室態的執行環境只面向該用戶開放。
通常在虛擬機的監控方法都是基于主機的完整性檢測,這種方法是采用在主機上安裝監控軟件,當用戶程序和監控軟件同時運行時,通過監控軟件來記錄程序運行狀態,從而檢驗程序是否被篡改。目前典型的技術是完整性度量架構,在該技術執行下,操作系統會從內核初始化開始,對運行在操作系統上的應用程序和內核模塊進行實時驗證。由于這種架構不能防止攻擊者對安全列表的修改,需要采用遠程驗證來檢測列表是否被修改,因此這種方法所存在的問題是完整性度量軟件和用戶程序同時運行在同一環境下,這就會導致度量軟件的暴露,攻擊者很有可能通過攻擊度量軟件和度量列表來破壞完整性度量。
發明內容
本發明提供了一種對用戶虛擬機的凈室實時監控方法,來阻止用戶未經授權的行為,保證云計算環境下的用戶虛擬機的安全運行,并且保護虛擬機中應用程序的安全。
一種基于完整性驗證的凈室實時監控方法,包括以下幾個步驟:
步驟1:在服務器上安裝可信虛擬監視器,利用所述可信虛擬監視器提取服務器初始數據,并計算服務器初始數據的哈希函數值,將服務器初始數據以其對應的哈希函數值備份到服務器中的可信列表中;
所述服務器初始數據包括服務器的系統文件和進程數據;所述系統文件包括文件類型、 文件名和文件大小;進程數據包括該進程的進程名、線程數量和線程峰值數量;
所述可信列表用于保存可信任的系統數據、可信任的虛擬機信息以及可信任的用戶程序信息;
步驟2:在可信虛擬監視器中安裝虛擬機陷入程序,利用虛擬機陷入程序的sh_page_fault函數獲得陷入可信虛擬監視器的虛擬機的進程、內核模塊及動態庫;
所述虛擬機陷入程序的安裝是通過將Vmx.c文件中的vmx_vmexit_handler函數的返回地址修改為非法地址完成;
步驟3:在可信虛擬機中運行完整性測量代理,對步驟2獲取的虛擬機完整性進行測量,如果虛擬機完整,則進入步驟4,否則,返回步驟2,等待虛擬機陷入程序獲取陷入可信虛擬監視器的虛擬機;
所述完整性測量代理是可信虛擬管理器中的組件;
步驟4:計算步驟2所獲取的虛擬機的進程、內核模塊和動態庫的哈希值,并與步驟1所述可信列表中的數據進行比對;
若該虛擬機對應的哈希值存在于可信列表中,則continue函數修改guest_rip為原來的地址使虛擬機正常運行,進入步驟5,否則,調用kill函數終止虛擬機的運行,返回步驟2,等待虛擬機陷入程序獲取陷入可信虛擬監視器的虛擬機;
步驟5:在終端安裝應用程序監視器,截獲用戶程序產生的系統調用,得到傳遞給系統調用的全部參數;
步驟6:在終端運行完整性測量代理,對步驟5所獲取程序的事件類型、事件參數、運行程序的指令計算哈希值;
步驟7:使用netlink創建套接字將步驟6得到的哈希值數據發送到服務器,與服務器的可信列表中的項進行比對;
若步驟5截獲的程序對應的哈希值存在于服務器的可信列表中,則調用continue函數繼續用戶進程執行,并允許用戶進程進入步驟2所述虛擬機中運行,否則調用TerminateProcess函數終止程序的運行。
有益效果
本發明提供了一種基于完整性驗證的凈室實時監控方法,通過對用戶虛擬機的完整性檢測和對用戶程序的完整性驗證,來保證虛擬機的安全。對用虛擬機的監控主要是監控虛擬機的進程、內核模塊以及動態庫的完整性,通過實時監測虛擬機的運行狀態來保證虛擬機不被篡改,徹底的阻止了用戶未經授權的行為,保證云計算環境下的用戶虛擬機的安全運行,并且 保護虛擬機中應用程序的安全。
附圖說明
圖1為本發明所述方法的流程圖;
圖2為服務器監控模型圖;
圖3為終端監控模型圖。
具體實施方式
下面結合具體實例和說明書附圖對本發明做進一步的說明。
在本實例中遠程服務器使用Ubuntul4.04作為操作系統,數據庫為MySQL。客戶端為Windows7操作系統的臺式機。本實例服務器裝備了能夠遠程出發系統管理終端的頻帶外信道,利用系統管理模式、智能平臺管理接口以及底板管理控制器,客戶端通過遠程認證的方式對虛擬機的運行過程進行動態完整性檢測。
一種基于完整性驗證的凈室實時監控方法,如圖1所示,包括以下步驟:
步驟1:在服務器上安裝可信虛擬監視器,利用所述可信虛擬監視器提取服務器初始數據,并計算服務器初始數據的哈希函數值,將服務器初始數據以其對應的哈希函數值備份到服務器中的可信列表中;服務器監控模型如圖2所示;
所述服務器初始數據包括服務器的系統文件和進程數據;所述系統文件包括文件類型、文件名和文件大小;進程數據包括該進程的進程名、線程數量和線程峰值數量;
所述可信列表用于保存可信任的系統數據、可信任的虛擬機信息以及可信任的用戶程序信息;
通過調用以下函數來獲取服務器信息。
GetDriveType(lpRootPathName:PChar):UINT;返回指定驅動器的類型。
GetDiskFreeSpace(lpRootPathName:PChar;varlpSectorsPerCluster,lpBytesPerSector,lpNumberOfFreeClusters,lpTotalNumberOfClusters:DWORD):BOOL;返回指定驅動器的總簇數、剩余簇數及每簇扇區數、每扇區字節數,從而可以計算出總容量和剩余空間。
步驟2:在可信虛擬監視器中安裝虛擬機陷入程序,利用虛擬機陷入程序的sh_page_fault函數獲得陷入可信虛擬監視器的虛擬機的進程、內核模塊及動態庫;
所述虛擬機陷入程序的安裝是通過將Vmx.c文件中的vmx_vmexit_handler函數的返回地 址修改為非法地址完成;
虛擬機陷入程序的安裝方法:打開Vmx.c文件并修改vmx_vmexit_handler函數中的返回地址為非法地址。然后在sh_page_fault函數獲取陷入虛擬機的進程、內核模塊、動態庫。
在本實例中可信虛擬監視器采用Xen,用戶要獲取虛擬機的信息,只需要通過Xencontrol和Xenstore這兩個接口就能獲得虛擬機的信息。
Xencontrol是Xen提供的控制接口,該接口只能被Dom0使用,用于幫助Dom0控制和管理其他的Domain。通過Xencontrol,Dom0不僅能夠創建、銷毀、Domain,控制Domain的運行、暫停、恢復以及遷移,還能夠實現對其他Domain的CPU調度、內存分配以及設備訪問。
XenStore是Xen提供的一個域間共享的存儲系統,它以字符串形式存放了管理程序和前、后端驅動程序的配置信息。XenStore的存儲結構類似于Dom樹:每一個節點(Node)有一個字符串值(Value),并且可以有多個子節點。xenstored在根(/)下有三個子目錄,vm,local(實際上是/local/domain)和tool。vm存放虛擬機管理信息。tool暫時沒有數據。而/local/domain存放了活動虛擬機配置和驅動信息。
步驟3:在可信虛擬機中運行完整性測量代理,對步驟2獲取的虛擬機完整性進行測量,如果虛擬機完整,則進入步驟4,否則,返回步驟2;
本實例實施中,服務器運行三個虛擬機分別為test0,test1,test2;其中test0和test1是完整的,test2缺少config.xml(虛擬機的硬件配置),依次運行三個虛擬機,test0和test1正常運行,test2無法運行;
步驟4:計算步驟2所獲取的虛擬機的進程、內核模塊和動態庫的哈希值,并與步驟1所述可信列表中的數據進行比對;
若該虛擬機對應的哈希值存在于可信列表中,則continue函數修改guest_rip為原來的地址使虛擬機正常運行,進入步驟5,否則,調用kill函數終止虛擬機的運行,返回步驟2;
kill函數說明:
intkill(pid_tpid,intsig);
kill()可以用來發送參數sig指定的信號給參數pid指定的進程。參數pid有幾種情況:
pid>0將信號傳給進程識別碼為pid的進程。
pid=0將信號傳給和目前進程相同進程組的所有進程
pid=-1將信號廣播傳送給系統內所有的進程
pid<0將信號傳給進程組識別碼為pid絕對值的所有進程
返回值執行成功則返回0,如果有錯誤則返回-1。
continue函數說明:
BoolContinue(pid_tpid,Adressadress);
將進程識別碼為pid的進程返回地址修改為adress。
在實例實施中,只有test0在可信列表中,test0能夠正常運行,test1運行被中止。
步驟6:在終端運行完整性測量代理,對步驟5所獲取程序的事件類型、事件參數、運行程序的指令計算哈希值;終端監控模型如圖3所示;
所述應用程序監視器在Windows系統上是采用APIHOOK機制,設置全局鉤子來截獲用戶程序產生的系統調用。
所述系統調用參數包含程序的完整路徑。
在Windows下當用戶程序運行后會產生系統調用CreateProcess函數。該函數的結構如下:
BOOLCreateProcess(
LPCTSTRlpApplicationName,
LPTSTRlpCommandLine,
LPSECURITY_ATTRIBUTESlpProcessAttributes。
LPSECURITY_ATTRIBUTESlpThreadAttributes,
BOOLbInheritHandles,
DWORDdwCreationFlags,
LPVOIDlpEnvironment,
LPCTSTRlpCurrentDirectory,
LPSTARTUPINFOlpStartupInfo,
LPPROCESS_INFORMATIONlpProcessInformation
);
由于要監視所有應用程序的TerminateProcess()和WriteProcessMemory()調用,因此需要設置全局鉤子。
全局鉤子的安裝方法:首先通過調用SetWindowHookEx()來安裝一個全局鉤子,鉤子安裝成功后,操作系統會把DLL映射到被攔截的進程的地址空間中。在攔截到call指令以后,使用JMP指令概念函數體的前幾個字節來重定向到自定義的API函數中去執行,從而截獲系統調用。
SetWindowHookEx函數結構如下:
HHOOKSetWindowsHookEx(
IntidHook,
HOOKPROClpfn,
HINSTANCEhMod,
DWORDdwThreadId
);
步驟7:使用netlink創建套接字將步驟6得到的哈希值數據發送到服務器,與服務器的可信列表中的項進行比對;
若步驟5截獲的程序對應的哈希值存在于服務器的可信列表中,則調用continue函數繼續用戶進程執行,并允許用戶進程進入步驟2所述虛擬機中運行,否則調用TerminateProcess函數終止程序的運行。
TerminateProcess函數說明:
BOOLTerminateProcess(HANDLEhProcess,UINTuExitCode);
其中參數hProcess表示要終止(殺死)進程的句柄。參數uExitCode是設置進程的退出值。
返回值:如果失敗將返回FALSE(0),而成功將返回一個非零值。
在實例實施中,終端運行記事本程序出現錯誤,將該程序的哈希值更新到服務器中,記事本程序能正常運行。

關 鍵 詞:
一種 基于 完整性 驗證 凈室 實時 監控 方法
  專利查詢網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:一種基于完整性驗證的凈室實時監控方法.pdf
鏈接地址:http://www.wwszu.club/p-6405699.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服客服 - 聯系我們

[email protected] 2017-2018 zhuanlichaxun.net網站版權所有
經營許可證編號:粵ICP備17046363號-1 
 


收起
展開
鬼佬大哥大