
程序设计目的:本程序的主要目标是利用 AI-LLM 技术简化基于人类语言的威胁场景文档的处理,包括技术博客、CTI 报告、在线威胁介绍材料和网络攻击培训笔记。目标是通过将攻击行为映射到 MITRE-ATT&CK 矩阵,并将漏洞匹配到 MITRE-CWE 树,从而简洁地总结此类材料中概述的攻击流程路径。
为了实现这一目标,该程序将执行以下任务:
-
识别网络攻击行为:程序将解析文档以提取网络攻击行为,单独描述每个行为。随后,它会将这些行为映射到 MITRE ATT&CK 矩阵,从而识别相关的攻击战术和技术。
-
检测漏洞:此外,程序还将识别威胁描述中提到的漏洞。然后,它会将这些漏洞与 MITRE Common Weakness Enumeration (CWE) 进行交叉引用,以建立相应的匹配。
完成映射和匹配过程后,程序将自动生成一份综合报告,详细说明这些活动的结果。该报告将有助于提供对原始文档中概述的网络威胁态势的宝贵见解。
通用程序系统视图(通用工作流程、MITRE Mapper 和 Matcher Web UI)如下所示:

# Author: Yuancheng Liu
# version: v_0.1.2
# Created: 2024/02/21
# Copyright: Copyright (c) 2024 LiuYuancheng
# License: MIT License
简介
虽然市场上有几种威胁分析工具,例如 ThreatMapper 和 CRITs (Collaborative Research Into Threats),但其中许多工具要求用户精通 STIX 和 TAXII 这两种行业标准威胁协议。用户必须使用 STIX (Structured Threat Information eXpression) 来创建准确的威胁描述,然后使用 TAXII (Trusted Automated Exchange of Indicator Information) 连接到分析工具的服务,以促进网络威胁情报的交换。这种先决条件可能会增加用户的学习曲线。
我们的目标是开发一种基于 AI LLM 的工具/库,以简化对技术博客、CTI 报告和网络攻击培训笔记中发现的人类语言威胁场景描述的分析。该工具将允许用户传入原始的人类威胁报告内容,并自动生成 MITRE ATT&CK 矩阵映射和 MITRE CWE Tree 匹配过程。通用程序工作流程如下所示:

该工具将通过以下步骤处理输入的威胁报告:
-
材料总结:利用 AI LLM,我们将分析冗长的威胁描述,以总结攻击场景和攻击路径描述。
-
攻击行为解析:总结的威胁将输入到 LLM Attack Behavior Analyzer 中,以提取单个攻击行为的列表。
-
攻击行为映射:每个单独的行为都将映射到 MITRE ATT&CK 矩阵中的相关技术。
-
结果验证:将使用不同的 AI LLM 模型来验证结果是否与威胁材料的原始内容匹配。
-
报告生成:基于验证的结果,程序将生成映射报告,以供进一步研究和开发。
备注: 我们的程序中介绍的五个分析步骤是对 MITRE-ATT&CK 官方文档(第 6 页,FireEye 报告映射到 ATT&CK 的示例)中介绍的威胁情报映射示例中的(6 个步骤)的自动化:https://www.mitre.org/sites/default/files/2021-11/getting-started-with-attack-october-2019.pdf
该程序提供命令行控制台界面和 Web 界面供用户使用,Web UI 如下所示:

要查看详细用法,请参阅此视频:https://youtu.be/NoGy8Z5xXWE?si=uPeHbf80kpgez1d9
项目设计
在 MITRE ATT&CK 官方文档(2019 年第 6 页)中,一个示例说明了如何将“FireEye”报告中的威胁映射到 MITRE ATT&CK 矩阵,如下图所示:

该文档概述了分析报告的六个一般步骤:
-
了解 ATT&CK:熟悉 MITRE ATT&CK 框架的原则和结构。
-
识别行为:识别和隔离威胁报告中概述的特定行为。
-
进行行为研究:进行进一步研究,以更深入地了解已识别的行为。
-
将行为转化为战术:将已识别的行为与 ATT&CK 框架中的相关战术相关联。
-
确定适用技术:识别框架中适用于正在审查的行为的技术。
-
与其他分析师比较结果:将分析结果与其他分析师的结果进行比较,以验证发现并确保一致性。
威胁到 MITRE(CWD, ATT&CK) 映射器的设计
我们的程序利用 LLM(大型语言模型)和提示工程来自动化生成映射报告所需的六个步骤。该程序的工作流程如下图所示:

