亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

用來減少軟件的攻擊面的自動代碼鎖定的制作方法

文檔序號:11935229閱讀:383來源:國知局
用來減少軟件的攻擊面的自動代碼鎖定的制作方法與工藝

本申請要求于2014年6月24日提交的美國臨時申請No.61/998,320的權(quán)益和優(yōu)先權(quán)。以上申請的全部教導(dǎo)通過引用并入本文。



背景技術(shù):

隨著過去的每一天,網(wǎng)絡(luò)攻擊正變得越來越復(fù)雜。攻擊以利用特定應(yīng)用中的特定漏洞為目標(biāo)。這種攻擊的原因和影響在網(wǎng)絡(luò)層是不可辨別的,因為它們不會觸發(fā)似乎是明顯惡意的網(wǎng)絡(luò)活動。在企業(yè)系統(tǒng)上執(zhí)行的應(yīng)用是攻擊者的優(yōu)選目標(biāo),因為可以從這些應(yīng)用訪問高價值的信息,諸如信用卡號、客戶社會保障號碼和其他個人可標(biāo)識信息。為了處理這些有針對性的攻擊,許多供應(yīng)商已經(jīng)部署了網(wǎng)絡(luò)安全產(chǎn)品,諸如試圖學(xué)習(xí)用戶行為的下一代防火墻、或試圖在沙盒中運行似乎是可疑代碼的代碼并等待這種可疑代碼執(zhí)行惡意活動的沙盒技術(shù)。在這些情況下,惡意軟件經(jīng)常適應(yīng)其行為,例如等待更長的時間段來執(zhí)行其惡意意圖。由于這些產(chǎn)品必須放棄嘗試在某一點檢測行為并將用戶流量傳遞給預(yù)期接收者,所以攻擊僅等待這個檢測時間。這些行為的改變阻礙所部署的網(wǎng)絡(luò)安全產(chǎn)品的用于識別攻擊行為的能力,因此,它們用于檢測惡意軟件的存在的能力大大降低。



技術(shù)實現(xiàn)要素:

如今,計算機應(yīng)用的大量惡意軟件攻擊源于惡意行為者在運行應(yīng)用的進(jìn)程中注入并隨后執(zhí)行惡意內(nèi)容的能力。注入這樣的惡意內(nèi)容的方法涉及標(biāo)識和利用執(zhí)行不充分的輸入驗證的設(shè)計不良的應(yīng)用代碼。當(dāng)前的網(wǎng)絡(luò)安全技術(shù)要么試圖觀察應(yīng)用中的惡意內(nèi)容,跟蹤應(yīng)用的行為,要么在沙箱中篩查可疑代碼的行為。這些技術(shù)不具有鎖定計算機應(yīng)用的指令以防止應(yīng)用代碼中的惡意內(nèi)容的注入和執(zhí)行的能力。此外,這些技術(shù)不具有用于跟蹤和關(guān)聯(lián)訪問鎖定代碼的嘗試以便于在惡意軟件成功地執(zhí)行其惡意意圖之前準(zhǔn)確地標(biāo)識惡意軟件攻擊的能力。

許多企業(yè)系統(tǒng)執(zhí)行由通用代碼組成的計算機應(yīng)用,該通用代碼包括企業(yè)或企業(yè)中的一類用戶所不使用的軟件功能。通過確定與不使用的軟件功能相對應(yīng)的代碼并禁用該代碼的指令,用于注入惡意內(nèi)容的攻擊面被顯著減少(即,鎖定)。禁用不使用的指令通過使惡意行為者能夠攻擊應(yīng)用的點最小化而提供實質(zhì)的益處,同時不影響執(zhí)行應(yīng)用的用戶的體驗。作為鎖定的結(jié)果,執(zhí)行這些計算機應(yīng)用的任何設(shè)備,諸如臺式計算機、膝上型計算機、移動或其他形式的個人計算機、互聯(lián)網(wǎng)就緒設(shè)備(例如,蜂窩電話)、機頂盒、MP3播放器、游戲控制臺、或通信地耦合到這些設(shè)備的其他設(shè)備,被更好地保護(hù)免受惡意軟件攻擊。

本公開針對用于鎖定計算機應(yīng)用的指令以便于檢測和防止惡意軟件攻擊的示例系統(tǒng)和方法。這些系統(tǒng)和方法根據(jù)用于計算機應(yīng)用的可用指令來確定一組指令。所確定的一組指令提供計算機應(yīng)用的特定功能。在示例實施例中,特定功能可以取決于執(zhí)行應(yīng)用的用戶的類別。在一些實施例中,系統(tǒng)和方法通過對計算機應(yīng)用的特定功能執(zhí)行功能測試并捕獲在功能測試期間被執(zhí)行的指令來確定該組指令。在這些實施例中的一些實施例中,系統(tǒng)和方法還可以通過對特定功能執(zhí)行負(fù)面測試來確定該組指令。負(fù)面測試觸發(fā)關(guān)于特定功能的異常處理函數(shù),并且系統(tǒng)和方法捕獲由觸發(fā)的異常處理函數(shù)執(zhí)行的指令。在其他實施例中,系統(tǒng)和方法通過在功能測試期間靜態(tài)地分析執(zhí)行特定功能的線程的結(jié)構(gòu)來捕獲用于異常處理函數(shù)的指令。系統(tǒng)和方法可以將用于該組指令的存儲器地址寫入到用于在硬件處理器上加載的表。在一些實施例中,系統(tǒng)包括被配置為根據(jù)用于計算機應(yīng)用的可用指令來確定該組指令的儀器引擎。

在一些實施例中,系統(tǒng)和方法可以在存儲器中重新組織該組指令,以及將經(jīng)重新組織的該組指令寫入到更小的存儲器空間。在這些實施例中,系統(tǒng)和方法可以在將經(jīng)重新組織的該組指令寫入到更小的存儲器空間之前使經(jīng)重新組織的該組指令隨機化。在一些實施例中,儀器引擎被配置為重新組織和隨機化該組指令,并且在這些和其他實施例中,儀器引擎還可以被配置為將用于經(jīng)重新組織的指令的存儲器地址寫入到表。

一旦該組指令被確定,則針對不在該組指令中的每個可用指令,系統(tǒng)和方法將相應(yīng)指令改變?yōu)椴黄鹱饔靡苑乐瓜鄳?yīng)指令的執(zhí)行。系統(tǒng)和方法可以將相應(yīng)指令永久或臨時地改變?yōu)椴黄鹱饔谩T谝恍嵤├?,系統(tǒng)和方法可以通過在加載時間期間利用不起作用的指令重寫相應(yīng)指令來將相應(yīng)指令改變?yōu)椴黄鹱饔谩T谄渌麑嵤├?,系統(tǒng)和方法可以通過在運行時期間利用不起作用的指令重寫相應(yīng)指令來將相應(yīng)指令改變?yōu)椴黄鹱饔?。系統(tǒng)和方法可以通過利用無操作(NOP)指令重寫相應(yīng)指令來將相應(yīng)指令改變?yōu)椴黄鹱饔?。在一些實施例中,儀器引擎被配置為將相應(yīng)指令改變?yōu)椴黄鹱饔谩?/p>

在將指令改變?yōu)椴黄鹱饔弥?,系統(tǒng)和方法可以捕獲在運行時被訪問的計算機應(yīng)用的存儲器地址。在一些實施例中,系統(tǒng)包括分析引擎,其被通信地耦合到儀器引擎,并且被配置為捕獲存儲器地址。如果所捕獲的存儲器地址與用于不起作用的指令的存儲器地址匹配,則系統(tǒng)和方法可以聲明安全攻擊。在一些實施例中,系統(tǒng)包括驗證引擎,其被通信地耦合到分析引擎和儀器引擎,并且被配置為聲明安全攻擊。

附圖說明

根據(jù)如在附圖中示出的對本公開的示例實施例的以下更具體的描述,前述事項將是顯而易見的,其中在不同的視圖中相似的附圖標(biāo)記指代相同的部分。附圖不一定是成比例的,重點反而在于示出本公開的實施例。

圖1示出高級持續(xù)惡意軟件攻擊的示例配置。

圖2示出用于鎖定計算機應(yīng)用的指令的示例方法的流程圖。

圖3示出具有基于組織和該組織的用戶的類別的功能的示例計算機應(yīng)用。

圖4示出了用于存儲應(yīng)用的活動指令的示例表。

圖5A示出用于捕獲執(zhí)行計算機應(yīng)用的所需功能的指令的示例配置的框圖。

圖5B示出用于在在線模式和離線模式下鎖定指令的示例配置的框圖。

圖6示出本公開的實施例中的用來跟蹤所生成的事件的示例事件鏈狀態(tài)機。

圖7A示出本公開的實施例中的客戶端和分析引擎的示例框圖。

圖7B示出用來在圖7A的客戶端和分析引擎之間傳輸數(shù)據(jù)的示例協(xié)議數(shù)據(jù)單元(PDU)。

圖8示出其中可以實現(xiàn)本公開的實施例的計算機網(wǎng)絡(luò)或類似的數(shù)字處理環(huán)境。

