多步攻擊發現方法研究現狀調研

目標

已有一些單步攻擊,尋找這些單步攻擊中可能包含的多步攻擊鏈. 看看有沒有能夠參考的多步攻擊發現方法. 總結分類.
找一些多步攻擊發現相關的文獻,功利一些,看中文文獻爲主,英文文獻爲輔,目標是畢業論文,又不是SCI - -。還可以看看殺傷鏈相關的,有哪些主流方法。搭積木式的文章比較多。

背景知識

網絡攻擊過程

分析和歸納已發生的網絡攻擊事件發現,網絡攻擊行爲主要包括目標系統探測分析、實施攻擊和蹤跡隱藏。據此,對網絡攻擊方法進行層次化分類,大體可分爲目標探測、漏洞掃描、權限獲取、提升權限和蹤跡隱藏。整個攻擊過程的關鍵階段是鎖定目標和獲取權限階段。一旦攻擊者鎖定目標獲取權限,即可通過系統漏洞提升訪問權限,竊取信息或者危害系統安全。在實際運用過程中,攻擊過程往往結合一個到多個網絡攻擊方法(如緩衝區溢出、SQL 注入等)進行。1

告警關聯方法

很多文獻中的關聯分析,其實是對告警的關聯分析。告警關聯方法大致分爲四類,分別是基於專家知識的告警關聯方法、基於頻繁模式挖掘的告警關聯方法、基於屬性相似度的告警關聯方法和基於因果關係的告警關聯方法2。各個方法的優缺點也很明顯,但首先要注意到,他們是對告警進行關聯的,告警本身就有冗餘大,關聯性弱的特徵(分析的對象就和我的有一定的差別。具體實現也有差別,不一定能套用)。
其中,基於頻繁模式挖掘的方法,是不是正好和下面的頻繁項集的方法對應上了。下面挨個分析各種方法的可行性。
基於專家知識的方法:知識圖譜看起來和專家知識關聯較大,可專家知識的缺點太過明顯,知之爲知之,不知爲不知,先驗性太強。其實從這方面考慮也不是不行,但一定要在這個硬傷上有所補足。
基於頻繁模式挖掘的告警關聯方法:此方法假設同類多步攻擊的告警序列模式具有相似性且頻繁出現,採用滑動時間窗口對告警序列進行切片,對告警序列集合進行頻繁模式挖掘並將得到的頻繁序列視爲多步攻擊鏈,從而達到告警關聯的目的。我覺得在我的場景下,由於單步攻擊的數量已經不具備“數量非常大”的特徵,恐怕不能再在此基礎上進行挖掘了。但如果非要使用這個方法的話,也可以,只是預想一下,恐怕效果不行。主要還是因爲“單步攻擊”和告警差別太大了。有趣的是,該文獻中提到了所謂“超級告警”的概念,我不如把我的問題想成:如何對超級告警進行關聯?超級告警和一般的告警有什麼區別?內容究竟豐富了哪些?我的“單步攻擊”應該和“超級告警”更接近一些。
基於屬性相似度的告警關聯方法:此方法首先定義告警間的屬性相似度函數,然後通過設定告警的相似度閾值來達到聚合告警的目的。這個聽起來比頻繁模式挖掘靠譜一些,“單步攻擊”的各個屬性還是不少的(即便不夠多,還可以再加)。這種方法要考慮的主要問題是,屬性相似度函數該如何選取?相似度閾值該如何設置?同樣,該方法和知識圖譜差得有點遠,套不上的感覺。缺點是,當多步攻擊場景中各攻擊步驟之間的屬性相似度較低時,關聯性較差(挺正常的吧?)。
基於因果關係的告警關聯方法:認爲一個完整的攻擊場景是由多個攻擊步驟組合而成,多步攻擊的各個攻擊步驟之間具有因果關係,將單步攻擊的前一步視爲其發生的原因(完成單籤攻擊步驟所需要的前提條件)、將後一步攻擊視爲當前步驟逇結果(當前攻擊步驟所導致的後果)。其實這個方法仍然依賴專家知識,話說知識圖譜的方法依賴專家知識也無可厚非吧(硬傷:你只是套了層知識圖譜外皮的知識庫罷了)。下面的“基於本體的方法”和這邊的關聯比較大。
現在要選,肯定不會是單純的專家知識的方法,頻繁模式挖掘也是大概率不行(顧忌很明顯了),重點關注一下後兩種。
該文獻還指明瞭告警關聯的重點研究方向:降低IDS誤報、冗餘告警及漏報對多步攻擊關聯帶來的負面影響,如何儘可能少地使用專家知識對IDS告警進行關聯。(我不能和研究方向背道而馳,專家知識不是不用,是“儘可能少”)

