0x00 前言

這兩天由於人手嚴重緊缺的原因,被迫運維轉開發,今天跟Java的Lambda表示式PK了整整一天才把問題解決了一半,於是晚上決定換換腦子。由於最近手頭工作有了一些變化,讓自己更專注於基礎安全的技術落地和運營,所以便開始刷AMG(Amazon、Microsoft、Google)三家的專利和Paper,嘗試找到一些威脅狩獵方法和模型來完善現在的檢測能力。正好Google最近寫了一本關於架構設計的書,本著copy就要copy最先進的東西的原則,我們就先看看Google內部的威脅狩獵和情報是如何實施與應用的。

由於書中的內容不涉及到基礎設施安全以外的東西,所以這篇文章的威脅情報僅限於基礎安全層面的威脅情報,而對於業務安全的,等下篇文章再討論相關的東西。

0x01 Google認為的威脅

(1)動機與目的

Google在其安全架構的設計上可以明顯的看出是威脅驅動的,在Google看來,威脅型別和威脅來源是可以完整刻畫攻擊者會出於什麼樣的目的來進行何種程度的破壞。在Google看來絕大多數威脅無外乎政治目的(Political Method)、經濟目的(Economic Method)和聲望(Reputation Method),針對不同的目的按照內外部所面臨的威脅和攻擊者畫像,可以刻畫出”誰在什麼時間出於什麼目的幹什麼事兒“。

在梳理動機和目的的過程中,可以很明顯的感覺到Google有意無意的利用”鑽石模型“在刻畫攻擊者,用來了解攻擊者的目的。

(2)外部威脅vs內部威脅

Google透過對攻擊者目的和行為以及技戰術熟練度對攻擊者進行畫像,按照畫像的型別分為了以下幾類

a。 外部威脅:

業餘愛好者(Hobbyists):一般來說,業餘愛好者是出於對知識的渴求。他們以娛樂為目的進行駭客攻擊,並且可以成為希望在系統中建立彈性的開發人員的盟友。業餘愛好者通常會遵守個人道德規範,即不損害系統,不會發生犯罪行為。

漏洞研究人員(Vulnerability Researchers):漏洞研究人員會非常專業地使用其所瞭解的安全專業知識。 發現安全漏洞可能是他們的全職工作或者是兼職工作,甚至可能是偶然發現漏洞的普通使用者。漏洞研究人員通常有動力來改進系統,並可能成為我們的重要盟友。他們傾向於在一系列可預測的披露準則中進行操作,這些準則在系統所有者和研究人員之間設定了有關如何發現,報告,修復和討論漏洞的期望。按照這些規範進行操作的研究人員應避免不當訪問資料,造成損害或違反法律。通常,在這些規範之外進行操作會使獲得獎勵的可能性無效,並且可能被視為犯罪行為。

政府與執法機構(Governments and Law Enforcement):也就是所謂的國家隊,目的一般是情報收集(SIGINT和HUMINT收集)、網路資訊作戰、執法機構進行內容審查、民族主義者(比如ISIS這種),國家隊或多或少的會帶著政治目的對系統發起攻擊並且以十分精準和嫻熟的技戰術組合對系統發起難以察覺的攻擊。

駭客團伙活動(Hacktivism):破壞業務系統並且植入資訊用來宣傳某些思想,比較著名的例子就是Sony被黑事件。

網路犯罪團伙(Criminal Actors):利用社會工程學等攻擊技術來進行犯罪的團伙,例如,數字身份欺詐,搶錢,和數字貨幣勒索,惡意DDoS等,一般都是經濟利益驅動。

自動化與AI攻擊(Automation and Artificial Intelligence):2015年,美國國防部高階研究計劃局(DARPA)宣佈了“網路挑戰大賽”,旨在設計一種網路推理系統可以自我學習和執行並且無需人工干預就可以發現軟體缺陷,同時開發利用這些缺陷的方修補漏洞補丁。這個挑戰大賽說明了攻擊者可以藉助自動化工具和AI從事以上的犯罪。

b。 內部威脅:

Google按照能夠接觸到敏感資料和核心程式碼的程度將內部攻擊者劃分成了三種不同的型別。

第一方人員(First-party insiders):第一方人員是指出於特定目的而加入公司的人員,通常是直接參與實現業務目標的人員。此類別包括直接為公司工作的僱員、實習生、高管、外包工作人員以及做出關鍵公司決策的董事會成員等。這類員工往往是大多數內部威脅的發起者,新聞頭條都是他們佔據的。

第三方人員(Third-party insiders):第三方人員是指可以透過開原始碼、第三方SDK等方式接觸到公司核心程式碼和資料的人士,通常是由於外部程式碼引入所引入的。此類別人員包含第三方APP開發者、開源貢獻者、可信內容生產者、商業合作伙伴、合同承包商、供應商及外部審計人員。

間接關聯人員(Related insiders):與前兩種型別的人員存在信用鏈或者信任關係的人,如室友、親戚、朋友等。

