Threat modeling威脅模型說明:預期網路攻擊的過程

Threat modeling威脅模型說明:預期網路攻擊的過程

了解框架,方法和工具,以幫助您識別,量化和確定面臨的威脅的優先級。

A.png

威脅模型的定義

威脅模型是一個結構化的過程,IT專業人員可以通過該過程識別潛在的安全威脅和漏洞,量化每個威脅的嚴重性,並確定技術的優先級以減輕攻擊並保護IT資源。

這個寬泛的定義聽起來可能像是網路安全專業人員的職位描述,但是威脅模型的重要之處在於它是系統的和結構化的。威脅模型人員將執行一系列具體步驟,以全面了解他們試圖保護和識別漏洞和潛在攻擊者的環境。

就是說,威脅模型在某種程度上仍然像一門科學一樣,是一門藝術,並且沒有單一的規范威脅模型過程。威脅模型的實踐借鑒了各種較早的安全實踐,最著名的是1990年代開發的“ 攻擊樹 的概念。1999年,Microsoft員工Loren KohnfelderPraerit Garg在公司內部分發了一份名為“ 我們產品的威脅 的文件,該文件被許多人認為是威脅模型的第一個明確描述。

KohnfelderGarg將他們的建議稱為“ STRIDE框架”,我們將在本文後面詳細討論它的細節。但是,重要的是要知道那裡存在各種各樣的威脅模型框架和方法。一些模型具有不同的重點,而另一些模型則特定於某些IT學科例如,某些模型專門針對應用程式安全性。在本文中,我們將幫助您了解所有這些方法的共同點,以及哪種特定的技術可能適合您。

威脅模型流程和步驟

每種單獨的威脅建模方法都包含一系列略有不同的步驟,我們將在本文後面的部分中討論每個步驟的細微差別。首先,我們將看一下所有這些方法共有的基本邏輯流程。威脅模型過程最簡潔明了的概述之一來自軟體工程師Goran Aviani。正如他所說,威脅模型的目的是回答四個問題:

我們正在做什麼?

有什麼問題嗎?

我們該怎麼做?

我們做得好嗎?

反過來,威脅模型過程應包括四個主要步驟,每個步驟都會為這些問題之一提供答案。

分解應用程式或基礎架構

確定威脅

確定對策和緩解措施

排列威脅

為了準確了解這些步驟中的每個步驟,我們需要討論構成威脅模型基礎的特定技術。

推薦白皮書

威脅模型化技術

上面列出的步驟中最不熟悉的術語可能是分解。分解應用程式或基礎架構意味著什麼?軟體工程師Andrea Della Corte他說,分解應用程式包括“了解應用程式及其與外部實體的交互方式。這涉及建立案例,以了解應用程式的使用方式,確定入口點以查看潛在的攻擊者可以在哪裡與應用程式進行交互,確定資產(即攻擊者可能會感興趣的項目/區域),並標識表示應用程式將授予外部實體的訪問權限的信任級別。” (他在這裡專門談論應用程式安全性,但是顯然,從廣義上講,這也適用於對基礎結構的看法。)

分解應用程式的一種技術是構建數據流程圖。這些是在1970年代開發的,以可視方式表示數據如何在應用程式或系統中移動以及各個組件在何處更改或存儲數據。信任邊界的概念是在2000年代初期添加的,它說明了數據流中的一點,在用於威脅模型上需要對數據進行驗證,然後數據才能被接收該數據的實體使用。。

數據流程圖示例

1中的圖說明了通過網路銀行應用程式的數據流;虛線表示信任邊界,可能會在其中更改數據,並且需要採取安全措施。

B.png

1. 網路銀行應用程式的數據流程圖(來自Wei ZhangMarco Morana,以OWASP許可分發)

Redmond自己進行威脅模型化的早期,該Microsoft文檔對如何為系統或應用程式構建自己的數據流程圖進行了更深入的介紹。

由於數據流程圖是由系統工程師而不是安全專家開發的,因此它們包含了許多威脅模型不需要的開銷。數據流程圖的一種替代方法是過程流程圖。這些在總體概念上相似,但更加精簡,並且著重於用戶和執行代碼程式在系統中的移動方式,更緊密地反映了攻擊者的思維方式。ThreatModeler 在構建過程流程圖方面是很好的入門。

建立(Attack tree)攻擊樹是一種威脅模型技術,當您確定要對應用程式或基礎結構潛在威脅的階段時,它就變得非常重要。攻擊樹由90年代後期的信息安全傳奇人物Bruce Schneier開創。它們由代表不同事件的一系列父元素節點、子元素節點組成,子節點是必須滿足的條件才能使父節點為真。根節點(圖中的最高父節點)是攻擊的總體目標。借助攻擊樹,威脅建模者可以看到必須組合哪些情況才能使威脅成功。圖2顯示了一個簡單的攻擊樹,說明了病毒可能成功感染文件的不同方式。

C.png

2.攻擊樹(來自BluefoxicyCreative Common許可分發)

Hackinthebox 從攻擊者的角度很好地介紹瞭如何建立攻擊樹,這可以幫助您了解自己所面臨的威脅。