圖9示出了圖8的計算機系統(tǒng)中的計算機(例如,客戶端處理器/設(shè)備或服務(wù)器計算機)的示例內(nèi)部結(jié)構(gòu)的示圖。

具體實施方式

下面是對本公開的示例實施例的描述。

惡意軟件攻擊的概述

國家漏洞數(shù)據(jù)庫(NVD)在2011年列舉了大約4100個應(yīng)用漏洞,并且在2012年列舉了大約5300個應(yīng)用漏洞,其被劃分為二十三個攻擊類別。盡管幾個攻擊類別涉及由疏忽或錯誤配置導(dǎo)致的攻擊,但是最大數(shù)量的攻擊類別涉及惡意行為者在組織的正在執(zhí)行的進(jìn)程中有意注入惡意內(nèi)容并隨后導(dǎo)致惡意內(nèi)容的執(zhí)行。注入這樣的惡意內(nèi)容的過程涉及標(biāo)識和利用某一設(shè)計不良的代碼,其執(zhí)行不充分的輸入驗證。例如,如果代碼缺少與大小相關(guān)的驗證,則該代碼可能允許包括在緩沖區(qū)錯誤攻擊類別中的緩沖區(qū)錯誤式的攻擊。在這些攻擊中,惡意行為者注入惡意內(nèi)容以試圖從正在執(zhí)行的進(jìn)程中挖掘信息以訪問來自組織的機密信息,諸如信用卡數(shù)據(jù)、知識產(chǎn)權(quán)、社會保障號碼。惡意行為者然后可以通過從該組織或該組織的客戶竊取資源來使用該機密信息獲利。

惡意軟件攻擊示例

圖1示出高級持續(xù)惡意軟件攻擊的示例。在這種情形下,來自行為者自己的基礎(chǔ)設(shè)施102的惡意行為者(或黑客)使用諸如nmap 104之類的掃描工具來遠(yuǎn)程地掃描面向企業(yè)108的基礎(chǔ)設(shè)施的web。當(dāng)掃描發(fā)現(xiàn)具有已知漏洞或零日漏洞的服務(wù)器時,行為者安裝殼代碼106以獲得對遠(yuǎn)程企業(yè)服務(wù)器(即,目標(biāo))110的控制并訪問企業(yè)網(wǎng)絡(luò)。一旦進(jìn)入網(wǎng)絡(luò),惡意行為者加載附加的工具。這些工具可以包括nmap、端口掃描器、密碼破解工具、ftp客戶端、壓縮工具,散列和/或加密和解密工具。

行為者然后訪問企業(yè)基礎(chǔ)設(shè)施,尋找機器114或116,提升的特權(quán)用戶從該機器114或116登錄到有價值的目標(biāo),諸如數(shù)據(jù)庫和文件倉庫。行為者出于抓取用戶的訪問憑證并為更多黑客工具找到家的目的而正在尋找機器114或116。在發(fā)現(xiàn)具有易受攻擊的應(yīng)用114或116的機器時,惡意行為者可以抓取憑證、滲透并隨后訪問目標(biāo)110。一旦目標(biāo)被訪問,則交易的附加的工具被加載到目標(biāo)110上。惡意軟件也可以被存放到移動設(shè)備(諸如特權(quán)用戶的智能手機和膝上型計算機)上,因為他們攜帶他們的機器通過諸如咖啡店、機場和酒店之類的無保護(hù)網(wǎng)絡(luò)。在另一種情形下,內(nèi)部用戶可以利用病毒或其他惡意軟件攻擊來感染目標(biāo)機器。通過使用復(fù)雜的密碼破解工具或窺探內(nèi)聯(lián)網(wǎng)流量,惡意軟件可以獲得管理用戶116的憑證。

企業(yè)數(shù)據(jù)庫是惡意行為者的優(yōu)選目標(biāo),因為特權(quán)用戶可以訪問極有價值的信息。例如,在這些數(shù)據(jù)庫中,特權(quán)用戶可以訪問關(guān)于許多用戶的大塊機密客戶信息,而常規(guī)用戶只能訪問機密信息中與其自身相關(guān)的部分。在憑證已被得到之后,惡意行為者可以作為特權(quán)用戶連接到數(shù)據(jù)庫和文件倉庫118,并且提取有價值的機密信息,諸如真實姓名、家庭地址、社會保障、駕駛執(zhí)照、出生日期、醫(yī)療記錄、金融信息(諸如信用卡/借記卡號)、電話號碼、電子郵件地址、用戶名和密碼、保險信息、詳細(xì)的客戶列表、設(shè)計方案和源代碼或其他知識產(chǎn)權(quán)。

惡意行為者可以可選地壓縮和加密該信息,并以小塊將其上傳到黑客命令控制中心112,以便不引起企業(yè)安全分析員的注意。為了實現(xiàn)該目的,惡意行為者可以每天改變黑客命令控制中心112的IP地址或使用代理,使得企業(yè)中的入侵檢測系統(tǒng)不能建立模式。企業(yè)通常每天發(fā)送和接收超過10GB的數(shù)據(jù);因此以短突發(fā)上傳相對少量的數(shù)據(jù)通常不被注意。

應(yīng)用114或116對惡意軟件攻擊的漏洞與應(yīng)用中的代碼量(即,攻擊面)成正比。通過確定由每個類別的用戶(例如,特權(quán)用戶)執(zhí)行的特定代碼,并且將用于代碼的其余部分的指令改變?yōu)椴黄鹱饔茫┬袨檎邔阂鈨?nèi)容注入到應(yīng)用中的攻擊面被最小化。更具體地,惡意行為者將發(fā)現(xiàn)用來注入惡意內(nèi)容的漏洞(諸如設(shè)計不良的代碼)的概率與被改變?yōu)椴黄鹱饔玫闹噶畹臄?shù)量成比例地減少,從而保護(hù)應(yīng)用免受惡意攻擊。此外,如果應(yīng)用的指令塊一貫地加載在相同的位置和序列中,則應(yīng)用114或116對惡意軟件攻擊的漏洞可以被增加。通過確定由一類用戶類訪問的特定指令,可以在每個系統(tǒng)的存儲器中重新組織和隨機化那些指令。因此,即使惡意行為者在應(yīng)用的最小化攻擊面中定位了漏洞,惡意攻擊者也被防止使用相同的漏洞來攻擊另一系統(tǒng)上的應(yīng)用。

鎖定過程

圖2示出用于鎖定計算機應(yīng)用的指令的示例方法200的流程圖。方法200可以用來減少計算機應(yīng)用的攻擊/威脅面,以便檢測和防止安全攻擊。方法200以儀器引擎根據(jù)用于計算機應(yīng)用的可用指令來確定一組指令在步驟220處開始。該組指令可以對應(yīng)于組織或組織的一類用戶所使用的應(yīng)用的特定功能,而可用指令對應(yīng)于應(yīng)用的所有功能。也就是說,應(yīng)用供應(yīng)商經(jīng)常向組織交付包括組織不為組織的所有類別的用戶使用的功能的應(yīng)用。例如,組織作為整體可以僅使用功能的子集,并且另外,不同類別的用戶(例如,普通用戶、特權(quán)用戶、管理員)可以僅使用該子集的一部分。儀器引擎可以確定由組織實際使用并且由組織的不同類別的用戶使用的特定功能的指令。

在一些實施例中,儀器引擎可以使用動態(tài)過程來確定該組指令。在該過程中,可以行使由組織或組織的一類用戶使用的特定功能,其繼而執(zhí)行對應(yīng)于該功能的目標(biāo)代碼塊??梢允褂冒üδ軠y試和負(fù)面測試的各種方法來行使特定功能,其測試代碼塊對無效輸入或關(guān)于功能的意外行為的處理。在一些實施例中,測試可以由人類測試者手動執(zhí)行,并且在其他實施例中,測試可以由測試工具自動執(zhí)行。另外,在一些實施例中,可以根據(jù)應(yīng)用供應(yīng)商提供的文檔或組織向供應(yīng)商提供的需求(例如,用例)來確定組織或該組織的一類用戶的特定功能。在其他實施例中,可以基于檢查如在作為應(yīng)用的一部分提供的圖形界面或命令行界面中指示的所有應(yīng)用命令來確定組織或該組織的一類用戶的完整功能,或者可以在用戶在真實世界條件下執(zhí)行應(yīng)用時在一段時間內(nèi)學(xué)習(xí)功能。在其他實施例中,信息技術(shù)或組織的其它這樣的部門可以選擇對不同類別的用戶可用的功能,并相應(yīng)地配置應(yīng)用。

當(dāng)對應(yīng)于功能的代碼塊被執(zhí)行時,儀器引擎研究代碼的行為并捕獲所生成的代碼的指令(例如,匯編代碼指令)。針對每個代碼塊,儀器引擎可以將所生成的指令的存儲器地址存儲在表中,例如在儀器數(shù)據(jù)庫的黃金表中。在一些實施例中,指令的代碼塊的存儲器地址被存儲為范圍。儀器引擎還可以將表傳送到分析引擎,分析引擎可以將表寫入在存儲器中或者分析引擎上的其他存儲元件中,以用于快速引用該組指令。