文章中的一些現有方法

  1. 基於本體的方法
    涉及本體建模,知識圖譜和本體有關聯,從這個角度來說,還是有套用的價值的。其原理約莫是使用Protege定義owl,設定規則,利用Protege推理機進行推理,按照文獻11所說的,這種基於本體的網絡安全模型可以自動發現網絡系統潛在的被攻擊路徑和方法。
    優點:很好地結合了本體模型,利用本體推理機的功能。
    創新點:提及了APT,吹了一些對新型攻擊手段的思考,本體推理機。
    限制:需要使用SWRL(Semantic Web Rule Language)設計網絡攻擊規則(可以理解,但是這種限定攻擊場景下設計的網絡攻擊規則,是不是本身侷限性太強了)。比如應用到我們的多步攻擊場景,我就設計這樣的規則,系統中存在可聯網主機,攻擊者通過系統漏洞通過響應的攻擊手段攻擊目標主機,則目標主機被攻破,攻擊者成爲內部攻擊者(外部攻擊規則 - -那幾個被注入DDoS攻擊工具的機器,這麼一看這個攻擊規則還是有一定的通用性的)。文獻中舉例的規定了兩個攻擊規則,分別是外部攻擊規則和明文協議遠程登錄漏洞攻擊規則。如此,又想到了另一個問題,和我設想的“單步攻擊”特徵子圖一樣,這裏的複雜攻擊規則的來源又是怎樣的?是不是有點“專家系統”(雖然有推理功能),或者是“存儲先驗知識”的意味?
    總結:可以參考一下,易於和知識圖譜結合。
  2. 數據挖掘的關聯分析方法(頻繁項集)
    涉及關聯規則挖掘3。關聯規則的形式爲AB(s,c)A\to{B(s,c)},其中A是規則前件,B是規則後件,s和c是規則度量的兩個重要指標,前者稱爲支持度(或頻繁度),表示規則在數據庫中出現的頻率,後者爲置信度,表示在前件發生前提下後件發生的概率。就其名字來說,“關聯分析”,似乎和我們的目標很契合,但是“頻繁項集”對我的場景來說,是不是沒什麼作用?
    限制:文章中提及的,對於支持度和置信度的閾值設置問題,這個閾值影響很大,不好選取。文中說的是多事件序列的關聯規則挖掘方法,對我們的場景來說,這個有什麼意義?從圖中拿出事件序列的頻繁項集,頻繁不代表這就是攻擊事件啊。
    總結:不太好參考,建議忽略。
  3. 馬爾科夫鏈和Apriori頻繁序列挖掘算法搭配使用
    這是文獻4提出的方法。該文獻關聯分析的對象是入侵告警,認爲複雜多步攻擊產生的告警在序列中經常間隔出現。先利用一階馬爾科夫性質建立告警關聯模型,定量表示攻擊者選擇不同攻擊路徑的可能性。方法是:利用Apriori頻繁序列挖掘算法得出頻繁告警2-序列的支持度,將歸一化的序列支持度作爲馬爾科夫鏈的一步轉移概率。
    這個方法和方法2有重複的地方,都應用了頻繁序列挖掘方法。該文獻的實驗數據集和我選用的相同,但他的直接分析對象是從該數據集產生的告警,而我的是我匹配出來的單步攻擊。我認爲,分析對象有這些差別,第一,我的分析對象相對來說,“冗餘較少”,是基於行爲的,而他的分析對象是由IDS直接一步產生的告警,我可以在得到“單步攻擊”分析對象的過程中,就先作一步加工,先達到所謂的“告警聚合”的效果;第二,單步攻擊包含一系列屬性(信息量比較大但是數量少),可視爲很大的對象(object),可以理解爲數量上不是特別多,和告警的數量甚至不在同一個數量級上,另外可以在屬性上做文章,比如方法1中提到的那種攻擊已經屬於比較危險的了,或者是把單步攻擊對到“殺傷鏈”上去(大概是一種描述性質的信息- - 有這個單步攻擊,我對這樣的單步攻擊有一些定性的認識),而告警信息數量龐大,更適合作所謂的數據挖掘。(這樣一想,頻繁項集的方法怎麼都不太適合我的應用場景)。
    該文獻的方法比較突出的幾點:第一,定量(得到所謂的“攻擊告警的關聯準確率”);第二,沿用馬爾科夫鏈方法,根據頻繁項集挖掘算法的結果確定轉移概率。
    綜合思考一下,這種正是所謂的“笨辦法”,如果我要沿用這種方法,就只取馬爾科夫鏈的部分。(貌似只是馬爾科夫鏈,不是隱馬爾科夫鏈)
    該文獻其實還是那種“拼湊大法”。對比一下,我覺得我關聯的對象不是告警,已經是很大的創新了 - -。
    結論:頻繁項集的部分肯定不參考了,馬爾科夫鏈的部分是底牌了,儘量不參考。
  4. 基於多因素的告警關聯方法
    此方法來自文獻2
    首先,“多因素”的考慮是很合理的,搭積木嘛,必然是多因素。其次,從摘要來看,這篇文章的工作主要是兩部分,第一部分是告警預處理,第二部分纔是告警關聯(關聯的當然是經過預處理的“超級告警”啦)。該文章中的“多因素”指的是時間、IP地址、告警類型等因素,其實大差不差。
    個人覺得不合理的地方:設置了“高級告警之間的時間間隔”的限制,實際上,APT攻擊的時間間隔可能很長很長。這裏是假設,可以理解了。
    結論:可以借鑑。在相似的基礎上找不同,在不同的基礎上找創新。

  1. 魏忠,張保穩.一種基於本體的潛在多步網絡攻擊發現方法[J].通信技術,2018,51(02):419-424. ↩︎ ↩︎

  2. 吳東. 基於數據挖掘的告警關聯關鍵技術研究[D].貴州大學,2019. ↩︎ ↩︎

  3. 何佔軍,鄧敏,蔡建南,劉啓亮.顧及背景知識的多事件序列關聯規則挖掘方法[J].武漢大學學報(信息科學版),2018,43(05):766-772. ↩︎

  4. 李洪成,王成,王春雷,袁峯.面向間隔告警的多步網絡攻擊定量關聯方法[J].計算機工程與設計,2019,40(11):3073-3078. ↩︎

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章