hacktricks/generic-methodologies-and-resources/threat-modeling.md

113 lines
6.3 KiB
Markdown
Raw Permalink Normal View History

# Threat Modeling
## Threat Modeling
欢迎来到 HackTricks 关于威胁建模的综合指南!开始探索网络安全这一关键方面,在这里我们识别、理解并制定针对系统潜在漏洞的策略。此线程作为逐步指南,包含真实案例、有用的软件和易于理解的解释。非常适合希望加强网络安全防御的新手和经验丰富的从业者。
### Commonly Used Scenarios
1. **软件开发**作为安全软件开发生命周期SSDLC的一部分威胁建模有助于**在开发早期识别潜在漏洞来源**。
2. **渗透测试**渗透测试执行标准PTES框架要求**进行威胁建模以了解系统的漏洞**,然后再进行测试。
### Threat Model in a Nutshell
威胁模型通常以图表、图像或其他形式的可视化插图表示,描绘应用程序的计划架构或现有构建。它与**数据流图**相似,但关键区别在于其安全导向的设计。
威胁模型通常包含用红色标记的元素象征潜在的漏洞、风险或障碍。为了简化风险识别过程采用CIA机密性、完整性、可用性三元组构成许多威胁建模方法的基础其中STRIDE是最常见的。然而所选方法可能会根据具体上下文和要求而有所不同。
### The CIA Triad
CIA三元组是信息安全领域广泛认可的模型代表机密性、完整性和可用性。这三大支柱构成了许多安全措施和政策的基础包括威胁建模方法。
1. **机密性**:确保数据或系统不被未经授权的个人访问。这是安全的核心方面,需要适当的访问控制、加密和其他措施以防止数据泄露。
2. **完整性**:数据在其生命周期内的准确性、一致性和可信度。该原则确保数据未被未经授权的方更改或篡改。通常涉及校验和、哈希和其他数据验证方法。
3. **可用性**:确保数据和服务在需要时可供授权用户访问。这通常涉及冗余、容错和高可用性配置,以保持系统在中断情况下仍能运行。
### Threat Modeling Methodlogies
1. **STRIDE**由微软开发STRIDE是**欺骗、篡改、否认、信息泄露、拒绝服务和特权提升**的首字母缩略词。每个类别代表一种威胁,这种方法通常用于程序或系统的设计阶段,以识别潜在威胁。
2. **DREAD**这是微软用于已识别威胁风险评估的另一种方法。DREAD代表**损害潜力、可重现性、可利用性、受影响用户和可发现性**。每个因素都被评分,结果用于优先排序已识别的威胁。
3. **PASTA**(攻击模拟和威胁分析过程):这是一种七步的**以风险为中心**的方法。它包括定义和识别安全目标、创建技术范围、应用程序分解、威胁分析、漏洞分析和风险/分流评估。
4. **Trike**:这是一种基于风险的方法,专注于保护资产。它从**风险管理**的角度出发,考虑威胁和漏洞。
5. **VAST**(可视化、敏捷和简单的威胁建模):这种方法旨在更易于访问,并集成到敏捷开发环境中。它结合了其他方法的元素,专注于**威胁的可视化表示**。
6. **OCTAVE**操作关键威胁、资产和漏洞评估由CERT协调中心开发该框架旨在**进行组织风险评估,而不是特定系统或软件**。
## Tools
有几种工具和软件解决方案可用于**协助**创建和管理威胁模型。以下是您可能考虑的一些工具。
### [SpiderSuite](https://github.com/3nock/SpiderSuite)
一个先进的跨平台多功能GUI网络爬虫/蜘蛛适用于网络安全专业人员。Spider Suite可用于攻击面映射和分析。
**Usage**
1. 选择一个URL并爬取
<figure><img src="../.gitbook/assets/threatmodel_spidersuite_1.png" alt=""><figcaption></figcaption></figure>
2. 查看图表
<figure><img src="../.gitbook/assets/threatmodel_spidersuite_2.png" alt=""><figcaption></figcaption></figure>
### [OWASP Threat Dragon](https://github.com/OWASP/threat-dragon/releases)
OWASP的一个开源项目Threat Dragon是一个网页和桌面应用程序包含系统图示以及自动生成威胁/缓解措施的规则引擎。
**Usage**
2023-08-03 19:12:22 +00:00
1. 创建新项目
<figure><img src="../.gitbook/assets/create_new_project_1.jpg" alt=""><figcaption></figcaption></figure>
有时它可能看起来像这样:
<figure><img src="../.gitbook/assets/1_threatmodel_create_project.jpg" alt=""><figcaption></figcaption></figure>
2023-08-03 19:12:22 +00:00
2. 启动新项目
<figure><img src="../.gitbook/assets/launch_new_project_2.jpg" alt=""><figcaption></figcaption></figure>
2023-08-03 19:12:22 +00:00
3. 保存新项目
<figure><img src="../.gitbook/assets/save_new_project.jpg" alt=""><figcaption></figcaption></figure>
2023-08-03 19:12:22 +00:00
4. 创建您的模型
您可以使用像SpiderSuite Crawler这样的工具来获得灵感基本模型可能看起来像这样
<figure><img src="../.gitbook/assets/0_basic_threat_model.jpg" alt=""><figcaption></figcaption></figure>
关于实体的简要说明:
* 过程实体本身如Web服务器或Web功能
* 参与者(如网站访客、用户或管理员的人)
* 数据流线(交互的指示)
* 信任边界(不同的网络段或范围。)
* 存储(数据存储的地方,如数据库)
2023-08-03 19:12:22 +00:00
5. 创建威胁步骤1
首先,您必须选择要添加威胁的层
<figure><img src="../.gitbook/assets/3_threatmodel_chose-threat-layer.jpg" alt=""><figcaption></figcaption></figure>
2023-08-03 19:12:22 +00:00
现在您可以创建威胁
<figure><img src="../.gitbook/assets/4_threatmodel_create-threat.jpg" alt=""><figcaption></figcaption></figure>
请记住,参与者威胁和过程威胁之间是有区别的。如果您要向参与者添加威胁,则只能选择“欺骗”和“否认”。然而在我们的示例中,我们将威胁添加到过程实体,因此我们将在威胁创建框中看到:
<figure><img src="../.gitbook/assets/2_threatmodel_type-option.jpg" alt=""><figcaption></figcaption></figure>
2023-08-03 19:12:22 +00:00
6. 完成
现在您完成的模型应该看起来像这样。这就是如何使用OWASP Threat Dragon制作简单的威胁模型。
<figure><img src="../.gitbook/assets/threat_model_finished.jpg" alt=""><figcaption></figcaption></figure>
### [Microsoft Threat Modeling Tool](https://aka.ms/threatmodelingtool)
这是微软提供的一个免费工具帮助在软件项目的设计阶段发现威胁。它使用STRIDE方法特别适合在微软技术栈上开发的人员。