在一些實施例中,儀器引擎可以使用靜態(tài)過程來確定該組指令。在該過程中,儀器引擎可以使用代碼分析來反匯編應(yīng)用的可執(zhí)行文件和庫。例如,包含應(yīng)用的特定功能的可執(zhí)行文件和庫可以由供應(yīng)商以庫文件提供,諸如以動態(tài)鏈接庫(DLL)提供。儀器引擎可以反匯編庫文件,以及跟蹤組織或組織的一類用戶所使用的功能的函數(shù)、庫(例如,導(dǎo)入/導(dǎo)出/跳轉(zhuǎn)庫)和數(shù)據(jù),以確定與功能相對應(yīng)的代碼塊。對應(yīng)于特定功能的可執(zhí)行文件和庫可以根據(jù)與由應(yīng)用供應(yīng)商提供的動態(tài)鏈接庫(例如,API文檔)相關(guān)的文檔來確定。

當(dāng)儀器引擎反匯編庫文件時,針對每個代碼塊,儀器引擎可以將相應(yīng)指令的存儲器地址存儲在表中,諸如在儀器數(shù)據(jù)庫的黃金表中。在一些實施例中,指令的代碼塊的存儲器地址被存儲為范圍。儀器引擎還可以將表傳送到分析引擎,分析引擎可以將表寫入到硬件處理器以用于快速引用該組指令。

在步驟240,對于不在該組指令中的每個可用指令,儀器引擎將相應(yīng)指令改變?yōu)椴黄鹱饔?。更具體地,儀器引擎檢索在步驟220中確定的該組指令的存儲器地址。儀器引擎可以檢索存儲在表(諸如黃金表)中的存儲器地址。儀器引擎然后可以遍歷應(yīng)用的完整范圍的存儲器地址。如果遍歷的存儲器地址不對應(yīng)于針對該組活動指令檢索的存儲器地址,則儀器引擎將相應(yīng)指令改變?yōu)椴黄鹱饔?。在其它實施例中,如果遍歷的存儲器地址范圍不對應(yīng)于針對該組指令檢索的存儲器地址范圍,則儀器引擎將相應(yīng)的指令范圍改變?yōu)椴黄鹱饔谩?/p>

在一些實施例中,儀器引擎將指令永久地改變?yōu)椴黄鹱饔茫⑶以谄渌麑嵤├?,儀器引擎將指令臨時改變?yōu)椴黄鹱饔谩T趦x器引擎臨時改變指令的實施例中,儀器引擎存儲原始指令和相應(yīng)存儲器地址的副本,以在將來重新加載應(yīng)用期間將不起作用的指令中一個或多個指令改回原始指令。在儀器引擎永久地改變指令的實施例中,不起作用的指令跨應(yīng)用的重新加載而持續(xù)。儀器引擎可以通過在運行時期間或在加載時間期間利用不起作用的指令重寫指令來將相應(yīng)的指令改變?yōu)椴黄鹱饔谩T谝恍嵤├?,儀器引擎可以基于源代碼是自生成源代碼或解釋性源代碼來確定在運行時或加載時間重寫相應(yīng)的指令。指令引擎可以通過利用無操作指令(或NOP)或等效的不起作用的指令重寫指令來將相應(yīng)指令改變?yōu)椴黄鹱饔谩?yīng)用的未被改變?yōu)榭刹僮鞯闹噶钤谙挛闹锌梢员环Q為活動指令。

通過使不用的指令不起作用,鎖定過程向執(zhí)行應(yīng)用的組織提供多個好處。鎖定過程減少了應(yīng)用的可攻擊代碼面,從而不起作用的指令無法用來執(zhí)行攻擊。鎖定過程可以通過基于組織的用戶類別鎖定指令來進(jìn)一步減少應(yīng)用的可攻擊面。例如,應(yīng)用與代表小部分用戶的管理員相比,代碼可以針對構(gòu)成應(yīng)用的主要用戶的普通用戶而被進(jìn)一步鎖定。另外,組織可能需要為應(yīng)用實現(xiàn)更少的補丁發(fā)布,因為補丁可能針對于應(yīng)用指令中被改變?yōu)椴黄鹱饔玫墓δ?。更少的補丁導(dǎo)致企業(yè)系統(tǒng)的更少停機時間,這繼而導(dǎo)致組織的增加的生產(chǎn)力和成本節(jié)省。

此外,在示例實施例中,儀器引擎可以重新組織由組織或組織的一類用戶使用的活動指令的所存儲的存儲器地址。儀器引擎以保持相應(yīng)指令的相對地址關(guān)系的方式(例如,重定向存儲器指針)重新組織存儲器地址。在一些實施例中,當(dāng)重新組織存儲器地址時,儀器引擎還可以使存儲器地址位置隨機化。儀器引擎然后可以將活動指令寫入到更小的存儲器地址空間,并且在其中應(yīng)用被加載的每個系統(tǒng)上以不同的順序和位置寫入存儲器地址。因此,如果惡意行為者在一個系統(tǒng)上定位和利用應(yīng)用中的漏洞,則惡意行為者將不能在另一系統(tǒng)上定位相同的漏洞來利用。

在步驟260,可以被通信地耦合到儀器引擎的分析引擎捕獲在運行時被訪問的應(yīng)用的存儲器地址。然后,如果分析引擎確定所捕獲的存儲器地址與用于不起作用的指令的存儲器地址匹配,則分析引擎可以將事件傳送到漏洞引擎。分析引擎可以將存儲器地址與對應(yīng)于活動指令的活動存儲器地址的黃金表進(jìn)行比較,并且如果地址不在表中,則將事件傳送到驗證引擎。在一些實施例中,分析引擎可以在硬件過程上訪問黃金表以用于更快的處理。在步驟280,可以被通信地耦合到分析引擎和儀器引擎的驗證引擎然后可以聲明安全攻擊。在其他實施例中,漏洞引擎可以關(guān)聯(lián)狀態(tài)機中的事件以檢測安全攻擊。

功能的確定

圖3示出具有基于用戶類別的功能的示例計算機應(yīng)用。示例計算機應(yīng)用可以從應(yīng)用供應(yīng)商交付給組織。應(yīng)用可以包括由應(yīng)用供應(yīng)商提供的標(biāo)準(zhǔn)功能310。應(yīng)用還可以包括專門為組織提供的被稱為通用340的通用功能,以及基于組織中的用戶類別的特定功能。例如,應(yīng)用可以包括被引用為用戶320的特定于用戶類別的功能。對于另外的示例,應(yīng)用可以包括特定于被稱為管理員330的更特權(quán)的用戶類別的功能。通用340、用戶320和管理330功能可以基于由組織從供應(yīng)商請求的特征的應(yīng)用需求(例如,用例),而標(biāo)準(zhǔn)功能310可以被提供給使用該應(yīng)用的所有組織。

組織中的個人可以僅使用應(yīng)用的標(biāo)準(zhǔn)功能310的子集。例如在圖3中,組織可以僅使用標(biāo)準(zhǔn)的主(Home)功能,并且可以從應(yīng)用接口移除對所有其他標(biāo)準(zhǔn)功能(例如,iCreate、郵件發(fā)送等)的訪問。雖然組織可能已經(jīng)移除對不用的功能的訪問,但是代碼的指令在系統(tǒng)上的存儲器中仍然是活動的,并且仍然可能提供漏洞,惡意行為者可以通過該漏洞利用應(yīng)用。使用與圖2的方法類似的方法,人類測試者或自動測試工具可以行使關(guān)于主功能提供的所有選項,諸如粘貼、超級復(fù)制等。當(dāng)選項被行使時,儀器引擎可以捕獲選項的對應(yīng)指令,以及在表中記錄與指令對應(yīng)的存儲器地址。

另外,在一些實施例中,組織中的所有個人都可以使用通用功能340,但是用戶功能320和管理330僅可以由相應(yīng)類別的用戶使用。例如,組織可能已經(jīng)移除用戶類別對管理功能330的訪問。然而,當(dāng)個人執(zhí)行應(yīng)用時,關(guān)于管理功能330的指令在存儲器中仍然是活動的,并且仍然可以提供漏洞,其中惡意行為者可以利用應(yīng)用。使用與圖2的方法類似的方法,人類測試者或自動測試工具可以行使對類別用戶的個人可用的所有選項(例如,用戶功能320和通用功能340)。當(dāng)選項被行使時,儀器引擎可以捕獲選項的對應(yīng)指令,并且將與指令對應(yīng)的存儲器地址記錄在表中。

在對用戶可用的所有選項都被執(zhí)行之后,儀器引擎然后可以遍歷應(yīng)用的所有功能310、320、330、340的所有指令。如果被遍歷指令的存儲器地址不存在于表中,則存儲器地址可以被改變?yōu)椴黄鹱饔?例如,NOP)。因此,在本示例中,當(dāng)用戶類的個體執(zhí)行應(yīng)用時,僅標(biāo)準(zhǔn)功能310的主選項、通用功能340和用戶功能的指令是活動的,并且管理功能330的指令是不起作用的(即,不活動)。因此,當(dāng)個人執(zhí)行應(yīng)用時,管理功能330的指令不能夠為惡意行為者(包括來自另一用戶類別的個人)提供利用應(yīng)用的漏洞,從而消除了對應(yīng)用的惡意攻擊的可能性。另外,儀器引擎可以檢測到惡意行為者曾試圖訪問不起作用的代碼,并且基于該事件生成安全事件。