確定對策和對威脅進行排名的技術因您選擇的框架或方法而相差較大,我們將在下一節中更詳細地討論它們。

威脅模型框架和方法

威脅模型的各種結構化方法通常稱為框架或方法論(在此情況下,這兩個術語基本上可以互換使用)。其中有很多,但我們將對最受歡迎的內容進行回顧。

7種頂級威脅模型方法

  1. STRIDE模型
  2. DREAD模型
  3. PASTA模型
  4. VAST模型
  5. Trike模型
  6. OCTAVE模型
  7. NIST國家標準技術研究所模型

STRIDE威脅模型

如上所述,STRIDE是威脅模型的祖父,最早於90年代末在Microsoft開發。STRIDE代表六種威脅,每種威脅都違反了資訊安全三要素特定屬性:

欺騙或冒充真實性的他人或電腦

篡改數據,這會破壞完整性

否認性或無法將您執行的操作鏈接到您,這違反了不可否認性性

信息洩露,違反機密性

拒絕服務,這違反了可用性

特權提升,違反授權

DREAD威脅模型

DREAD被認為是STRIDE模型的一個附加組件,該模型使建模人員可以在確定威脅後對其進行排名。對於每個潛在威脅,DREAD代表六個問題:

潛在損害:如果利用漏洞,造成的損害有多大?

重現性:重現攻擊有多容易?

可利用性:發動攻擊有多容易?

受影響的用戶:大概影響了多少用戶?

可發現性:查找漏洞有多容易?

這些問題中的每一個都得到一到三個的評分。

PASTA威脅模型

PASTA代表攻擊模擬和威脅分析過程,它是一個七個步驟的過程,致力於使技術安全要求與業務目標保持一致。每個步驟都非常複雜,由幾個子步驟組成,但是總體順序如下:

定義目標

定義技術範圍

應用程序分解

威脅分析

漏洞和弱點分析

攻擊建模

風險與影響分析

VAST威脅建模

VAST代表可視化,敏捷威脅建模。該模型是 ThreatModeler(自動威脅模型平台)的基礎,該平台可以區分應用程式和運營威脅模型。VAST專為集成到圍繞devops哲學構建的工作流中而設計。

Trike威脅模型

Trike是用於威脅模型和風險評估的框架和隨附的開源工具,它從防禦的角度運行,而不是試圖模仿攻擊者的思維過程。使用Trike,您可以為要防禦的系統建模,並通過CRUD的角度評估每個組件,也就是說,誰可以建立,讀取,更新或刪除該實體。通過遍歷數據流程圖來識別威脅,每種威脅僅分為兩類:拒絕服務或特權提升。

OCTAVE威脅建模

OCTAVE代表“運營關鍵威脅,資產和漏洞評估”,是卡耐基梅隆大學開發的一種威脅模型方法,其重點是組織風險而不是技術風險。它包括三個階段:

建立基於資產的威脅配置文件

識別基礎架構漏洞

制定安全策略和計劃

NIST威脅模型

美國國家標準技術研究院擁有自己的以數據為中心的威脅方法,該方法包括四個步驟:

識別並表徵感興趣的系統和數據

識別並選擇要包含在模型中的攻擊媒介

表徵緩解攻擊媒介的安全控件

分析威脅模型

NIST草案還包括如何方法將在實踐中應用一個詳細的例子。如果您正在尋找威脅模型示例,那麼這是一個很棒的文檔,可以閱讀該文檔以了解流程如何工作。

威脅模型最佳實踐

無論選擇哪種方法,都應遵循一些實踐。也許最重要的(儘管通常在實踐中很難遵循)是使威脅建模成為系統開發過程中的優先事項。如果您可以在項目開始時做到這一點,則以後可以省去很多麻煩,因為安全的觀點將被應用到您的應用程式或系統中。

另一個最佳實踐是不要將應用程序和系統彼此隔離。Michael Santarcangelo寫道: “如果各種威脅模型以相同的方式相互連接,並且應用程式和組件作為IT系統的一部分進行交互,那麼結果將是一個全面的攻擊面,CISO可以使用該攻擊面來理解整個企業的整個威脅組合。”

我們還敦促您避免常見的威脅模型錯誤。簡短的版本:不要過於關注頭條新聞上的任何威脅;不要忘記,您的用戶可能是所有人中最大的無意威脅。並且不要忘記,威脅模型應該是有效的文檔,並且需要不斷更新。

威脅模型工具

您將注意到,上面列出的兩種方法(VASTTrike)實際上是圍繞特定的軟體工具構建的。工具也支持其他方法。例如,Microsoft提供了免費的威脅模型工具,而OWASP Foundation擁有其自己工具的桌面和Web應用程式版本。

但是實際上,這裡描述的許多方法都是概念性的,並不與任何軟體實現聯繫在一起。攻擊樹或數據流程圖可以用筆和紙繪製。正如Luca Bongiorni的演講所解釋的那樣,用於威脅模型的一些最受歡迎的工具是Microsoft VisioExcel。開始為基礎架構進行威脅模型的障礙很低回報也很高。

Source: https://www.csoonline.com/article/3537370/threat-modeling-explained-a-process-for-anticipating-cyber-attacks.html