基于 HMM-CBOW 行為模型的動態可信度量系統設計
摘 要:針對靜態可信度量系統難以檢測軟件運行過程中的異常行為,無法保證軟件動態運行安全可信等問題,通過對軟件序列行為模型進行分析,提出了一種基于 HMM-CBOW行為模型的軟件動態可信度量系統設計方案。該方案采用軟件行為靜態分析與短序列動態劃分相結合的方法,構建出細粒度的行為基線庫,通過對運行行為的動態監控與可信評估,實現了對軟件的動態可信度量功能,能夠確保軟件運行過程安全可信。最后,通過實驗表明:相對于傳統 N-gram 模型的可信度量系統,基于 HMM-CBOW 行為模型具有較高的可信評估準確率與較低的時延。
內容目錄:
1 動態可信度量基本原理
2 動態可信度量行為模型
3 系統設計
3.1 系統結構設計
3.2 行為基線構建
3.3 行為動態監控
3.4 行為可信評估
4 實驗分析
4.1 可信評估準確率
4.2 動態可信度量時延
5 結 語
隨著信息技術廣泛深入地應用于社會各個方面,信息網絡給人們帶來方便快捷的同時,也產生了眾多的安全問題。例如,木馬病毒、勒索程序、系統漏洞等安全威脅給人們帶來了巨大的經濟損失,引發隱私泄露等安全問題。當前,信息系統面臨的安全威脅主要包括:以網絡攻擊為主的外部威脅和以系統設計漏洞利用為主的內部威脅。實際上,系統漏洞造成的安全事件非常常見,在電力、交通、民航、航天、證券等領域,往往造成嚴重的損失。而傳統的信息安全以防外為重點,主要是應對復雜的網絡攻擊,對信息系統內部的防御能力有限。
為了解決信息系統內部的安全威脅,業界提出了可信計算的概念,其本質是通過在信息系統的計算平臺上引入可信計算模塊,將可信計算模塊作為可信根,基于信任鏈的擴展,采用可信度量方法保證系統啟動與運行過程的完整性與安全性,抵御系統內部安全威脅。當前,在工程應用中,通常采用靜態可信度量方法保證系統啟動與軟件加載執行時的安全可信,但卻難以確保運行過程中的軟件狀態可信;采用動態可信度量方法能夠對運行過程中的軟件實施可信度量與監控,保證軟件運行狀態可信,因此,探索軟件動態可信度量方法,成為了業界研究的熱點。目前,實現軟件動態可信度量主要有兩類方法:一類是基于系統內存空間的動態監控度量方法,通過定時監控并度量內存中軟件代碼段、系統調用的完整性,來保證軟件運行狀態可信;另一類是軟件行為動態可信度量方法,通過構建軟件行為基線模型,對實時采集到的軟件運行行為序列進行度量,驗證軟件運行行為是否符合設計預期,來保證軟件運行狀態可信。本文采用軟件行為動態度量方法,基于評估準確率高、時延較低的 HMM-CBOW軟件行為模型 ,提出了一種動態可信度量系統設計方案。
1 動態可信度量基本原理
軟件動態可信是指軟件運行過程中的所有行為都與設計預期行為相符合。動態可信度量是判定軟件是否動態可信的系統,能夠有效地對軟件運行行為與預期行為進行可信評估,并依據可信評估結果與管控策略實施動態管控。動態可信度量基本原理如圖 1 所示。

