---
# System prepended metadata

title: 威脅建模 Threat Modeling
tags: [風險評估, SSDLC, Azure]

---

# 威脅建模 Threat Modeling

威脅建模的理念[Threat modeling: the sooner the better, but never too late.](https://owasp.org/www-project-threat-model/)

將整體安全盡可能地做到Shift left，在開發的早期階段利用結構化的方式去找出潛在的威脅。

參考[OWASP提到的建模理念](https://owasp.org/www-community/Threat_Modeling_Process#data-flow-diagrams)

微軟的模型使用的是STRIDE

| 類別     | 描述 |
| -------- | --------- |
| 詐騙     | 涉及不合法的存取然後使用另一個使用者的驗證資訊，例如使用者名稱和密碼|
| 竄改     | 涉及惡意資料修改。 範例包括未經授權變更持續性資料 (例如保存在資料庫中的資料)，以及修改在兩部電腦之間透過開放式網路 (例如網際網路) 流動的資料|
| 否認性   | 與拒絕執行動作但沒有其他任何一方有辦法另外證明的使用者有關，比方說，使用者在無法追蹤禁止作業的系統中執行非法作業。 不可否認性是指系統反擊否認性威脅的能力。 例如，購買項目的使用者在收到項目時可能必須簽名。 接著，廠商可以使用已簽署的收據做為使用者確實收到包裹的證明 |
| 洩露資訊 | 涉及將資訊暴露給不應該具有其存取權的個人，例如，使用者可以讀取它們未被授權存取的檔案，或入侵者能夠讀取在兩部電腦之間傳輸的資料 |
| 拒絕服務 | 阻斷服務 (DoS) 攻擊可阻斷對有效使用者提供的服務，例如，藉由讓網頁伺服器暫時無法存取或無法使用。 您必須保護特定類型的 DoS 威脅，即可改善系統可用性和可靠性|
| 提高權限 | 無特殊權限的使用者會取得具有特殊權限的存取，故有足夠的存取權可入侵或摧毀整個系統。 提高權限威脅包含攻擊者已有效地滲透所有系統防禦，而攻擊者本身成為受信任系統一部分的情況，的確是很危險的情況|

將所有資訊實現四個步驟，並繪製出Data Flow Diagrams(DFD)
> [用以顯示資料如何在應用程式中的邏輯圖]

![image](https://hackmd.io/_uploads/rkJfovB2kg.png)

| 步驟 | 名稱   | 內容                                                     |
| ---- | ------ | -------------------------------------------------------- |
| 1    | Design | 掌握系統的所有需求，並建立資料流程圖。                   |
| 2    | Break  | 將威脅模型化架構套用至資料流程圖，並找出潛在安全性問題。 |
| 3    | Fix    | 決定如何使用正確的安全性控制措施組合來處理每個問題。     |
| 4    | Verify | 驗證是否已符合需求、找到問題，以及實作安全性控制措施。   |

流程圖繪製-圖形定義
![image](https://hackmd.io/_uploads/rJqv3wrhkg.png)
互動流程
![image](https://hackmd.io/_uploads/HJ8unDHnJg.png)
![image](https://hackmd.io/_uploads/BypdhDB2kg.png)

資料流程圖 深度層

| Layer | 描述                                                       |
| ----- | ---------------------------------------------------------- |
| 0     | 所有系統都需要此層，且此層中包含主要系統組件。             |
| 1     | 大部分系統需要此層，且此層中包含每個系統組件的圖表。       |
| 2     | 高敏感性的系統需要此層，且此層中包含系統子組件的圖表。     |
| 3     | 關鍵或核心層級的系統需要此層，且此層中包含每個流程的圖表。 |

![image](https://hackmd.io/_uploads/HyoT3vBhJx.png)

繪製圖形的思考邏輯

1. 以攻擊者為焦點
2. 以資產為焦點

## Microsoft Threat Modeling Tools

此工具為微軟開發之免費工具，可以在windows裡面使用，並且依照Microsoft Threat Modeling 微軟威脅模型的標準進行設計，可以協助資安人員定義威脅
[微軟官方工具介紹說明](https://learn.microsoft.com/zh-tw/azure/security/develop/threat-modeling-tool-getting-started)
[微軟官方文件參考](https://learn.microsoft.com/zh-tw/training/modules/tm-use-recommended-tools-to-create-a-data-flow-diagram/2-threat-modeling-tool)
[下載連結](https://aka.ms/threatmodelingtool)

操作簡介如下
點選SDL TM Knowledge Base然後按下Create A Model![image](https://hackmd.io/_uploads/r1WRfuS2ke.png)

操作介面大致如下，可以從右側元件區尋找物件，並依照認知上的網路架構去畫出目前環境中的流向，可以利用Generic Data Flow繪製網路流量特別注意目錄也是可以拉取的
![image](https://hackmd.io/_uploads/ByykQdrnJl.png)

對於圖形的內容都可以重新命名，不過要注意裡面的內容，例如下圖改成Command![image](https://hackmd.io/_uploads/ryw17_r2kx.png)

繪製出基本圖形後，點選View → Analysis View
![image](https://hackmd.io/_uploads/SkdxQdBnJx.png)

此時於版面下方會出現自動判斷威脅存在的地方![image](https://hackmd.io/_uploads/H19ZmdSnkx.png)

在View處可以點選 Threat Properties近一步看到威脅的說明與描述![image](https://hackmd.io/_uploads/ByKBEuH3yx.png)

點選Reports 可以產生威脅評估報告![image](https://hackmd.io/_uploads/BybL4drh1e.png)

進行Generate Report
![image](https://hackmd.io/_uploads/BJpUVurh1e.png)

可以產出一個htm的報告檔案![image](https://hackmd.io/_uploads/B1HPV_rn1l.png)

## Templete Check

打開Microsoft Threat Modeling tools，點選Open templete 打開範本
![image](https://hackmd.io/_uploads/SyvNabYhyl.png)
內建已包含下列幾項
![image](https://hackmd.io/_uploads/SJg5T-Fhyx.png)

點選Threat Types
![image](https://hackmd.io/_uploads/H1B6a-thyl.png)

裡面就會列出，為何會產出這些威脅的判斷式
![image](https://hackmd.io/_uploads/HyNb0WFnJg.png)


本文參考資料-[亂馬客](https://rainmakerho.github.io/2019/07/03/2019016/
)
