国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種軟件看門狗系統(tǒng)及方法

      文檔序號:6537779閱讀:249來源:國知局
      一種軟件看門狗系統(tǒng)及方法
      【專利摘要】本發(fā)明提供了一種軟件看門狗系統(tǒng)及方法,該系統(tǒng)包括:基于內(nèi)核的虛擬機(jī)KVM,以及安裝于KVM上的語義重構(gòu)模塊、故障檢測模塊、策略模塊、恢復(fù)模塊;KVM上的虛擬機(jī)監(jiān)控器,用于獲取物理主機(jī)的內(nèi)存信息;語義重構(gòu)模塊,用于根據(jù)虛擬機(jī)監(jiān)控器獲取的物理主機(jī)的內(nèi)存信息重構(gòu)出客戶虛擬機(jī)上的語義信息;故障檢測模塊,用于根據(jù)語義重構(gòu)模塊重構(gòu)出的客戶虛擬機(jī)上的語義信息檢測客戶虛擬機(jī)的隱藏進(jìn)程、關(guān)鍵用戶進(jìn)程和系統(tǒng)調(diào)用的完整性,輸出檢測結(jié)果;策略模塊,用于根據(jù)檢測結(jié)果和用戶配置的恢復(fù)策略,生成恢復(fù)指令;恢復(fù)模塊,用于根據(jù)策略模塊產(chǎn)生的恢復(fù)指令進(jìn)行恢復(fù)操作。本發(fā)明的系統(tǒng)及方法,能夠同時監(jiān)控多個客戶虛擬機(jī),操作簡單,處理高效。
      【專利說明】一種軟件看門狗系統(tǒng)及方法
      【技術(shù)領(lǐng)域】
      [0001]本發(fā)明涉及安全【技術(shù)領(lǐng)域】,尤其涉及一種軟件看門狗系統(tǒng)及方法。
      【背景技術(shù)】
      [0002]傳統(tǒng)的基于硬件的看門狗系統(tǒng),在系統(tǒng)進(jìn)入不可恢復(fù)錯誤時,能產(chǎn)生一個不可屏蔽中斷來通知系統(tǒng)自動重啟,只有相應(yīng)的復(fù)位信號才能清除它。以此來達(dá)到保證系統(tǒng)的高可用性,主要應(yīng)用領(lǐng)域是嵌入式系統(tǒng)。傳統(tǒng)的基于硬件的看門狗系統(tǒng),只能檢測單個進(jìn)程,造價較高,功能單一,不夠通用,必須提供編程接口來進(jìn)行“喂狗”操作,增加了系統(tǒng)的復(fù)雜性和耦合度。

      【發(fā)明內(nèi)容】

      [0003]本發(fā)明提供了一種軟件看門狗系統(tǒng)及方法,能夠同時監(jiān)控多個客戶虛擬機(jī),并且能夠檢測多個進(jìn)程。
      [0004]第一方面,本發(fā)明提供了一種軟件看門狗系統(tǒng),該系統(tǒng)包括:
      [0005]基于內(nèi)核的虛擬機(jī)KVM,以及安裝于KVM上的語義重構(gòu)模塊、故障檢測模塊、策略模塊、恢復(fù)模塊;
      [0006]KVM上的虛擬機(jī) 監(jiān)控器,用于獲取物理主機(jī)的內(nèi)存信息;
      [0007]語義重構(gòu)模塊,用于根據(jù)虛擬機(jī)監(jiān)控器獲取的物理主機(jī)的內(nèi)存信息重構(gòu)出客戶虛擬機(jī)上的語義信息;
      [0008]故障檢測模塊,用于根據(jù)語義重構(gòu)模塊重構(gòu)出的客戶虛擬機(jī)上的語義信息檢測客戶虛擬機(jī)的隱藏進(jìn)程、關(guān)鍵用戶進(jìn)程和系統(tǒng)調(diào)用的完整性,輸出檢測結(jié)果;
      [0009]策略模塊,用于根據(jù)故障檢測模塊的檢測結(jié)果和用戶配置的恢復(fù)策略,生成恢復(fù)指令;
      [0010]恢復(fù)模塊,用于根據(jù)策略模塊產(chǎn)生的恢復(fù)指令進(jìn)行恢復(fù)操作;
      [0011]其中,所述物理主機(jī)包括:一個宿主虛擬機(jī)和至少一個客戶虛擬機(jī),所述宿主虛擬機(jī)為所述KVM。
      [0012]進(jìn)一步地,所述恢復(fù)指令,包括:啟動某個進(jìn)程,終止某個進(jìn)程,啟動虛擬機(jī),重啟虛擬機(jī),從鏡像文件恢復(fù)虛擬機(jī)。
      [0013]進(jìn)一步地,所述策略模塊,還用于根據(jù)用戶輸入的進(jìn)程配置信息確定關(guān)鍵用戶進(jìn)程。
      [0014]第二方面,本發(fā)明提供了一種基于第一方面中任一軟件看門狗系統(tǒng)的檢測方法,該方法包括:
      [0015]KVM上的虛擬機(jī)監(jiān)控器獲取物理主機(jī)的內(nèi)存信息;
      [0016]語義重構(gòu)模塊根據(jù)虛擬機(jī)監(jiān)控器獲取的物理主機(jī)的內(nèi)存信息重構(gòu)出客戶虛擬機(jī)上的語義?目息;
      [0017]故障檢測模塊根據(jù)語義重構(gòu)模塊重構(gòu)出的客戶虛擬機(jī)上的語義信息檢測客戶虛擬機(jī)的隱藏進(jìn)程、關(guān)鍵用戶進(jìn)程和系統(tǒng)調(diào)用的完整性,輸出檢測結(jié)果;
      [0018]策略模塊根據(jù)故障檢測模塊的檢測結(jié)果和用戶配置的恢復(fù)策略,生成恢復(fù)指令;
      [0019]恢復(fù)模塊根據(jù)策略模塊產(chǎn)生的恢復(fù)指令進(jìn)行恢復(fù)操作;
      [0020]其中,所述物理主機(jī)包括:一個宿主虛擬機(jī)和至少一個客戶虛擬機(jī),所述宿主虛擬機(jī)為所述KVM。
      [0021]進(jìn)一步地,所述恢復(fù)指令,包括:啟動某個進(jìn)程,終止某個進(jìn)程,啟動虛擬機(jī),重啟虛擬機(jī),從鏡像文件恢復(fù)虛擬機(jī)。
      [0022]進(jìn)一步地,所述方法還包括,策略模塊根據(jù)用戶輸入的進(jìn)程配置信息確定關(guān)鍵用戶進(jìn)程。
      [0023]通過本發(fā)明實(shí)施例提供的一種軟件看門狗系統(tǒng)及方法,能夠通過一個宿主虛擬機(jī)來同時監(jiān)控多個客戶虛擬機(jī),并且能夠檢測多個進(jìn)程。
      【專利附圖】

      【附圖說明】
      [0024]為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
      [0025]圖1是本發(fā)明實(shí)施例提供的一種軟件看門狗系統(tǒng)的結(jié)構(gòu)示意圖;
      [0026]圖2是本發(fā)明實(shí)施例提供的一種基于實(shí)施例1中的軟件看門狗系統(tǒng)的檢測方法的流程圖。
      【具體實(shí)施方式】
      [0027]為使本發(fā)明實(shí)施例的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚,下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例,基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動的前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
      [0028]實(shí)施例1:
      [0029]在一臺物理主機(jī)上可以同時安裝多個虛擬機(jī),其中一個為宿主虛擬機(jī),其余的為客戶虛擬機(jī),通過宿主虛擬機(jī)能夠?qū)蛻籼摂M機(jī)進(jìn)行監(jiān)控。本發(fā)明提供了一種軟件看門狗系統(tǒng),該系統(tǒng)建立在以宿主虛擬機(jī)為單位的虛擬化系統(tǒng)架構(gòu)上,該系統(tǒng)架構(gòu)將看門狗中的故障檢測恢復(fù)系統(tǒng)放置在被檢測的客戶虛擬機(jī)之外,該系統(tǒng)可以檢測多臺客戶虛擬機(jī)。參見圖1,該系統(tǒng)包括:
      [0030]KVM (Kernel-based Virtual Machine,基于內(nèi)核的虛擬機(jī)),以及安裝于KVM上的語義重構(gòu)模塊101、故障檢測模塊102、策略模塊103、恢復(fù)模塊104 ;
      [0031]KVM上的虛擬機(jī)監(jiān)控器105,用于獲取物理主機(jī)的內(nèi)存信息;
      [0032]語義重構(gòu)模塊101,用于根據(jù)虛擬機(jī)監(jiān)控器105獲取的物理主機(jī)的內(nèi)存信息重構(gòu)出客戶虛擬機(jī)上的語義信息;
      [0033]故障檢測模塊102,用于根據(jù)語義重構(gòu)模塊101重構(gòu)出的客戶虛擬機(jī)上的語義信息檢測客戶虛擬機(jī)的隱藏進(jìn)程、關(guān)鍵用戶進(jìn)程和系統(tǒng)調(diào)用的完整性,輸出檢測結(jié)果;[0034]策略模塊103,用于根據(jù)故障檢測模塊102的檢測結(jié)果和用戶配置的恢復(fù)策略,生成恢復(fù)指令;
      [0035]恢復(fù)模塊104,用于根據(jù)策略模塊103產(chǎn)生的恢復(fù)指令進(jìn)行恢復(fù)操作;
      [0036]其中,所述物理主機(jī)包括:一個宿主虛擬機(jī)和至少一個客戶虛擬機(jī),所述宿主虛擬機(jī)為所述KVM。
      [0037]通過本發(fā)明實(shí)施例提供的一種軟件看門狗系統(tǒng),能夠通過一個宿主虛擬機(jī)來同時監(jiān)控多個客戶虛擬機(jī),并且能夠檢測多個進(jìn)程。
      [0038]所述恢復(fù)指令,包括:啟動某個進(jìn)程,終止某個進(jìn)程,啟動虛擬機(jī),重啟虛擬機(jī),從鏡像文件恢復(fù)虛擬機(jī)。
      [0039]所述策略模塊103,還用于根據(jù)用戶輸入的進(jìn)程配置信息確定關(guān)鍵用戶進(jìn)程。
      [0040]其中,虛擬機(jī)監(jiān)控器負(fù)責(zé)創(chuàng)建抽象層來虛擬化一個物理主機(jī)的硬件并把它劃分成邏輯上隔離的虛擬主機(jī)。虛擬機(jī)監(jiān)控器能夠保證即使被監(jiān)控的虛擬主機(jī)被入侵,也能夠防止進(jìn)一步入侵到擁有特權(quán)級的宿主虛擬機(jī)上的應(yīng)用程序,因此,不可能入侵到虛擬機(jī)故障檢測和恢復(fù)程序。虛擬機(jī)監(jiān)控器為了控制其上的客戶虛擬機(jī),對客戶虛擬機(jī)擁有完全的控制權(quán)限,包括內(nèi)存,CPU寄存器和I/O操作。虛擬機(jī)監(jiān)控器擁有的高優(yōu)先級允許對客戶虛擬機(jī)的完全監(jiān)控,也讓惡意代碼很難逃過監(jiān)測。虛擬機(jī)監(jiān)控器可以監(jiān)督虛擬主機(jī)的操作,能夠干預(yù)請求,例如,特權(quán)級CPU指令,因為它介于客戶虛擬機(jī)和宿主虛擬機(jī)之間。
      [0041]在被監(jiān)控虛擬機(jī)內(nèi)部,檢測系統(tǒng)可以輕易獲取正在執(zhí)行的進(jìn)程、磁盤上文件等操作系統(tǒng)級別的高級語義信息,而在被監(jiān)控虛擬機(jī)外部,檢測系統(tǒng)僅能獲取寄存器值、內(nèi)存數(shù)據(jù)、磁盤塊數(shù)據(jù)或當(dāng)前指令執(zhí)行流等低等級信息,這種語義的斷層影響了檢測功能的有效實(shí)施。為了解決語義斷層的問題,需要重構(gòu)虛擬機(jī)內(nèi)部的高級語義信息。本系統(tǒng)更加關(guān)注進(jìn)程信息的刻畫,如以進(jìn)程控制塊為模板,重構(gòu)進(jìn)程控制塊信息,進(jìn)而獲取進(jìn)程名、進(jìn)程號以及內(nèi)存地址空間等。本系統(tǒng)在虛擬機(jī)外部構(gòu)建進(jìn)程控制塊鏈表,并通過交叉視圖的方式比較外部重構(gòu)進(jìn)程列表和內(nèi)部匯報進(jìn)程列表的差異,以此確定是否存在隱藏進(jìn)程。然而直接操作內(nèi)核對象類攻擊可以將待隱藏進(jìn)程控制塊從進(jìn)程隊列中摘鏈,因而該方法可能會出現(xiàn)漏檢現(xiàn)象。本系統(tǒng)提供了相應(yīng)的隱藏進(jìn)程的處理機(jī)制,可以在最大程度上保證系統(tǒng)的自動恢復(fù)能力,從而提高安全性和自動化。
      [0042]利用虛擬機(jī)自省機(jī)制,將檢測工具與被監(jiān)控系統(tǒng)隔離在不同的虛擬機(jī)中,通過語義重構(gòu),在虛擬機(jī)外部的檢測軟件發(fā)現(xiàn)虛擬機(jī)中的惡意軟件,然后根據(jù)不同的恢復(fù)策略進(jìn)行虛擬機(jī)的恢復(fù),來確保在虛擬機(jī)發(fā)生故障的情況下,軟件看門狗可以自動進(jìn)行恢復(fù),保證系統(tǒng)的正常運(yùn)行,同時該系統(tǒng)只要在宿主虛擬機(jī)上進(jìn)行配置就可以,在客戶虛擬機(jī)上不需要安裝任何組件,提高整個系統(tǒng)的安全性和可靠性。
      [0043]本發(fā)明利用虛擬機(jī)監(jiān)控器的隔離特性和高特權(quán)級特性,獲得客戶虛擬機(jī)的內(nèi)存信息,獲得客戶虛擬機(jī)的內(nèi)存信息后,然后通過客戶虛擬機(jī)系統(tǒng)的操作系統(tǒng)的內(nèi)存布局和操作系統(tǒng)的常量參數(shù),來獲得客戶虛擬機(jī)的操作系統(tǒng)級別的內(nèi)核數(shù)據(jù)結(jié)構(gòu)信息。通過這些數(shù)據(jù)結(jié)構(gòu),可以獲得客戶虛擬機(jī)的一些信息,如進(jìn)程列表,內(nèi)核模塊列表等。當(dāng)故障檢測模塊運(yùn)行時,可以利用客戶虛擬機(jī)的進(jìn)程信息,來判斷是否有隱藏進(jìn)程,同時可以檢測關(guān)鍵進(jìn)程是否在運(yùn)行。如果關(guān)鍵進(jìn)程缺失,同時發(fā)現(xiàn)隱藏進(jìn)程,那么說明當(dāng)前這個系統(tǒng)已經(jīng)被惡意軟件入侵。如果故障檢測模發(fā)現(xiàn)系統(tǒng)調(diào)用被修改,也說明當(dāng)前系統(tǒng)中有惡意軟件。策略模塊根據(jù)故障檢測模發(fā)現(xiàn)的系統(tǒng)異常情況和用戶配置的恢復(fù)策略來進(jìn)行決策,輸出恢復(fù)指令?;謴?fù)策略可以為:如果用戶進(jìn)程缺失,可以簡單地啟動用戶進(jìn)程,如果操作系統(tǒng)調(diào)用被破壞,可以重啟虛擬機(jī);如果重啟之后還是有原來的問題,那么就采用從鏡像文件恢復(fù)虛擬機(jī)的方式來解決問題?;謴?fù)模塊執(zhí)行策略模塊產(chǎn)生的恢復(fù)指令,它可以啟動,停止某個進(jìn)程,可以關(guān)閉,啟動虛擬機(jī),也可以從鏡像來恢復(fù)虛擬機(jī)。
      [0044]其中,恢復(fù)策略可以包括兩個過程:虛擬機(jī)級別的恢復(fù):利用虛擬機(jī)可以動態(tài)地創(chuàng)建、撤銷以及在各個物理平臺之間進(jìn)行遷移的特性,進(jìn)行虛擬機(jī)級別的恢復(fù),例如:啟動虛擬機(jī),重啟虛擬機(jī),從鏡像文件恢復(fù)虛擬機(jī)。進(jìn)程級別的恢復(fù):如果用戶進(jìn)程遭到破壞可以進(jìn)行進(jìn)程級別的恢復(fù),嘗試重啟用戶進(jìn)程,例如:啟動某個進(jìn)程,終止某個進(jìn)程。通過以上兩個級別的恢復(fù)過程來確保在虛擬機(jī)發(fā)生故障的情況下,可以自動進(jìn)行恢復(fù),重新正常運(yùn)行,保證系統(tǒng)的高可靠性和高安全性。
      [0045]對于語義重構(gòu)模塊,由于本系統(tǒng)的故障檢測模塊與被監(jiān)控系統(tǒng)隔離在不同的虛擬機(jī)中,因此需要解決語義鴻溝問題。通過語義重構(gòu),將原始的物理主機(jī)的內(nèi)存信息重構(gòu)出客戶虛擬機(jī)操作系統(tǒng)級別的語義。
      [0046]對于故障檢測模塊,如果有惡意軟件殺掉了用戶程序,可以用關(guān)鍵進(jìn)程運(yùn)行狀態(tài)來檢測出來。如果惡意軟件在系統(tǒng)調(diào)用中掛了鉤子,系統(tǒng)調(diào)用完整性檢查可以檢查出來。如果惡意軟件將自己隱藏出來了,隱藏進(jìn)程檢測部分可以檢測出這個進(jìn)程。
      [0047]其中,運(yùn)行在客戶虛擬機(jī)上的操作系統(tǒng)可以是Linux系統(tǒng)、Windows系統(tǒng)。
      [0048]實(shí)施例2:
      [0049]本發(fā)明實(shí)施例提供了一種基于實(shí)施例1中的軟件看門狗系統(tǒng)的檢測方法,參見圖2,該方法包括:
      [0050]步驟201 =KVM上的虛擬機(jī)監(jiān)控器獲取物理主機(jī)的內(nèi)存信息;
      [0051]步驟202:語義重構(gòu)模塊根據(jù)虛擬機(jī)監(jiān)控器獲取的物理主機(jī)的內(nèi)存信息重構(gòu)出客戶虛擬機(jī)上的語義信息;
      [0052]步驟203:故障檢測模塊根據(jù)語義重構(gòu)模塊重構(gòu)出的客戶虛擬機(jī)上的語義信息檢測客戶虛擬機(jī)的隱藏進(jìn)程、關(guān)鍵用戶進(jìn)程和系統(tǒng)調(diào)用的完整性,輸出檢測結(jié)果;
      [0053]步驟204:策略模塊根據(jù)故障檢測模塊的檢測結(jié)果和用戶配置的恢復(fù)策略,生成恢復(fù)指令;
      [0054]步驟205:恢復(fù)模塊根據(jù)策略模塊產(chǎn)生的恢復(fù)指令進(jìn)行恢復(fù)操作;
      [0055]其中,所述物理主機(jī)包括:一個宿主虛擬機(jī)和至少一個客戶虛擬機(jī),所述宿主虛擬機(jī)為所述KVM。
      [0056]所述恢復(fù)指令,包括:啟動某個進(jìn)程,終止某個進(jìn)程,啟動虛擬機(jī),重啟虛擬機(jī),從鏡像文件恢復(fù)虛擬機(jī)。
      [0057]所述方法還包括,策略模塊根據(jù)用戶輸入的進(jìn)程配置信息確定關(guān)鍵用戶進(jìn)程。
      [0058]需要說明的是:每個虛擬機(jī)的內(nèi)核里,有一個進(jìn)程描述符,存儲了操作系統(tǒng)進(jìn)程的所有信息。所有進(jìn)程的進(jìn)程描述符都在一個循環(huán)的雙向鏈表task_list里存儲。每個單獨(dú)進(jìn)程的信息,進(jìn)程描述符,作為一個單獨(dú)的結(jié)構(gòu)task_struct存儲在這個鏈表里。一個進(jìn)程啟動的子線程也在task_list的結(jié)構(gòu)里有一個項來存儲,并有與之相對應(yīng)的唯一的線程ID和task_struct來對應(yīng)run_list域,指向了另外一個結(jié)構(gòu)runqueue, CPU需要使用這個信息。runqueue結(jié)構(gòu)是一個包含所有要被CPU執(zhí)行的進(jìn)程的結(jié)構(gòu)。
      [0059]task_struct結(jié)構(gòu)中的mm域指向了進(jìn)程的附加屬性:一旦一個進(jìn)程被創(chuàng)建后,就被賦予了一個虛擬內(nèi)存地址。地址空間和其他所有跟此進(jìn)程相關(guān)的內(nèi)存管理的信息都存儲在了一個叫做mm_struCt的結(jié)構(gòu)里。跟此進(jìn)程相關(guān)的所有虛擬內(nèi)存區(qū)域的描述符都鏈接在另外的一個鏈表里,可以通過mm_struct描述符里的_ap域來訪問到這個信息。這些對于此進(jìn)程可用的虛擬內(nèi)存區(qū)域被保存到另外一個叫做vm_area_struct的描述符里。這就形成了一個包含進(jìn)程的虛擬內(nèi)存信息的鏈表,每個vm_area_struct描述符指向了它所代表的連續(xù)內(nèi)存區(qū)域。這些地址被存儲在每個vm_area_struct里的vm_next域來串聯(lián)起來。vm_next域指向下一個vm_area_struct結(jié)構(gòu),因此指向了進(jìn)程所擁有的下一片虛擬內(nèi)存區(qū)域。
      [0060]以上都是跟給定進(jìn)程的虛擬內(nèi)存相關(guān)的信息。然而,一個進(jìn)程只能訪問到存儲在物理內(nèi)存里的進(jìn)程數(shù)據(jù)。關(guān)聯(lián)虛擬內(nèi)存和相應(yīng)的物理地址的信息存儲在頁表里。頁表信息可以通過mm_struct的pgd信息來訪問到。頁表存儲了以頁巾貞為單位的內(nèi)核內(nèi)存信息。這些關(guān)聯(lián)信息在Linux系統(tǒng)里是以三級的形式來存儲的。從上往下依次是:全局頁目錄,頁中間目錄,頁表項。最終就訪問到了具體的頁。在虛擬化環(huán)境里,虛擬機(jī)監(jiān)控器負(fù)責(zé)轉(zhuǎn)換虛擬機(jī)的虛擬內(nèi)存地址為宿主虛擬機(jī)的物理內(nèi)存地址。
      [0061]基于虛擬自省的應(yīng)用,需要讀取內(nèi)存信息并理解他們語義,因此必須通過找到操作系統(tǒng)對應(yīng)的第一個任務(wù)的符號信息來進(jìn)行。一個符號指向了程序塊,可以是變量或者是函數(shù)的名稱。必須找到task_list的頭部,然后就可以獲得系統(tǒng)所有進(jìn)程的信息了。這個鏈表的頭部存儲在一個叫做init_task_union的結(jié)構(gòu)里,在Linux系統(tǒng)下,是跟第一個進(jìn)程的task_struct相關(guān)聯(lián)的。符號和對應(yīng)的虛擬地址存儲在Linux系統(tǒng)的System, map文件里。System, map文件在內(nèi)核編譯之后就創(chuàng)建了,通常存儲在/boot目錄下,而且在內(nèi)核的生命周期里,一直保持不變的。
      [0062]在找到init_taSk_Union所在的地址之后,就可以遍歷操作系統(tǒng)里所有的進(jìn)程鏈表了。這樣就可以完整地重構(gòu)出客戶虛擬機(jī)的內(nèi)存的信息并進(jìn)一步分析得出虛擬機(jī)的狀態(tài)。本系統(tǒng)就可以把虛擬機(jī)的虛擬內(nèi)存地址轉(zhuǎn)換到他們對應(yīng)到的物理內(nèi)存的地址了。
      [0063]虛擬機(jī)監(jiān)控器負(fù)責(zé)為每個虛擬機(jī)創(chuàng)建一個虛擬的MMlXMemory Management Unit,內(nèi)存管理單元)并調(diào)節(jié)虛擬機(jī)的內(nèi)存訪問。虛擬機(jī)監(jiān)控器也控制了物理的MMU并以不會和其他虛擬機(jī)物理內(nèi)存互相重疊的方式映射每個虛擬機(jī)的物理內(nèi)存。這樣,每個虛擬機(jī)自己的地址空間就被隔離開來,不能訪問別的虛擬機(jī)的地址空間。最終,低級的事件消息,例如中斷等就自動被虛擬機(jī)監(jiān)控器捕獲。因此,在這種環(huán)境下,虛擬機(jī)監(jiān)控器可以一直監(jiān)控,控制每個虛擬機(jī)監(jiān)控器所要求的特權(quán)級的指令。本系統(tǒng)通過虛擬機(jī)監(jiān)控器獲得客戶虛擬機(jī)操作系統(tǒng)的內(nèi)核數(shù)據(jù)結(jié)構(gòu)信息,進(jìn)一步得到進(jìn)程列表等內(nèi)存信息。
      [0064]獲得虛擬機(jī)的內(nèi)存信息后,就可以利用故障檢測模塊,檢測包括隱藏進(jìn)程檢測,用戶配置的關(guān)鍵進(jìn)程檢測,系統(tǒng)調(diào)用完整性檢查來發(fā)現(xiàn)惡意軟件。
      [0065]故障檢測模塊檢測隱藏進(jìn)程的過程如下:
      [0066]Linux維護(hù)了一個進(jìn)程描述符的雙向鏈表task_list。系統(tǒng)啟動時的第一個進(jìn)程的init_task結(jié)構(gòu)是鏈表的頭結(jié)點(diǎn)。同時Linux還維護(hù)了一個runqueue的鏈表,任何由CPU執(zhí)行的進(jìn)程都唯一的屬于這個鏈表。[0067]語義重構(gòu)模塊獲得雙向鏈表task_list和runqueue鏈表,在虛擬機(jī)內(nèi)部通過ps命令得到的進(jìn)程信息列表ps_list ;
      [0068]故障檢測模塊判斷待檢測進(jìn)程是否存在于雙向鏈表task_list、runqueue鏈表、進(jìn)程信息列表ps_list中;
      [0069]如果存在于上述的向鏈表task_list、runqueue鏈表、進(jìn)程信息列表ps_list中,則結(jié)束,否則發(fā)現(xiàn)隱藏進(jìn)程。
      [0070]故障檢測模塊檢測用戶配置的關(guān)鍵用戶進(jìn)程的過程如下:
      [0071]用戶配置了檢測的關(guān)鍵用戶進(jìn)程名為userprocess,查看userprocess是否出現(xiàn)在task_list中,如果沒有出現(xiàn),說明用戶指定的關(guān)鍵用戶進(jìn)程缺失。
      [0072]故障檢測模塊檢測系統(tǒng)調(diào)用完整性的過程如下:
      [0073]Linux系統(tǒng)調(diào)用的各個函數(shù)的入口地址在系統(tǒng)安裝后,就是固定的。所以創(chuàng)建一份正常的系統(tǒng)調(diào)用表,作為基準(zhǔn)。之后每次檢查時,訪問系統(tǒng)調(diào)用的各個入口地址,檢查其是否與基準(zhǔn)一致,如果一致,說明系統(tǒng)調(diào)用沒有問題。如果不一致,說明系統(tǒng)調(diào)用被破壞,系統(tǒng)調(diào)用已經(jīng)被加了鉤子函數(shù)。
      [0074]經(jīng)過故障檢測模塊之后,本系統(tǒng)就獲得了虛擬機(jī)上進(jìn)程的運(yùn)行狀態(tài),在本實(shí)施例中,發(fā)現(xiàn)客戶虛擬機(jī)vmOl中的用戶關(guān)鍵進(jìn)程csdtest程序缺失。策略模塊根據(jù)故障檢測模塊的檢測結(jié)果和用戶配置的恢復(fù)策略,生成恢復(fù)指令。
      [0075]用戶在配置恢復(fù)策略時,可以指定當(dāng)檢測到用戶的關(guān)鍵進(jìn)程不存在時,如何進(jìn)行恢復(fù)?;謴?fù)時的操作可以是啟動某個指定進(jìn)程,此進(jìn)程可以是一個守護(hù)進(jìn)程,由它來負(fù)責(zé)運(yùn)行用戶所需要的所有應(yīng)用程序;恢復(fù)操作也可以是重新啟動系統(tǒng),在Windows操作系統(tǒng)中,重啟操作系統(tǒng)能夠解決一些問題;恢復(fù)操作也可以是從最原始的鏡像文件來恢復(fù)虛擬機(jī)。這種恢復(fù)是終極的解決方案,此鏡像不僅保存了虛擬機(jī)上所有文件的狀態(tài),而且也保存了操作系統(tǒng)和用戶應(yīng)用程序的運(yùn)行狀態(tài)。但前提條件是建立此鏡像時,整個系統(tǒng)是干凈,完整,沒有被惡意軟件破壞的。
      [0076]當(dāng)故障檢測模塊檢測到隱藏進(jìn)程后,可以采取以下恢復(fù)策略:
      [0077]重啟操作系統(tǒng),如果重啟兩次后仍不能解決故障則重啟虛擬機(jī),如果重啟虛擬機(jī)仍不能解決故障則從鏡像文件恢復(fù)虛擬機(jī)。
      [0078]當(dāng)故障檢測模塊檢測到關(guān)鍵用戶進(jìn)程缺失后,可以采取以下恢復(fù)策略:
      [0079]啟動該關(guān)鍵用戶進(jìn)程,如果沒有解決故障,則重啟虛擬機(jī),如果重啟虛擬機(jī)后沒有解決故障,則從鏡像文件恢復(fù)虛擬機(jī)。
      [0080]當(dāng)故障檢測模塊檢測到系統(tǒng)調(diào)用被修改后,可以采取以下恢復(fù)策略:
      [0081]從鏡像文件恢復(fù)虛擬機(jī)。
      [0082]綜上所述,整個恢復(fù)機(jī)制分為兩級,一種是進(jìn)程級別的恢復(fù),另外一種是虛擬機(jī)級別的恢復(fù)。當(dāng)重啟程序3次之后,發(fā)現(xiàn)問題依然存在,就會采用重啟操作系統(tǒng)的方法來解決故障。如果此時故障依舊,就可以采用恢復(fù)鏡像的方法來恢復(fù)整個虛擬機(jī),不過恢復(fù)鏡像之后,整個客戶虛擬機(jī)的狀態(tài)就回到了之前做鏡像時的狀態(tài),最近對文件所做的操作和用戶程序運(yùn)行時產(chǎn)生的數(shù)據(jù)就會丟失,因此在實(shí)際應(yīng)用中,需要配合數(shù)據(jù)庫等操作來將數(shù)據(jù)保存到其他地方。
      [0083]當(dāng)策略模塊作出恢復(fù)操作的決策之后,就由恢復(fù)模塊去負(fù)責(zé)執(zhí)行恢復(fù)命令。[0084]通過上述描述可見,本發(fā)明實(shí)施例具有如下的有益效果:
      [0085]通過本發(fā)明實(shí)施例提供的一種軟件看門狗系統(tǒng)及方法,能夠通過一個宿主虛擬機(jī)來同時監(jiān)控多個客戶虛擬機(jī),并且能夠檢測多個進(jìn)程。
      [0086]通過本發(fā)明實(shí)施例提供的一種軟件看門狗系統(tǒng)及方法,根據(jù)虛擬機(jī)監(jiān)控器獲取的物理主機(jī)的內(nèi)存信息進(jìn)行客戶虛擬機(jī)的隱藏進(jìn)程的檢測,關(guān)鍵用戶進(jìn)程的檢測,系統(tǒng)調(diào)用完整性的檢測,通過策略模塊輸出的恢復(fù)指令來對客戶虛擬機(jī)進(jìn)行恢復(fù),保證了客戶虛擬機(jī)的高可靠性,能夠?qū)蛻籼摂M機(jī)進(jìn)行故障檢測和恢復(fù),用戶可以根據(jù)需要配置要檢測的進(jìn)程,配置簡單、可擴(kuò)展性強(qiáng)以及具有高可靠性。
      [0087]需要說明的是,在本文中,諸如第一和第二之類的關(guān)系術(shù)語僅僅用來將一個實(shí)體或者操作與另一個實(shí)體或操作區(qū)分開來,而不一定要求或者暗示這些實(shí)體或操作之間存在任何這種實(shí)際的關(guān)系或者順序。而且,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、物品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、物品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、物品或者設(shè)備中還存在另外的相同因素。
      [0088]本領(lǐng)域普通技術(shù)人員可以理解:實(shí)現(xiàn)上述方法實(shí)施例的全部或部分步驟可以通過程序指令相關(guān)的硬件來完成,前述的程序可以存儲在計算機(jī)可讀取的存儲介質(zhì)中,該程序在執(zhí)行時,執(zhí)行包括上述方法實(shí)施例的步驟;而前述的存儲介質(zhì)包括:R0M、RAM、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)中。 [0089]最后需要說明的是:以上所述僅為本發(fā)明的較佳實(shí)施例,僅用于說明本發(fā)明的技術(shù)方案,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi)所做的任何修改、等同替換、改進(jìn)等,均包含在本發(fā)明的保護(hù)范圍內(nèi)。
      【權(quán)利要求】
      1.一種軟件看門狗系統(tǒng),其特征在于,該系統(tǒng)包括: 基于內(nèi)核的虛擬機(jī)KVM,以及安裝于KVM上的語義重構(gòu)模塊、故障檢測模塊、策略模塊、恢復(fù)模塊; KVM上的虛擬機(jī)監(jiān)控器,用于獲取物理主機(jī)的內(nèi)存信息; 語義重構(gòu)模塊,用于根據(jù)虛擬機(jī)監(jiān)控器獲取的物理主機(jī)的內(nèi)存信息重構(gòu)出客戶虛擬機(jī)上的語義?目息; 故障檢測模塊,用于根據(jù)語義重構(gòu)模塊重構(gòu)出的客戶虛擬機(jī)上的語義信息檢測客戶虛擬機(jī)的隱藏進(jìn)程、關(guān)鍵用戶進(jìn)程和系統(tǒng)調(diào)用的完整性,輸出檢測結(jié)果; 策略模塊,用于根據(jù)故障檢測模塊的檢測結(jié)果和用戶配置的恢復(fù)策略,生成恢復(fù)指令; 恢復(fù)模塊,用于根據(jù)策略模塊產(chǎn)生的恢復(fù)指令進(jìn)行恢復(fù)操作; 其中,所述物理主機(jī)包括:一個宿主虛擬機(jī)和至少一個客戶虛擬機(jī),所述宿主虛擬機(jī)為所述KVM。
      2.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述恢復(fù)指令,包括:啟動某個進(jìn)程,終止某個進(jìn)程,啟動虛擬機(jī),重啟虛擬機(jī),從鏡像文件恢復(fù)虛擬機(jī)。
      3.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述策略模塊,還用于根據(jù)用戶輸入的進(jìn)程配置信息確定關(guān)鍵用戶進(jìn)程。
      4.一種基于權(quán)利要求1至3中任一軟件看門狗系統(tǒng)的檢測方法,其特征在于,該方法包括: KVM上的虛擬機(jī)監(jiān)控器獲取物理主機(jī)的內(nèi)存信息; 語義重構(gòu)模塊根據(jù)虛擬機(jī)監(jiān)控器獲取的物理主機(jī)的內(nèi)存信息重構(gòu)出客戶虛擬機(jī)上的語義息; 故障檢測模塊根據(jù)語義重構(gòu)模塊重構(gòu)出的客戶虛擬機(jī)上的語義信息檢測客戶虛擬機(jī)的隱藏進(jìn)程、關(guān)鍵用戶進(jìn)程和系統(tǒng)調(diào)用的完整性,輸出檢測結(jié)果; 策略模塊根據(jù)故障檢測模塊的檢測結(jié)果和用戶配置的恢復(fù)策略,生成恢復(fù)指令; 恢復(fù)模塊根據(jù)策略模塊產(chǎn)生的恢復(fù)指令進(jìn)行恢復(fù)操作; 其中,所述物理主機(jī)包括:一個宿主虛擬機(jī)和至少一個客戶虛擬機(jī),所述宿主虛擬機(jī)為所述KVM。
      5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述恢復(fù)指令,包括:啟動某個進(jìn)程,終止某個進(jìn)程,啟動虛擬機(jī),重啟虛擬機(jī),從鏡 像文件恢復(fù)虛擬機(jī)。
      6.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述方法還包括,策略模塊根據(jù)用戶輸入的進(jìn)程配置信息確定關(guān)鍵用戶進(jìn)程。
      【文檔編號】G06F11/36GK103793288SQ201410051863
      【公開日】2014年5月14日 申請日期:2014年2月14日 優(yōu)先權(quán)日:2014年2月14日
      【發(fā)明者】章洋, 吳步丹, 陳生棟 申請人:北京郵電大學(xué)
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
      1