圖 1 動態可信度量基本原理
首先,對軟件源碼或目標碼進行靜態分析與動態分析,采集軟件行為,劃分軟件的行為區間,得到軟件預期行為序列,通過建模生成行為基線,作為可信度量判定的預期行為。其次,對運行過程中的程序行為實施動態采集,獲得程序實時行為序列。最后,基于行為基線對采集到的實時行為序列進行可信評估,依據評估結果與控制策略對運行的軟件實施動態管控,從而保證軟件運行過程狀態可信,防止軟件非預期行為給系統帶來潛在的安全威脅。
2 動態可信度量行為模型
動態可信度量行為模型主要有基于序列的行為模型、基于狀態的行為模型和基于模糊集合的行為模型等。當前,由于基于序列的行為模型具有實時性、系統資源占用少、易工程實現等優點,在工程實現上較其他幾類行為模型的應用更加廣泛,因此,本文主要對典型的序列行為模型 N-gram 模型與改進后的 HMM-CBOW 模型進行對比分析,開展動態可信度量系統設計。
(1)N-gram 模型。N-gram 模型是典型的序列行為模型,是 Hofmeyr 等人在 1998 年提出的基于系統調用的程序行為模型。在基于系統調用序列的軟件行為模型中,N-gram 模型具有占用系統資源少、實時監測的優點 。N-gram 是指通過長度為 N 的系統調用短序列構建軟件的行為,并且分析序列和軟件之間的關系,為軟件建立行為模型。短序列的構建采用滑動窗口機制,每個窗口內的系統調用都是軟件的一個行為。如圖 2 中的系統調用序列為fork write read chmod mmap accept read scoket send ioctl,使用大小為 5 的滑動窗口記錄系統調用之間的關系,可得到圖中所示的長度為N = 5 的系統調用短序列,每個短序列代表著程序的一個執行行為。