黃金表

圖4示出用于存儲應(yīng)用的活動指令的示例表。在本實施例中,該表被稱為黃金表。當(dāng)計算機應(yīng)用的特定功能(例如,圖3的功能)被行使時,主機系統(tǒng)繼而執(zhí)行對應(yīng)于該功能的代碼塊。儀器引擎捕獲每個代碼塊的生成的指令(例如,匯編代碼指令)。如圖4所示,儀器引擎將針對每個執(zhí)行的代碼塊的枚舉記錄在黃金表中。另外,儀器引擎記錄相應(yīng)代碼塊的捕獲指令的范圍的起始存儲器地址和結(jié)束存儲器地址。黃金表可以被存儲在儀器引擎或分析引擎處的數(shù)據(jù)庫中。在一些實施例中,黃金表還被加載在硬件過程上以用于快速引用在黃金表中記錄的代碼塊和對應(yīng)的存儲器地址。注意,可以為執(zhí)行應(yīng)用的每個用戶類別以及為加載應(yīng)用的每個系統(tǒng)創(chuàng)建單獨的黃金表。

當(dāng)應(yīng)用的存儲器地址被訪問時,分析引擎檢查訪問的存儲器地址是否與黃金表中的存儲器地址匹配。在一些實施例中,分析引擎單獨檢查存儲器地址,并且在其他實施例中,分析引擎檢查代碼塊的存儲器地址的范圍。如果所訪問的存儲器地址不在黃金表中,則分析引擎可以向驗證引擎報告事件以聲明(或關(guān)聯(lián))安全攻擊。注意,在該實施例中,黃金表包含針對所有活動代碼塊的存儲器地址,然而,在其他實施例中,黃金表可以替代地包含所有不起作用的代碼塊的存儲器地址。在這些其他實施例中,分析引擎檢查所訪問的存儲器地址是否在黃金表中,并且可以向驗證引擎報告事件以聲明安全攻擊。

活動指令的確定

圖5A示出用于捕獲執(zhí)行計算機應(yīng)用的所需功能的指令的示例配置的框圖。

組織或應(yīng)用供應(yīng)商可以向應(yīng)用開發(fā)者提供需求文檔,詳細(xì)地指定組織或應(yīng)用供應(yīng)商所需的應(yīng)用的功能。需求文檔可以將所需的功能組織為用例510,其標(biāo)識其中組織或應(yīng)用供應(yīng)商可以使用所需功能的可能情形(以及與每個情形相關(guān)的所有相應(yīng)參數(shù))。組織還可以在需求文檔中指定不同類別的用戶所需要的不同功能。因此,需求文檔可以包括用于這些不同類別的用戶中的每個類別的用戶的特定用例510。

應(yīng)用供應(yīng)商然后可以向組織交付包括應(yīng)用的所有標(biāo)準(zhǔn)功能的應(yīng)用的版本。如果組織所指定的所有或部分所需功能(即,用例)不包括在標(biāo)準(zhǔn)功能中,則供應(yīng)商可以進(jìn)一步將該所需功能并入應(yīng)用的版本中。因此,如圖3所示,應(yīng)用的交付版本包括組織的所有需要的功能,但也包括組織所不使用的標(biāo)準(zhǔn)功能。另外,也如圖3所示,應(yīng)用的交付版本包括組織的特定類別的用戶的所有需要的功能,但也包括該特定類別的用戶所不需要的功能,其反而對應(yīng)于組織的其他類別用戶。

為了行使組織所需的所有功能,組織可以測試提供給供應(yīng)商的完整的用例集合510。另外,為了行使組織的一類用戶所需的所有功能,組織可以測試針對該類用戶向供應(yīng)商提供的完整的用例集合510。組織可以采用手動人類測試者、自動測試工具或兩者的組合來根據(jù)用例510執(zhí)行功能測試520。自動測試工具可以包括可用于基于用例510的功能測試520的多個自動測試工具中的一個或多個自動測試工具。功能測試520可以通過使用應(yīng)用接口(例如,圖形界面和命令行界面)選擇應(yīng)用的命令選項或檢測執(zhí)行應(yīng)用的命令選項(或相關(guān)代碼)的代碼來執(zhí)行。

在執(zhí)行功能測試520之前,儀器引擎可以被配置為監(jiān)視計算機應(yīng)用的執(zhí)行。因此,在應(yīng)用加載時間,儀器引擎可以將指令插入到應(yīng)用的模塊中或者執(zhí)行與應(yīng)用分離的進(jìn)程以監(jiān)視應(yīng)用的活動(例如,堆棧、堆和系統(tǒng)調(diào)用)。然后,當(dāng)功能測試被執(zhí)行時,儀器引擎可以確定正被執(zhí)行的代碼塊,以及捕獲該代碼塊的生成的指令(例如,匯編代碼指令)。針對每個代碼塊,儀器引擎可以將所生成的指令的存儲器地址550存儲在數(shù)據(jù)庫560的黃金表565中。在一些實施例中,黃金表如圖4所示被格式化??梢詫φ麄€組織所需要或使用的所有功能執(zhí)行功能測試520,并且相應(yīng)功能的指令被存儲在第一黃金表565中。可以改為針對特定用戶類別所需要的所有功能執(zhí)行功能測試520,并且相應(yīng)功能的指令可以被存儲在第二黃金表565中。類似地,可以替代地針對每個其他用戶類別執(zhí)行功能測試520,并且相應(yīng)功能的指令可以被存儲在單獨的黃金表565中。

基于功能測試520,儀器引擎可以執(zhí)行負(fù)面測試540以進(jìn)一步捕獲與組織或組織的各類用戶的需要功能相關(guān)的指令。具體地,負(fù)面測試540測試對關(guān)于所需功能的無效輸入或意外行為的處理(例如,異常處理)。當(dāng)功能測試被執(zhí)行時,儀器引擎可以監(jiān)視通過執(zhí)行應(yīng)用的代碼塊而正被生成的觸發(fā)函數(shù)(例如,系統(tǒng)調(diào)用)530。儀器引擎然后可以通過模擬與需要功能有關(guān)的上下文特定錯誤(例如,異常處理)來使用該信息來執(zhí)行負(fù)面測試540。模擬的錯誤可以包括磁盤已滿、文件共享違例和存儲器耗盡。當(dāng)負(fù)面測試540被執(zhí)行時,儀器引擎可以確定正被執(zhí)行的代碼塊,以及捕獲該代碼塊的生成指令(例如,匯編代碼指令)。針對每個代碼塊,儀器引擎可以將所生成的指令的存儲器地址555存儲在數(shù)據(jù)庫560的黃金表565中。來自負(fù)面測試540的存儲器地址555可以被存儲在與來自功能測試的存儲器地址550相同或分開的黃金表565中。

在其他實施例中,負(fù)面測試540可以被靜態(tài)地執(zhí)行。在這些實施例中,儀器引擎可以通過在功能測試期間靜態(tài)地分析執(zhí)行特定功能的線程的結(jié)構(gòu)來確定用于異常處理功能的指令。例如,在x86CPU架構(gòu)中,指向注冊的異常處理器的指針被加載在線程控制塊中。在一些實施例中,儀器引擎可以通過靜態(tài)地分析可執(zhí)行鏡像來確定用于異常處理功能的指令。例如,在x64CPU架構(gòu)中,異常處理器存在于可執(zhí)行鏡像本身的單獨部分中。針對每個代碼塊,儀器引擎可以將所確定的指令的存儲器地址555存儲在數(shù)據(jù)庫560的黃金表565中。來自負(fù)面測試540的存儲器地址555可以被存儲在與來自功能測試的存儲器地址550相同或分開的黃金表565中。

鎖定模式

圖5B示出用于鎖定應(yīng)用的指令的示例配置的框圖。在圖5B的實施例中,指令可以由在線鎖定模式575或離線鎖定模式580下的儀器引擎570鎖定。

在線鎖定模式

儀器引擎570可以在在線鎖定模式575下被配置用于重寫應(yīng)用的不用的指令。儀器引擎570可以被配置為臨時或永久地重寫每個不用的指令。在儀器引擎570臨時重寫不用的指令的實施例中,儀器引擎570存儲不用的指令和相應(yīng)的存儲器地址的副本,以在將來重新加載應(yīng)用期間將不起作用的指令中的一個或多個指令改寫回不用的指令。在儀器引擎570永久地重寫指令的實施例中,不起作用的指令跨應(yīng)用的重新加載而持續(xù)。儀器引擎570可以首先從數(shù)據(jù)庫560中的一個或多個黃金表565加載所有存儲器地址572。加載的黃金表565對應(yīng)于在執(zhí)行應(yīng)用時所需的所有功能。例如,可以為不同類別的用戶加載不同的黃金表565,因為每個相應(yīng)用戶類別所需的功能可以變化。如果應(yīng)用不包含自生成或解釋性代碼(例如,Javascript),則在將應(yīng)用加載到存儲器中之后,儀器引擎570可以執(zhí)行應(yīng)用鎖定。也就是說,儀器引擎570可以遍歷所加載的應(yīng)用的所有存儲器地址。如果遍歷的存儲器地址不對應(yīng)于從黃金表565加載的指令地址572,則儀器引擎570重寫對應(yīng)的指令。儀器引擎可以通過將指令改變?yōu)檫m于執(zhí)行應(yīng)用的系統(tǒng)的CPU架構(gòu)的不起作用的指令585(例如,NOP指令)來重寫應(yīng)用存儲器590中的指令。

