安全是一門語言的藝術|威脅調查分析語言概述
語言的本質源於規則,準確的規則是安全邏輯判別的標尺;語言的魅力在於傳播,有效的傳播是安全情報與技術打破安全資訊孤島的關鍵路徑。回顧總結安全智慧與運營智慧技術的演進,筆者愈發認為,網路安全是一門語言的藝術,需要深入解讀與探討,以透過語言模型的構建、語義的度量,來提升資料驅動方法在安全場景中的魯棒性與適應性。因此,《安全是一門語言的藝術》將分多個篇章,梳理安全這門語言藝術的技術思考與實現,介紹自動化與智慧化手段如何助力新的安全語言設計和應用。
本文為系列首篇,將淺談對安全領域專用語言的思考,進而概述總結面向威脅狩獵的調查分析語言(Threat Hunting Investigation and Analysis Language)技術與方案。
一、 安全資料分析技術與領域專用語言
熟悉安全領域學術論文的朋友應該都有體會,論證資料驅動的(Data driven)和智慧驅動的(AI driven)方法相對傳統方法的有效性,一般會把基於規則的(Rule based)方法拿出來對比一下。在資料過載的時代背景下,安全大資料給提取指紋特徵、寫檢測規則這種傳統純手工的安全防護模式出了多道難題:規則的泛化能力、適應性、覆蓋率等指標如何跟上資料、場景、手法數量的爆炸式增長。
此時,機器學習、深度學習、圖演算法等資料驅動的方法的優越性就體現出來了。資料中蘊含的規律和模式,是可以透過資料探勘的方法呈現出來的。流量特徵、樣本特徵、編碼特徵、序列特徵、關聯特徵、時序特徵等等,這些關鍵的數字維度能夠在沒有專家參與的情況下,在限定條件下完成檢測、溯源、評估等任務。這裡的“限定條件”是一個關鍵的問題。諸多實驗性模型與演算法,在實戰化的安全運營中難以有效發揮作用。主要瓶頸體現在:
l 異構多源資料欠缺規範約束。資料採集系統所收集的資料完整度,包括基礎的欄位完整性,資訊流的刻畫完整性,資訊歸屬的完整性等等,難以有效的、規範化的留存。與此同時,資料分析中的訓練資料集往往經過多輪次的清洗、過濾和標記。而實際部署環境下,理想的資料分佈假設空間難以覆蓋複雜動態的網路環境與攻擊技戰術變化。
l 模型黑盒缺乏可解釋性。某些複雜高容量的模型,端到端的給出的預測結果,無論是惡意的流量或樣本,或是高風險的告警,都無法同時給出合理的佐證。這在運營環節中帶來巨大的分析成本。
l 統計資料匱乏語義內涵。與缺乏可解釋性相關,統計驅動的機器學習方法習得的資料模式,不總是能夠匹配安全經驗與直覺,對不齊安全的關注焦點。舉個例子,異常檢測是安全智慧技術中的重要組成之一。然而,異常識別的維度可源於多種型別的資料統計維度,例如密度、距離、關聯性等等。這些統計維度的離散點,需要在安全場景中給定一個對應的語義化“閾值”才能有潛在的安全含義。
l 採集資料隱私洩露隱憂。資料利用與資料隱私保護之間的對抗與平衡,始終是安全技術升級的驅動力之一。隨著安全防禦收集的資料廣泛性和深度的提升,被採集端的資料所有者對採集系統的牴觸心理愈發明顯。資料從明文到加密,甚至拒絕“出境”,這些都限制了資料驅動技術方案的落地。
上述列舉的多個技術瓶頸,給資料探勘方法的安全應用加入了不少限制。與之相對應的是,安全技術的工業實現中,與攻擊方武器庫相對應的,各種型別的規則仍然是最寶貴的情報戰略資源;各種類檢測防禦系統的核心單元,絕大部分還是規則引擎,而不是某個基於機器學習的檢測模型。那麼,是否有一天,當模型的準確性足夠高、泛化能力足夠強,模型與演算法將統一安全防禦體系的天下呢?智慧化手段與方法,應該在安全場景中發揮怎樣的作用呢?
為回答上述問題,不妨設想和回顧網路安全的本質。安全可以認為是一種狀態,在這種狀態下,人、系統、財產等現實或虛擬實體未受到威脅與損害。那麼怎麼界定與評價實體是否受到威脅和損害呢?筆者認為其中的關鍵在於“立法”,也就是設定界限與規則,對越界、違規行為進行懲罰。這裡的“法”不特指法律或者法令,而是強調界限與規則的重要性。“不以規矩,不能成方圓”,在網路安全的場景下明確任務邊界尤為關鍵。而安全場景下執行任務的關鍵,則在於“依法”執行與“執法”透明。以上可統稱為“依法”屬性。安全行業的“依法”屬性,決定了規則引擎的安全技術底座核心地位。從這個角度來看,資料驅動的模型的主要瓶頸,在於其對邊界定義的模糊性。模糊的邊界定義給統計類模型賦予了超過規則的靈活性,但同時註定了其無法對任何事件分析給出明確的責任劃定。所以可以得出這樣的樸素結論:資料驅動方法應當用於輔助安全“立法”與“執法”,而不應該是“立法”與“執法”的主體。
圖1 威脅檢測領域的經典語言
回到本文的主題,所謂語言,正是規則的集合,是“法”的具體體現形式。一套面向特定場景的、自成體系的規則系統,可稱為一種領域語言;而描述或者定義規則系統的規則,可稱為領域語言的語言,即元語。回到網路安全領域,比較經典的規則系統,包括用於流量攻擊檢測的Snort規則,用於惡意檔案檢測的YARA規則,用於日誌威脅檢測的Sigma規則等等。這些規則系統都自成體系,形成領域專用的語言系統。而Snort、YARA、Sigma規則的書寫規範與規則,就是其對應的元語。
安全領域專用語言(Domain Specific Language For Security),在威脅檢測的各個領域,都具有很強的統治地位。這種規則系統的完善,或稱為語言系統的成熟,會充分發揮語言的規範性、表達力,有效提升其本身的傳播性與影響力。近年來ATT&CK知識庫的風靡,正得益於威脅分類與描述元語設計的完備性與表達力。
二、 威脅狩獵調查分析語言概述
語言的設計源於科學的認知,也更依賴對事物理解的藝術。標準語言,類似普通話,能夠促進資訊的交換與傳播,減少資訊孤島效應。在安全領域,除了上述提到的檢測語言,威脅情報規範STIX,惡意軟體描述語言MAEC,威脅檢測框架ATT&CK等等,都是具有廣泛影響力的領域資訊交換與描述語言,雖然不一定稱為標準,但其影響力被行業廣泛認可。標準語言的成功普及一方面依賴於產業技術的成熟,另一方面需要強有力的行業領導者來推動。除了標準語言,定製語言也很重要,類似方言,能夠提升區域性資訊的高效流轉與決策實施。定製語言就是為了效率而生,一千個成熟廠商就可能有一千個定製的檢測規則引擎系統。
我們已經看到,在威脅檢測領域,即定位威脅的方法論上,已經有較為成熟的語言系統。但隨著高階攻擊技戰術的演進與攻擊面的擴充,威脅分析已經不僅限於初級的威脅定位。主動的威脅狩獵,對靈活的威脅定位、高效的上下文擴充、精準的路徑溯源提出了更高的要求。傳統流量、樣本、情報、日誌分立的“語言模型”與規則系統,已經難以適應跨多源、多型別日誌的威脅調查與分析需求。
圖2 洩露的FireEye攻擊工具檢測方法概述
如圖1所示,為了應對攻擊工具集洩露,FireEye給出了數百條檢測規則,其中包括Snort、Yara、ClamAV、HXIOC等多種語言格式[1]。儘管相關規則都是各自領域的系統中的語言“標準”,但在安全運營中心日漸成熟的今天,缺乏一種更靈活的、能夠有效覆蓋多種日誌資料的標準語言,支援互動式的威脅調查與分析,這無疑是技術發展的痛點之一。此外,這些規則系統仍然普遍侷限於基於IOC的特徵指紋匹配預定位功能,無法捕獲威脅事件的時序依賴、資訊流依賴等複雜關係特徵。
雖然缺乏事實的公認方法與標準,但是面向主動威脅狩獵場景下的威脅調查與分析,工業界與學術界團隊仍然給出了不少“方言”版嘗試,以下透過表格概述幾種前沿技術方案。
如表1所示,我們主要從該語言模型針對的資料型別、支援的模式型別、實時性三個角度來初步標定各技術方案主要的應用領域與方式。資料型別方面,行為、環境、情報、知識四種型別的資料可覆蓋安全運營中心所接入的不同型別資料。在模式型別中,“單點”指的是以特徵或指紋匹配為主的單個事件模式;“集合”表示多個事件的無序組合;“序列”表示有序的事件組合;“靜態圖”表示資訊流或結構相關的事件組合;“時序圖”表示有序並且存在資訊關聯的事件組合;“模型”表示基於機器學習等模型方法,在統計特徵上可關聯起來的事件組合。實時性方面,主要包括流式的分析模式和批次的調查模式。
威脅調查分析語言,核心在於“表達力”,即能否靈活的支援威脅狩獵過程中的持續驗證過程。為此,資料型別覆蓋越全面,支援的事件模式型別越豐富,語言的表達能力越強,越能夠有效的降低調查過程中的跨資料開銷和複雜事件關聯分析開銷。威脅調查分析語言不限於表中總結的幾種實現方案。如前文所述,當前針對威脅調查領域語言的設計,業界尚處於探索之中,是安全學術與工業研究中的重要課題之一。限於篇幅,本文簡要總結在此,感興趣的讀者可在參考文獻或資料中深入研究具體的技術實現。
三、 總結
與語言的建模與分析相關,安全知識庫、知識圖譜、語義分析、可解釋智慧、因果挖掘等等,這些技術名詞已經逐漸融入安全技術發展的視野中。拋去追逐熱點的部分,從語言設計與應用的角度審視安全技術的發展,能更清晰的審視我們為什麼要做與如何做。
參考文獻
[1] https://github.com/fireeye/red_team_tool_countermeasures
[2] https://github.com/endgameinc/eql
[3] Noel S, Harley E, Tam K H, et al.: CyGraph: graph-based analytics and visualization for cybersecurity, Handbook of Statistics: Elsevier, 2016: 117-167.
[4] Shu X, Araujo F, Schales D L, et al. Threat Intelligence Computing[C]. Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security, 2018: 1883-1898.
[5] https://github.com/SigmaHQ/sigma
[6] https://ci.apache.org/projects/flink/flink-docs-stable/dev/libs/cep.html
[7] Gao P, Shao F, Liu X, et al. Enabling Efficient Cyber Threat Hunting With Cyber Threat Intelligence[J]. arXiv preprint arXiv:2010.13637, 2020.
[8] Gao P, Xiao X, Li D, et al. {SAQL}: A stream-based query system for real-time abnormal system behavior detection[C]. 27th {USENIX} Security Symposium ({USENIX} Security 18), 2018: 639-656.
[9] Gao P, Xiao X, Li Z, et al. {AIQL}: Enabling efficient attack investigation from system monitoring data[C]. 2018 {USENIX} Annual Technical Conference ({USENIX}{ATC} 18), 2018: 113-126.
相關文章
- Java語言概述2020-12-22Java
- 2020 年 HackerEarth 調查:Go 語言成為最受歡迎的語言(內含 Go 語言圖譜下載)2020-05-18Go
- 2018年Go 語言調查報告2019-04-04Go
- 2019年Rust語言調查報告2020-04-25Rust
- 2021年Rust語言調查結果2022-02-16Rust
- JSP 表示式語言概述2021-11-03JS
- SQL語言(結構化查詢語言)2024-06-08SQL
- 哪門程式語言更賺錢?看看 Stack Overflow 的最新調查2018-09-16
- [譯]用javascript實現一門程式語言-語言構想2018-07-30JavaScript
- Go語言 2019 調查報告發布2020-04-26Go
- Groovy 是一門 DSL 語言2024-09-25
- [C語言] 第一章|C語言入門第一課2019-01-19C語言
- 自然語言處理(NLP)概述2018-08-11自然語言處理
- Flutter系列之Dart語言概述2019-08-25FlutterDart
- 【R語言入門】R語言環境搭建2021-09-09R語言
- 【Go語言入門系列】(八)Go語言是不是面嚮物件語言?2020-09-01Go物件
- Go 語言 2019 調查報告發布(內含 Go 語言圖譜下載)2020-04-26Go
- 用JavaScript實現一門程式語言 2 (λanguage語言簡介)2019-01-14JavaScript
- Java和Go語言二選一,選擇哪門語言好?2022-05-31JavaGo
- 以dart語言為例說說如何學習一門新的語言2018-05-18Dart
- GO語言————2、GO語言環境安裝2018-06-23Go
- R語言入門與資料分析2024-04-20R語言
- Go語言的前景分析2018-05-26Go
- c語言入門2023-04-18C語言
- perl語言入門2019-02-15
- 微調大語言模型2024-08-28模型
- Java開發之路—java語言概述2020-11-07Java
- 第二章 C語言概述2021-11-28C語言
- go語言編譯過程概述2022-04-16Go編譯
- C語言:一種高效、易學的程式語言2021-02-04C語言
- Go 語言效能分析2019-11-14Go
- go語言安裝2020-12-14Go
- 【Go 語言入門專欄】Go 語言的起源與發展2024-04-30Go
- R語言的入門教程2023-12-21R語言
- prometheus之查詢語言2022-04-02Prometheus
- Kibana查詢語言(KQL)2020-12-26
- [譯]用javascript實現一門程式語言-詞法分析2019-02-27JavaScript詞法分析
- Go是一門什麼樣的語言?2021-08-01Go