(上海交通大學(xué)醫(yī)學(xué)院附屬上海兒童醫(yī)學(xué)中心,上海 200127)
計(jì)算機(jī)系統(tǒng)存在可以被滲透的脆弱性,全面的潛在漏洞修復(fù)需要花費(fèi)大量時(shí)間和人工成本,所以要對(duì)漏洞按照安全等級(jí)進(jìn)行排列,并處理其中的關(guān)鍵漏洞。因此,網(wǎng)絡(luò)安全風(fēng)險(xiǎn)評(píng)估需要解決兩個(gè)問(wèn)題:一是潛在漏洞的安全程度,二是被攻擊漏洞間的隱含關(guān)系。攻擊圖主要解決第二個(gè)問(wèn)題,方便安全漏洞的定性、定量分析,做出最優(yōu)安全決策。然而,單一方法很難全面、準(zhǔn)確地分析潛在漏洞,從而做出最優(yōu)安全管理策略。因此,從多種模型相結(jié)合的角度分析網(wǎng)絡(luò)安全漏洞,可以提高攻擊意圖判斷的準(zhǔn)確性、合理性[1-2]。隱馬爾可夫模型(HMM)通過(guò)建立網(wǎng)絡(luò)觀測(cè)、攻擊狀態(tài)間的概率映射,詳細(xì)地定義模型參數(shù)的計(jì)算方法,利用Viterbi算法進(jìn)行攻擊結(jié)果序列計(jì)算,準(zhǔn)確推演攻擊意圖,方便安全管理人員進(jìn)行準(zhǔn)確的目標(biāo)網(wǎng)絡(luò)安全評(píng)估。
目標(biāo)網(wǎng)絡(luò)通過(guò)脆弱關(guān)聯(lián)性、網(wǎng)絡(luò)拓?fù)鋻呙韫臬@得設(shè)備配置、脆弱關(guān)聯(lián)信息,并將相關(guān)信息進(jìn)行模型化描述。描述后的信息輸入NuSMV工具中[3],生成目標(biāo)網(wǎng)絡(luò)攻擊圖。借助HMM模型建立網(wǎng)絡(luò)觀測(cè)、攻擊狀態(tài)間的概率映射,將攻擊圖轉(zhuǎn)換為狀態(tài)轉(zhuǎn)換圖[4-5]。然后,利用Viterbi算法計(jì)算出最高概率的攻擊路徑序列,以此推斷攻擊者意圖,從而做出合理的安全防范措施,評(píng)估過(guò)程如圖1所示。
圖1 安全評(píng)估過(guò)程
將HMM引入網(wǎng)絡(luò)安全風(fēng)險(xiǎn)評(píng)估模型,應(yīng)對(duì)網(wǎng)絡(luò)攻擊手段不易察覺(jué)的問(wèn)題。目標(biāo)主機(jī)被攻擊后的狀態(tài)對(duì)應(yīng)于HMM隱含狀態(tài)[6],利用漏洞、端口監(jiān)控機(jī)制形成可觀測(cè)脆弱性集合。
(1)定義參數(shù)
隱含狀態(tài)集Si=ATK{Ha,Hw,vi},其中Si為系統(tǒng)受到攻擊后的狀態(tài),Ha為主機(jī),vi為漏洞,Hw為攻擊后的主機(jī)狀態(tài)。π={aij}={p(Z1=Si)}時(shí)刻為1時(shí),初始狀態(tài)Zi等于Si的概率,π為轉(zhuǎn)換矩陣??捎^測(cè)集合V={v1,v2,…,vm},v是可以利用的漏洞,m代表漏洞數(shù)量。如果觀測(cè)集合的漏洞數(shù)量與隱含狀態(tài)集合數(shù)量一致,則HMM用λ={A,B,π}表示,其中A代表系統(tǒng)在t時(shí)刻狀態(tài)為Si的概率;B代表在vi狀態(tài)中觀測(cè)Sj的概率。
(2)確定參數(shù)
HMM為消除量化指標(biāo)的主觀性因素,以CVSS作為脆弱點(diǎn)危險(xiǎn)程度的依據(jù),如表1所列。
表1 量化依據(jù)中屬性等級(jí)和賦值
設(shè)Dvi為成功利用vi的概率,其計(jì)算公式為:
Dvi=AV×AC×Au
(1)
Dvi與vi正相關(guān),與AC負(fù)相關(guān)。在Z1基態(tài)到Si狀態(tài)轉(zhuǎn)變過(guò)程中,不斷產(chǎn)生新漏洞,直到觀測(cè)為vi的目標(biāo)狀態(tài)Si出現(xiàn),才實(shí)現(xiàn)漏洞成功利用。其中,轉(zhuǎn)化矩陣π中元素aij公式為:
(2)
系統(tǒng)處于Z1時(shí),成功利用vi出現(xiàn)概率為1;系統(tǒng)處于Z1狀態(tài)時(shí),不能成功利用vi轉(zhuǎn)化為Si,出現(xiàn)概率為Dvi;系統(tǒng)處于Z1狀態(tài)時(shí),可以成功利用vi轉(zhuǎn)化為Si,出現(xiàn)概率為Dvi+Dvi×Dvj。然后對(duì)每一概率進(jìn)行歸一化處理,得到觀察矩陣。
(3)Viterbi算法
判斷系統(tǒng)最可能出現(xiàn)的狀態(tài)和轉(zhuǎn)化序列,可以準(zhǔn)確推斷攻擊意圖,幫助管理員做出最優(yōu)決策。此問(wèn)題可抽象轉(zhuǎn)換為對(duì)已知觀察序列{o1,o2,…,ot},以及模型參數(shù)λ的最優(yōu)隱含狀態(tài)序列的查找。Viterbi采用動(dòng)態(tài)規(guī)劃,進(jìn)行最優(yōu)轉(zhuǎn)移迭代分析,確定所需序列。設(shè)置任意路徑為Z*,其最優(yōu)規(guī)劃公式為[7]:
p*=p(o,Z*|λ),?Z
(3)
設(shè)變量φt(i)為t時(shí)刻的一條路徑z1,z2,…,zt,初始狀態(tài)Z1等于Si觀測(cè)序列的最大概率為:
(4)
那么,
(5)
為能回溯隱含狀態(tài)序列,將變量存儲(chǔ)于φt(i)中,Viterbi具體流程如圖2所示。
算法流程Step1:初始化?1(i)=πibi(o1),1
圖2Viterbi流程
設(shè)置2個(gè)服務(wù)器為DB、FS,分別負(fù)責(zé)客戶(hù)端查詢(xún)、敏感數(shù)據(jù)存儲(chǔ),并設(shè)置防火墻??蛻?hù)端設(shè)置服務(wù)器WS,其訪(fǎng)問(wèn)用戶(hù)為3類(lèi):guest、user和root,權(quán)限為1級(jí)、2級(jí)和3級(jí)。1級(jí)權(quán)限最低,3級(jí)權(quán)限最高,并可以進(jìn)行用戶(hù)維護(hù)。對(duì)服務(wù)器進(jìn)行漏洞掃描,結(jié)果如表2所列。
表2 漏洞掃描信息表
實(shí)驗(yàn)前設(shè)定相關(guān)信息,主機(jī)Ha(攻擊者)與網(wǎng)絡(luò)服務(wù)器(DB、FS)間為信任關(guān)系,關(guān)系模型為
將攻擊事件中變化的因素抽象為有限狀態(tài)機(jī)狀態(tài),設(shè)定有限狀態(tài)機(jī)模型、網(wǎng)絡(luò)安全屬性的CTL描述后,NusMV模型探測(cè)器訪(fǎng)問(wèn)任何可達(dá)到狀態(tài),并對(duì)可能路徑上的邏輯屬性進(jìn)行滿(mǎn)足條件性判斷。如果條件未滿(mǎn)足,檢測(cè)機(jī)輸出狀態(tài)的軌跡,或者有序形式的反例,形成系列攻擊路徑,利用[8]NusMV模型探測(cè)器構(gòu)建目標(biāo)網(wǎng)絡(luò)攻擊圖。S1=ATK{Ha,DB,v1}代表Ha(攻擊者)利用v1攻擊服務(wù)器DB,獲得root用戶(hù)權(quán)限;S2=ATK{Ha,DB,v2}代表Ha(攻擊者)利用v2攻擊服務(wù)器DB,獲得Dos攻擊后的系統(tǒng)狀態(tài);S3=ATK{Ha,FS,v3}代表利用v3攻擊服務(wù)器FS,獲得root用戶(hù)權(quán)限;S4=ATK{Ha,WS,v4}代表利用v4攻擊服務(wù)器WS,獲得root用戶(hù)權(quán)限;S5=ATK{Ha,WS,v5}代表利用v5攻擊服務(wù)器WS,獲得緩存信息泄露后的攻擊狀態(tài)[8]。依據(jù)上述分析,將關(guān)系轉(zhuǎn)換為HMM狀態(tài)圖,如圖3所示。
圖3 HMM狀態(tài)轉(zhuǎn)換
HMM狀態(tài)轉(zhuǎn)換就是在初始狀態(tài)基礎(chǔ)上,構(gòu)建狀態(tài)集合Si=ATK{Ha,WS,vi},i=1,2,3,并對(duì)集合中的每一狀態(tài)進(jìn)行上一步可達(dá)狀態(tài)搜索,重復(fù)迭代分析,直到無(wú)新?tīng)顟B(tài)出現(xiàn)[9]。依據(jù)式(1)、(2)、(3),以及表2的漏洞信息,計(jì)算攻擊成功概率如表3所列。
表3 漏洞攻擊成功概率
經(jīng)量化處理后,得到HMM參數(shù),結(jié)果為
S={s1,s2,…,s5}狀態(tài)轉(zhuǎn)化概率矩陣為:
V={v1,v2,…,v5}相對(duì)系統(tǒng)狀態(tài)集合S={s1,s2,…,s5}之間的觀察概率轉(zhuǎn)化矩陣為:
依據(jù)上述分析,初始狀態(tài)向s1、s2、s3轉(zhuǎn)換,利用C++語(yǔ)言,對(duì)Viterbi算法進(jìn)行實(shí)現(xiàn),結(jié)果為:
① π=(1,0,0,0),參數(shù)λ=(A,B,π),觀測(cè)序列{v1,v2,…,v5},最大概率隱藏序列為{S1,S2},概率為0.000 345 172;
② π=(0,1,0,0),參數(shù)λ=(A,B,π),觀測(cè)序列{v1,v2,…,v5},最大概率隱藏序列為{S2},概率為0.000 121 823;
③ π=(0,0,1,0),參數(shù)λ=(A,B,π),觀測(cè)序列{v1,v2,…,v5},最大概率隱藏序列為{S3,S5},概率為0.000 746 495;
綜上所述,最大隱藏狀態(tài)序列為{S1,S2},攻擊者容易利用v1和v2實(shí)現(xiàn)對(duì)DB服務(wù)器的攻擊。安全管理員需加大DB安全風(fēng)險(xiǎn)控制,優(yōu)先修復(fù)服務(wù)器出現(xiàn)的漏洞CVE-2018-2072和CVE-2018-3865,更好地對(duì)網(wǎng)絡(luò)信息系統(tǒng)進(jìn)行維護(hù)管理。