如果應(yīng)用確實包含自生成或解釋性代碼,則儀器引擎570可以在運行時間期間(即,實時地)執(zhí)行應(yīng)用鎖定。因此,儀器引擎需要針對應(yīng)用的每次執(zhí)行來執(zhí)行應(yīng)用鎖定。為了重寫應(yīng)用的不用的指令,儀器引擎570監(jiān)視CPU指令高速緩存以確定關(guān)于將要由系統(tǒng)進(jìn)程執(zhí)行的指令。如果將要執(zhí)行的指令的存儲器地址不對應(yīng)于從黃金表565加載的指令地址572,則儀器引擎570重寫相應(yīng)的指令。否則,儀器引擎570允許指令繼續(xù)加載到應(yīng)用的執(zhí)行流水線中。注意,在一些實施例中,即使應(yīng)用不包含自生成或解釋性代碼,測試引擎570仍然可以被配置為在運行時而不是加載時間期間執(zhí)行應(yīng)用鎖定。另外,在一些實施例中,應(yīng)用的一些指令可以在加載時被鎖定,并且同一應(yīng)用的其他指令可以在運行時被鎖定。

離線鎖定模式

儀器引擎570可以被配置為離線鎖定模式580以用于優(yōu)化應(yīng)用的活動代碼。如果應(yīng)用不包括自修改或解釋性代碼,則檢測引擎570可以首先從數(shù)據(jù)庫560的一個或多個黃金表565加載指令地址574,作為針對應(yīng)用的特定功能集的活動指令集。指令地址574可以根據(jù)它們相應(yīng)的代碼塊而被加載。儀器引擎570然后可以重新組織代碼塊和代碼塊中的指令,以使得指令包含更小的存儲器空間,諸如更小的可執(zhí)行文件或庫模塊。作為重新組織的一部分,儀器引擎570還可以使指令的存儲器地址隨機化。重新組織和隨機化涉及以保留指令之間的所有相對地址關(guān)系(例如,存儲器指針)的方式更新指令的存儲器地址。儀器引擎570可將具有更新的存儲器地址的代碼塊寫入到主機系統(tǒng)作為可執(zhí)行文件或庫,以便在下次加載應(yīng)用時使用。

此外,針對每個代碼塊,儀器引擎570然后可以將更新的存儲器地址594寫回到黃金表565,替換相應(yīng)代碼塊的先前存儲器地址。然后,下一次將儀器引擎配置為在線鎖定模式時,更新的存儲器地址將被用來重寫不用的指令。當(dāng)惡意行為者發(fā)現(xiàn)新的漏洞時,行為者通常依賴于用于執(zhí)行攻擊的硬編碼的攻擊矢量,諸如在相同架構(gòu)的所有機器上的相同位置中的代碼塊。通過重新組織和隨機化指令,如果惡意攻擊成功在特定代碼塊中利用一個機器,則相同的攻擊在另一個機器中將不會在相同位置奏效。

事件的攻擊鏈

圖6描繪了用于使用事件鏈過程來關(guān)聯(lián)檢測到的安全事件的事件鏈狀態(tài)機。能夠檢測和阻止惡意攻擊情形的事件鏈?zhǔn)亲柚惯@種高級持續(xù)威脅的關(guān)鍵部件。如圖2所示,在事件鏈中可以被關(guān)聯(lián)的一個檢測到的事件是對包含設(shè)置為不起作用的應(yīng)用指令的存儲器地址的訪問。由于包含在這些存儲器地址中的指令不被執(zhí)行應(yīng)用的這類用戶使用,所以對這些存儲器地址的訪問一定是由外部用戶(諸如惡意動作者)進(jìn)行的。與其他檢測到的事件相關(guān)聯(lián)的該事件可以共同指示攻擊情形,其中惡意行為者試圖從應(yīng)用進(jìn)程挖掘數(shù)據(jù)以用來訪問機密資源。

現(xiàn)有的網(wǎng)絡(luò)安全工具依賴于安全分析員來設(shè)置表示攻擊的事件的閾值。例如,一個安全分析員可能已經(jīng)將以下深藏心底:在一天的正常過程中每小時將發(fā)生某數(shù)量的端口掃描和的登錄嘗試。問題然后變?yōu)樵谟|發(fā)警報之前每小時每個源多少端口掃描嘗試是過多。另外,如果為每個端口掃描生成警報,分析員可能正在調(diào)查沒有惡意意圖的端口掃描。如果由于提高的閾值而過晚提出警報或從未提出警報,則惡意軟件攻擊可能已經(jīng)成功。另外,這些工具具有不完全的知識庫來有效地檢測攻擊,因此,這些工具產(chǎn)生了如此多的假陽性,以至于典型的安全分析員被噪聲淹沒。用于生成真實真正警報的能力需要網(wǎng)絡(luò)安全工具精確和可靠地區(qū)分良性和惡意事件。惡意行為者將意識到同一組特征或已知可疑的網(wǎng)絡(luò)或應(yīng)用行為。因此,惡意行為者能夠諸如使用加密來編碼數(shù)據(jù)、改變IP和端口組合、或者通過減慢攻擊以避免基于在知識庫中詳細(xì)說明的行為的檢測來削弱對攻擊的檢測。

相比之下,在本公開中,路徑驗證引擎根據(jù)圖6所示的事件鏈狀態(tài)機來跟蹤安全事件的狀態(tài)。事件鏈狀態(tài)機使用存儲在各種內(nèi)部數(shù)據(jù)庫中的記錄(諸如轉(zhuǎn)換劇本數(shù)據(jù)庫)來跟蹤這些事件。當(dāng)新線程開始時,事件鏈狀態(tài)機在602處被初始化為起始狀態(tài)。事件管理引擎723將事件串行化,諸如圖2所示,以使得關(guān)于一個線程的一組事件在針對適當(dāng)?shù)木€程的狀態(tài)機上被更新。當(dāng)線程上發(fā)生轉(zhuǎn)換時,狀態(tài)機記錄目標(biāo)地址,但保持在起始狀態(tài)。當(dāng)路徑驗證引擎生成中等或高嚴(yán)重性事件時,事件鏈狀態(tài)機在604處前進(jìn)到下一個狀態(tài),即Ei狀態(tài)。該新狀態(tài)在轉(zhuǎn)換發(fā)生時繼續(xù)記錄轉(zhuǎn)換的目標(biāo)地址。關(guān)于中等和高嚴(yán)重性事件而更新到新狀態(tài)并記錄轉(zhuǎn)換事件的狀態(tài)機的過程在606、608和610處繼續(xù),直到線程在612處到達(dá)終止?fàn)顟B(tài)。當(dāng)最高嚴(yán)重性級別事件被觸發(fā)時安全分析員被通知,并且當(dāng)發(fā)生攻擊時事件鏈狀態(tài)機捕獲取證。

取決于系統(tǒng)的模式,存在能夠響應(yīng)于這種安全事件而采取的各種補救動作。所采取的補救動作可以實時執(zhí)行。一個補救動作可以由關(guān)閉web應(yīng)用組成。其他補救動作可以是要釋放與其上已經(jīng)出現(xiàn)威脅的線程相關(guān)聯(lián)的一個或多個套接字;終止其上已經(jīng)出現(xiàn)威脅的線程,和/或?qū)⒃斐赏{的用戶列入黑名單。另一個補救動作將是取消阻塞與應(yīng)用服務(wù)器的一個或多個套接字相關(guān)聯(lián)的所有套接字。這將阻止所有當(dāng)時連接的用戶。另一個補救動作將是通過從數(shù)據(jù)庫中刪除他/她的會話ID來注銷違規(guī)用戶。下一個請求或響應(yīng)然后將不會被傳遞給攻擊者。又一個補救動作可能是忽略攻擊。這可能是由于分析員不認(rèn)為攻擊具有重要意義。針對給定事件的最合適的建議補救動作被預(yù)先編程,以使得如果安全分析員已經(jīng)選擇以自動模式操作分析引擎,則補救動作自動發(fā)生。

分析引擎的路徑驗證引擎可以以三種模式運行:監(jiān)視模式或偏執(zhí)模式。這些模式之間的區(qū)別是如何以及何時實施與在應(yīng)用中的給定線程上接收的一個或多個事件相關(guān)聯(lián)的補救動作。在監(jiān)視模式下,當(dāng)運行時信息到達(dá)并被分析引擎分析時,它會生成針對指定安全分析員的通知。然后,安全分析員的工作是干預(yù)并選擇最合適的補救動作。安全分析員可以決定在線程已經(jīng)到達(dá)終止?fàn)顟B(tài)之前將“忽略”型預(yù)編程補救動作改變?yōu)楦哂绊懙难a救動作。在完成補救動作之后,分析引擎在企業(yè)中的適當(dāng)權(quán)限清除針對給定線程的建議補救動作時實施補救動作。