我们使用 LLM Attack Scenario Analyzer 模块来分析人类语言威胁场景描述,从而生成总结的攻击流程。然后按照以下步骤将威胁映射到 MITRE ATT&CK 或将它们匹配到 MITRE CWE:
映射到 MITRE ATT&CK:
-
了解 ATT&CK:程序在 LLM 对话链中启动 MITRE ATT&CK 背景知识提示,以确保 AI 理解任务要求。
-
识别行为:
LLM Attack Behaviors Analyzer模块解析攻击流程摘要以提取单个攻击行为/动作。 -
将行为转化为战术:利用
MITRE Tactic Mapper模块,程序搜索与每个攻击动作对应的 MITRE 矩阵战术。 -
确定适用技术:
MITRE Technique Mapper模块检查战术以识别每个行为的适用技术。 -
结果验证:随后,
LLM Technique Mapping Verifier模块将技术映射回原始威胁报告以验证准确性。
匹配到 MITRE-CWE:
-
了解 CWE:与 ATT&CK 映射过程类似,向 LLM 对话链提供 MITRE-CWE 背景知识提示。
-
识别漏洞:
LLM Attack Scenario Vulnerabilities Analyzer模块识别攻击流程摘要中的相关漏洞。 -
映射到 CWE 类别:
MITRE CWE Matcher模块将每个漏洞匹配到 MITRE CWE 中最接近的弱点类别。 -
结果验证:获得 CWE 匹配结果后,验证器模块将其与原始威胁报告进行比较以确认准确性。
备注:该程序将自动生成 JSON 格式的分析结果报告,我们允许用户在验证器模块上应用不同的 AI 模块,以使最终结果具有说服力。
报告将采用以下示例格式:

背景知识
MITRE CWE 和 ATT&CK
MITRE Common Weakness Enumeration (CWE) 和 MITRE ATT&CK (Adversarial Tactics, Techniques, and Common Knowledge) 是 MITRE 开发的两个不同的框架,每个框架在网络安全领域中都有不同的用途:
-
CWE 是基于类别的框架,侧重于对漏洞和弱点 (CVE) 进行编目。
-
ATT&CK 是基于知识的框架,侧重于记录攻击者的行为和技术 (TTP)。
MITRE CWE 和 ATT&CK 之间的主要区别和关系如下所示:

MITRE CWE (Common Weakness Enumeration)
-
CWE 是一个社区开发的常见软件和硬件弱点、故障和漏洞列表。
-
CWE 提供了一个标准化的分类法,用于对可能导致软件和系统中漏洞的各种类型的安全弱点进行分类和描述。
-
每个 CWE 条目都包括一个唯一的标识符、弱点的描述、示例、潜在后果和缓解措施。
-
CWE 侧重于识别和分类漏洞和弱点,以帮助组织了解和解决其软件和系统中的安全问题。
MITRE ATT&CK (Adversarial Tactics, Techniques, and Common Knowledge)
-
ATT&CK 是 MITRE 维护的知识库,记录了攻击者在网络攻击期间使用的战术、技术和程序 (TTP)。
-
ATT&CK 提供了一个结构化的框架,用于理解和分类网络攻击整个生命周期中的攻击者行为,从初始侦察到数据泄露。
-
ATT&CK 以矩阵格式组织,战术沿顶行表示,技术在每个战术中列出。
-
每种技术都包括有关攻击者如何执行它的详细信息、潜在的检测方法和缓解措施。
-
ATT&CK 侧重于通过映射攻击者使用的战术和技术来理解和防御现实世界的网络威胁。
CVE 和 MITRE CWE
CVE 提供特定漏洞的标识符,CWE 对常见弱点和漏洞进行编目。CWE 提供了更广泛的常见弱点类型目录,这些弱点可能导致 CVE。CVE 条目通常引用 CWE 条目,以提供有关被利用的底层弱点的更多上下文。
CVE (Common Vulnerabilities and Exposures):
-
CVE 是公开披露的网络安全漏洞和暴露的字典。每个 CVE ID 代表特定安全漏洞的唯一标识符。
-
CVE ID 由 CVE 编号机构 (CNA) 分配给漏洞,这些机构是由 MITRE 授权分配 CVE ID 的组织。
例如,CVE 条目可能描述软件产品中的特定漏洞,以及有关如何利用它和潜在影响的详细信息。用户可以跟踪 CVE 所属的 CWE,然后找到其他类似或相关的漏洞 (CVE),或者用户想要搜索一般类型的漏洞,他可以转到 CWE,然后找到详细的特定类型的 CVE。
APT 和 MITRE ATT&CK
MITRE ATT&CK 描述了攻击者的行为和技术,而 APT 是复杂的网络攻击,可能利用 CVE、CWE 和 ATT&CK 描述的漏洞、弱点和技术。
APT (Advanced Persistent Threat):
-
APT 指的是由资金充足且技术精湛的攻击者发起的复杂、长期的网络攻击。
-
APT 通常涉及多个阶段和技术 (TTP),包括侦察、初始访问、横向移动和数据泄露。
-
虽然 APT 与 CVE、CWE 没有直接关系,但它们可能会利用 CVE 识别的漏洞、利用 CWE 中编目的弱点,并采用 ATT&CK 中描述的技术来实现其目标。
大型语言模型提示工程
LLM(大型语言模型)提示工程是指制作或设计输入提示以有效地从 GPT(Generative Pre-trained Transformer)等语言模型中引出所需响应的过程。对于 LLM,提示在指导模型生成相关且连贯的输出方面起着至关重要的作用。提示工程涉及考虑各种因素,例如措辞、结构、上下文和特定于任务的指令,以优化模型的性能。
有效的提示工程可以显着影响生成文本的质量、相关性和连贯性。它涉及了解所使用的语言模型的功能和限制,并相应地调整提示以实现特定目标,例如生成创意故事、回答问题、完成任务或提供相关信息。
此过程通常涉及实验、迭代和微调,以找到给定任务或应用程序最有效的提示。提示工程在自然语言理解、文本生成、聊天机器人和基于语言的 AI 系统等应用程序中尤为重要,在这些应用程序中,生成文本的质量直接影响用户体验和任务性能。

