基於圖的下一代入侵檢測系統

語言: CN / TW / HK

青藤雲安全是一家主機安全獨角獸公司,看名字就知道當前很大一塊方向專注雲原生應用安全,目前主營的是主機萬相/容器蜂巢產品,行業領先,累計支援 800萬 Agent。當前公司基於 NebulaGraph 結合圖技術開發的下一代實時入侵檢測系統已經初步投入市場,參與了 2022 護網行動,取得了不錯的反響。

本文將簡單介紹基於圖的入侵檢測系統,拋磚引玉,期望能有更多優秀人才參與挖掘圖與安全的結合應用。

入侵檢測的現狀與挑戰

主流入侵檢測系統

入侵檢測一直是安全研究的一大方向,青藤的萬相和蜂巢兩套產品分別為基於主機和容器的主機入侵檢測產品,它們的原理都類似,如下圖。

入侵檢測系統架構圖

Agent 埋在主機/容器側,接收服務端下發的規則結合採集的原始事件(程序/網路連線/檔案讀寫等),通過安全專家編寫規則,比如:程序檔案 MD5/檔案 MD5/執行命令列/機器學習等特徵,命中當做告警報出來,相關告警上報到服務端;另外全量的原始事件也上報給服務端日誌收集系統,入庫儲存到 SIEM 系統。

這套系統一旦告警上報到服務端,安全人員會拿當前告警相關資訊到 SIEM 中查詢告警發生時刻前後相關的事件,必要時登入相關機器檢視相關資訊,綜合判斷當前攻擊告警是否有效並做相關處置。

這套系統是當前入侵檢測的主流架構,但是也存在諸多問題:

  1. 基於單事件+規則做單點檢測,可能造成大量誤報(規則太鬆)或漏報(規則太嚴)
  2. 同一次攻擊觸發的告警可能過多,安全分析人員分析溯源工作量巨大
  3. 同一次告警相關原始事件需要藉助 SIEM 人工分析,缺乏視覺化手段

圖與安全研究方向

其實,可以看到這裡的幾個問題點本質上都是獨立去看待每個告警和事件,實際上一次攻擊相關的告警/事件應該是彼此關聯的,這裡很自然想到用圖去把這些原始事件/告警關聯起來整體分析。事實上,這也是當前安全研究的一個熱門方向——溯源圖,藉助溯源圖我們做如下多方面的安全分析和檢測:

1.圖檢測

傳統安全解決的類似 IOC 檢測,也就是單點判斷,針對程序/網路連線/檔案等實體判斷是不是安全的;實際攻擊面臨的問題,可能各個點都檢測不出來,但實際行為是危險的——1 個規則寫不全,就算規則能寫出來,比如命中某個命令列,但是觸發告警很多,最終也無法應用。也就是要綜合判斷各種組合關係,這是圖擅長的事情,也就是安全中圖檢測的問題——把所有相關的事件放在一張圖中來綜合判斷分析是否為有效攻擊。

圖檢測研究很早,但是面臨計算量和演算法的雙重挑戰,目前行業應用很少,基本上組合判斷都還是序列檢測方式。問題是序列規則能寫多少確定規則,規則太多也有問題,無法應用;剛才提到確定規則,無法很好模糊匹配,也就是挖掘,安全中規則太確定就可以被繞過,黑客很聰明且藉助自動化攻擊更容易繞過這些規則。

2.圖關聯和溯源

剛才提到告警,也就是當前所有安全產品面臨的另一個問題——要不是規則命中不了,要不就是規則命中太多,我們叫告警淹沒,安全運營處理能力有限,可能一天 100 個告警還好,如果一天甚至一小時 10000 條告警就沒法處理了,那和沒告警沒差別。

這其實是一個安全中關聯分類和溯源的問題:

  1. 一次攻擊會產生很多告警,比如:暴力破解登入,用了惡意檔案,執行了惡意命令等等,關聯分類把一次攻擊中相關的告警關聯在一起,這是圖擅長的事情。這些告警關聯在一起,還可以綜合評判也就是多個告警聯合判斷當前攻擊是否有效;
  2. 每個告警只會告訴你當前你是程序、檔案、網路有問題,那這個問題是如何發生的,黑客是怎麼進來的,檔案是從哪裡下載的,先幹了什麼後幹了什麼。安全產品需要幫助客戶完成這個分析過程,目前行業是藉助 SIEM/THP/SOC 等安全產品,所有原始事件都上傳儲存,找安全專家,從告警開始查原始事件日誌,看告警前發生了什麼,哪些有關係可能導致攻擊,這個過程短則幾分鐘,長甚至數個小時。安全是個對抗過程,早就是優——越早發現越早對抗,封禁或隔離,否則就算髮現也為時過晚。可以把相關的原始事件實體(程序/網路等)入圖,藉助圖可以視覺化探索和溯源整個攻擊過程,這就是圖溯源的過程,學術叫因果圖、溯源圖。

3.圖知識圖譜和預測

我們知道當前安全從根本上講還是基於規則或者說先驗知識,每種漏洞/木馬/攻擊工具/攻擊過程/攻擊組織都有它的特徵,前幾種規則還比較好描述,攻擊過程、攻擊組織等就很難完整描述了。

目前的主流做法是基於安全框架構建知識庫,當前主流有 Kill Chain/ATT&CK 等框架,這是美國國防部主導的網路攻擊戰爭相關兩家公司提出的安全分析框架,相當於劃分了攻擊的戰術和具體攻擊技術的對映,這個具體如何實施比較難。安全學術界,比如:伊利諾伊大學/普渡大學近兩年都在研究類似問題,也就是安全知識庫(安全知識圖譜)的構建。有了這個完善的知識庫,就可以完成安全的終極設想,比如:我知道你的攻擊過程/攻擊組織,是不是就可以在攻擊真正開始前,好比你打仗剛拿起槍衝到陣地上,判斷你是要朝我開槍,預判直接擊斃。