在偏執(zhí)模式下,在沒有來自安全分析員的任何手動干預(yù)的情況下自動執(zhí)行經(jīng)編程的(缺省或用戶配置的)補救動作。在任一模式下,一旦準(zhǔn)備好執(zhí)行補救動作,分析引擎就讓監(jiān)視代理知道要執(zhí)行哪個補救動作。監(jiān)視代理然后對應(yīng)用執(zhí)行與補救動作相關(guān)聯(lián)的行動。一旦補救動作被完成,監(jiān)視代理就將確認(rèn)消息發(fā)送回分析引擎。在接收到確認(rèn)時,分析引擎執(zhí)行內(nèi)務(wù),包括更新安全分析員。

在學(xué)習(xí)模式下,分析引擎忽略所有事件和補救動作。在該模式下,應(yīng)用在原始環(huán)境中運行,并記錄所有事件和事件鏈。安全分析員使用該信息來構(gòu)建應(yīng)當(dāng)何時提出事件以及應(yīng)當(dāng)將什么補救動作與所述事件相關(guān)聯(lián)的標(biāo)準(zhǔn)。

監(jiān)視代理和分析引擎基礎(chǔ)架構(gòu)

圖7A描繪了示例監(jiān)視代理和分析引擎基礎(chǔ)設(shè)施的高級框圖。該可以在包括范圍從智能電話、平板、膝上型計算機、臺式機到高端服務(wù)器的計算設(shè)備的各種硬件上配置基礎(chǔ)設(shè)施。如該圖所示,由監(jiān)視代理702執(zhí)行的數(shù)據(jù)收集可以與由分析引擎執(zhí)行的分析分離,以提高應(yīng)用性能。該基礎(chǔ)設(shè)施提供高可用性,以防止黑客破壞其對惡意軟件攻擊的保護(hù)。監(jiān)視代理702與應(yīng)用交互以收集加載時間和運行時數(shù)據(jù)。應(yīng)用701的基礎(chǔ)設(shè)施包括進(jìn)程存儲器703、第三方庫704、內(nèi)核服務(wù)706和指令流水線707。監(jiān)視代理702的基礎(chǔ)設(shè)施包括儀器和分析引擎(儀器引擎)705、圖形用戶界面(GUI)711、客戶端守護(hù)進(jìn)程708、配置數(shù)據(jù)庫709以及流送和壓縮引擎710、以及中央處理單元(CPU)736。應(yīng)用701的本地或遠(yuǎn)程用戶738通過像鍵盤、鼠標(biāo)或類似的I/O設(shè)備的設(shè)備與應(yīng)用交互,或者通過可以通過管道、共享存儲器或套接字建立的通信信道在網(wǎng)絡(luò)上與應(yīng)用交互。作為響應(yīng),應(yīng)用進(jìn)程703將適當(dāng)?shù)闹噶罴峙傻街噶盍魉€707中以供執(zhí)行。應(yīng)用還可以利用其自己的或第三方的庫704,諸如libc.so(Linux)或msvcrtxx.dll(Windows)。當(dāng)來自這些庫的功能被調(diào)用時,來自這些庫的適當(dāng)指令也被插入到指令流水線707以供執(zhí)行。此外,應(yīng)用可以利用來自內(nèi)核706的諸如存儲器、文件I/O等的系統(tǒng)資源。以時間排序順序放在一起的來自應(yīng)用、庫和內(nèi)核的這些指令序列交付給定用戶所需的應(yīng)用功能。

當(dāng)應(yīng)用的代碼開始加載到存儲器中時,儀器和分析引擎(即,儀器引擎)705執(zhí)行若干不同的加載時間動作。一旦所有模塊都已加載,應(yīng)用的檢測指令就生成運行時數(shù)據(jù)??蛻舳耸刈o(hù)程序708通過從配置數(shù)據(jù)庫709讀取一個或多個配置文件來在736處初始化CPU中的儀器和分析引擎705、流送引擎710和GUI 711進(jìn)程。它還初始化儀器引擎、流送引擎、GUI、儀器和分析引擎705及其自身之間的相互通信管道。客戶端守護(hù)程序還確保如果包括其自身在內(nèi)的任何監(jiān)視代理進(jìn)程變得無響應(yīng)或死掉,則其將被重新生成。這確保了監(jiān)視代理702是高可用性企業(yè)級產(chǎn)品。

儀器和分析引擎705將從應(yīng)用收集的負(fù)載和運行時數(shù)據(jù)推送到流送引擎中。流送引擎將來自監(jiān)視代理702的原始數(shù)據(jù)封裝到PDU中。然后,它在高帶寬、低延遲通信信道712上將PDU推送到分析引擎728。如果監(jiān)視代理702和分析引擎728位于同一機器上,則該信道可以是存儲器總線。如果這些實體位于不同的硬件上但在相同的物理鄰域中,則信道可以是基于以太網(wǎng)或光纖的傳輸,其允許在實體之間建立遠(yuǎn)程連接,以跨因特網(wǎng)傳輸負(fù)載和運行時數(shù)據(jù)。

分析引擎728的基礎(chǔ)設(shè)施包括網(wǎng)絡(luò)接口卡(NIC)713、分組池714、時間戳引擎715、處理器結(jié)構(gòu)716、散列引擎717、TCAM引擎718、應(yīng)用映射數(shù)據(jù)庫719和線程上下文數(shù)據(jù)庫720,其可以包含由執(zhí)行被系統(tǒng)監(jiān)視的應(yīng)用的一類用戶使用的存儲器地址的表。分析引擎728的基礎(chǔ)設(shè)施還包括內(nèi)容分析引擎721、事件和事件鏈722、事件管理引擎723、事件日志724、應(yīng)用守護(hù)進(jìn)程725、分析引擎配置數(shù)據(jù)庫726、網(wǎng)絡(luò)接口727、儀表板或CMS 737、SMS/SMTP服務(wù)器729、OTP服務(wù)器730、升級客戶端731、軟件升級服務(wù)器732、軟件鏡像733、事件更新客戶端734和事件升級服務(wù)器735。

在網(wǎng)絡(luò)接口卡713處截取PDU以及協(xié)議頭部,PDU從該網(wǎng)絡(luò)接口卡713被拉出并放入分組池714中。PDU中的時間戳字段由時間戳引擎715填充。這有助于以確保在分組池緩沖區(qū)中沒有分組卡住非常長的時間。

處理器結(jié)構(gòu)716從分組緩沖區(qū)中拉出分組,并且地址字段被散列和替換在分組中的適當(dāng)位置中。該操作由散列引擎717執(zhí)行。然后,處理器結(jié)構(gòu)開始以分組到達(dá)的次序從分組緩沖區(qū)中移除分組。具有來自加載時間階段的信息的分組被處理,以使得相關(guān)數(shù)據(jù)被提取并存儲在應(yīng)用映射數(shù)據(jù)庫719中。具有來自運行時階段的信息的分組根據(jù)圖5被處理。分析引擎728的效率可以基于處理器結(jié)構(gòu)中的處理器的數(shù)量而被增加或減少。

轉(zhuǎn)換目標(biāo)數(shù)據(jù)被保存在線程上下文數(shù)據(jù)庫720中,線程上下文數(shù)據(jù)庫720具有用于每個線程的表。處理器結(jié)構(gòu)還利用TCAM引擎718來執(zhí)行轉(zhuǎn)換和存儲器區(qū)域搜索。由于處理器結(jié)構(gòu)使用散列執(zhí)行查找,所以使用的實際時間是可預(yù)測的并且非常短。通過仔細(xì)選擇結(jié)構(gòu)中的處理器的數(shù)量,可以適當(dāng)?shù)馗淖兠總€分組的吞吐量。

當(dāng)分析引擎728執(zhí)行搜索時,其可以不時地發(fā)現(xiàn)關(guān)鍵/管理函數(shù)或系統(tǒng)調(diào)用的無效轉(zhuǎn)換、無效操作,或者在不期望的位置上找到存儲器寫入。在這些情況的每一種情況中,分析引擎728將如在事件和事件鏈數(shù)據(jù)庫722中存儲的策略所描述的編程嚴(yán)重性的事件分派給事件管理引擎723。原始事件日志被存儲在事件日志數(shù)據(jù)庫724中。儀表板/CMS 737還可以訪問事件日志以及顯示應(yīng)用狀態(tài)。