(3)Google應對威脅的哲學

對於外部威脅而言,不同型別的威脅和攻擊者往往有著不同的防禦思路,但核心邏輯其實只有四個:健壯性、轉嫁矛盾、提高攻擊成本、安全迭代自動化。

譬如針對駭客團伙而言,需要考慮一下業務或專案是否涉及可能引起活動人士注意的爭議性話題,並且可能需要考慮非常健壯的、分層的安全訪問控制機制,以確保系統安全補丁可以抵禦DoS攻擊的漏洞,同時確保備份可以快速恢復系統及其資料。在設計對網路犯罪團伙具有縱深防禦的系統時需要記住這些傢伙們往往傾向於用最少的前期成本和努力實現其目標的最簡單方法。如果你能讓你的系統有足夠的彈性,他們可能會把注意力轉移到另一個受害者身上。因此,考慮他們可能針對哪些系統,以及如何使提高他們的攻擊成本。針對AI和自動化型別的攻擊團隊而言,開發人員需要在預設的情況下考慮彈性縱深防禦系統的設計,並能夠自動迭代其系統的安全狀態。

對於內部威脅而言,Google利用角色、動機、行為和目標對行為進行審計和分析,將這四種分類進行排列組合可以分析出完整的動機,劃分的方式如下:

角色劃分:工程師、運營人員、銷售、法務、市場和管理層等

動機劃分:無意操作、過失操作、使其失陷、經濟因素、價值觀問題、報復、裝逼等

行為劃分:資料庫/程式碼倉庫訪問、資料/程式碼洩露、資料/程式碼刪除、資料/程式碼修改、注入惡意資料、公開敏感資料等

目標劃分:使用者資料、原始碼、文件、日誌、基礎設施資訊、服務、財務資訊

將以上幾類資訊進行排列組合,我們可以得到一些非常有意思的例子:

張三是公司的RD,他寫的程式碼總是通不過公司的效能檢查,於是張三透過程式碼在生產環境中注入惡意後門並且竊取使用者資料來進行報復。

李四是公司的SRE,他可以訪問網站SSL加密金鑰的,但是有一天李四受到不法分子張三的威脅,迫使其交出敏感資料(例如,綁架其家人)。

準備公司財務的財務分析師張三正在加班,張三不小心將最終年度收入數字修改為正常資料的1000%。

張三是公司的SRE,張三的孩子在家中使用其父母的膝上型電腦,並安裝了與惡意軟體捆綁在一起的遊戲,從而鎖定了計算機並阻止SRE對嚴重中斷做出響應。

需要注意以上的建模方法可能會存在一定的錯誤,不能夠100%滿足實際的生產需求,所以需要結合具體的日誌和操作進行審計。

Google在設計系統時,必須考慮到有權訪問系統或其資料的人可能是來自內部的任何型別的攻擊者。 所以核心的邏輯是檢測+緩解,為了檢測和緩解來自內部的威脅,Google採取了以下的設計哲學來減少內部威脅帶來的損害:

最小許可權原則:在訪問的範圍和持續時間方面,給予執行工作所需的最少特權。

零信任原則:設計用於管理系統的自動化或代理機制,以使入侵者無法獲得允許他們造成危害的廣泛訪問許可權。

多角色授權原則:使用技術控制要求不只一個人來授權敏感操作。

使用原因歸集:要求員工正式記錄其訪問敏感資料或系統的原因。

使用原因審計與檢測:檢視所有訪問日誌和理由,以確保它們適當。

可恢復性:在破壞性操作後恢復系統的能力,例如心懷不滿的員工刪除關鍵檔案或系統。

0x02 威脅情報與威脅狩獵(攻擊溯源)

Google內部關於威脅情報的討論範圍主要聚焦在兩部分:攻擊路線確定(俗稱溯源)和入侵檢測,這節內容將會討論Google在溯源層面上的應用。

Google內部的溯源體系由三部分組成:威脅情報資料、Cyber Kill-Chain、TTPs

(1)威脅情報資料

Google內部的威脅情報資料主要是有三類:

事件類分析報告:此類情報描述了攻擊的發生方式,對了解攻擊者的程序和意圖特別有用。 此類報告通常是動手應對活動的結果,但是質量可能因研究人員的專業知識而異。

IoCs: IoCs通常使用通用格式進行結構化並透過自動提要獲得,因此它們可用於以程式設計方式配置檢測系統。Google的IoCs主要來自於三方面,Chronicles(就是那個已經死了的公司)旗下Virustotal貢獻的資料(約佔30%)、日常告警巡檢review(約佔50%)、社群交換(約佔20%)。

惡意軟體報告:該類情報可分析攻擊者工具的功能,並且可能是IoCs的來源。 這些報告是由逆向工程二進位制檔案的工程師生成的,通常使用IDA Pro或Ghidra。 惡意軟體研究人員還使用這些研究根據其共同的軟體屬性對無關的攻擊進行交叉關聯。