圖 2 N-gram 滑動窗口序列
目前,基于系統調用序列行為模型面臨的主要問題是如何在評估準確率、評估性能與資源開銷上達到平衡。N-gram 模型是通過采取定長系統調用短序列而得到表示行為的序列集的,雖然能夠提高評估性能,但降低了評估準確率,這也是 N-gram 模型的一大缺陷。另外,N-gram模型只考慮序列之間的位置關系,沒有考慮序列之間的相似度,存在數據稀疏的問題。后續對 N-gram 模型有很多的改進,如 Wespi 提出的不定長序列模型 Var-gram,以及引入系統調用頻率特性、數據挖掘理論和隱馬爾可夫鏈理論的模型等。
(2)HMM-CBOW 行為模型。HMM-CBOW行為模型是王焱濟在 2019 年提出的一種改進型序列行為模型。HMM-CBOW 行為模型是在N-gram 序列行為模型的基礎上,引入了隱馬爾可夫模型(Hidden Markov Model,HMM 和連續 詞 袋 模 型(Continuous Bag-of-Words Model,CBOW),對行為序列進行細粒度的劃分,并對序列關系進行建模,既繼承了序列行為模型檢測簡單快速的優點,又兼顧了行為序列之間的關聯關系,能夠分析出程序的分支、循環、遞歸結構、函數輸入輸出參數、返回值等信息,解決了數據稀疏的問題,進一步提高了行為判決的準確率。基于 N-gram 模型與 HMM-CBOW行為模型的優缺點分析,采用改進后的 HMM-CBOW行為模型,開展動態可信度量系統設計。HMM-CBOW 行為模型如圖 3 所示。

圖 3 HMM-CBOW 行為模型
HMM-CBOW 行為模型主要對軟件運行過程中的系統調用序列、參數及返回值等進行細粒度的刻畫,將序列進一步劃分為方便存儲、處理與查找的若干不同長度的短序列。一個 HMM-CBOW 行為模型可定義為
其中 S 為狀態集合,狀態集合是已知的確切的值或者猜測的值;O 為觀察集合;A 為狀態轉移概率矩陣;B 為觀測概率矩陣;π 為初始狀態的概率分布。
3 系統設計
基于 HMM-CBOW 行為模型,給出了軟件行為表示方法,開展了動態可信度量系統設計,將動態可信度量系統劃分為行為基線構建、行為動態監控、行為可信評估 3 個子系統。動態可信度量系統設計的具體內容如下所述。
3.1 系統結構設計
行為基線構建子系統從軟件應用行為、系統調用交互行為兩個維度,通過靜態分析,采集軟件的預期行為數據,構建行為基線庫。行為動態監控子系統在軟件實際運行過程中,實時采集應用與系統調用的行為數據,通過變換得到運行過程中的普通函數與系統調用行為序列。行為可信評估子系統,基于采集到的行為序列,查詢行為基線庫,通過分析評估,最后判定運行行為是否符合行為基線,完成軟件的動態可信度量過程。動態可信度量系統結構如圖 4 所示。

圖 4 動態可信度量系統結構
3.2 行為基線構建
行為基線構建子系統采用編譯器靜態分析方法,收集面向軟件應用層行為的原始數據與操作系統交互的系統調用數據,基于軟件應用行為與系統調用行為基線構建模塊,共同生成行為基線庫。首先,利用編譯器靜態分析方法對軟件基本塊及控制流進行分析;其次,根據行為建模與檢測的需求對控制流進行重構,得到以基本塊為節點,以系統調用為邊的控制流圖;最后,對軟件基本塊進行數據流分析,提取出普通函數與系統調用的返回值和參數信息,生成數據流圖,再與控制流圖共同構建為軟件的行為基線庫。行為基線構建過程如圖 5 所示。

圖 5 行為基線構建過程
(1)通過編譯器對源代碼進行靜態分析,生成普通函數調用控制流圖。
(2)讀取控制流圖并依次讀入圖中的每個元素;依次遍歷其中的節點,判斷該節點是否含有系統調用,若有,則將該節點的所有子節點添加到其父節點的子節點集中,并刪除該節點,最后生成系統函數調用的控制流圖。
(3)將步驟(2)生成的系統函數調用控制流圖插入普通函數調用控制流圖中,得到完整的普通函數和系統調用函數混合調用的控制流圖。
(4)提取出普通函數和系統調用函數的返回值與參數信息,生成數據流圖。
(5)將混合調用的控制流圖與數據流圖轉化為有限狀態機、執行路徑的 Hash 集合與HMM-CBOW 模型,完成行為基線庫的構建。
3.3 行為動態監控
行為動態監控子系統主要實現軟件運行行為的動態采集。基于插裝和系統調用鉤子(Hook)的行為監控技術,分別采集軟件應用層、系統調用層與操作系統交互過程中的運行行為信息,得到軟件運行過程中的普通函數與系統調用行為序列,為后續的軟件行為可信評估提供實時的行為數據。行為動態監控過程如圖 6 所示。

圖 6 行為動態監控過程
(1)行為監控配置管理模塊用于配置需要被監控的軟件業務列表、行為監控的粒度等信息。
(2)應用層函數自動插樁模塊根據用戶配置的被監測的軟件業務列表,自動分析與被監測的業務列表相關聯的應用層函數,在軟件源代碼上自動生成插樁代碼。
(3)系統層函數 Hook 模塊根據用戶配置的被監測的軟件業務列表,自動分析與被監測的業務列表相關聯的系統層函數、系統調用與傳入的參數值。
(4)應用層函數與系統調用監控模塊對應用層函數和系統調用進行處理,利用應用層代碼插樁和系統調用鉤子,采集應用內部、應用和操作系統交互過程中的行為序列。
(5)普通函數序列與系統調用序列融合模塊基于軟件業務功能與應用層入口函數映射關系,對普通函數和系統調用序列按照業務功能進行切割清理,采用對應的軟件行為表示方法處理后,生成運行行為序列。
3.4 行為可信評估
行為可信評估子系統是基于行為基線庫,快速判斷運行行為是否與行為基線庫的預期行為相符合,并輸出可信評估結果。為了快速準確地評估運行行為是否可信,需要針對普通函數行為序列與系統調用行為序列的特點,分別采用不同的可信評估方法。
(1)普通函數行為序列評估方法。首先對采集到的普通函數行為序列按照執行路徑進行編碼,并計算行為序列編碼對應的累積哈希集合,再通過查詢行為基線庫,判斷該哈希集合是否在基線庫中,若在,則判定行為可信;若不在,則判定行為異常。評估過程如圖 7 所示。

圖 7 普通函數行為序列評估過程
(2)系統調用行為序列評估方法。首先采用 HMM 模型將系統調用序列劃分為功能片段的短序列。其次將短序列變換為 CBOW 數據模型。最后與 CBOW 數據模型的行為基線庫進行匹配,若匹配成功,則表示行為可信;否則,表示行為異常。與傳統只利用系統調用名稱的異常行為評估方法相比,系統調用行為序列評估方法可以捕獲更多的行為信息,能夠更加準確有效地進行可信評估。評估過程如圖8 所示。

圖 8 系統調用行為序列評估過程
4 實驗分析
基于上述動態可信度量系統設計方案,實現了軟件動態可信度量原型系統軟件,該軟件由行為基線構建模塊、行為動態監控模塊和行為可信評估模塊 3 個軟件模塊組成,可部署在 Linux 操作系統與國產銀河麒麟操作系統的計算機平臺中,實現對應用軟件的動態可信度量。為了驗證其有效性,采用國產飛騰 2000/4 計算機環境(CPU為 2.6 GHz,操作系統為銀河麒麟 4.0.2-SP2,內核版本為 4.4.131,內存為 32 GB),實驗樣本數據來源于惡意樣本數據庫 VX Heaven,驗證了該原型系統的行為基線構建、動態監控和可信評估等功能的正確性。同時,本文針對信評估準確率和動態可信度量時延這兩項能夠直接反映系統性能優劣的關鍵指標進行了實驗分析。
4.1 可信評估準確率
可信評估準確率直接關系到動態可信度量系統設計的有效性,可信評估準確率越高,表明系統對異常行為的可信評估能力越強。可信評估準確率與動態可信度量系統所采用的行為模型、滑動窗口大小是密切相關的。因此,本文基于不同序列行為模型與滑動窗口大小,對系統的可信評估準確率進行測試,其測試結果如圖 9 所示。

圖 9 可信評估準確率
由于滑動窗口大小對軟件行為的可信評估準確率的影響較大,因此,實驗通過使用不同大小的窗口分別采用 HMM-CBOW 序列行為模型與 N-gram 行為模型建立正常的行為模型,然后使用相同的測試樣本數據集進行檢測。從圖9 中可以看出,窗口的大小對于正常樣本的可信評估準確率影響較大,可信評估準確率隨著窗口大小的增加而逐級降低。同時可以看出,HMM-CBOW 序列行為模型的可信評估準確率高于 N-gram 行為模型。
4.2 動態可信度量時延
動態可信度量系統需要對運行中被度量的軟件執行動態采集、序列處理、基線查詢和可信評估等一系列的操作,不可避免地會給軟件運行帶來時延,當采用不同的行為模型時,帶來的時延也不相同,因此,時延的大小會直接影響被度量軟件的運行性能和用戶體驗。只有將可信度量時延控制在合理的范圍內,才能夠滿足業務軟件對運行時間性能的要求。本文通過在動態可信度量驗證原型系統的動態采集、序列處理、基線查詢和可信評估等關鍵部件上設置計時器,分別基于 N-gram 與 HMM-CBOW行為模型,對同一個樣本程序執行 1 000 次動態可信度量后,計算各度量階段的平均執行時延,從而獲得系統總的平均值時延,測試結果如表 1所示。
表 1 動態可信度量時延

從表 1 的測試結果中可以看出,原型驗證系統平均總時延小于 0.09 ms。由于 HMM-CBOW 行為模型采用了高效的短序列變換,與 N-gram 行為模型相比,在序列處理階段時延較高,在基線查詢和可信評估階段時延較低,因此,在總體時延性能方面,采用 HMM-CBOW模型比 N-gram 模型的系統總體時延性能好。同時,由于在序列處理、基線查詢和可信評估這 3 個階段需要處理的行為序列數量大、行為基線庫查詢耗時多、評估算法執行時間長,導致時延較大。因此,在實時系統中或對時間性能要求較高的應用場景中,為了降低總時延,提升可信度量性能,需要進一步探索更高效的動態采集、序列處理、基線查詢和可信評估的方法。
5 結 語
本文基于 HMM-CBOW 行為模型,給出了具備行為基線構建、行為動態監控、行為可信評估功能的軟件動態可信度量系統設計方案。該方案通過對軟件行為實施靜態分析,構建了行為基線庫,采用了 HMM-CBOW 模型將連續的系統調用序列劃分成若干短序列片段,每個短序列片段作為軟件中一個代碼塊的執行映射,這種劃分方式能夠更準確地表示出軟件的實際運行行為,能夠有效地提高可信評估準確率,降低動態可信度量時延。通過實驗表明:該設計方案能夠滿足分時系統軟件動態可信度量的應用需求,與采用N-gram 模型的可信度量系統方案相比,具備較高的可信評估準確率和較低的時延。同時,為了進一步提升系統的可信評估準確率,降低動態可信度量時延,滿足實時系統的應用需求,后續還需進一步研究更加高效的動態可信度量模型與設計方法。