本發(fā)明涉及復雜攻擊識別技術,更具體說,它涉及一種識別復雜攻擊并預測攻擊者最終意圖的識別技術。
背景技術:
近幾年來無線網絡越來越普及,無論是在公司內部,公共場所還是消費者家中都會部署無線局域網WLAN,而非常豐富的接入點AP也極大的方便了人們尤其是使用移動終端的用戶。移動端的用戶量這些年一直在增長,而很多應用如社交、游戲、影音、新聞、金融等也越來越偏向于讓用戶使用移動端來交互,這是移動端的天然優(yōu)勢。但由于無線通信協議本身的缺陷,或者這些移動端設備制造時留下的漏洞,使得用戶的信息、財產甚至生命都會受到潛在的威脅。這些設備所使用的移動網絡成了入侵的門路,而移動端特別是手機端就成了不法者獲取非法信息的來源或實施攻擊、詐騙的載體。所以如何盡量填補移動互聯網中的漏洞,以及如何檢測和防范針對它的各種已知和未知的入侵,是一件相當重要的事情。為此已經發(fā)展了很多相關技術,其中主要有防火墻、入侵檢測和防御技術,它們已經在有線網絡環(huán)境安全中有了很大的應用。而針對無線網絡環(huán)境的則是無線入侵檢測和防御系統WIDS\WIPS。另一事實是攻防兩方都是在發(fā)展的,攻擊者為了達到他們的目的,也在開發(fā)更加復雜的攻擊技術。目前針對無線網絡環(huán)境的攻擊者往往會實施很多的攻擊步驟來接近目標,這大大增加了入侵檢測或防御難度,而傳統的誤用檢測如Snort rules等只適用于單步攻擊,針對復雜攻擊的研究,目前主要還集中在有線入侵檢測領域,而無線網絡和有線網絡在攻擊行為上存在很大差異,比如攻擊目標不同,有線網絡攻擊目標多為主機,而無線網絡則包含AP、PC端和移動終端等;攻擊層次不同,有線網絡攻擊多為網絡層及以上,而無線網絡攻擊涉及物理層和邏輯鏈路層;攻擊手段不同,有線網絡攻擊往往探測主機漏洞來入侵,而無線網絡攻擊主要是破解密鑰,非法接入或偽裝來對流量進行操作,由于無線攻擊的這些特殊性,尚無有效的適用復雜攻擊的多步無線攻擊檢測技術。
技術實現要素:
本發(fā)明的目的是克服現有技術中的不足,提供一種識別復雜攻擊并預測攻擊者最終意圖的面向無線入侵檢測系統的復雜攻擊識別技術。
為實現上述技術目的,本發(fā)明采用了以下技術方案:
面向無線入侵檢測系統的復雜攻擊識別技術,包括如下步驟:
步驟一、數據采集
系統數據采集來源為線上線下兩種,線上采用kismet分布式采集或libpcap,接口一般為monitor mode的USB網卡,或者是kismet寫入的tun/tap虛擬接口;采集到的數據包根據數據鏈路層類型又分為三種格式,正確解析可得到各個層各字段信息,其中radiotap和PPI將包含諸如接收信號強度指示器(Received Signal Strength Indicator,RSSI)等物理層特征;
步驟二、單步攻擊識別
由兩個部分組成,一個是一種通用的無需訓練的檢測方法(General Detector),對于各個攻擊行為,只需設定所需metric即可;另外針對特定攻擊行為,使用誤用檢測技術,通過配置攻擊簽名庫(Signature Database)來判斷的方法(Specification Detector);本模塊將結合兩種識別方法來判斷單步攻擊是否發(fā)生,以及攻擊者影響到的幀;
步驟三、復雜攻擊識別
步驟二產生一系列的單步攻擊信息SAI存入到攻擊數據庫(Attack Database)中,供復雜攻擊識別模塊進行分析;復雜攻擊識別對應IDS的告警關聯階段,而攻擊圖用于告警關聯;復雜攻擊識別就使用了邏輯攻擊圖(logic attack graph,LAG),和虛擬拓撲圖(virtual topology graph,VTG)搭配去挖掘攻擊路徑(Attack Path);復雜攻擊識別包含告警精簡,VTG生成器,LAG生成器,簽名數據庫,攻擊路徑解析器,復雜攻擊評估等子模塊,其架構如圖4所示;
上一步得到的單步攻擊的告警,在這一模塊中,將有兩個主要步驟;首先需要預處理,去除無關告警和重復告警,精簡告警數量;第二步需要通過整理得到的超告警hyper alert去識別攻擊者易采取的攻擊序列,并預測攻擊者后續(xù)動作和最終意圖;
識別攻擊序列時,從邏輯上將告警(Alert)分為三類;一類是已檢測到的告警(Alert Detected,ADE),這類告警明確屬于某種單步攻擊;一類是未檢測到的告警(Alert Undetected,AUD),即可能丟失的告警;一類是未來將發(fā)生的告警(Alert Predicted,APR),即預測結果;第一類告警還分為屬于真實意圖的告警(Alert Real,AR)以及擾亂告警(Alert Disturbed,AD);
步驟四、信息展示界面
信息展示界面包含VTG可視化圖,排序攻擊鏈以及攻擊目標預測;無線入侵檢測系統實時顯示當前VTG,通過VTG讓用戶觀察出當前網絡是否有攻擊行為發(fā)生,以及通過對虛擬節(jié)點間流量的統計來突出攻擊者和受害者等重要節(jié)點的位置;排序攻擊鏈則實時顯示當前估計的所有可能的攻擊鏈,其中排在前面的1個或幾個攻擊鏈對應的攻擊意圖則為當前預測攻擊者意圖。
所述步驟二具體包括:
(一)識別方法
對于一個幀而言,有Θ={NF,MF},其中{NF|MF}=UF(uncertain frame);對于每一個metric,維持一個滑動窗口(sliding window,SW),其長度為n,則有n個NF幀在其中組成profile dataset;若檢測到一個幀為MF,則不會將其放入SW中,若檢測為NF則更新SW;
該方法對的基本概率分配(BPA)如下:
BeliefMF:SW中metric重復最大次數F,均值mean,最大Euclidean距離Dmax,角度α計算方法見公式1;
而對于每一個進入的幀,角度β計算方法見公式2;
其中D是該幀的metric對應mean的Euclidean距離,值為
BeliefNF:將SW中的數據按metric大小順序排列后,根據進入幀的metric值所在位置分配固定值;離中位數越近取值越高,最高為0.5;
BeliefUF:根據前面兩種分配數值有以下四種情形:
(1)MF取低值,NF取低值;
(2)MF取低值,NF取高值;
(3)MF取高值,NF取低值;
(4)MF取高值,NF取高值;
在(2)(3)種情形下,MF和NF沒有沖突則分配UF一個較小值;在(1)(4)種情形下則需要分配較高值;分配方法是先按公式3計算出BeliefUF,而后按公式4和公式5重新分配各個Belief值使其和為1;
m(x)=Beliefx-μ 公式(5)
之后合成各個metric的BPA,并設定閾值,用于判定進入幀是MF還是NF;
要使得該方法有效有三個需要滿足的條件;第一,正常流量占總流量大部分;第二,NF、MF的metrics值有明顯差異;第三,滑動窗口長度n的設置;n取值過小,則無法包含足夠信息,取值過大,則增加誤入MF風險,同時延長檢測過程;
(二)攻擊簽名
單步攻擊檢測中的誤用檢測,使用攻擊簽名模型EDL來描述攻擊行為,而Specification Detector據此簽名數據庫signature database來進行檢測;若檢測到單步攻擊,則有8元組s_attack(name,src,dst,tran,ftime,etime,bssid,rframes);其中name為攻擊名,src為AN地址,dst為VN地址,tran為SN地址,ftime為檢測出時間,etime為估計攻擊最早發(fā)生時間,bssid為VN所在網絡BSSID,rframes為相關MF幀集合;
(三)單步攻擊決策
根據上述兩種檢測方法得到的結果,綜合判斷攻擊是否發(fā)生;兩種檢測方法均建立內存數據庫,存儲所有檢測的歷史數據;General Detector存儲每個幀的信任區(qū)間,Specification Detector存儲每個檢測到s_attack;單步攻擊決策函數為s_decsion(t):int->[0,1],t為某時刻,結果為攻擊發(fā)生可能性(attack possiblility,AP);s_decsion將從內存數據庫中分別根據幀的時間戳和ftime查找t附近的數據;
若某種攻擊行為只進行了其中一種檢測方法,則以其為準;若兩者均處于檢測中則對某時刻t有如下情形:
(1)General Detector檢測到,Specification Detector檢測到;
(2)General Detector檢測到,Specification Detector未檢測到;
(3)General Detector未檢測到,Specification Detector檢測到;
(4)General Detector未檢測到,Specification Detector未檢測到;
在(1)(4)情形下,兩者結果一致則直接以此為結果,為1和0;
在(2)情形下,認為有攻擊A發(fā)生,對應該MF,結果為公式6所示;
αBelMF(A)+βPlMF(A) 公式(6)
在(3)情形下,對應該攻擊和幀的信任區(qū)間或拒絕證據區(qū)間較大,此時認為有攻擊A發(fā)生,對應s_attack;此時,計算s_attack中r_frames的所有信任區(qū)間的均值如公式7、8所示;
若均值滿足General Detector設定的閾值,則結果為1,否則結果按公式9計算;
αBelr_frames(A)+βPlr_frames(A) 公式(9)
上述有參數α+β=1,α,β∈[0,1],通常取值α=β=0.5;
單步攻擊決策中,需要對幀的分類,單步攻擊結果輸出進行統一化;在(1)情形下,將General Detector對應的MF加入到rframes中,在(2)情形下,根據MF構造出s_attack(A,MF.mac_src,MF.mac_dst,MF.mac_reciever,MF.timestamp,MF.bssid,{MF}),其中的name為A,src為MF數據鏈路層的源地址,dst為MF的目的地址,tran為接收端地址,ftime和etime為timestamp,rframes為{MF},bssid為MF的BSSID;最終單步攻擊識別模塊輸出對象single-step attack information(SAI)為二元組(AP,s_attack);另外,上述描述針對某一攻擊行為A進行識別,而某個MF則可能識別后與多個攻擊行為相關;所以該模型需要假設如下;
Hypothesis 1:實際情形下,當某一個數據幀對應幾種不同的攻擊行為,則這些攻擊行為互不干擾,且有一定的關聯關系。
所述步驟3具體包括:
(一)告警精簡
步驟二中產生的單步攻擊告警,由于其General Detector細化到幀的程度,將可能產生大量的告警,所以有必要對這些告警進行精簡處理,以減少告警數量,消除無關告警和重復告警;告警精簡流程如圖5所示;無關告警和重復告警描述如下:
(1)無關告警:有一些告警指示的是與無線攻擊行為無關的其他攻擊,或者該告警明顯錯誤;
(2)重復告警:同一攻擊行為產生的告警,且沒有在單步攻擊識別模塊中合并,通常是具有相同攻擊路徑由同一攻擊者發(fā)出的同一類型攻擊行為,或者時間上存在連續(xù)性、周期性的表現;
處理單步攻擊識別模塊產生的數據庫SAIs時,比較算子cmp(SAI1,SAI2)比較兩者是否可以合并,若可以則放入同一個集合Merging SAIs中;于是將SAIs分類成一組Merging SAIs,對每一個SAIs進行合并;
合并規(guī)則如下:依據SAI.AP,SAI.ftime,averge[SAI.rframes.timestamps]進行K-means聚類,將Merging SAIs細分后進行合并;對于集合SAI sai_same合并后生成新的SAI_new(AP,A,src,dst,tran,ftime,etime,bssid,rframes);其中A,src,dst,tran,bssid不變;有ftimeSAI_new=min(ftimess),etimeSAI_new=min(etimess),rframesSAI_new=∪rframesss;
特別的是AP的選擇,如果以元組形式保存所有合并項的AP值,則會造成合并后的告警在這一字段擁有不同的維度;為了統一方便后續(xù)處理,有APSAI_new==median(APss),即選取AP的中位數;
告警精簡過后得到超告警hyper alert,這些告警之間存在關聯關系,即可能的攻擊鏈;復雜攻擊識別模塊接下來的部分包含VTG生成器,LAG生成器,攻擊路徑解析,復雜攻擊評估等子模塊;
(二)攻擊鏈簽名
攻擊鏈簽名描繪了常見復雜攻擊場景,攻擊鏈基于因果關系建立攻擊之間的鏈接;一個攻擊發(fā)生需要前置條件,發(fā)生后產生一些后果;從前一步攻擊到達后一步攻擊需要滿足conditions;最后的一項攻擊節(jié)點為最終攻擊者所實施的攻擊,通常蘊含著攻擊者的攻擊真實意圖;復雜攻擊識別模塊的簽名數據庫包含了一系列經典攻擊鏈,供生成LAG所需;
(三)LAG生成
上述動態(tài)生成的攻擊圖包含了所有已檢測到單步攻擊和它們所可能存在的攻擊鏈;簡單攻擊場景會生成簡單的攻擊圖,復雜攻擊場景會生成復雜的攻擊圖;
(四)VTG生成
上述動態(tài)生成的虛擬拓撲圖包含了所有已檢測到單步攻擊涉及的節(jié)點,以及節(jié)點之間的連接;虛擬拓撲圖定義VTG=(VNs,VNt,VNm,AE),其中VNs為攻擊者所在虛擬節(jié)點集合,VNt為受害者所在虛擬節(jié)點集合,VNm為過渡者所在虛擬節(jié)點集合,AE為虛擬節(jié)點之間的攻擊流量集合;虛擬節(jié)點VN擁有攻擊者、受害者、過渡者三個角色;虛擬節(jié)點VN并不代表真實的物理設備,一個VN可包含不同的地址,一個物理設備也可分出幾個VN,而一個VN對應不同攻擊所扮演的角色也可以不同;
為了合理簡化系統復雜性,VN的生成和合并需要有以下假設條件:
Hypothesis 2:攻擊設備不會映射為受害者VN;
Hypothesis 3:一個VN對應一個攻擊所關聯的角色是唯一的;
Hypothesis 4:若一個VN擁有多個地址,表明使用了地址欺騙,認為其是攻擊者;
VN的地址為addr_vn(mac_addr,ip_addr,ssid,vendor),如果兩個地址的mac_addr、ip_addr至少有一個相同和一個不相同,則認為其屬于同一個VN;如果mac_addr、ip_addr相同但卻擁有不同的ssid或vendor,也認為其屬于同一個VN;
判斷VN所屬角色的方法:
(1)VN之間的地址產生沖突;
(2)VN地址包含SAI的src屬于VNs,包含dst屬于VNt,包含trans屬于VNm;
步驟三將計算VN之間對應單步攻擊的關聯度;對于某個攻擊A,VN1到VN2的關聯度為公式10所示;
其中k為VN1到VN2的單步攻擊告警集合的告警數目;
VTG示例如圖9所示;該示例存在2個VNs,其中一個是由兩個VNs合并而來,還有3個VNm以及2個VNt;這個VTG中一共包含了4種單步攻擊,分別是:attack1:VNs1->VNm1->VNm2->VNt2;attack2:VNs1->VNm2->VNt2;attack3:VNs1->VNm1->VNt1+VNs21->VNm3->VNt2;attack4:VNs2[VNs21+VNs22]->VNm3->VNt2;
(五)攻擊路徑解析
結合VTG和LAG可以進行攻擊路徑解析;
當數據規(guī)模增大后,換用遺傳算法尋找解;每一條路徑代表一個攻擊鏈;攻擊鏈需要滿足LAG中各個邊設置的發(fā)生條件;在DFS過程中,每經過一個攻擊節(jié)點A,代表在VTG中走過一條攻擊路徑;從VTG的攻擊者節(jié)點出發(fā),選擇屬于A的攻擊邊,若形成一條攻擊路徑,到達受害者節(jié)點B;則將其對應的SAI信息放入LAG攻擊節(jié)點中,并判斷從該攻擊節(jié)點到下一個攻擊節(jié)點是否滿足條件,若滿足則遞歸下去并使LAG邊的impact生效;在這個過程中,VTG中所尋找到的SAI的ftime必須是在上一個攻擊節(jié)點ftime之后;
在VTG上找尋到一條的攻擊路徑時,將計算其關聯度如公式11所示;
并將其對應到候選攻擊鏈的相應節(jié)點上;
(六)復雜攻擊評估
上一步中針對每一個目標攻擊節(jié)點,都將生成一組候選攻擊鏈;假定攻擊者的實際發(fā)生攻擊鏈和攻擊意圖將是這些攻擊鏈中的某一個;
候選攻擊鏈評分由兩部分組成;一個代表每個節(jié)點自身的告警有效性,一個代表告警之間的相關度;前者個數同所有候選攻擊鏈中節(jié)點個數,若所有單步攻擊個數為K,則后者為K*K矩陣;
對每個目標攻擊節(jié)點,分別按公式12計算出其每個候選攻擊鏈的評分要素assc1;
其中averge_assd表示候選攻擊全局中為該攻擊類型的節(jié)點assd的平均值;
對攻擊A1到攻擊A2的相關度,計算方法如下:
找到VTG中所有攻擊類型為A1和A2的邊集合E1和E2,邊個數分別為n和m;公式13為兩個邊之間的關聯度,公式14則是攻擊鏈中兩相鄰單步攻擊的關聯度;
則整條攻擊鏈的assc2值計算方式為公式15,其中k為攻擊鏈長度;
候選攻擊鏈的總評分為公式16所示;其中assc1是一個正數,assc2是一個[0,1]范圍取值的數;
assc(Attack_chain)=αln(assc1(Attack_chain))+βassc2(Attack_chain) 公式(16)
本發(fā)明中參數α,β均為1;
得到每個攻擊鏈評分后,針對每個目標攻擊節(jié)點按評分進行排序;
然后丟棄下列攻擊鏈和目標攻擊節(jié)點:
(1)沒有攻擊鏈的目標攻擊節(jié)點;
(2)攻擊鏈評分低于閾值0.5的;
(3)若目標攻擊節(jié)點所有的候選攻擊鏈均處于低值水平,則刪除整個攻擊鏈集合;
排序所有剩余攻擊鏈,從中找出評分最高的前K個目標攻擊節(jié)點及其攻擊鏈,并將其輸出為multi-step attack information。
本發(fā)明的有益效果是:1)對單步攻擊的識別采用hybird架構,增強了單步攻擊識別準確率,減少誤報漏報;2)對復雜攻擊識別采用評估機制,而非單純的是或否來判斷單步攻擊行為,進而生成攻擊序列,有效減少模塊間信息失真造成最終結果失真;3)設計了一種識別復雜攻擊并預測攻擊者最終意圖的算法,對于存在明顯特征行為的復雜攻擊意圖具有較好的預測結果。
附圖說明
圖1是本發(fā)明提出的無線入侵檢測系統的總體結構圖;
圖2是本發(fā)明描述的數據采集框架圖;
圖3是本發(fā)明描述的單步攻擊識別框架圖;
圖4是本發(fā)明描述的復雜攻擊識別框架圖;
圖5是本發(fā)明描述的單步攻擊告警精簡流程圖;
圖6是本發(fā)明定義的攻擊鏈模型;
圖7是本發(fā)明描述的邏輯攻擊圖LAG生成流程圖;
圖8是本發(fā)明描述的虛擬拓撲圖VTG生成流程圖;
圖9是本發(fā)明描述的虛擬拓撲圖VTG示例圖;
圖10是本發(fā)明描述的多步攻擊路徑解析流程圖;
圖11是本發(fā)明描述的候選攻擊鏈集合示例圖;
圖12是本發(fā)明描述的信息展示界面框架圖;
圖13是本發(fā)明設計的kismet的分布式采集架構圖;
圖14是本發(fā)明描述的Kismet drone關鍵配置項說明圖;
圖15是本發(fā)明描述的Kismet server關鍵配置項說明圖;
圖16是本發(fā)明描述的libpcap主要函數接口說明圖;
圖17是本發(fā)明實現的無線入侵檢測系統實驗平臺的網絡拓撲架構圖;
圖18是本發(fā)明實現的無線入侵檢測系統實驗平臺的實驗設備配置圖;
圖19是本發(fā)明實現的無線入侵檢測系統實驗平臺的實驗環(huán)境說明圖。
具體實施方式
下面結合實施例對本發(fā)明做進一步描述。下述實施例的說明只是用于幫助理解本發(fā)明。應當指出,對于本技術領域的普通技術人員來說,在不脫離本發(fā)明原理的前提下,還可以對本發(fā)明進行若干改進和修飾,這些改進和修飾也落入本發(fā)明權利要求的保護范圍內。
如圖1至圖19所示,本發(fā)明的無線網絡中的復雜攻擊識別技術,包括四個步驟:數據采集、單步攻擊識別、復雜攻擊識別和信息展示界面。
(1)數據采集:數據采集的來源和度量(metrics)的選擇對于入侵檢測系統來說非常重要。選取合適的metrics可以有效的控制產生告警的質量,避免過高的假正率(false positive rate)。本專利采用基于kismet drone的分布式采集方法,為后續(xù)分析提供數據來源。
(2)單步攻擊識別:在單步攻擊識別階段,誤用檢測系統根據步驟一得到的數據、預設單步攻擊簽名signature以及一種基于Dempster-Shafer Theory的無需訓練的檢測方法來綜合判定某種單步攻擊是否發(fā)生,以及與它相關的數據幀。
(3)復雜攻擊識別:在復雜攻擊識別階段,系統對步驟二產生的一系列原始告警進行精簡和處理,根據預設的攻擊鏈數據庫動態(tài)生成攻擊圖并依據評估得到前K個候選攻擊鏈,其中每個攻擊鏈的根節(jié)點為候選的最終攻擊意圖。
(4)信息展示界面:實時顯示當前系統評估出的前K個攻擊鏈以及攻擊意圖的預測。
該方法的總體結構如圖1所示,具體實現步驟如下:
步驟一、數據采集
數據采集如圖2所示。系統數據采集來源可以是線上線下兩種,線上可采用kismet分布式采集或libpcap,接口一般為monitor mode的USB網卡,或者是kismet寫入的tun/tap虛擬接口。采集到的數據包根據數據鏈路層類型又分為三種格式,正確解析可得到各個層各字段信息,其中radiotap和PPI將包含諸如接收信號強度指示器(Received Signal Strength Indicator,RSSI)等物理層特征。
步驟二、單步攻擊識別
本專利的單步攻擊識別方法主要由兩個部分組成,一個是一種通用的無需訓練的檢測方法(General Detector),對于各個攻擊行為,只需設定所需metric即可;另外針對特定攻擊行為,使用誤用檢測技術,通過配置攻擊簽名庫(Signature Database)來判斷的方法(Specification Detector)。本模塊將結合兩種識別方法來判斷單步攻擊是否發(fā)生,以及攻擊者影響到的幀。單步攻擊識別如圖3所示。
從邏輯分類的角度可以將幀(frame),攻擊(attack)和網絡節(jié)點(network node)進行分類。從數據幀的粒度來說,根據是否攻擊者發(fā)出或影響可以將之分為正常幀(normal frame,NF)和非正常幀(malicious frame,MF)。從攻擊對網絡流量是否影響,可以將攻擊分為顯性攻擊(explicit attack,EA)和隱性攻擊(hidden attack,HA)。顯然AF來自于EA。而網絡節(jié)點則分為攻擊者(attacker node,AN),受害者(victim node,VN),過渡者(springboard node,SN)。一個實際發(fā)生的攻擊行為對應一條從攻擊者到受害者的攻擊路徑(attack path)。攻擊識別其實就是識別出數據幀、攻擊行為和場景角色這三個對象。
(四)一種基于D-S理論識別方法
General Detector所使用的識別方法,是一種針對幀的基于Dempster-Shafer證據理論的識別方法。對于一個幀而言,有Θ={NF,MF},其中{NF|MF}=UF(uncertain frame)。對于每一個metric,維持一個滑動窗口(sliding window,SW),其長度為n,則有n個NF幀在其中組成profile dataset。若檢測到一個幀為MF,則不會將其放入SW中,若檢測為NF則更新SW。
該方法對的基本概率分配(BPA)如下:
BeliefMF:SW中metric重復最大次數F,均值mean,最大Euclidean距離Dmax,角度α計算方法見公式1。
而對于每一個進入的幀,角度β計算方法見公式2。
其中D是該幀的metric對應mean的Euclidean距離,值為
BeliefNF:將SW中的數據按metric大小順序排列后,根據進入幀的metric值所在位置分配固定值。離中位數越近取值越高,最高為0.5。
BeliefUF:根據前面兩種分配數值有以下四種情形:
(1)MF取低值,NF取低值;
(2)MF取低值,NF取高值;
(3)MF取高值,NF取低值;
(4)MF取高值,NF取高值。
在(2)(3)種情形下,MF和NF沒有沖突則分配UF一個較小值。在(1)(4)種情形下則需要分配較高值。分配方法是先按公式3計算出BeliefUF,而后按公式4和公式5重新分配各個Belief值使其和為1。
m(x)=Beliefx-μ公式(5)
之后合成各個metric的BPA,并設定閾值,用于判定進入幀是MF還是NF。
要使得該方法有效有三個需要滿足的條件。第一,正常流量占總流量大部分;第二,NF、MF的metrics值有明顯差異;第三,滑動窗口長度n的設置。n取值過小,則無法包含足夠信息,取值過大,則增加誤入MF風險,同時延長檢測過程。
(五)攻擊簽名
單步攻擊檢測中的誤用檢測,使用攻擊簽名模型EDL來描述攻擊行為,而Specification Detector據此簽名數據庫signature database來進行檢測。若檢測到單步攻擊,則有8元組s_attack(name,src,dst,tran,ftime,etime,bssid,rframes)。其中name為攻擊名,src為AN地址,dst為VN地址,tran為SN地址,ftime為檢測出時間,etime為估計攻擊最早發(fā)生時間,bssid為VN所在網絡BSSID,rframes為相關MF幀集合。
(六)單步攻擊決策
根據上述兩種檢測方法得到的結果,綜合判斷攻擊是否發(fā)生。兩種檢測方法均建立內存數據庫,存儲所有檢測的歷史數據。General Detector存儲每個幀的信任區(qū)間,Specification Detector存儲每個檢測到s_attack。單步攻擊決策函數為s_decsion(t):int->[0,1],t為某時刻,結果為攻擊發(fā)生可能性(attack possiblility,AP)。s_decsion將從內存數據庫中分別根據幀的時間戳和ftime查找t附近的數據。
若某種攻擊行為只進行了其中一種檢測方法,則以其為準。若兩者均處于檢測中則對某時刻t有如下情形:
(1)General Detector檢測到,Specification Detector檢測到;
(2)General Detector檢測到,Specification Detector未檢測到;
(3)General Detector未檢測到,Specification Detector檢測到;
(4)General Detector未檢測到,Specification Detector未檢測到。
在(1)(4)情形下,兩者結果一致則直接以此為結果,為1和0。
在(2)情形下,認為有攻擊A發(fā)生,對應該MF,結果為公式6所示。
αBelMF(A)+βPlMF(A) 公式(6)
在(3)情形下,對應該攻擊和幀的信任區(qū)間或拒絕證據區(qū)間較大,此時認為有攻擊A發(fā)生,對應s_attack。此時,計算s_attack中r_frames的所有信任區(qū)間的均值如公式7、8所示。
若均值滿足General Detector設定的閾值,則結果為1,否則結果按公式9計算。
αBelr_frames(A)+βPlr_frames(A) 公式(9)
上述有參數α+β=1,α,β∈[0,1],通常取值α=β=0.5。
單步攻擊決策中,需要對幀的分類,單步攻擊結果輸出進行統一化。在(1)情形下,將General Detector對應的MF加入到rframes中,在(2)情形下,根據MF構造出s_attack(A,MF.mac_src,MF.mac_dst,MF.mac_reciever,MF.timestamp,MF.bssid,{MF}),其中的name為A,src為MF數據鏈路層的源地址,dst為MF的目的地址,tran為接收端地址,ftime和etime為timestamp,rframes為{MF},bssid為MF的BSSID。最終單步攻擊識別模塊輸出對象single-step attack information(SAI)為二元組(AP,s_attack)。另外,上述描述針對某一攻擊行為A進行識別,而某個MF則可能識別后與多個攻擊行為相關。所以該模型需要假設如下。
Hypothesis 1:實際情形下,很可能某一個數據幀對應幾種不同的攻擊行為,則這些攻擊行為互不干擾,且有一定的關聯關系。
步驟三、復雜攻擊識別
步驟二產生一系列的單步攻擊信息SAI存入到攻擊數據庫(Attack Database)中,供復雜攻擊識別模塊進行分析。復雜攻擊識別對應IDS的告警關聯階段,而攻擊圖可用于告警關聯。復雜攻擊識別就使用了邏輯攻擊圖(logic attack graph,LAG),和虛擬拓撲圖(virtual topology graph,VTG)搭配去挖掘攻擊路徑(Attack Path)。復雜攻擊識別包含告警精簡,VTG生成器,LAG生成器,簽名數據庫,攻擊路徑解析器,復雜攻擊評估等子模塊,其架構如圖4所示。
上一步得到的單步攻擊的告警,在這一模塊中,將有兩個主要步驟。首先需要預處理,去除無關告警和重復告警,精簡告警數量。第二步需要通過整理得到的超告警hyper alert去識別攻擊者易采取的攻擊序列,并預測攻擊者后續(xù)動作和最終意圖。
識別攻擊序列時,從邏輯上將告警(Alert)分為三類。一類是已檢測到的告警(Alert Detected,ADE),這類告警明確屬于某種單步攻擊;一類是未檢測到的告警(Alert Undetected,AUD),即可能丟失的告警;一類是未來將發(fā)生的告警(Alert Predicted,APR),即預測結果。另外考慮到攻擊者可能會在攻擊過程中進行一些無意義攻擊來混淆其真實目的,第一類告警還將分為屬于真實意圖的告警(Alert Real,AR)以及擾亂告警(Alert Disturbed,AD)。
(七)告警精簡
步驟二中產生的單步攻擊告警,由于其General Detector細化到幀的程度,將可能產生大量的告警,所以有必要對這些告警進行精簡處理,以減少告警數量,消除無關告警和重復告警。告警精簡流程如圖5所示。無關告警和重復告警描述如下:
(1)無關告警:有一些告警指示的是與無線攻擊行為無關的其他攻擊,或者該告警明顯錯誤。
(2)重復告警:同一攻擊行為產生的告警,且沒有在單步攻擊識別模塊中合并,通常是具有相同攻擊路徑由同一攻擊者發(fā)出的同一類型攻擊行為,或者時間上存在連續(xù)性、周期性的表現。
處理單步攻擊識別模塊產生的數據庫SAIs時,比較算子cmp(SAI1,SAI2)比較兩者是否可以合并,若可以則放入同一個集合Merging SAIs中。于是將SAIs分類成一組Merging SAIs,對每一個SAIs進行合并。
合并規(guī)則如下:依據SAI.AP,SAI.ftime,averge[SAI.rframes.timestamps]進行K-means聚類,將Merging SAIs細分后進行合并。對于集合SAI sai_same合并后生成新的SAI_new(AP,A,src,dst,tran,ftime,etime,bssid,rframes)。其中A,src,dst,tran,bssid不變。有ftimeSAI_new=min(ftimess),etimeSAI_new=min(etimess),rframesSAI_new=∪rframesss。
特別的是AP的選擇,如果以元組形式保存所有合并項的AP值,則會造成合并后的告警在這一字段擁有不同的維度。為了統一方便后續(xù)處理,有APSAI_new==median(APss),即選取AP的中位數。
告警精簡過后得到超告警hyper alert,這些告警之間存在關聯關系,即可能的攻擊鏈。復雜攻擊識別模塊接下來的部分即是本發(fā)明針對復雜攻擊進行識別的關鍵組件,包含VTG生成器,LAG生成器,攻擊路徑解析,復雜攻擊評估等子模塊。
(八)攻擊鏈簽名
攻擊鏈簽名描繪了常見復雜攻擊場景,攻擊鏈基于因果關系建立攻擊之間的鏈接。一個攻擊發(fā)生需要前置條件,發(fā)生后產生一些后果。從前一步攻擊到達后一步攻擊需要滿足conditions。最后的一項攻擊節(jié)點為最終攻擊者所實施的攻擊,通常蘊含著攻擊者的攻擊真實意圖。復雜攻擊識別模塊的簽名數據庫包含了一系列經典攻擊鏈,供生成LAG所需。其模型如圖6所示。
(九)LAG生成
上述動態(tài)生成的攻擊圖包含了所有已檢測到單步攻擊和它們所可能存在的攻擊鏈。從簽名庫中選擇相關攻擊鏈而后合并生成攻擊樹、攻擊圖是因為簽名庫規(guī)模增大后,整個簽名庫生成的完整攻擊圖將會變得比較復雜,不利于后續(xù)挖掘。簡單攻擊場景會生成簡單的攻擊圖,復雜攻擊場景會生成復雜的攻擊圖,這樣比較匹配。LAG生成流程如圖7所示。
(十)VTG生成
上述動態(tài)生成的虛擬拓撲圖包含了所有已檢測到單步攻擊涉及的節(jié)點,以及節(jié)點之間的連接。虛擬拓撲圖定義VTG=(VNs,VNt,VNm,AE),其中VNs為攻擊者所在虛擬節(jié)點集合,VNt為受害者所在虛擬節(jié)點集合,VNm為過渡者所在虛擬節(jié)點集合,AE為虛擬節(jié)點之間的攻擊流量集合。虛擬節(jié)點VN可能擁有攻擊者、受害者、過渡者三個角色。虛擬節(jié)點VN并不代表真實的物理設備,一個VN可能包含不同的地址,一個物理設備也可能分出幾個VN,而一個VN對應不同攻擊所扮演的角色也可以是不同的。VTG生成流程如圖8所示。
為了合理簡化系統復雜性,VN的生成和合并需要有以下假設條件:
Hypothesis 2:攻擊設備不會映射為受害者VN。
Hypothesis 3:一個VN對應一個攻擊所關聯的角色是唯一的。
Hypothesis 4:若一個VN擁有多個地址,表明使用了地址欺騙,認為其是攻擊者。
VN的地址為addr_vn(mac_addr,ip_addr,ssid,vendor),如果兩個地址的mac_addr、ip_addr至少有一個相同和一個不相同,則認為其屬于同一個VN;如果mac_addr、ip_addr相同但卻擁有不同的ssid或vendor,也認為其屬于同一個VN。
判斷VN所屬角色的方法:
(1)VN之間的地址產生沖突;
(2)VN地址包含SAI的src屬于VNs,包含dst屬于VNt,包含trans屬于VNm。
步驟三將計算VN之間對應單步攻擊的關聯度。對于某個攻擊A,VN1到VN2的關聯度為公式10所示。
其中k為VN1到VN2的單步攻擊告警集合的告警數目。
VTG示例如圖9所示。該示例存在2個VNs,其中一個是由兩個VNs合并而來,還有3個VNm以及2個VNt。這個VTG中一共包含了4種單步攻擊,分別是:attack1:VNs1->VNm1->VNm2->VNt2;attack2:VNs1->VNm2->VNt2;attack3:VNs1->VNm1->VNt1+VNs21->VNm3->VNt2;attack4:VNs2[VNs21+VNs22]->VNm3->VNt2。
(十一)攻擊路徑解析
結合VTG和LAG可以進行攻擊路徑解析,其流程圖如圖10所示。
流程中DFS問題可轉換為有向圖LAG經過一些必經節(jié)點的路徑。這是一個NP問題。當數據規(guī)模增大后,可換用遺傳算法尋找解。每一條路徑代表一個攻擊鏈。攻擊鏈需要滿足LAG中各個邊設置的發(fā)生條件。在DFS過程中,每經過一個攻擊節(jié)點A,代表在VTG中走過一條攻擊路徑。從VTG的攻擊者節(jié)點出發(fā),選擇屬于A的攻擊邊,若形成一條攻擊路徑,到達受害者節(jié)點B。則將其對應的SAI信息放入LAG攻擊節(jié)點中,并判斷從該攻擊節(jié)點到下一個攻擊節(jié)點是否滿足條件,若滿足則遞歸下去并使LAG邊的impact生效。在這個過程中,VTG中所尋找到的SAI的ftime必須是在上一個攻擊節(jié)點ftime之后。
在VTG上找尋到一條的攻擊路徑時,將計算其關聯度如公式11所示。
并將其對應到候選攻擊鏈的相應節(jié)點上。
(十二)復雜攻擊評估
上一步中針對每一個目標攻擊節(jié)點,都將生成一組候選攻擊鏈。假定攻擊者的實際發(fā)生攻擊鏈和攻擊意圖將是這些攻擊鏈中的某一個,如圖11所示。
候選攻擊鏈評分由兩部分組成。一個代表每個節(jié)點自身的告警有效性,一個代表告警之間的相關度。前者個數同所有候選攻擊鏈中節(jié)點個數,若所有單步攻擊個數為K,則后者為K*K矩陣。
對每個目標攻擊節(jié)點,分別按公式12計算出其每個候選攻擊鏈的評分要素assc1。
其中averge_assd表示候選攻擊全局中為該攻擊類型的節(jié)點assd的平均值。
對攻擊A1到攻擊A2的相關度,計算方法如下:
找到VTG中所有攻擊類型為A1和A2的邊集合E1和E2,邊個數分別為n和m。公式13為兩個邊之間的關聯度,公式14則是攻擊鏈中兩相鄰單步攻擊的關聯度。
則整條攻擊鏈的assc2值計算方式為公式15,其中k為攻擊鏈長度。
候選攻擊鏈的總評分為公式16所示。其中assc1是一個正數,assc2是一個[0,1]范圍取值的數。
assc(Attack_chain)=αln(assc1(Attack_chain))+βassc2(Attack_chain) 公式(16)
本發(fā)明中參數α,β均為1。
得到每個攻擊鏈評分后,針對每個目標攻擊節(jié)點按評分進行排序。
然后丟棄下列攻擊鏈和目標攻擊節(jié)點:
(1)沒有攻擊鏈的目標攻擊節(jié)點;
(2)攻擊鏈評分低于閾值0.5的;
(3)若目標攻擊節(jié)點所有的候選攻擊鏈均處于低值水平,則刪除整個攻擊鏈集合。
排序所有剩余攻擊鏈,從中找出評分最高的前K個目標攻擊節(jié)點及其攻擊鏈,并將其輸出為multi-step attack information(MAI)。
步驟四、信息展示界面
信息展示界面包含VTG可視化圖,排序攻擊鏈以及攻擊目標預測。無線入侵檢測系統實時顯示當前VTG,通過VTG可以讓用戶觀察出當前網絡是否有攻擊行為發(fā)生,以及通過對虛擬節(jié)點間流量的統計來突出攻擊者和受害者等重要節(jié)點的位置。排序攻擊鏈則實時顯示當前估計的所有可能的攻擊鏈,其中排在前面的1個或幾個攻擊鏈對應的攻擊意圖則為當前預測攻擊者意圖。信息展示界面如圖12所示。
本發(fā)明的一個具體的實例為:
步驟一、數據采集
數據采集使用開源庫libpcap和開源工具kismet的分布式采集來獲取所在無線環(huán)境數據包,同時也可線下分析存儲的pcap歷史文件。Pcap格式數據,根據數據鏈路層類型本發(fā)明可識別三種格式,分別是80211、帶有radiotap的80211以及PPI(Per-Packet Information)。其中,kismet的分布式采集架構如圖13所示。若干個裝有kismet drone的傳感器將數據匯總到一臺kismet server中,而后可以落地成pcap文件供后續(xù)分析,或透過tun/tap虛擬接口被第三方程序如libpcap、wireshark捕獲。Kismet drone及kismet server關鍵配置項分別如圖14和圖15所示。libpcap則提供API捕獲數據包并供程序后續(xù)使用,其主要函數如圖16所示。其中,使用int pcap_loop(pcap_t*p,int cnt,pcap_handler callback,u_char*user)循環(huán)獲取數據包,并在每一個報文到達時傳遞給回調函數void callback(u_char*userarg,const struct pcap_pkthdr*pkthdr,const u_char*packet)。該回調函數屬于靜態(tài)函數,不可為類成員函數,而處理報文的過程將作用到自定義的對象userarg里。數據包頭是pcap_pkthdr格式數據結構,它包含三個字段,分別是timestamp,caplen和len,其中timestamp是抓包時間,caplen是抓包數據長度,len是數據包實際長度。當caplen小于len時表示不是完整抓包。數據包則根據linktype進行分層解析。
步驟二、單步攻擊識別
單步攻擊識別對每一種攻擊行為,采取兩種識別方法相結合的方式來判斷,本發(fā)明中這兩種方法分別設計為General Detector和Specification Detector。General Detector以報文為檢測粒度,根據設置好的對該攻擊相關的度量進行檢測。依據D-S決策理論,程序對該攻擊的每一個度量計算當前幀的BPA,然后合成所有度量BPA得到該幀是否涉及該種攻擊的信任區(qū)間。Specification Detector則使用攻擊簽名語言EDL來描述特定攻擊行為,所有攻擊簽名構成簽名數據庫signature database,Specification Detector就將依據該簽名數據庫實施對一定時間窗口內的所有幀進行處理判斷是否符合該簽名特征。而后Decision Maker模塊將綜合兩者結果對某一攻擊行為的發(fā)生進行估值,存儲為含有8個成員變量的對象s_attack(name,src,dst,tan,ftime,etime,bssid,rframes),而后和所在AP一同組成二元組Single-step Attack Information(SAI)輸出至數據庫中,供步驟三使用。
步驟三、復雜攻擊識別
對步驟二得到的SAI進行告警精簡后,將構造虛擬拓撲圖VTG以及邏輯攻擊圖LAG。VTG對象的生成依據所有的SAI,為單例類。LAG則對應一個時間窗口,在這個時間窗口內根據處于時間窗口內的SAI和攻擊鏈數據庫,搜索所有檢測到的單步攻擊類型,而后從攻擊鏈數據庫中篩選出所有存有這些單步攻擊的攻擊鏈,進而根據這些攻擊鏈生成包含相關目標攻擊節(jié)點的列表,再對列表中每一個元素生成其攻擊樹,而后合并攻擊樹成為攻擊圖。而后程序將實時結合VTG和LAG進行攻擊路徑解析,生成候選攻擊鏈。最后對候選攻擊鏈進行評估,將其輸出為Multi-step Attack Information(MAI)并存入數據庫。
步驟四、信息展示界面
步驟三輸出的MAI信息將實時顯示在信息展示界面。本發(fā)明采用WEB端進行顯示,包含VTG的可視化圖,前K個攻擊鏈以及攻擊目標預測等信息。
本發(fā)明在實現提出的復雜攻擊識別技術時建立了無線入侵檢測系統MSWIDS(Multi-Step Wireless Intrusion Detection System),并對其進行了實驗驗證,實驗平臺的網絡拓撲架構如圖17所示。該實驗使用了1臺臺式機win7,2臺筆記本win8以及其上的3臺kali linux虛擬機,另外攻擊者和MSWIDS采集器所需的USB網卡3張,實驗室無線網絡環(huán)境AP。實驗設備和環(huán)境情況如圖18和圖19所示。