從上面的內容和分類不難看出Google內部的威脅情報資料呈現出兩個特點:非結構化佔比大於結構化、內部貢獻大於外部貢獻。Google對非結構化威脅情報投入了很大精力(分析報告類的文字情報),結合Google內部的專利來看,Google已經具備了利用機器學習演算法來實現對於關鍵指標的分析和自動化解讀(筆者最近也在嘗試同樣的方向,但是精力有限只能慢慢來。)。

Google對於威脅情報使用的建議是從信譽良好的安全公司(最好是有客戶參考的公司)那裡獲取威脅情報,可以更好地瞭解攻擊者所進行的惡意活動,並且建議從業務的角度出發,關注業務上常用元件的脆弱性利用以及資料層面的攻擊。

(2)Cyber Kill-Chain

Google在應用Cyber Kill-Chain的時候會嘗試列舉從原因到結果之間所有的路線並且為路線分配不同的rank,按照rank對不同層次上的Kill-Chain單獨構建不同的防禦模型,最後生成一個知識圖譜用來做攻擊者畫像和歸集。舉個例子:

從Google內部安全架構設計看威脅情報與威脅狩獵的應用場景

(3)TTPs

Google所謂的TTPs實際上也就是所謂的MITRE ATT&CK框架,但是Google對此的描述是:ATT&CK框架”可能“是一種不錯的選擇(說明內部有別的東西?)。

Google應用ATT&CK的思路是業務威脅建模 -> 技戰術拆解-> 檢測模型設計和運營 -> 技戰術歸集 -> 攻擊者畫像。而ATT&CK使用的階段是在技戰術拆解與歸集階段和畫像階段。

在應用這些模型的時候,Google給出了一些注意事項:

請考慮企業內部是否擁有攻擊者足夠感興趣的資產,使得攻擊者可以獲取直接收益或作為對他人的大規模攻擊的一部分,尤其是邊緣資產。

在設計系統時,請務必先涵蓋安全性的簡單基礎(例如使用兩因素身份驗證),然後再考慮神秘的攻擊和外來攻擊(例如韌體後門)。

考慮一下ROI,不要以為對手無法獲得資源來進行昂貴或困難的攻擊。 仔細考慮您的對手願意花多少錢。

由於可能無法始終很好地瞭解攻擊者的身份和意圖,因此我們建議您先關注攻擊者的工作方式(也就是TTPs),然後再關心他們的具體身份。

有可能人家並不在意是不是被你抓住了。

0x03 威脅情報與入侵檢測

Google認為攻擊者和防禦者都可以評估目標的弱點。 攻擊者對目標進行偵察,發現弱點,然後發起攻擊行為。 而防禦者應盡其所能,以限制偵察過程中向攻擊者披露有效資訊。 但是,由於防禦者無法完全阻止這種偵查行為,因此這些行為必須檢測到併發送告警,而記錄這些陌生的訪問請求就等於收集有關威脅情報,這也就Google內部威脅情報的三個來源之一 —— 告警巡檢。

在監測過程中,Google認為應該採取以下手段:

監視系統的埠和應用程式掃描結果。

跟蹤與資產相似的URL的DNS註冊情況,因為攻擊者可能會將這些註冊用於魚叉式網路釣魚攻擊。

買威脅情報,建威脅情報團隊。

Google認為組建以研究和被動監視對基礎架構已知和可能的威脅的活動的威脅情報團隊在長遠看來可能會凸顯出很高的價效比。 但是Google不建議小公司以這種方式投資資源,建議還是買買買。另外Google內部也已經在主機安全Agent和EDR上部署了端點化的威脅情報來檢測威脅。

作為防守方,我們會有一個完整的資產列表,所我們的評估結果可能比攻擊者的偵察到的資料更為詳盡。 這是關鍵點:如果能夠了解自身系統的弱點,就可以更有效地防禦它們。 而且,我們對攻擊者當前正在使用或能夠利用的方法的瞭解越多,則後期在對抗中的收益就越高。

0x04 Summary

Google在構建自己的威脅狩獵體系和縱深防禦系統的時候出發點始終圍繞“所有的安全事件都可以追溯到一個活躍的人”。所以Google在部署防禦的時候會優先從攻擊意圖和原因出發,尋找和列舉攻擊者的技戰術組合和測繪資訊,最後追溯到“活躍的人”。從整段介紹中不難發現Google在整個體系設計的時候首要考慮的點是價效比(cost-effective),在追求緩解攻擊影響和被攻擊之間找到一個性價比平衡點,同時也會對於複雜的攻擊路線和不起眼的攻擊行為進行著重觀察。在分析的過程中,引入了鑽石模型、TTPs、Kill-Chain模型來對攻擊者進行畫像,找到其目的再做出應對策略,從字裡行間中也能看到Google內部做了若干次Case Study才得出了從威脅本身出發進行威脅建模,拒絕外掛式安全。有一個小插曲,Google也是間接承認“應急要靠朋友圈”的操作。

當然以上內容會有描述的不全或者不準確的情況,如有興趣歡迎交流。