補救動作還與事件和事件鏈數(shù)據(jù)庫722中的每個事件相關(guān)聯(lián)。用戶可以從一系列動作來設(shè)置補救動作,這一系列動作從在一個極端忽略事件到在另一極端終止線程??梢允褂檬录驴蛻舳?34和事件升級服務(wù)器735向分析員推薦所推薦的補救動作。為了改變上述推薦動作,分析員可以相應(yīng)地使用儀表板/CMS 737。儀表板/CMS 737提供了GUI界面,該GUI界面顯示每個受監(jiān)視應(yīng)用的狀態(tài)并允許安全分析員對應(yīng)用具有某些控制,諸如啟動和停止應(yīng)用。當(dāng)事件被生成時,事件鏈從正常狀態(tài)前進(jìn)到后續(xù)狀態(tài)。可以采取與新狀態(tài)相關(guān)聯(lián)的補救動作。如果補救動作涉及非忽略動作,則使用SMS或SMTP服務(wù)器729向安全分析員發(fā)送通知。安全分析員的SMS/SMTP地址可以使用LDAP或其他目錄協(xié)議來確定。從儀表板/CMS 737啟動或停止應(yīng)用的過程需要提升的特權(quán),故安全分析員必須使用OTP服務(wù)器730進(jìn)行認(rèn)證。

新事件還可以被創(chuàng)建并被鏈接到事件和事件鏈數(shù)據(jù)庫722中,連同嚴(yán)重性和向分析員推薦的補救動作。這允許將針對一個安裝處的新攻擊的唯一事件和事件鏈被分派到其他安裝。為此目的,所有新事件和事件鏈都被加載到事件升級服務(wù)器735中。事件更新客戶端734周期性地連接并認(rèn)證事件升級服務(wù)器735以檢索新事件和事件鏈。事件更新客戶端然后將這些新事件和事件鏈加載到事件和事件鏈數(shù)據(jù)庫722中。內(nèi)容分析引擎721可以開始針對封裝到新事件鏈中的新攻擊來跟蹤應(yīng)用。

正如客戶端守護(hù)進(jìn)程一樣,設(shè)施守護(hù)進(jìn)程725負(fù)責(zé)啟動在分析引擎728上運行的各種進(jìn)程。為此目的,它必須從分析引擎配置數(shù)據(jù)庫726讀取配置信息。守護(hù)進(jìn)程還負(fù)責(zé)對分析引擎728中的所有進(jìn)程運行心跳輪詢。這確保分析引擎生態(tài)系統(tǒng)中的所有設(shè)備始終處于最高工作狀態(tài)。三個連續(xù)的心跳的丟失表明目標(biāo)進(jìn)程沒有反應(yīng)。如果任何進(jìn)程已經(jīng)過早退出,守護(hù)進(jìn)程將恢復(fù)包括自身在內(nèi)的該進(jìn)程。

不時地,出于諸如修復(fù)軟件中的錯誤的目的,可以在設(shè)施主機中或在分析引擎728或監(jiān)視代理702中升級軟件。為此目的,升級客戶端731不斷地檢查軟件升級服務(wù)器732,最新軟件在軟件升級服務(wù)器732處可獲得。如果客戶端發(fā)現(xiàn)分析引擎728或監(jiān)視代理702中的實體正在運行較舊的鏡像,則它將允許分析員利用來自軟件升級服務(wù)器732的新鏡像來升級舊鏡像。新鏡像被捆綁在一起作為系統(tǒng)鏡像733。這使得有可能向設(shè)施或主機提供經(jīng)測試的兼容鏡像。如果分析引擎728或監(jiān)視代理702中的子系統(tǒng)的鏡像之一與系統(tǒng)鏡像中的針對相同組件的鏡像不匹配,則所有鏡像將被滾動到先前已知的良好系統(tǒng)鏡像。

用于監(jiān)視代理和分析引擎通信的PDU

圖7B示出用來在圖7A中的監(jiān)視代理702和分析引擎728之間傳送數(shù)據(jù)的示例協(xié)議數(shù)據(jù)單元(PDU)。為了使監(jiān)視代理702和分析引擎728彼此有效地工作,它們使用PDU彼此通信。PDU可以特別地被監(jiān)視代理702用來將提取的應(yīng)用的模型和/或收集的運行時數(shù)據(jù)打包以用于向分析引擎728的傳輸。PDU包含要在監(jiān)視代理702和分析引擎728之間傳輸?shù)尼槍γ糠N類型的信息的字段。PDU被劃分為應(yīng)用提供的數(shù)據(jù)部分、生成的HW/CVE以及內(nèi)容分析引擎或原始數(shù)據(jù)部分。

應(yīng)用提供的數(shù)據(jù)部分包含來自各種寄存器的數(shù)據(jù)以及放置在該部分的各個字段中的源地址和目標(biāo)地址。協(xié)議版本包含PDU 752的版本號。隨著協(xié)議版本隨時間改變,源和目的地必須能夠繼續(xù)彼此通信。該8位字段描述如由源實體生成的分組的版本號。在協(xié)議版本字段之后是當(dāng)前未使用的保留字段756。

如圖7所示,應(yīng)用提供的數(shù)據(jù)部分中的下一個字段是消息源/目的地標(biāo)識符757、753和754,用來在分析引擎基礎(chǔ)設(shè)施內(nèi)交換流量。不時地,圖7中所示的各種實體相互交換流量。并非所有這些設(shè)備都具有或需要IP地址,并且因此,兩個(硬件和主機)查詢路由器引擎使用消息源和目的地字段在內(nèi)部路由流量。某些消息需要跨網(wǎng)絡(luò)去往分析引擎中的實體。為此目的,向?qū)嶓w指派以下ID。給定的分析引擎設(shè)施可以具有多于一個加速器卡。每張卡將具有唯一的IP地址;因此,各個實體將具有唯一的ID。上述基礎(chǔ)設(shè)施還可以運行多于一個應(yīng)用。由于每個應(yīng)用服務(wù)器將具有唯一的IP地址,因此對應(yīng)的監(jiān)視代理側(cè)實體也將具有唯一的ID。

監(jiān)視代理側(cè)實體

1.GUI

2.儀器和分析引擎

3.客戶端消息路由器

4.流送引擎

5.客戶端側(cè)守護(hù)進(jìn)程

6.CLI引擎

7.客戶端看門狗

8.客戶端壓縮塊

9.客戶端iWarp/RDMA/ROCE以太網(wǎng)驅(qū)動器(100Mb/1Gb/10Gb)

每個PCI卡的實體(起始地址=20+n*20)

20.分析引擎TOE塊

21.分析引擎PCI橋

22.解壓縮塊

23.消息驗證塊

24.分組散列塊

25.時間戳塊

26.消息超時定時器塊

27.統(tǒng)計計數(shù)器塊

28.分析引擎查詢路由器引擎

29.分析引擎輔助

分析引擎主機實體

200.分析引擎PCIe驅(qū)動器

201.主機路由引擎

202.內(nèi)容分析引擎

203.日志管理器

204.守護(hù)進(jìn)程

205.Web引擎

206.看門狗

207.IPC消息傳送總線

208.配置數(shù)據(jù)庫

209.日志數(shù)據(jù)庫

SIEM連接器

220.SIEM連接器1-儀表板/CMS

221.SIEM連接器2-HP ArcSight

222.SIEM連接器3-IBM QRadar

223.SIEM連接器4-Alien Vault USM

分析引擎基礎(chǔ)設(shè)施實體

230.儀表板/CMS

231.SMTP服務(wù)器

232.LDAP服務(wù)器

233.SMS服務(wù)器

234.權(quán)利服務(wù)器

235.數(shù)據(jù)庫備份服務(wù)器

236.OTP客戶端

237.OTP服務(wù)器

238.校驗和服務(wù)器

239.票務(wù)服務(wù)器

240.事件鏈升級服務(wù)器

241.軟件更新服務(wù)器

所有用戶應(yīng)用

255.用戶應(yīng)用-應(yīng)用PID被用于標(biāo)識發(fā)出查詢的應(yīng)用

應(yīng)用提供的數(shù)據(jù)部分的另一個字段是消息類型字段,其指示正在傳輸?shù)臄?shù)據(jù)的類型755。在最高級別,存在在各個本地監(jiān)視代理側(cè)實體之間、在分析引擎設(shè)備側(cè)實體之間以及在監(jiān)視代理側(cè)和設(shè)備側(cè)實體之間流動的三種不同類型的消息。另外,需要通過網(wǎng)絡(luò)行進(jìn)的消息必須符合OSI模型和其他協(xié)議。

應(yīng)用提供的數(shù)據(jù)部分的以下字段是包含針對分組779的序列標(biāo)識符的分組序列號字段。流送引擎將對丟失的分組執(zhí)行錯誤恢復(fù)。為此目的,它需要唯一地標(biāo)識分組。遞增的有符號64位分組序列號被流送引擎插入,并且僅通過剩余的分析引擎基礎(chǔ)設(shè)施。如果序列號在64位邊界處包裝,則其可以從0重新開始。在諸如心跳或日志消息等的非應(yīng)用分組的情況下,分組序列號可以是-1。

應(yīng)用提供的數(shù)據(jù)部分還包含金絲雀消息字段,其包含用于加密目的的金絲雀761。監(jiān)視代理702和分析引擎728知道如何根據(jù)一些常見但是具有新鮮性質(zhì)的信息(諸如應(yīng)用啟動時間、PID、許可證字符串和授權(quán)用戶名)計算金絲雀。