國內外現狀

目前基於圖的入侵檢測系統,真正率先投入到實戰中的是美國的安全明星公司——Crowd Strike,它完全基於圖構建安全系統,現在相當於做了圖檢測和圖關聯溯源這兩塊的事情,目前估值 670 億美元。雲端計算巨頭 AWS 和 Azure 都在跟進它的方法。國內基於圖做入侵檢測系統的,目前有公開資料的是微步線上和深信服,他們相當於做了部分圖關聯和溯源的工作。

青藤雲安全的萬相和蜂巢在入侵檢測深耕多年,已經取得了行業認可的安全檢測能力,所以選擇從圖關聯和溯源入手,基於 NebulaGraph 結合圖技術開發的下一代實時入侵檢測系統,先重點解決告警淹沒和關聯溯源的痛點問題

青藤雲安全下一代入侵檢測系統

檢測原理架構圖

如下,核心是上報的攻擊告警和部分原始事件統一在圖中實時關聯。

檢測原理架構圖

產品效果

經過關聯引擎關聯處理輸出的就是攻擊事件,一個攻擊事件可能關聯多個攻擊告警並可視化呈現出來,當前產品效果圖如下:

同一次攻擊利用惡意檔案和木馬

同一次攻擊利用惡意檔案和木馬

敏感容器掛載

敏感容器掛載

自定義指令碼檢測

自定義指令碼檢測

NebulaGraph 的優勢

選擇 NebulaGraph 主要基於如下考慮:

  1. 圖查詢的剛需,特別是關聯和溯源時多級程序關係查詢,藉助 Cypher查詢圖資料庫能夠比藉助 SQL 在關係資料庫中查詢多級關係容易多;
  2. 大規模儲存,涉及到大量事件和告警的儲存;
  3. 高效能查詢場景需求,關聯需要保證近實時,當前相關查詢都在 ms 級別;

得益於 NebulaGraph 的良好效能,關聯引擎以近實時的方式入圖和計算關聯,入圖部分是青藤自己基於 Flink 打造的實時入圖元件,只需要更改配置檔案即可完成圖點邊對映入圖。

下一步研究方向和計劃

當前青藤雲安全新入侵檢測主要支援單機和部分多機場景的關聯和溯源,下一步重點是藉助圖支援更多多機關聯的場景,特別是一些典型的安全攻擊場景(反彈/橫移),進一步以圖賦能安全,為客戶提供更好的服務。

當然,當前在將 NebulaGraph 應用到圖安全應用過程中,也遇到了很多問題,提一些建議供參考。

1.下推優化

在開發過程中,極關心查詢效率問題。我們在使用過程中,最大的問題就是下推優化,比如一顆發散的程序樹,同時指定根節點和葉子節點,語句書寫順序不同就可能導致查詢從葉子節點開始還是根節點開始,查詢效率千差萬別,最後不得不只指定葉子節點條件強制從葉子節點開始查。

MATCH 效能本質上也是下推優化問題,這個問題遇到也很多,目前我們的做法是對於部分已經查詢過語句維持一個快取池,也注意到官方企業版其實提供了部分快取功能,這個點要是能考慮加到社群版就好了,是一個實際應用剛需。

2.實時場景一些技術需求點

因為我們是基於 NebulaGraph 做實時關聯,一個較大的問題是如何實現一致性和速度的平衡——因為目前 NebulaGraph 實現的是最終一致性,寫入圖後其實是不知道到底是否真實入圖完成。在實際應用中,關聯引擎需要在下游輪詢等待判斷當前的點邊是否真正的入圖完成。這個對於實際使用和效能都會造成一定影響,是否有更好的方式值得思考。

另一塊其實還是效率相關的問題,我們可以看到一些競品 TigerGraph/TuGraph 都提供了自定義匹配/遍歷演算法和能力,比如:在我們多機關聯場景中就遇到這種需求,目前只能通過拆分多條路徑然後拼接起來的實現方式,效率和速度無疑是打折扣的。

3.TOB 部署

另一個,感受較深的是 NebulaGraph 對 TOB 部署的痛點。安全這個行業,目前國內還是走現場部署的較多,特別是國企和政務相關對上 SaaS 相對敏感,那麼面臨的問題就是效率和成本的問題——

第一個是單機部署,預設生產版本是為雲設計的存算分離分散式部署方式,對於 TOB 部署還是太繁瑣,且資源佔用相對也較其他資料庫多。

第二個是 HDD 部署,成本考慮,很多公司特別中小公司安全預算有限,很難提供 SSD 環境,更別說官網要求的大容量 SSD 高配置機器,也就是針對 HDD 和低配機器的優化上需要考慮更多。

以上,為青藤雲安全團隊工程師文洲帶來的分享。


謝謝你讀完本文 (///▽///)

要來近距離體驗一把圖資料庫嗎?現在可以用用 NebulaGraph Cloud 來搭建自己的圖資料系統喲,快來節省大量的部署安裝時間來搞定業務吧~ NebulaGraph 阿里雲端計算巢現 30 天免費使用中,點選連結來用用圖資料庫吧~

想看原始碼的小夥伴可以前往 GitHub 閱讀、使用、(^з^)-☆ star 它 -> GitHub;和其他的 NebulaGraph 使用者一起交流圖資料庫技術和應用技能,留下「你的名片」一起玩耍呢~