專利名稱:防護(hù)計(jì)算機(jī)系統(tǒng)使之免受惡意軟件破壞的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明所涉及的領(lǐng)域?yàn)橛?jì)算機(jī)安全。具體地說(shuō),本發(fā)明涉及對(duì)計(jì)算機(jī)病毒、特洛伊木馬程序或者任何惡意軟件的入侵檢測(cè)和控制。
背景技術(shù):
惡意程序的運(yùn)行可以導(dǎo)致巨大的破壞,諸如文件被刪除、個(gè)人私密信息的失竊,乃至網(wǎng)絡(luò)的堵塞。導(dǎo)致惡意程序的運(yùn)行的原因可以是計(jì)算機(jī)病毒、特洛伊木馬、間諜程序,以及未經(jīng)授權(quán)的網(wǎng)絡(luò)入侵。計(jì)算機(jī)病毒是一種可執(zhí)行的代碼,當(dāng)它由于某種原因的啟動(dòng)而開(kāi)始運(yùn)行時(shí),就會(huì)感染計(jì)算機(jī)中的其他的可執(zhí)行代碼,或者把它自己附加到其他的可執(zhí)行代碼之上,力圖造成破壞和繁殖它自己。特洛伊木馬程序會(huì)在假裝進(jìn)行某些動(dòng)作的同時(shí),故意執(zhí)行另外一些用戶所不希望的動(dòng)作。例如,一個(gè)特洛伊木馬程序可能將自己表現(xiàn)為一個(gè)登錄程序,提示用戶輸入帳號(hào)和口令,借此收集這些敏感信息,然后秘密的送給遠(yuǎn)方的計(jì)算機(jī)。間諜程序又稱間諜軟件,進(jìn)行惡意的操作,和特洛伊木馬相似,但是通常是在后臺(tái)秘密地進(jìn)行的。間諜程序可能是在用戶從因特網(wǎng)上下載文件時(shí)被未經(jīng)授權(quán)的網(wǎng)絡(luò)入侵或者未經(jīng)授權(quán)的用戶所無(wú)意地安裝的。被未經(jīng)授權(quán)的網(wǎng)絡(luò)入侵指被未經(jīng)授權(quán)的用戶(又稱為黑客)通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)進(jìn)行的“黑客行為”。黑客進(jìn)入計(jì)算機(jī)以后,他可能奪過(guò)計(jì)算機(jī)的控制權(quán),執(zhí)行一些惡意的動(dòng)作,例如安裝計(jì)算機(jī)病毒程序或者特洛伊木馬程序。在計(jì)算機(jī)上的“黑客行為”通常是利用網(wǎng)絡(luò)的安全漏洞或者偷來(lái)的用戶名和口令來(lái)進(jìn)行的。
已經(jīng)有一些技術(shù)用來(lái)防范或檢測(cè)計(jì)算機(jī)上的惡意軟件行為。其中一種技術(shù)是對(duì)計(jì)算機(jī)或網(wǎng)絡(luò)中的文件進(jìn)行掃描、以發(fā)現(xiàn)和去除已知病毒的反病毒軟件。反病毒軟件所存在的問(wèn)題是他無(wú)法檢測(cè)出新出現(xiàn)的病毒,因?yàn)檫@些新病毒的特征尚未被收羅進(jìn)病毒數(shù)據(jù)庫(kù)中?,F(xiàn)代的新病毒可以在幾分鐘或者幾小時(shí)內(nèi)傳遍因特網(wǎng),而病毒數(shù)據(jù)庫(kù)通常需要幾天或者幾周才更新一次。這種現(xiàn)象使得反病毒軟件的效果大打折扣。反病毒軟件也無(wú)法防止計(jì)算機(jī)黑客所進(jìn)行的惡意操作。一種常用的反黑客技術(shù)就是防火墻。除了公開(kāi)的網(wǎng)絡(luò)站點(diǎn)以外,防火墻堵塞住其他外來(lái)用戶發(fā)起的網(wǎng)絡(luò)連接,從而達(dá)到保護(hù)私用網(wǎng)絡(luò)的目的。但是防火墻不能擋住那些利用計(jì)算機(jī)或網(wǎng)絡(luò)系統(tǒng)的漏洞進(jìn)行的黑客攻擊,也不能對(duì)付合法地通過(guò)防火墻的電子郵件所帶入的特洛伊木馬和病毒。兩者廣為應(yīng)用的對(duì)抗計(jì)算機(jī)黑客的技術(shù)是“網(wǎng)絡(luò)入侵檢測(cè)(NIDS)”和“基于宿主的入侵檢測(cè)(HIDS)”。NIDS通過(guò)統(tǒng)計(jì)分析,某種常見(jiàn)的黑客活動(dòng)癥候(例如“拒絕服務(wù)(DoS)”型攻擊),TCP/UDP端口掃描,掃描,DNS區(qū)傳送,電子郵件檢測(cè),操作系統(tǒng)識(shí)別,帳號(hào)掃描等等手段,對(duì)網(wǎng)絡(luò)上的信息交流情況進(jìn)行分析,以發(fā)現(xiàn)異常的信息流動(dòng)情況。HIDS則是在計(jì)算機(jī)上運(yùn)行的、用來(lái)發(fā)現(xiàn)異?;顒?dòng)的一種軟件。HIDS通過(guò)對(duì)系統(tǒng),事件,以及在操作系統(tǒng)中產(chǎn)生的安全記錄文件的監(jiān)測(cè)來(lái)發(fā)現(xiàn)攻擊的癥候,也就是通常能夠顯示惡意行為的存在的特定模式。NIDS和HIDS兩者都能實(shí)時(shí)地防范惡意攻擊。NIDS的HIDS問(wèn)題在于如何去區(qū)分正常的和非正常的活動(dòng)。兩者都嚴(yán)重的依賴于有關(guān)非正?;顒?dòng)或者攻擊特征的專家知識(shí)。永遠(yuǎn)會(huì)有一些新的軟件被部署,總是會(huì)發(fā)現(xiàn)一些新的漏洞,總是會(huì)出現(xiàn)一些新的攻擊手段,也總是會(huì)有無(wú)窮多可能的活動(dòng)模式,因此NIDS和HIDS的作用是有限的。它們經(jīng)常產(chǎn)生許多虛警,與此同時(shí)又會(huì)忽視了真正的黑客活動(dòng)或者惡意操作。在防范病毒通過(guò)電子郵件或者安全漏洞的傳播方面,它們也軟弱無(wú)力。
發(fā)明內(nèi)容
本發(fā)明提供了一種新的安全方法與系統(tǒng)。這種新的技術(shù)同時(shí)利用了與系統(tǒng)有關(guān)的信息和與用戶有關(guān)的信息,并分析兩者之間的關(guān)聯(lián),從而發(fā)現(xiàn)和預(yù)防在個(gè)人計(jì)算機(jī),個(gè)人數(shù)字助理(PDA),移動(dòng)電話機(jī),以及任何由某一個(gè)人操作使用的計(jì)算設(shè)備(以下將用“個(gè)人計(jì)算機(jī)”一詞來(lái)指稱所有這類設(shè)備)。本發(fā)明將提取和利用個(gè)人計(jì)算機(jī)中所出現(xiàn)的關(guān)鍵性使用模式,大多數(shù)正常的軟件操作是由計(jì)算機(jī)用戶直接通過(guò)鍵盤、鼠標(biāo)或者與計(jì)算機(jī)相連的其他外圍設(shè)備來(lái)啟動(dòng)的。另一方面,惡意的軟件操作,不管它是由計(jì)算機(jī)病毒還是計(jì)算機(jī)黑客導(dǎo)致的,都是不經(jīng)用戶直接啟動(dòng),而且往往是在用戶不知曉的情況下秘密地執(zhí)行的。按照本發(fā)明提出的方法,每一種可能導(dǎo)致破壞的系統(tǒng)活動(dòng)諸如寫入到文件、刪除文件、發(fā)送電子郵件、以及在計(jì)算機(jī)中發(fā)生的其他網(wǎng)絡(luò)通訊活動(dòng),都要被實(shí)時(shí)地加以捕獲并判定它是否屬于計(jì)算機(jī)用戶所啟動(dòng)的活動(dòng);然后將用戶啟動(dòng)信息與其他的與系統(tǒng)活動(dòng)和相關(guān)軟件有關(guān)的屬性聯(lián)合起來(lái),以判定應(yīng)該采取何種安全措施。如果這一可能導(dǎo)致破壞的系統(tǒng)活動(dòng)不是由計(jì)算機(jī)用戶所發(fā)起的,就可以在執(zhí)行它以前阻止它。這樣就會(huì)防止病毒和黑客執(zhí)行諸如刪除文件、把數(shù)據(jù)發(fā)給其他計(jì)算機(jī)這類秘密活動(dòng)。但是在某些計(jì)算機(jī)中,有些正常的軟件操作頁(yè)可能是未經(jīng)用戶直接啟動(dòng)而自動(dòng)地開(kāi)始的。例如,在配置電子郵件程序時(shí),可能規(guī)定它每隔十分鐘到郵件服務(wù)器那里去取回一次郵件。一般來(lái)說(shuō),這一類軟件操作以及執(zhí)行這類操作的程序的個(gè)數(shù)都是已知的,因此很容易定出一些規(guī)則(可以稱之為“安全策略”)來(lái)執(zhí)行這些無(wú)需用戶啟動(dòng)就允許加以執(zhí)行的軟件操作??墒?,另一方面,特洛伊木馬程序可能會(huì)呈現(xiàn)出引人誤入歧途的用戶接口,從而誘使用戶在其上操作。而一旦用戶按下了某些按鈕,就會(huì)立即誘發(fā)惡意操作的執(zhí)行。這一連串的過(guò)程看起來(lái)就像是用戶發(fā)起的操作,從而逃脫安全系統(tǒng)的偵察。在本發(fā)明中,安全系統(tǒng)將檢測(cè)出某一程序是否已經(jīng)啟動(dòng)了一個(gè)新的、以前從未發(fā)生過(guò)的可能是破壞性的操作,即便這一操作看起來(lái)是由用戶發(fā)起的;然后就這一操作向用戶給出警示,并讓用戶停止這一操作或者允許這一操作進(jìn)行下去。一旦用戶允許這一操作進(jìn)行下去,就會(huì)增加新的一條安全規(guī)則,使得由用戶發(fā)起的同一或類似的操作在今后得以執(zhí)行而不再給出警示。本發(fā)明還聯(lián)合了若干屬性以支持包括上述規(guī)則在內(nèi)的靈活的安全策略設(shè)計(jì)。
判斷一項(xiàng)活動(dòng)是否為用戶所發(fā)起的方法是記錄用戶在任一計(jì)算機(jī)外圍設(shè)備如鍵盤、鼠標(biāo)、觸摸屏上所進(jìn)行的活動(dòng),并分析用戶活動(dòng)和系統(tǒng)活動(dòng)之間的相關(guān)性。例如,如果產(chǎn)生系統(tǒng)活動(dòng)的軟件程序在系統(tǒng)活動(dòng)發(fā)生之前的某一時(shí)間間隔(稱之為“時(shí)間窗口”)內(nèi)同時(shí)收到了用戶的活動(dòng),就可以考慮認(rèn)為這個(gè)系統(tǒng)活動(dòng)是由用戶所發(fā)起的。如果產(chǎn)生系統(tǒng)活動(dòng)的一個(gè)軟件程序沒(méi)有用來(lái)接收用戶活動(dòng)的用戶接口,或者在計(jì)算機(jī)中沒(méi)有在系統(tǒng)活動(dòng)之前的某一時(shí)間窗口內(nèi)發(fā)現(xiàn)任何用戶活動(dòng),就認(rèn)為這個(gè)系統(tǒng)活動(dòng)不是由用戶發(fā)起的。有關(guān)“用戶發(fā)起”的信息也可以由一直對(duì)系統(tǒng)活動(dòng)、軟件程序和用戶活動(dòng)進(jìn)行跟蹤的計(jì)算操作系統(tǒng)來(lái)提供。
在本發(fā)明所推薦的實(shí)施例中,“用戶啟動(dòng)”屬性將與有關(guān)系統(tǒng)活動(dòng)和相關(guān)軟件程序的屬性聯(lián)合起來(lái)以確定所需的安全措施。與其他的屬性聯(lián)合起來(lái)可以得到較高的靈活性和可靠性。這些屬性可能包括程序的標(biāo)識(shí)名,軟件供應(yīng)商的標(biāo)識(shí)名,與系統(tǒng)活動(dòng)相關(guān)的計(jì)算機(jī)實(shí)體的標(biāo)識(shí)名,以及系統(tǒng)活動(dòng)發(fā)生與其中的環(huán)境參數(shù)。例如,可允許一個(gè)可信任的軟件程序去執(zhí)行某些曾經(jīng)被用戶同意的某些操作,即便這些操作不是由用戶直接發(fā)起的。在本發(fā)明所推薦的實(shí)現(xiàn)方案中,由系統(tǒng)活動(dòng)推導(dǎo)出來(lái)的若干屬性(包括用戶啟動(dòng)屬性)將和被稱為是安全策略的一些規(guī)則進(jìn)行匹配,從中取得最佳配合的一條規(guī)則,并對(duì)該系統(tǒng)活動(dòng)實(shí)施該規(guī)則所規(guī)定的安全措施。
本發(fā)明提供了一套安全方法和系統(tǒng)用來(lái)保護(hù)個(gè)人計(jì)算機(jī),使之免遭惡意軟件操作的襲擊。個(gè)人計(jì)算機(jī)指包含臺(tái)式計(jì)算機(jī)在內(nèi)的筆記本電腦,個(gè)人數(shù)字助理(PDA),與PDA結(jié)合在一起的移動(dòng)電話等。在所推薦的實(shí)現(xiàn)方案中,安全系統(tǒng)通過(guò)進(jìn)行如下步驟來(lái)防止惡意軟件的操作實(shí)時(shí)地截獲計(jì)算機(jī)系統(tǒng)中的系統(tǒng)活動(dòng)、記錄在用戶所能夠控制的與計(jì)算機(jī)相連接的任一外圍設(shè)備上產(chǎn)生的用戶活動(dòng)、評(píng)估某一系統(tǒng)活動(dòng)和任一用戶活動(dòng)之間的關(guān)聯(lián)以判定該系統(tǒng)活動(dòng)是否由計(jì)算機(jī)用戶所啟動(dòng)(我們把這一點(diǎn)稱之為“用戶啟動(dòng)屬性”)、從系統(tǒng)活動(dòng)和與之相關(guān)的軟件程序中推導(dǎo)出附加的屬性、根據(jù)在以上步驟中得到的一組屬性在策略數(shù)據(jù)庫(kù)中去搜尋最佳匹配的安全策略、然后按照這一最佳匹配的安全策略的規(guī)定采取安全措施。
一項(xiàng)安全策略至少包含一條安全措施和一組屬性規(guī)約。一項(xiàng)屬性規(guī)約定義了對(duì)應(yīng)屬性的匹配值。如果發(fā)現(xiàn)某一安全策略的屬性規(guī)約與給定的一組屬性屬于最佳匹配,安全系統(tǒng)就執(zhí)行該安全策略所規(guī)定的安全措施。系統(tǒng)活動(dòng)指由操作系統(tǒng)軟件程序的要求而執(zhí)行的軟件或硬件的動(dòng)作;這些動(dòng)作可能會(huì)對(duì)一個(gè)或多個(gè)計(jì)算機(jī)實(shí)體產(chǎn)生影響。一項(xiàng)系統(tǒng)活動(dòng)可以用一個(gè)數(shù)據(jù)結(jié)構(gòu)來(lái)表示。其中包含指定所執(zhí)行的操作的命令碼(例如“打開(kāi)文件”)、產(chǎn)生或接受該系統(tǒng)活動(dòng)的軟件程序的標(biāo)識(shí)名(例如“Microsoft Word”)、以及受到影響的計(jì)算機(jī)實(shí)體的標(biāo)識(shí)名(例如被打開(kāi)的文件的名字。)計(jì)算機(jī)實(shí)體可以是一個(gè)文件、文件目錄、一項(xiàng)網(wǎng)絡(luò)連接、一個(gè)軟件或硬件接口、某一系統(tǒng)注冊(cè)表中的鍵、一個(gè)程序、一條命令等??赡艿牟僮靼ù蜷_(kāi)文件,從文件中讀出數(shù)據(jù),向文件中寫入數(shù)據(jù),刪除文件,設(shè)定注冊(cè)表中鍵的值,請(qǐng)求網(wǎng)絡(luò)連接,接受網(wǎng)絡(luò)連接,通過(guò)網(wǎng)絡(luò)發(fā)送或接受數(shù)據(jù),執(zhí)行一條命令,執(zhí)行一個(gè)程序等。屬性則是指有關(guān)系統(tǒng)活動(dòng)或與之相關(guān)的軟件程序的一個(gè)參數(shù)??赡艿膶傩詣t包括用戶啟動(dòng)屬性(說(shuō)明該系統(tǒng)活動(dòng)是否由計(jì)算機(jī)用戶所啟動(dòng)),代表操作的命令碼,軟件程序的標(biāo)識(shí)名,受到系統(tǒng)活動(dòng)的影響的計(jì)算機(jī)實(shí)體的標(biāo)識(shí)名。
在實(shí)時(shí)地獲得了一組屬性以后,安全系統(tǒng)就去搜尋與給定屬性組相匹配的安全策略,并采取該安全策略中所規(guī)定的一或多項(xiàng)安全操作。應(yīng)注意,一條安全策略不一定要包含所呈現(xiàn)的全部的屬性規(guī)約。如果某一屬性規(guī)約被省略,就認(rèn)為它的規(guī)范就是包含了所有的值??赡艿陌踩胧┌ㄔ试S該系統(tǒng)活動(dòng)進(jìn)行下去、停止系統(tǒng)活動(dòng)、停止執(zhí)行程序、在日志文件中寫入一個(gè)記錄、彈出一個(gè)窗口向計(jì)算機(jī)用戶顯示一條警示信息以及可供他選擇的一項(xiàng)或多項(xiàng)措施、向管理者或者計(jì)算機(jī)用戶發(fā)送一封電子郵件。在彈出的窗口所中顯示警示消息可以是有關(guān)系統(tǒng)活動(dòng)以及與之相關(guān)的軟件程序和軟件供應(yīng)商信息,也可以是告訴用戶應(yīng)該如何處理的信息。
在所推薦的實(shí)現(xiàn)方案中,策略數(shù)據(jù)庫(kù)在開(kāi)始時(shí)含有的一組安全策略是制止未經(jīng)用戶啟動(dòng)的可能導(dǎo)致破壞的操作并給出警示;對(duì)于新的程序所執(zhí)行的可能有破壞作用的操作,向用戶發(fā)出警報(bào);與此同時(shí),允許用戶已經(jīng)熟悉的程序執(zhí)行熟知的操作,不管它是否是由用戶所啟動(dòng)的。計(jì)算機(jī)用戶可以在任何時(shí)候修改、刪除或者添加安全策略。
安全策略數(shù)據(jù)庫(kù)中可以存有一個(gè)或多個(gè)文件并駐留在本計(jì)算機(jī)中,也可以駐留在遠(yuǎn)地的計(jì)算機(jī)服務(wù)器中。在協(xié)作的環(huán)境中,安全策略可以集中設(shè)置和針對(duì)整個(gè)企業(yè)進(jìn)行部署,也許使用一臺(tái)策略服務(wù)器是合適的,因?yàn)檫@樣做可以集中進(jìn)行管理并為多臺(tái)計(jì)算機(jī)所共享。安全策略也可以寫入電子文件中,加上數(shù)字簽名然后送給安全系統(tǒng)。當(dāng)通過(guò)證書進(jìn)行數(shù)字簽名時(shí),可以對(duì)安全策略本身及其作者進(jìn)行鑒別。數(shù)字簽名中使用的公鑰也可以用來(lái)對(duì)安全系統(tǒng)所產(chǎn)生的數(shù)據(jù)進(jìn)行加密,而加密的結(jié)果只能由擁有相應(yīng)私鑰的證書持有者所解密。
注意,在以上的敘述中,所謂的數(shù)據(jù)庫(kù)是指存放在任意存儲(chǔ)器中的數(shù)據(jù)集合,它可以是存放在硬盤、閃存,或者存放在計(jì)算機(jī)內(nèi)存中數(shù)據(jù)緩沖區(qū)中的由客戶建立的文件或者商用數(shù)據(jù)庫(kù)。
通過(guò)對(duì)以下各節(jié)以及與之相伴隨的圖的敘述,也許有助于對(duì)本發(fā)明中的各個(gè)部分及其功能特征,乃至本發(fā)明本身有更全面的了解。
圖1顯示了一臺(tái)個(gè)人計(jì)算機(jī)的某些關(guān)鍵部件,以及計(jì)算機(jī)由一或多個(gè)外圍設(shè)備組成的。
圖2是按照本發(fā)明的一種實(shí)現(xiàn)而構(gòu)成的安全系統(tǒng)。
圖3表示了系統(tǒng)和用戶活動(dòng)“鉤子”。
圖4表示了本發(fā)明的一種實(shí)現(xiàn)中采用的用戶關(guān)聯(lián)的流程。
圖5表示了本發(fā)明的另一種實(shí)現(xiàn)中采用的用戶關(guān)聯(lián)的流程。
如可以從查看這些圖時(shí)所看到的,在大部分描述中,如果某一個(gè)東西原了原樣地出現(xiàn)在多個(gè)圖中,就在這些圖中用同一種字母數(shù)字加以標(biāo)識(shí)。
具體實(shí)施例方式
圖1中,一臺(tái)典型的計(jì)算機(jī)100由一個(gè)用來(lái)執(zhí)行軟件程序的中央處理器(CPU)104、用來(lái)存儲(chǔ)數(shù)據(jù)和軟件程序的存儲(chǔ)器106、對(duì)軟件和硬件資源進(jìn)行管理并為軟件程序提供服務(wù)的操作系統(tǒng)102、用來(lái)永久性存放軟件程序或數(shù)據(jù)硬盤驅(qū)動(dòng)器或閃存110、網(wǎng)絡(luò)接口114、一或多臺(tái)外圍設(shè)備諸如鍵盤116,鼠標(biāo)或光筆118所組成。如圖2所示,本發(fā)明中的安全系統(tǒng)200是在計(jì)算機(jī)100上執(zhí)行的一個(gè)軟件程序,用來(lái)監(jiān)測(cè)惡意的軟件操作。
安全系統(tǒng)200由一組模塊組成系統(tǒng)活動(dòng)的截獲與控制模塊212,它利用一或多個(gè)系統(tǒng)活動(dòng)鉤子216來(lái)截獲系統(tǒng)活動(dòng);用戶活動(dòng)記錄模塊214,它利用一或多個(gè)用戶活動(dòng)鉤子216來(lái)記錄用戶活動(dòng);一個(gè)用戶關(guān)聯(lián)模塊210,它對(duì)系統(tǒng)活動(dòng)和用戶活動(dòng)之間的關(guān)系進(jìn)行分析,以判定“用戶啟動(dòng)屬性”,即指明該系統(tǒng)活動(dòng)是否由計(jì)算機(jī)用戶所引起的;一個(gè)屬性推導(dǎo)模塊208,它可以從某一系統(tǒng)活動(dòng)及其相關(guān)的軟件程序推導(dǎo)出附加的屬性;一個(gè)政策執(zhí)行模塊204,它用來(lái)接受一組屬性,在安全數(shù)據(jù)庫(kù)中進(jìn)行搜索與給定屬性組最佳匹配的那一條安全策略,然后執(zhí)行這條最佳匹配策略所規(guī)定的安全措施。政策執(zhí)行模塊204向系統(tǒng)活動(dòng)截獲與控制模塊發(fā)出一條消息,說(shuō)明應(yīng)該讓該系統(tǒng)活動(dòng)進(jìn)行下去還是制止它。
所謂系統(tǒng)活動(dòng)就是操作系統(tǒng)根據(jù)某一軟件程序的請(qǐng)求所執(zhí)行的一項(xiàng)由軟件或硬件完成的操作。一項(xiàng)系統(tǒng)活動(dòng)可以用一個(gè)數(shù)據(jù)結(jié)構(gòu)來(lái)表示;該數(shù)據(jù)結(jié)構(gòu)包含了與系統(tǒng)活動(dòng)以及相關(guān)軟件程序的信息。以下是一些可以從系統(tǒng)活動(dòng)中推導(dǎo)出來(lái)的有用屬性1.標(biāo)識(shí)該操作的命令碼,例如打開(kāi)文件,刪除文件,請(qǐng)求網(wǎng)絡(luò)連接,接受網(wǎng)絡(luò)連接,通過(guò)網(wǎng)絡(luò)發(fā)送和接收數(shù)據(jù),啟動(dòng)程序,啟動(dòng)命令的執(zhí)行,設(shè)定注冊(cè)表?xiàng)l目的值。
2.與該操作相關(guān)的一或多個(gè)計(jì)算機(jī)實(shí)體,例如文件名,網(wǎng)絡(luò)連接標(biāo)識(shí)等。
3.產(chǎn)生或接受該系統(tǒng)活動(dòng)的被執(zhí)行軟件程序的標(biāo)識(shí)名。這個(gè)標(biāo)識(shí)名可以是程序名,或者是由程序文件所產(chǎn)生的雜湊值,或者是在該程序文件上簽署的數(shù)字簽名,也可以是程序名和雜湊值的結(jié)合。
4.提供該軟件程序的供應(yīng)商的標(biāo)識(shí)名。這一標(biāo)識(shí)名可以是包含在程序文件中的公司的名字,也可以是用來(lái)驗(yàn)證簽署在程序文件上的數(shù)字簽名的數(shù)字證書。
當(dāng)計(jì)算機(jī)操作系統(tǒng)接收到某一系統(tǒng)活動(dòng)的請(qǐng)求時(shí),它通常會(huì)執(zhí)行所規(guī)定的動(dòng)作,而結(jié)果可能成功或者不成功。當(dāng)操作系統(tǒng)收到進(jìn)行某一系統(tǒng)活動(dòng)的請(qǐng)求時(shí),系統(tǒng)活動(dòng)截獲和控制模塊將在操作系統(tǒng)接收到系統(tǒng)活動(dòng)時(shí)而在執(zhí)行它以前截獲此項(xiàng)系統(tǒng)活動(dòng),并且扣住不放,直到它收到來(lái)自政策執(zhí)行模塊的“允許它或者停止它進(jìn)行”的指令為止。一項(xiàng)用戶活動(dòng)就是當(dāng)用戶操作某一外圍設(shè)備時(shí)(例如按下鍵盤上的某一鍵、按下鼠標(biāo)上的某一鍵等)在用戶所控制的外圍設(shè)備上產(chǎn)生的事件。用戶活動(dòng)可以用含有設(shè)備輸入信息的一個(gè)數(shù)據(jù)結(jié)構(gòu)來(lái)表示。這一數(shù)據(jù)結(jié)構(gòu)為操作系統(tǒng)所接收,然后發(fā)往等候用戶輸入的那個(gè)活動(dòng)著的軟件程序。用戶活動(dòng)的例子如鼠標(biāo)上的點(diǎn)擊,在屏幕上的觸摸,等等。用戶活動(dòng)記錄模塊可以在兩種水平上來(lái)記錄用戶的活動(dòng)在用戶(程序)這一級(jí)(當(dāng)它們是由活動(dòng)著的程序所接收時(shí));或者在驅(qū)動(dòng)程序一級(jí)(當(dāng)它們是由操作系統(tǒng)所接收時(shí))。最好在驅(qū)動(dòng)程序一級(jí)來(lái)記錄用戶的活動(dòng),這樣由軟件程序所產(chǎn)生的仿真式用戶活動(dòng)就可以不計(jì)算在內(nèi)。許多著名的操作系統(tǒng)如微軟的Windows和UNIX都針對(duì)執(zhí)行中的軟件程序提供了“鉤子”(又稱“過(guò)濾器”)機(jī)構(gòu)以便截獲系統(tǒng)或用戶活動(dòng),并在系統(tǒng)或用戶活動(dòng)鉤子中加以顯示。如圖3中所示,操作系統(tǒng)102提供了各種不同類型的系統(tǒng)活動(dòng)鉤子300和用戶活動(dòng)鉤子310,每一種類型的鉤子均與特定的設(shè)備相關(guān)聯(lián)。鉤子的若干例子如在驅(qū)動(dòng)程序一級(jí)截獲文件系統(tǒng)活動(dòng)的文件系統(tǒng)過(guò)濾器302、在驅(qū)動(dòng)程序一級(jí)截獲網(wǎng)絡(luò)活動(dòng)的網(wǎng)絡(luò)接口過(guò)濾器304、在驅(qū)動(dòng)程序一級(jí)截獲注冊(cè)表鍵值設(shè)定的注冊(cè)表鉤子306、在用戶或者驅(qū)動(dòng)程序一級(jí)記錄鼠標(biāo)移動(dòng)或點(diǎn)擊動(dòng)作的鼠標(biāo)鉤子314。安全系統(tǒng)可以按照所要截獲或記錄的系統(tǒng)與用戶活動(dòng)類型來(lái)安裝一或多個(gè)鉤子。通常操作系統(tǒng)會(huì)提供實(shí)現(xiàn)鉤子的多種方法,有些可以作為程序“插件”(或者DLL-動(dòng)態(tài)連接庫(kù))在用戶一級(jí)上實(shí)現(xiàn),也可以作為一種過(guò)濾器或者通過(guò)庫(kù)中的截獲子函數(shù)在驅(qū)動(dòng)程序(或者內(nèi)核)中實(shí)現(xiàn)。實(shí)現(xiàn)方法的細(xì)節(jié)可以在有關(guān)程序編寫的出版物中找到。
用戶關(guān)聯(lián)模塊既接收系統(tǒng)活動(dòng)也接收用戶活動(dòng)。它會(huì)從系統(tǒng)活動(dòng)中推導(dǎo)出用戶啟動(dòng)屬性。如果此系統(tǒng)活動(dòng)是由計(jì)算機(jī)用戶啟動(dòng)的,這一屬性就被置為TRUE,否則就被置為FALSE。這一屬性是通過(guò)對(duì)系統(tǒng)活動(dòng)以及在發(fā)生此系統(tǒng)活動(dòng)前一段時(shí)間窗口中的用戶活動(dòng)之間的關(guān)聯(lián)的分析而導(dǎo)出的。按照系統(tǒng)環(huán)境與安全要求的不同,可以有不同的方法來(lái)判定有無(wú)關(guān)聯(lián)。有一種簡(jiǎn)單的情況是,如果產(chǎn)生系統(tǒng)活動(dòng)的軟件程序沒(méi)有使用用戶接口來(lái)接收用戶活動(dòng),那么就可以將“用戶啟動(dòng)屬性”置為FALSE。大多數(shù)計(jì)算機(jī)病毒都滿足這一條件,因?yàn)樗鼈兺ǔ6际窃诤笈_(tái)運(yùn)行,沒(méi)有用戶接口。大多數(shù)操作系統(tǒng)都提供了用來(lái)檢查某一軟件程序是否擁有用戶接口的函數(shù)。另一種簡(jiǎn)單的情況是,如果在系統(tǒng)活動(dòng)之前的一段時(shí)間窗口內(nèi)沒(méi)有察覺(jué)到有任何的用戶活動(dòng),那么就可以將“用戶啟動(dòng)屬性”置為FALSE。計(jì)算機(jī)黑客在下班時(shí)間計(jì)算機(jī)處于呆滯狀態(tài)時(shí)進(jìn)行的活動(dòng)就屬于這種情況。在一般情況下,可以用下述方法來(lái)判定用戶啟動(dòng)屬性如果產(chǎn)生系統(tǒng)活動(dòng)的程序曾在系統(tǒng)活動(dòng)開(kāi)始前一段時(shí)間窗口內(nèi)接收到用戶活動(dòng)(或者曾經(jīng)在系統(tǒng)活動(dòng)開(kāi)始前一段時(shí)間窗口內(nèi)與另外一個(gè)曾收到過(guò)用戶活動(dòng)的程序通訊),就將“用戶啟動(dòng)屬性”置為TRUE,否則,若程序沒(méi)有收到任何用戶活動(dòng),就將“用戶啟動(dòng)屬性”置為FALSE。圖4詳細(xì)的表明了這一方法。圖4是一個(gè)流程圖,用來(lái)在進(jìn)程關(guān)系的基礎(chǔ)上判定某一系統(tǒng)活動(dòng)與任何用戶活動(dòng)之間有無(wú)關(guān)聯(lián)。進(jìn)程指計(jì)算機(jī)系統(tǒng)中的一項(xiàng)軟件程序活動(dòng)。參看圖4,用戶關(guān)聯(lián)模塊210為每一進(jìn)程保有一個(gè)對(duì)應(yīng)的緩沖區(qū),稱之為進(jìn)程緩沖區(qū),可以用一個(gè)唯一的進(jìn)程Id來(lái)標(biāo)識(shí)它。對(duì)于所收到的每一個(gè)用戶活動(dòng)402,用戶關(guān)聯(lián)模塊210將索取收到此用戶活動(dòng)402的程序的進(jìn)程Id并在相關(guān)的進(jìn)程緩沖區(qū)中記錄這一用戶活動(dòng),如步驟408所示。對(duì)于所收到的每一個(gè)系統(tǒng)活動(dòng)400,用戶關(guān)聯(lián)模塊210將索取相關(guān)程序的進(jìn)程Id(A),索取此進(jìn)程Id(A)所引用的進(jìn)程緩沖區(qū),再?gòu)拇诉M(jìn)程緩沖區(qū)中檢索出在系統(tǒng)活動(dòng)發(fā)生以前的一段時(shí)間窗口(TW)內(nèi)所發(fā)生的一組用戶活動(dòng),如步驟410所示。通常,在用戶通過(guò)鍵盤上的擊鍵或者鼠標(biāo)上的點(diǎn)擊來(lái)啟動(dòng)一項(xiàng)操作時(shí),在隨后的一段不長(zhǎng)的時(shí)間窗口內(nèi)就會(huì)發(fā)生一或多個(gè)系統(tǒng)活動(dòng)。因此,如圖412所示,如果在此時(shí)間窗口內(nèi)的用戶活動(dòng)數(shù)不為零,就可以認(rèn)為此系統(tǒng)活動(dòng)是由用戶所啟動(dòng)的,于是把“用戶啟動(dòng)屬性”置為TRUE;反之,如果在此時(shí)間窗口內(nèi)的用戶活動(dòng)數(shù)為零,就可以認(rèn)為此系統(tǒng)活動(dòng)不是由用戶所啟動(dòng)的,于是把“用戶啟動(dòng)屬性”置為FALSE。上述“時(shí)間窗口”的長(zhǎng)度可以由系統(tǒng)或用戶來(lái)設(shè)定,也可以由系統(tǒng)按照軟件程序的特點(diǎn)來(lái)動(dòng)態(tài)地設(shè)定。請(qǐng)注意,按照?qǐng)D4中所示的規(guī)則,有可能只要在時(shí)間槽中數(shù)一下用戶活動(dòng)的數(shù)目就夠了,用不著去考察進(jìn)程緩沖區(qū)中所記錄的每一個(gè)用戶活動(dòng)的內(nèi)容。圖5顯示了另外一個(gè)流程圖,其中進(jìn)程間的通訊也被考慮在用戶關(guān)聯(lián)之內(nèi)。在某些軟件設(shè)計(jì)中,一項(xiàng)應(yīng)用可能涉及多個(gè)程序。例如,在“客戶-服務(wù)器”體系結(jié)構(gòu)中,客戶和服務(wù)器獨(dú)立地在各自的進(jìn)程中運(yùn)行,客戶通過(guò)消息發(fā)送來(lái)提出請(qǐng)求,而服務(wù)器則執(zhí)行所需的功能然后將結(jié)果返回給客戶。通常服務(wù)器在后臺(tái)運(yùn)行,而客戶端則與用戶打交道。用戶通過(guò)客戶端用戶接口啟動(dòng)一項(xiàng)操作,執(zhí)行操作的則是服務(wù)器。因此,為了決定服務(wù)器所執(zhí)行的操作是否由用戶所啟動(dòng),就必須把客戶和服務(wù)器之間的通訊考慮在內(nèi)。參看圖5,用戶關(guān)聯(lián)模塊210利用圖4所示的同樣的流程圖來(lái)決定與某一系統(tǒng)活動(dòng)相關(guān)聯(lián)的程序是否在時(shí)間窗口中收到了用戶活動(dòng);如果相關(guān)的程序沒(méi)有收到用戶活動(dòng),就在步驟414中進(jìn)一步判定相關(guān)的程序是否在此時(shí)間窗口中與其他的程序進(jìn)行過(guò)通訊;如果與其他的程序進(jìn)行過(guò)這類通訊,就在步驟416和418中判定這個(gè)“其他的程序”在時(shí)間窗口中收到過(guò)用戶活動(dòng);如果相關(guān)的程序曾經(jīng)與收到過(guò)用戶活動(dòng)的程序進(jìn)行過(guò)通訊,就可以判定這一需要活動(dòng)是由用戶所啟動(dòng)的。依據(jù)應(yīng)用和安全方面的需求,還可以采用別的一些關(guān)聯(lián)規(guī)則。例如,在判定是否有關(guān)聯(lián)時(shí),可以依據(jù)用戶活動(dòng)的內(nèi)容,而不僅僅是依據(jù)用戶活動(dòng)的數(shù)量。
除了用戶啟動(dòng)屬性以外,圖2中的屬性推導(dǎo)模塊208還可以從一系統(tǒng)活動(dòng)及其相關(guān)的軟件程序推導(dǎo)出附加的其他屬性,以便為尋找一條合適的安全策略提供更多的信息。有了這些附加的屬性,就能獲得更加靈活的安全策略設(shè)計(jì)。至于如何來(lái)選擇這些附加的屬性,則取決于系統(tǒng)和安全方面的需求。以下是可以考慮的一些附加屬性1.命令碼屬性此屬性取整數(shù)值,說(shuō)明它是下列命令碼值的哪一種a)OPEN_FILE(打開(kāi)文件)用來(lái)打開(kāi)已有的某一文件或文件目錄b)CREATE_FILE(創(chuàng)建文件)用來(lái)創(chuàng)建一個(gè)新的文件或文件目錄c)READ_FILE(讀文件)用來(lái)從某一文件中讀出數(shù)據(jù)d)WRITE_FILE(寫文件)用來(lái)向某一文件中寫入數(shù)據(jù)e)DELETE_FILE(刪除文件)用來(lái)從文件目錄中刪除某一文件f)RENAME_FILE(重命名文件)對(duì)文件或文件目錄重新命名
g)ACCEPT_CONNECTION(接受連接)用來(lái)接受與某一網(wǎng)絡(luò)的連接h)REQUEST_CONNECTION(請(qǐng)求連接)用來(lái)請(qǐng)求與某一網(wǎng)絡(luò)的連接i)SEND_DATA(發(fā)送數(shù)據(jù))通過(guò)某一網(wǎng)絡(luò)連接發(fā)送數(shù)據(jù)j)RECEIVE_DATA(接收數(shù)據(jù))通過(guò)某一網(wǎng)絡(luò)連接接收數(shù)據(jù)k)EXECUTE_COMMAND(執(zhí)行命令)執(zhí)行某一系統(tǒng)命令l)START_PROGRAM(啟動(dòng)程序)啟動(dòng)某一軟件程序m)SET_REGISTRY(設(shè)置注冊(cè)表)設(shè)定注冊(cè)表中的某一鍵的值以上命令碼描述了對(duì)計(jì)算機(jī)安全而言十分重要的大多數(shù)的系統(tǒng)活動(dòng)。命令碼屬性使策略設(shè)計(jì)者可以分別對(duì)待不同的操作。
2.一或多個(gè)計(jì)算機(jī)實(shí)體屬性每一計(jì)算機(jī)實(shí)體屬性就是一個(gè)標(biāo)識(shí)符,它指明了與系統(tǒng)活動(dòng)相關(guān)的實(shí)體是什么。對(duì)于系統(tǒng)活動(dòng)來(lái)說(shuō),計(jì)算機(jī)實(shí)體實(shí)體屬性的個(gè)數(shù)以及每一實(shí)體屬性的意義取決于命令碼是什么。如果命令碼是OPEN_FILE,CREATE_FILE,READ_FILE,WRITE_FILE,DELETE_FILE,那么就有一個(gè)實(shí)體屬性,即文件名(或者目錄名,因?yàn)槟夸洷灰暈橐环N特殊的文件);文件名中可以使用通配符來(lái)指稱一組文件; 如果命令碼是RENAME_FILE,就有兩個(gè)實(shí)體屬性,即源文件名和目標(biāo)文件名;如果命令碼是ACCEPT_CONNECTION,REQUEST_CONNECTION,SEND_DATA,RECEIVE_DATA,則也有一個(gè)實(shí)體屬性,即所指定的網(wǎng)絡(luò)連接,通常包含{協(xié)議-Id;源地址,源端口號(hào);目標(biāo)地址;目標(biāo)端口號(hào)};如果命令碼是EXECUTE_COMMAND,就有一個(gè)實(shí)體屬性,即命令名;如果命令碼是START_PROGRAM,就有一個(gè)實(shí)體屬性,即所要啟動(dòng)的程序文件名;如果命令碼是SET_REGISTRY,則有一個(gè)實(shí)體屬性,他規(guī)定了注冊(cè)表中某一鍵及其取值。有了計(jì)算機(jī)實(shí)體屬性,在設(shè)計(jì)策略時(shí),就能以不同的方式對(duì)待不同的計(jì)算機(jī)實(shí)體。
3.程序標(biāo)識(shí)名屬性唯一地確定了與系統(tǒng)活動(dòng)相關(guān)的軟件程序。程序標(biāo)識(shí)名屬性可以是程序的名字,或者其他的標(biāo)識(shí)名,例如由程序文件產(chǎn)生的能夠唯一地確定該程序的雜湊值,也可以是兩者的結(jié)合。程序名或者程序文件名可以通過(guò)操作系統(tǒng)所提供的函數(shù)來(lái)獲得。如果使用雜湊值,就可以將它存放在與程序文件相關(guān)聯(lián)的一個(gè)表格中,或者把它并入在程序文件上所簽署的數(shù)字簽名中。程序標(biāo)識(shí)名屬性使我們得以在設(shè)計(jì)策略時(shí)可以對(duì)不同的程序采取特定的對(duì)待方式。
4.軟件供應(yīng)商屬性說(shuō)明了提供該軟件的供應(yīng)商是誰(shuí),它可以是公司的名字。典型的軟件程序文件包含有公司名和版本號(hào)。這一名字也可以并入數(shù)字簽名中,以便于對(duì)簽署于程序文件之上的數(shù)字簽名進(jìn)行驗(yàn)證。軟件供應(yīng)商屬性使我們?cè)谠O(shè)計(jì)策略時(shí)對(duì)某些有信譽(yù)的軟件供應(yīng)商采取信任態(tài)度,并允許他們所提供的程序執(zhí)行某些操作,而對(duì)其他的軟件供應(yīng)商則不允許這樣做。軟件供應(yīng)商屬性也向用戶提供了一些信息,讓用戶來(lái)判斷是否可以信任該軟件程序。
上面所說(shuō)的這些附加屬性都是僅供用戶選擇的,并非是強(qiáng)制的,視需要還可以添加其他的屬性。所有的屬性都可以和用戶啟動(dòng)屬性一起排列在一個(gè)數(shù)據(jù)陣列ATTRIBUTE[I],I=1,2,3,…N中,其中下標(biāo)I用來(lái)指明是其中哪一個(gè)屬性,而ATTRIBUTE[I]中則存有該屬性之值。例如,I=1表示用戶啟動(dòng)屬性;I=2表示命令碼屬性;I=3表示程序?qū)嶓w屬性;I=4表示軟件供應(yīng)商屬性;I=5表示第一計(jì)算機(jī)實(shí)體屬性;I=6表示第二計(jì)算機(jī)實(shí)體屬性;如此等等。圖2中的策略執(zhí)行模塊204就使用了上述屬性陣列來(lái)搜尋安全策略。
每條安全策略由兩部分構(gòu)成一或多個(gè)屬性規(guī)約以及一或多個(gè)安全措施代碼。每一屬性規(guī)約規(guī)定了一個(gè)屬性的匹配值。
An attribute specification can be set to‘wildcard’(denoted with“*”)for all values,or contain a list of values.一個(gè)屬性規(guī)約可以被置為‘通配符’(記為“*”)以標(biāo)識(shí)所有的值,也可以含有一張“值的清單”。對(duì)于某些屬性,例如文件名、網(wǎng)絡(luò)連接標(biāo)識(shí)名,規(guī)約中可以含有針對(duì)一組值的部分的‘通配符’。例如,文件名的實(shí)體屬性可以被置為“*.doc”,意思是任何以“.doc”為擴(kuò)展名的文件;一項(xiàng)網(wǎng)絡(luò)連接的實(shí)體屬性可以被設(shè)置為{SMTP,*,*,*,*},意思是協(xié)議名為SMTP的任何連接;或者是{TCP,*,*,100.110.120.130,80},意思是協(xié)議名為TCP、且目的地地址為100.110.120.130,以及端口號(hào)為80的任何連接。如果在安全策略中省略了某一屬性的規(guī)約說(shuō)明,就等效于對(duì)該屬性使用了‘通配符’的規(guī)約。安全操作碼說(shuō)明了應(yīng)該采取何種安全措施。以下是一些可以使用的安全措施碼1.PASS_THROUGH允許系統(tǒng)活動(dòng)進(jìn)行下去。
2.STOP_ACTIVITY,停止執(zhí)行此項(xiàng)系統(tǒng)活動(dòng)。
3.STOP_PROGRAM,停止執(zhí)行軟件程序。
4.LOG_MESSAGE,向日志文件中記入消息。
5.WARN_WITH_OPTIONS,彈出一個(gè)窗口,顯示有關(guān)該軟件程序的系統(tǒng)活動(dòng)的警示信息或者應(yīng)該如何加以處理的指令,乃至含有供用戶選擇的各種措施。每一個(gè)這種措施碼均可與一或多個(gè)供選擇采用的措施碼相關(guān)聯(lián)??蛇x的措施碼可以是上述措施碼中之一。
一項(xiàng)安全策略可以含有一或多個(gè)可以同時(shí)執(zhí)行的安全措施碼,例如用STOP_ACTIVITY來(lái)停止一項(xiàng)系統(tǒng)活動(dòng)的執(zhí)行;用LOG_MESSAGE來(lái)同時(shí)在日志中登錄消息。
當(dāng)政策執(zhí)行模塊收到由系統(tǒng)活動(dòng)推導(dǎo)出來(lái)的一個(gè)屬性陣列時(shí),就會(huì)從中去搜尋其屬性規(guī)約與之最佳匹配的安全策略。將屬性陣列的每一個(gè)值與某一安全策略的相應(yīng)屬性規(guī)約相比較。如果所有的屬性值均與這條安全策略的所有屬性值相匹配,就認(rèn)為這條安全策略是匹配的。如果有多條安全策略與給定的屬性陣列相匹配,就采用“最窄匹配規(guī)則”,也即選用具有最窄的屬性規(guī)約的安全策略。如果屬性規(guī)約中所規(guī)定的取值范圍較小,我們就認(rèn)為這一屬性規(guī)約是“比較窄”的。例如,一個(gè)具體的文件名就比含有‘通配符’的文件名窄。當(dāng)然還希望在設(shè)計(jì)政策時(shí)能夠?qū)δ承傩再x予較高的優(yōu)先度。例如,程序標(biāo)識(shí)名屬性的優(yōu)先度可以比其他的屬性高。
如果一條安全策略中對(duì)其程序標(biāo)識(shí)名屬性的規(guī)定有一個(gè)具體的名字如“Microsoft outlook”,換句話說(shuō),這一策略是被設(shè)計(jì)用來(lái)處理“Microsoft outlook”程序的,那么,對(duì)于由“Microsoft outlook”程序產(chǎn)生的系統(tǒng)活動(dòng),只要系統(tǒng)活動(dòng)的屬性陣列與這一安全策略的其他屬性也相匹配,就要首先使用這一安全策略。采用屬性優(yōu)先度以后所得到的效果將在稍后的一個(gè)例子中加以闡明。
在找到了一條安全策略以后,策略執(zhí)行模塊就去采取這一安全策略所規(guī)定的安全措施。安全措施(WARN_WITH_OPTIONS)將彈出一窗口,供用戶選擇他最終想要采取的措施。一般情況下,最終措施或者是PASS_THROUGH(繼續(xù)進(jìn)行下去)或者是STOP_ACTIVITY(停止進(jìn)行)。所彈出的窗口也可以含有一種選擇,就是允許對(duì)同一程序采取同樣的措施而不必再給出警示信息。參看圖2,策略執(zhí)行模塊204送去一條消息給系統(tǒng)活動(dòng)截獲與控制模塊212,以執(zhí)行最終的措施。
在搜尋安全策略時(shí),當(dāng)然可以采取一些提高效率的方法。典型的方法包括使用雜湊表,或者基于樹(shù)的表來(lái)減少搜尋時(shí)間。也可以使用緩沖存儲(chǔ)的辦法,就是為某一被執(zhí)行的程序搞一個(gè)針對(duì)它的表格,并且把指向某一已經(jīng)找到的安全策略的指針?lè)胚M(jìn)一個(gè)表格中;于是,在下一次具有同一屬性的同一系統(tǒng)活動(dòng)發(fā)生時(shí),就可以迅速地從這個(gè)表格中獲取這一策略。當(dāng)前廣泛使用的搜尋方法的許多技巧都可以用在這里。
在所推薦的實(shí)施例中,策略庫(kù)可以在最初含有兩組安全策略一組用來(lái)防止由未知程序在非用戶啟動(dòng)的情況下可能導(dǎo)致的危險(xiǎn)軟件操作,另一組用來(lái)允許可以信任的程序即使沒(méi)有用戶的啟動(dòng)也可以去執(zhí)行已知的軟件操作。用戶接口模塊可以讓計(jì)算機(jī)用戶翻閱,添加,刪除或者修改策略庫(kù)中的任何策略。
以下是一些例示性的安全策略。在以下屬性規(guī)約中,未予說(shuō)明的屬性就是使用‘通配符’的屬性,因而可以采用任何值;而程序標(biāo)識(shí)名屬性則具有優(yōu)先于所有其他屬性的優(yōu)先度。
·安全策略(A)屬性規(guī)約程序標(biāo)識(shí)名“Microsoft outlook”命令碼REQUEST_CONNECTION,SEND_DATE,RECEIVE_DATA網(wǎng)絡(luò)連接實(shí)體{TCP,*,*,100.101.102.103,*}安全措施PASS_THROUGH和LOG_MESSAGE·安全策略(B)屬性規(guī)約命令碼START_PROGRAM,START_COMMAND安全措施帶有可選命令碼STOP_ACTIVITY的WARN_WITH_OPTIONS·安全策略(C)屬性規(guī)約命令碼DELETE_FILE,WRITE_FILEACCEPT_CONNECTION,REQUEST_CONNECT,START_COMMAND,START_PROGRAM,SET_REGISTRY安全措施帶有可選命令碼PASS_THROUGH,STOP_ACTIVITY的WARN_WITH_OPTIONS·安全策略(D)
屬性規(guī)約無(wú)安全措施PASS_THROUGH策略(A)允許“Microsoft outlook”程序在任何時(shí)候經(jīng)過(guò)或不經(jīng)過(guò)用戶的啟動(dòng)去從IP地址為(100.101.102.103)的郵件服務(wù)器那里獲取電子郵件。策略(B)禁止“Microsoft outlook”程序去執(zhí)行程序或命令。通常,當(dāng)用戶雙擊附加到“Microsoft outlook”中的某一電子郵件上的某一程序的圖標(biāo)時(shí),“Microsoft outlook”就會(huì)試圖執(zhí)行這一程序。在這種情況下,就會(huì)有一窗口彈出,顯示警告信息,這時(shí)只有一種選擇“STOP_ACTIVITY”(停止執(zhí)行)可以出現(xiàn)。由于近來(lái)的大多數(shù)病毒是通過(guò)電子郵件的附件來(lái)傳播的,這一策略就會(huì)不讓系統(tǒng)從“Microsoft outlook”程序中直接地去執(zhí)行這些程序。有了策略(C),如果系統(tǒng)活動(dòng)是屬于DELETE_FILE,WRITE_FILE,ACCEPT_NETWORK_CONNECTION,REQUEST_NETWORK_CONNECTION,START_COMMAND,START_PROGRAM,SET_REGISTRY中之一,并且系統(tǒng)活動(dòng)又不是由用戶所啟動(dòng)的,就會(huì)有一窗口彈出,顯示警告信息,讓用戶選擇“讓系統(tǒng)活動(dòng)繼續(xù)下去”或者“停止執(zhí)行這一系統(tǒng)活動(dòng)”。策略(D)是所謂的默認(rèn)策略,它將讓所有的與其他安全策略不相匹配的系統(tǒng)活動(dòng)繼續(xù)進(jìn)行下去。
以下來(lái)說(shuō)明采取屬性優(yōu)先度的效果。正如在上面安全策略中所說(shuō)明過(guò)的,程序標(biāo)識(shí)名屬性具有比其他所有屬性都要高的優(yōu)先度。設(shè)想“Microsoft outlook”程序已經(jīng)被配置成可以每隔十分鐘就自動(dòng)地接收來(lái)自IP地址為(100.101.102.103)的服務(wù)器的郵件。在某一個(gè)十分鐘中,“Microsoft outlook”程序無(wú)需用戶的啟動(dòng)就向IP地址為(100.101.102.103)的服務(wù)器請(qǐng)求一次網(wǎng)絡(luò)連接,這時(shí)就發(fā)生了一次系統(tǒng)活動(dòng),其“程序標(biāo)識(shí)名”屬性為“Microsoft outlook”,命令碼為REQUEST_CONNECTION,網(wǎng)絡(luò)連接實(shí)體為(TCP,本地地址,端口號(hào),100.101.102.103,電子郵件端口號(hào)),而“用戶啟動(dòng)”屬性則為FALSE。這一系統(tǒng)活動(dòng)將與上述的策略(A)和策略(C)相配。安全系統(tǒng)將選用策略(A)而不是策略(C),因?yàn)椴呗?A)的“程序標(biāo)識(shí)名”屬性是嚴(yán)格相配而程序標(biāo)識(shí)名的屬性的優(yōu)先度比所有其他屬性都高。
以上所描述的安全策略可以防止惡意的軟件在未經(jīng)用戶的啟動(dòng)的情況下所進(jìn)行的操作。但是專門設(shè)計(jì)的特洛伊木馬程序可以提供一個(gè)誤導(dǎo)用戶的用戶接口,從而引誘用戶在它上面進(jìn)行操作。而一旦用戶在特洛伊木馬的用戶接口上進(jìn)行了操作,該程序就會(huì)立即引發(fā)錯(cuò)誤的操作,并且避開(kāi)了安全系統(tǒng)的偵察,因?yàn)樗雌饋?lái)好像是由用戶所啟動(dòng)的。為了防止這種現(xiàn)象發(fā)生,可以添加一條新的安全策略來(lái)警告用戶有關(guān)由一個(gè)新程序第一次引發(fā)的可能具有破壞性的操作。在呈現(xiàn)警告信息的彈出式窗口中,安全系統(tǒng)可以再添加一種選擇允許用戶讓同一程序的同一操作在今后被執(zhí)行,系統(tǒng)也不再給出警告。如果用戶選擇在今后允許該操作的進(jìn)行,系統(tǒng)將為同一程序的這一操作自動(dòng)地建立一條新的安全策略。下面的策略(E)就是用來(lái)警告用戶有關(guān)由一個(gè)新程序第一次引發(fā)的可能具有破壞性的操作。
·安全策略(E)屬性規(guī)約用戶啟動(dòng)TRUE命令碼DELETE_FILE,WRITE_FILEACCEPT_CONNECTION,REQUEST_CONNECT,START_COMMAND,START_PROGRAM,SET_REGISTRY安全操作帶有可選的措施為PASS_THROUGH,STOP_ACTIVITY和允許用戶“讓同一程序的同一操作在今后被執(zhí)行,系統(tǒng)也不再給出警告”的可選動(dòng)作的“WARN_WITH_OPTIONS(帶有可選項(xiàng)的警告)”。
以下就以Windows操作系統(tǒng)中廣為使用的瀏覽器“WindowsExplorer”作為一個(gè)例子來(lái)說(shuō)明這一安全策略是如何工作的。設(shè)想用戶企圖將“Windows Explorer”用戶接口中的一個(gè)文件加以刪除,這時(shí)就會(huì)產(chǎn)生一個(gè)系統(tǒng)活動(dòng),其中含有的程序標(biāo)識(shí)名屬性為“WindowsExplorer”,命令碼為DELETE_FILE,而用戶啟動(dòng)屬性為TRUE。此系統(tǒng)活動(dòng)將與安全策略(E)相配,于是有一個(gè)窗口彈出,其中含有“讓它繼續(xù)進(jìn)行下去”和“拒絕執(zhí)行”這兩個(gè)可選項(xiàng),它還含有“讓同一程序的同一操作在今后被執(zhí)行,系統(tǒng)也不再給出警告”的可選項(xiàng)。如果用戶選擇允許該操作在當(dāng)下和今后被執(zhí)行,安全系統(tǒng)將讓當(dāng)前的系統(tǒng)活動(dòng)進(jìn)行下去,同時(shí)又建立一條新的安全策略(F)如下·安全策略(F)屬性規(guī)約程序標(biāo)識(shí)名“Windows Explorer”用戶啟動(dòng)TRUE命令碼DELETE_FILE安全措施PASS_THROUGH如果用戶隨后又在“Windows Explorer”中刪除文件,那時(shí)所產(chǎn)生的系統(tǒng)活動(dòng)將與策略(F)相配,而不是和策略(E)相配(因?yàn)槌绦驑?biāo)識(shí)名具有較高的優(yōu)先度),而且這一操作將被執(zhí)行并且不會(huì)有警告信息出現(xiàn)??梢钥吹剑踩呗?E)給用戶提供了一個(gè)機(jī)會(huì)來(lái)檢測(cè)和停止由特洛伊木馬程序所引發(fā)的有害操作。
在上述范例性的安全策略中,為了說(shuō)明問(wèn)題起見(jiàn),為了表示程序,采用了“程序名”作為程序標(biāo)識(shí)名。在另外的一個(gè)推薦性的安全系統(tǒng)中,將使用由程序文件連同程序名一起導(dǎo)出的唯一性雜湊值來(lái)作為程序標(biāo)識(shí)名,特別是用來(lái)在安全策略(F)中標(biāo)識(shí)像“Windowsexplorer”這樣的新程序。在向用戶提供警示性信息時(shí),在消息中用程序名是比較好的,而用唯一性的雜湊值則可保證整個(gè)程序文件是被核準(zhǔn)了的和沒(méi)有被竄改過(guò)的,從而防止特洛伊木馬或者病毒程序假冒程序名或者在其中插入了有害的代碼。
在安全系統(tǒng)中,安全策略庫(kù)可以含有一或多個(gè)文件,并且可以采用任何文件格式。可以把它存放在本地計(jì)算機(jī)中,也可以存放在遠(yuǎn)處的服務(wù)器(稱之為策略服務(wù)器)中。策略服務(wù)器可以為多臺(tái)計(jì)算機(jī)所共享,這種做法也是在合作型環(huán)境中所希望的。安全策略也可以放在利用數(shù)字安全證書經(jīng)過(guò)數(shù)字簽名的的電子文件中,然后發(fā)送給安全系統(tǒng)。當(dāng)利用證書進(jìn)行數(shù)字簽名時(shí),可以對(duì)安全策略及其作者加以認(rèn)證。包含在數(shù)字證書中的公鑰也可以用來(lái)對(duì)安全系統(tǒng)所產(chǎn)生的數(shù)據(jù)加密,加密后的數(shù)據(jù)只能為擁有相應(yīng)私鑰的證書擁有者所解密。
本發(fā)明在不偏離其精神與中心特征的條件下還可以體現(xiàn)為其他具體的形式。因此現(xiàn)在的這一具體實(shí)現(xiàn)應(yīng)在各方面被認(rèn)為是說(shuō)明性而不是限制性的。
權(quán)利要求
1.保護(hù)計(jì)算機(jī)使之免受惡意軟件操作之害的一種方法,包括截獲系統(tǒng)活動(dòng);推導(dǎo)出用戶啟動(dòng)屬性,以茲指明該系統(tǒng)活動(dòng)是否由于用戶在與計(jì)算機(jī)相連的至少某一外圍設(shè)備上所啟動(dòng);在這一用戶啟動(dòng)屬性所包含的信息的基礎(chǔ)上,對(duì)該系統(tǒng)活動(dòng)采取安全措施;其中所說(shuō)的系統(tǒng)活動(dòng)是指由計(jì)算機(jī)系統(tǒng)為某一軟件程序所執(zhí)行的某一系統(tǒng)操作。
2.根據(jù)權(quán)利的方法1,其中所說(shuō)的安全措施包含以下的任一種動(dòng)作允許操作系統(tǒng)將所說(shuō)的系統(tǒng)活動(dòng)進(jìn)行下去;在操作系統(tǒng)將所說(shuō)的操作系統(tǒng)活動(dòng)執(zhí)行下去以前停止它;彈出一個(gè)窗口以顯示一項(xiàng)信息和一組可選操作,讓計(jì)算機(jī)用戶去選擇,然后采取該計(jì)算機(jī)用戶所選擇的措施;將一個(gè)消息寫入日志文件中;在窗口中顯示一消息;由計(jì)算機(jī)發(fā)出一種聲響;發(fā)出一個(gè)電子郵件;向服務(wù)器發(fā)送一個(gè)消息。
3.根據(jù)權(quán)利的方法2,其中所說(shuō)的系統(tǒng)活動(dòng)包含以下的任一種操作請(qǐng)求一次網(wǎng)絡(luò)連接;接受網(wǎng)絡(luò)連接;通過(guò)網(wǎng)絡(luò)連接發(fā)送數(shù)據(jù);通過(guò)網(wǎng)絡(luò)接收發(fā)送數(shù)據(jù);執(zhí)行一條命令;執(zhí)行一個(gè)程序;打開(kāi)文件;從文件中讀出數(shù)據(jù);向文件中寫入數(shù)據(jù);刪除文件;對(duì)文件重新命名;關(guān)閉文件;設(shè)置注冊(cè)表中的鍵值。
4.根據(jù)權(quán)利的方法3,其中包含有所說(shuō)的用戶啟動(dòng)屬性的所說(shuō)的信息是一組屬性,其中可含有如下附加信息代表所說(shuō)的系統(tǒng)活動(dòng)的操作的命令碼;與所說(shuō)的系統(tǒng)活動(dòng)相關(guān)的一或多個(gè)計(jì)算機(jī)實(shí)體;唯一地標(biāo)識(shí)與所說(shuō)的系統(tǒng)活動(dòng)相關(guān)的軟件程序的程序標(biāo)識(shí)符;唯一地標(biāo)識(shí)生產(chǎn)該軟件程序的供應(yīng)商的軟件供應(yīng)商標(biāo)識(shí)符;其中附加的屬性使人們得以靈活地設(shè)計(jì)安全策略。
5.根據(jù)權(quán)利的方法1,其中導(dǎo)出用戶啟動(dòng)屬性的步驟進(jìn)一步分解為以下步驟將所說(shuō)的用戶啟動(dòng)屬性設(shè)置為FALSE,表示所說(shuō)的系統(tǒng)活動(dòng)不是由用戶所啟動(dòng)的,如果滿足以下任意一個(gè)條件,在出現(xiàn)所說(shuō)的系統(tǒng)活動(dòng)之前的某一時(shí)間窗口內(nèi),與所說(shuō)的計(jì)算機(jī)相連接的任何外圍設(shè)備上均未發(fā)現(xiàn)用戶活動(dòng);與所說(shuō)的系統(tǒng)活動(dòng)相關(guān)的軟件程序沒(méi)有用來(lái)接收用戶活動(dòng)的用戶接口;其中所說(shuō)的用戶活動(dòng)意為任何一種以下的數(shù)據(jù)來(lái)自與所說(shuō)的計(jì)算機(jī)相連的鍵盤上的擊鍵;來(lái)自與所說(shuō)的計(jì)算機(jī)相連的鼠標(biāo)上的點(diǎn)擊;來(lái)自與所說(shuō)的計(jì)算機(jī)相連的鼠標(biāo)的運(yùn)動(dòng);來(lái)自與所說(shuō)的計(jì)算機(jī)相連的觸摸屏上的觸摸;來(lái)自與所說(shuō)的計(jì)算機(jī)相連的麥克風(fēng)的語(yǔ)音命令。
6.根據(jù)權(quán)利的方法1,其中導(dǎo)出用戶啟動(dòng)屬性的步驟進(jìn)一步分解為以下步驟記錄在用戶所控制的任一與計(jì)算機(jī)相連的外圍設(shè)備上產(chǎn)生的用戶活動(dòng),確定所說(shuō)的系統(tǒng)活動(dòng)與所說(shuō)的用戶活動(dòng)之間的關(guān)聯(lián)。其中所說(shuō)的用戶活動(dòng)包括以下的任一數(shù)據(jù)來(lái)自與所說(shuō)的計(jì)算機(jī)相連的鍵盤上的擊鍵;來(lái)自與所說(shuō)的計(jì)算機(jī)相連的鼠標(biāo)上的點(diǎn)擊;來(lái)自與所說(shuō)的計(jì)算機(jī)相連的鼠標(biāo)的運(yùn)動(dòng);來(lái)自與所說(shuō)的計(jì)算機(jī)相連的觸摸屏上的觸摸;來(lái)自與所說(shuō)的計(jì)算機(jī)相連的麥克風(fēng)的語(yǔ)音命令。
7.根據(jù)權(quán)利的方法6,其中導(dǎo)出所說(shuō)的系統(tǒng)活動(dòng)與用戶活動(dòng)之間的關(guān)聯(lián)的步驟進(jìn)一步分解為以下步驟對(duì)與所說(shuō)的系統(tǒng)活動(dòng)相關(guān)的軟件程序在所說(shuō)的系統(tǒng)活動(dòng)之前的某一時(shí)間窗口內(nèi)所收到的用戶活動(dòng)進(jìn)行計(jì)數(shù);如果被計(jì)數(shù)的用戶活動(dòng)量超過(guò)某一門檻值,將用戶啟動(dòng)屬性置為TRUE,表示所說(shuō)的系統(tǒng)活動(dòng)是由用戶啟動(dòng)的。
8.根據(jù)權(quán)利的方法4,其中基于若干屬性所采取的與所說(shuō)的系統(tǒng)活動(dòng)相關(guān)的安全措施的步驟進(jìn)一步分解為以下子步驟在與所說(shuō)的一組屬性相配的一組安全策略中搜尋一條安全策略,其中每一安全策略包含一組屬性規(guī)約以及至少一條安全措施,而每一個(gè)所說(shuō)的屬性規(guī)約則規(guī)定了一個(gè)屬性的匹配值;按照所說(shuō)的安全策略實(shí)行安全措施。
9.根據(jù)權(quán)利的方法4,其中所說(shuō)的一組安全策略含有包含如下內(nèi)容的一條策略屬性規(guī)約包含取值為FALSE的用戶啟動(dòng)屬性表示“不是由計(jì)算機(jī)用戶所啟動(dòng)的”;命令碼屬性規(guī)約包含以下各種值請(qǐng)求網(wǎng)絡(luò)連接,接受網(wǎng)絡(luò)連接;安全措施包含彈出一窗口,顯示一消息和一組包含“停止該活動(dòng)”和“讓活動(dòng)繼續(xù)下去”的可選動(dòng)作讓用戶選擇。
10.根據(jù)權(quán)利的方法8,其中所說(shuō)的一組安全策略含有包含如下內(nèi)容的一條安全措施彈出一窗口,顯示一消息和在將來(lái)允許同一軟件程序的同一操作繼續(xù)進(jìn)行下去的可選動(dòng)作讓用戶選擇其中所說(shuō)的方法可進(jìn)一步含有建立一新的安全策略的步驟,用來(lái)在用戶選擇了這一選項(xiàng)以后允許所說(shuō)的軟件程序進(jìn)行所說(shuō)的操作。
11.根據(jù)權(quán)利的方法8,其中所說(shuō)的一組安全策略可以存放在以下所說(shuō)的任一場(chǎng)所被所說(shuō)的方法所保護(hù)的計(jì)算機(jī)中;通過(guò)網(wǎng)絡(luò)與所說(shuō)的受本方法保護(hù)的計(jì)算機(jī)相連的服務(wù)器。
12.根據(jù)權(quán)利的方法8,其中所說(shuō)的一組安全策略是一個(gè)含有與某一數(shù)字證書一起簽署的數(shù)字簽名的電子文件,所說(shuō)的方法進(jìn)一步含有如下步驟利用所說(shuō)的數(shù)字證書驗(yàn)證所說(shuō)的數(shù)字簽名。
13.保護(hù)計(jì)算機(jī)免受惡意軟件操作攻擊的系統(tǒng),它包括一個(gè)系統(tǒng)活動(dòng)截獲與控制模塊,用來(lái)截獲系統(tǒng)活動(dòng);一用戶關(guān)聯(lián)模塊,用來(lái)推導(dǎo)用戶啟動(dòng)屬性,以指明所說(shuō)的系統(tǒng)活動(dòng)是否由計(jì)算機(jī)用戶通過(guò)至少一臺(tái)與計(jì)算機(jī)相連的外圍設(shè)備所啟動(dòng)的;一策略執(zhí)行模塊,用來(lái)在含有所說(shuō)的用戶啟動(dòng)屬性的信息的基礎(chǔ)上針對(duì)所說(shuō)的系統(tǒng)活動(dòng)來(lái)執(zhí)行安全措施;其中所說(shuō)的系統(tǒng)活動(dòng)是指計(jì)算機(jī)系統(tǒng)替軟件程序所執(zhí)行的某一操作。
全文摘要
本發(fā)明公開(kāi)了實(shí)時(shí)地保護(hù)計(jì)算機(jī)系統(tǒng)免受惡意軟件攻擊的方法和系統(tǒng)。所述的系統(tǒng)及方法結(jié)合計(jì)算機(jī)系統(tǒng)和用戶活動(dòng)信息推導(dǎo)出一用戶啟動(dòng)屬性以標(biāo)明某一系統(tǒng)活動(dòng)是否為用戶啟動(dòng)的,并阻止非用戶啟動(dòng)的秘密進(jìn)行的惡意軟件操作。所述的系統(tǒng)及方法結(jié)合若干其它屬性,以支持靈活的安全規(guī)則設(shè)計(jì),對(duì)有潛在危險(xiǎn)的特洛伊木馬程序操作向用戶提供警告,并動(dòng)態(tài)的產(chǎn)生安全規(guī)則以允許可信賴的程序執(zhí)行可信賴的操作。
文檔編號(hào)G06F11/30GK1550950SQ20041004228
公開(kāi)日2004年12月1日 申請(qǐng)日期2004年5月8日 優(yōu)先權(quán)日2003年5月9日
發(fā)明者黃澤鎮(zhèn) 申請(qǐng)人:黃澤鎮(zhèn)