應(yīng)用提供的數(shù)據(jù)部分還包含在所有消息中使用的通用字段。應(yīng)用源指令地址780、應(yīng)用目的地指令地址758、存儲器起始地址指針759、存儲器結(jié)束地址指針760、應(yīng)用PID 762、線程ID 763、分析引擎到達(dá)時間戳764和分析引擎離開時間戳765字段保存通用應(yīng)用數(shù)據(jù)。

PDU還包含HW/CAE生成部分。為了便于分析和保持固定時間的預(yù)算,分析引擎在處理之前對源和目的地地址字段進(jìn)行散列并更新PDU。PDU的HW/CAE生成的部分是放置散列數(shù)據(jù)以供以后使用的地方。該部分包括散列應(yīng)用源指令地址766、散列應(yīng)用目的地指令地址767、散列存儲器起始地址768和散列存儲器結(jié)束地址769字段。HW/CAW生成部分另外包含與金絲雀771相關(guān)的其他字段,其包括存在于所有PDU分組中的硬編碼內(nèi)容起始魔術(shù)頭部、API名稱魔術(shù)頭部、調(diào)用下文魔術(shù)頭部和調(diào)用原始數(shù)據(jù)魔術(shù)頭部。

HW/CAE生成部分還包括用來標(biāo)識包括結(jié)果、配置位、操作模式、錯誤代碼和操作模式數(shù)據(jù)的其他配置和錯誤數(shù)據(jù)的字段770。字段的結(jié)果部分被分段以返回針對不同分析引擎查詢的布爾結(jié)果—轉(zhuǎn)換劇本、代碼布局、存儲器(堆?;蚨?溢出和深度檢查查詢。該字段的配置位部分指示何時設(shè)置壓縮標(biāo)志、演示標(biāo)志或同位標(biāo)志。該字段中的標(biāo)志的存在向分析引擎728指示分組是否應(yīng)該在壓縮模式下返回。演示標(biāo)志指示系統(tǒng)處于演示模式,因為不存在針對系統(tǒng)的有效許可。在此模式下,日志和事件將不會完全可用。同位標(biāo)志指示應(yīng)用正在分析引擎728中運行以使得主機查詢路由器引擎能夠確定向哪里發(fā)送需要返回到應(yīng)用的分組。如果此標(biāo)志被設(shè)置,則分組經(jīng)由PCI橋被發(fā)送,否則它們通過PCI卡上的以太網(wǎng)接口被發(fā)送。字段的操作模式部分指示系統(tǒng)是處于偏執(zhí)模式、監(jiān)視模式還是學(xué)習(xí)模式。這些模式將在本節(jié)稍后更詳細(xì)地討論。最后,字段的錯誤代碼部分指示系統(tǒng)中的錯誤。錯誤代碼的前八位將對應(yīng)于消息源。其余的12位將對應(yīng)于每個子系統(tǒng)所報告的實際錯誤。

PDU還包含內(nèi)容分析引擎或原始數(shù)據(jù)。諸如OS庫調(diào)用和系統(tǒng)調(diào)用的參數(shù)和返回值之類的所有可變數(shù)據(jù)都放在PDU的該部分中。該部分中的數(shù)據(jù)包含從應(yīng)用收集的數(shù)據(jù)的內(nèi)容,并且主要以內(nèi)容分析引擎為目標(biāo)。該部分包含可變大小的API名稱或編號772、調(diào)用內(nèi)容魔術(shù)頭部777、可變大小的調(diào)用內(nèi)容774、調(diào)用原始數(shù)據(jù)魔術(shù)頭部778、可變大小的原始數(shù)據(jù)內(nèi)容776以及兩個保留的773和775字段。另外,這些字段可以針對管理消息而過載。

數(shù)字處理基礎(chǔ)設(shè)施

圖8示出其中可以實現(xiàn)本公開的實施例的計算機網(wǎng)絡(luò)或類似的數(shù)字處理環(huán)境。

客戶端計算機/設(shè)備50和服務(wù)器計算機60提供執(zhí)行應(yīng)用等的處理、存儲和輸入/輸出設(shè)備。客戶端計算機/設(shè)備50還可以通過通信網(wǎng)絡(luò)70鏈接到包括其他客戶端設(shè)備/過程50和服務(wù)器計算機60的其他計算設(shè)備。通信網(wǎng)絡(luò)70可以是遠(yuǎn)程接入網(wǎng)絡(luò)、全球網(wǎng)絡(luò)(例如,因特網(wǎng))、全球計算機集合、局域網(wǎng)或廣域網(wǎng)以及當(dāng)前使用相應(yīng)協(xié)議(TCP/IP、藍(lán)牙等)來彼此通信的網(wǎng)關(guān)的一部分。其他電子設(shè)備/計算機網(wǎng)絡(luò)架構(gòu)是合適的。

客戶端計算機/設(shè)備50可以配置有監(jiān)視代理。服務(wù)器計算機60可以被配置為與用于檢測安全攻擊的客戶端設(shè)備(即,監(jiān)視代理)50通信的分析引擎。服務(wù)器計算機60可以不是單獨的服務(wù)器計算機,而是云網(wǎng)絡(luò)70的一部分。在一些實施例中,服務(wù)器計算機(例如,分析引擎)可以將所捕獲的存儲器地址與黃金表中的存儲的存儲器地址進(jìn)行比較??蛻舳?儀器引擎)50可以將包含所存儲的存儲器地址的黃金表記錄傳達(dá)到服務(wù)器(分析引擎)60。在一些實施例中,客戶端50可以包括在客戶端(即,儀器引擎)50上執(zhí)行的用于捕獲活動指令并確定對應(yīng)的存儲器地址的客戶端應(yīng)用或組件(例如,儀器引擎),并且客戶端50可以將黃金表記錄中的該信息傳達(dá)到服務(wù)器(例如,分析引擎)60。

圖9是圖8的計算機系統(tǒng)中的計算機(例如,客戶端處理器/設(shè)備50或服務(wù)器計算機60)的示例內(nèi)部結(jié)構(gòu)的示圖。每個計算機50、60包含系統(tǒng)總線79,其中總線是用于計算機或處理系統(tǒng)的組件之間的數(shù)據(jù)傳送的一組硬件線。系統(tǒng)總線79本質(zhì)上是連接計算機系統(tǒng)的不同元件(例如,處理器、盤存儲、存儲器、輸入/輸出端口、網(wǎng)絡(luò)端口等)的共享導(dǎo)管,其使得能夠在元件之間傳送信息。附接到系統(tǒng)總線79的是用于將各種輸入和輸出設(shè)備(例如,鍵盤、鼠標(biāo)、顯示器、打印機、揚聲器等)連接到計算機50、60的I/O設(shè)備接口82。網(wǎng)絡(luò)接口86允許計算機連接到附接到網(wǎng)絡(luò)(例如,圖8的網(wǎng)絡(luò)70)的各種其他設(shè)備。存儲器90為用來實現(xiàn)本公開的實施例(例如,本文所述的監(jiān)視代理、儀器引擎和分析引擎元件)的計算機軟件指令92和數(shù)據(jù)94提供易失性存儲。盤存儲95為用于實現(xiàn)本公開的實施例的計算機軟件指令92和數(shù)據(jù)94提供非易失性存儲。中央處理器單元84也附接到系統(tǒng)總線79并提供計算機指令的執(zhí)行。

實施例或其各方面可以以硬件、固件或軟件的形式來實現(xiàn)。如果以軟件實現(xiàn),則軟件可以被存儲在被配置為使得處理器能夠加載軟件或其指令子集的任何非暫時性計算機可讀介質(zhì)上。處理器然后執(zhí)行指令并且被配置為操作或使得裝置以如本文所描述的方式操作。

另外,硬件、固件、軟件、例程或指令在本文中可以被描述為執(zhí)行數(shù)據(jù)處理器的某些動作和/或功能。然而,應(yīng)當(dāng)認(rèn)識到,本文包含的這樣的描述僅僅是為了方便,并且這樣的動作實際上由計算設(shè)備、處理器、控制器或其他設(shè)備執(zhí)行固件、軟件、例程、指令等導(dǎo)致。

應(yīng)當(dāng)理解,流程圖、框圖和網(wǎng)絡(luò)圖可以包括更多或更少的元件、被不同地布置或者被不同地表示。但是還應(yīng)當(dāng)理解,某些實現(xiàn)方式可以規(guī)定塊和網(wǎng)絡(luò)圖以及示出實施例的執(zhí)行的塊和網(wǎng)絡(luò)圖的數(shù)量以特定方式實現(xiàn)。

因此,另外的實施例還可以在各種計算機體系結(jié)構(gòu)、物理、虛擬、云計算機和/或其某種組合中實現(xiàn),并且因此,本文所描述的數(shù)據(jù)處理器旨在僅用于說明的目的,而不作為對實施例的限制。

本文引用的所有專利、公開的申請和參考文獻(xiàn)的教導(dǎo)通過引用而被整體并入。

盡管已經(jīng)參照本公開的示例實施例具體示出和描述了本公開,但是本領(lǐng)域技術(shù)人員將理解,在不脫離所附權(quán)利要求所涵蓋的本公開的范圍的情況下,可以在其中進(jìn)行形式和細(xì)節(jié)上的各種改變。

當(dāng)前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1