在此程序中,我们使用语言链工具 langchain https://www.langchain.com/langchain 与 OpenAI GPT4 和 OpenAI GPT-3.5 Turbo 建立持续对话。如果您想使用其他 LLM,例如 google bard,请参阅 langchain API 文档。
程序设置
开发环境
-
python 3.8.2rc2+ [Windows11]
需要的其他库/软件
-
OpenAI-API 密钥:https://openai.com/blog/openai-api
-
Flask: https://flask.palletsprojects.com/en/3.0.x/ , 安装
pip install Flask -
Flask-SocketIO: https://flask-socketio.readthedocs.io/en/latest/ , 安装
pip install Flask-SocketIO -
LangChain: https://python.langchain.com/docs/get_started/introduction,
install pip install langchain
需要的硬件:无
程序文件列表
| 程序文件 | 执行环境 | 描述 |
|---|---|---|
| src/threats2MitreApp.py | python 3.8 | 此模块是调用 AI-llm MITRE ATT&CK-Mapper/ CWE-Matcher 模块以生成相关报告的主要 Web 界面 |
| src/threats2MitreAppDataMgr.py | python 3.8 | 在子线程中运行的数据管理器类,用于处理来自网页的所有映射和匹配请求。 |
| threats2MitreGlobal.py | python 3.8 | 全局常量、参数、threats2MitreApp.py 的实例和 |
| threats2MitreRun.py | python3.8 | 此模块将从文件加载威胁场景描述,并调用 AI-llm MITRE ATT&CK-Mapper/ CWE-Matcher 模块以生成相关报告。 |
| threats2MitreUtils.py | python3.8 | 此模块将提供两个 LLM-AI MITRE 框架映射器模块 llmMITREMapper 和 llmMITREMatcher |
| config.txt | txt | 配置文件 |
| templates/*.html | 所有网页 html 文件。 | |
| static/* | 网页使用的所有材料文件(*.css、*.png、*.js)。 | |
| lib/*.py | python3.8 | 所有库文件。 |
| ScenarioBank/*.txt | 所有威胁描述文件。 | |
| ReportFolder/*.json | 所有生成的报告文件。 |
程序使用/执行
我们提供两种界面供用户使用该程序:控制台命令界面和 Web 界面。在使用程序之前,必须在 config.txt 文件中配置您的 OpenAI 密钥。
# This is the config file template for the module
# Setup the parameter with below format (every line follow : format, the
# key cannot be changed):
# set openAI API key
API_KEY:
# set the AI model apply to the mapper.
AI_MODEL:
# set the AI model apply to the verifier, if not set program will use the same as the mapper.
VF_KEY:
VF_AI_MODEL:
# Scenario bank folder (folder to store the threats report srource)
SCE_BANK:ScenarioBank
# Output folder (folder to store the threats report)
RST_FOLDER:ReportFolder
#-----------------------------------------------------------------------------
# Init the Flask app parameters
FLASK_SER_PORT:5000
FLASK_DEBUG_MD:False
FLASK_MULTI_TH:True
从控制台使用 MITRE-Mapper
Step1: 通过命令运行命令界面程序:
python3 threats2MitreRun.py
Step2: 将威胁描述文件复制到您在配置文件中设置的 ScenarioBank 文件夹中。选择功能并在程序中填写威胁报告源,如下所示:

Step3: 报告将在您在配置文件中设置的 RST_FOLDER 文件夹中生成,然后检查报告文件 maliciousMacroReport_Atk.json 的内容:
{
"ScenarioName": "maliciousMacroReport.txt",
"ReportType": "ATT&CK",
"AttackBehaviors": [
"1. Constructing a malicious macro within a MS-Office Word document",
"2. Embedding an auto-phishing email malware into the document",
"3. Disguising the malware as a harmless lucky draw USB driver",
"4. Sending the document to the unsuspecting victim"
],
"tactic: Initial Access": {
"technique: Spearphishing Attachment (T1193)": {
"match": true,
"detail": "explanation: The scenario describes how Alice constructs a malicious macro within a MS-Office Word document and embeds an auto-phishing email malware into the document. This is a classic example of a spearphishing attack where the attacker sends a malicious attachment (the Word document) to the victim (Bob) in an attempt to trick them into opening it and executing the embedded malware."
}
},
"tactic: Defense Evasion": {
"technique: Masquerading (T1036)": {
"match": true,
"detail": "explanation: The scenario describes how the attacker, Alice, disguises the auto-phishing email malware as a harmless lucky draw USB driver. This is an example of masquerading, where the attacker attempts to make the malware appear as something legitimate or benign to deceive the victim."
}
},
"Time": "2024_03_05_15_05_02"
}
从 Web 界面使用 MITRE-ATT&CK-Mapper
本节将展示如何上传威胁情景文件并使用 MITRE-ATT&CK mapper Web 界面。(您也可以直接粘贴威胁情景描述)
Step1: 通过命令运行命令界面程序:
python3 threats2MitreRun.py
打开浏览器并访问 URL:http://127.0.0.1:5000/ 并选择“MITRE-ATT&CK mapper”:

Step2: 按照网页上的说明设置 mapper AI 模块和 verifier 模块,然后上传威胁描述文件并按“Upload”按钮。(如下所示)

Step3: 上传完成后,将显示 process start 按钮,然后按“Start”按钮开始处理。处理完成后,浏览器将自动下载 *.json 格式的报告。(如下所示,报告的文件名将采用 格式)

从 Web 界面使用 MITRE-CWE-Matcher
本节将展示如何直接将威胁情景内容粘贴到 Web 并使用 MITRE-CWE matcher Web 界面。(您也可以通过上传威胁情景文件进行匹配)
Step1: 通过命令运行命令界面程序:
python3 threats2MitreRun.py
打开浏览器并访问 URL:http://127.0.0.1:5000/ 并选择“MITRE-CWE matcher”:

Step2: 按照网页上的说明设置 mapper AI 模块和 verifier 模块,然后直接在文本字段中粘贴内容并按“Upload”按钮。(如下所示)

Step3: 上传完成后,将显示 process start 按钮,然后按“Start”按钮开始处理。处理完成后,浏览器将自动下载 *.json 格式的报告。(如下所示,报告的文件名将采用 tempScenarioFile_Cwe_YYYY_MM_DD.json 格式)

要设置 API 并调整提示字符串,请参阅配置页面:

参考
-
MITRO CWE 链接:https://cwe.mitre.org/index.html
-
MITRO ATT&CK:https://attack.mitre.org/
- 文章链接: https://www.linkedin.com/pulse/ai-llm-threats-mitrecwd-attck-mapper-yuancheng-liu-jculc
- 项目 Github 链接: https://github.com/LiuYuancheng/Threats_2_MITRE_AI_Mapper
感谢您花时间查看详细信息,如果您有任何问题和建议或发现任何程序错误,请随时给我留言。如果您能提供一些意见并分享任何改进建议,我们将不胜感激,以便我们能够改进我们的工作~
上次编辑者:LiuYuancheng([email protected]),于 2025 年 1 月 3 日编辑,如果您有任何问题,请随时给我留言。
No comment for this article.