
程式設計目的:此程式的主要目標是利用 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 樹匹配過程。一般程式工作流程如下所示:

該工具將透過以下步驟處理輸入的威脅報告:
-
材料摘要:利用 AI LLM,我們將分析冗長的威脅描述,以總結攻擊情境和攻擊路徑描述。
-
攻擊行為解析:摘要的威脅將輸入到 LLM Attack Behavior Analyzer 中,以提取個別攻擊行為的清單。
-
攻擊行為映射:每個個別行為將映射到 MITRE ATT&CK 矩陣中的相關技術。
-
結果驗證:將採用不同的 AI LLM 模型來驗證結果是否與威脅材料的原始內容匹配。
-
報告生成:根據驗證的結果,程式將生成映射報告,以供進一步研究和開發。
備註: 我們的程式中介紹的五個分析步驟是對 MITRE-ATT&CK 官方文件中顯示的威脅情報映射範例(第 6 頁,已映射到 ATT&CK 的 FireEye 報告範例)中介紹的(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 Numbering Authorities (CNA) 分配給漏洞,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]
需要的其他 Lib/軟體
-
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 | 此模組是主要的 Web 介面,用於呼叫 AI-llm MITRE ATT&CK-Mapper/ CWE-Matcher 模組以生成相關報告 |
| 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 | 所有產生的報告檔案。 |
程式使用/執行
我們提供兩種介面供使用者使用程式:主控台命令介面和網頁介面。在使用程式之前,請務必在 config.txt 檔案中設定您的 OpenAI 金鑰。
# This is the config file template for the module <threats2MitreUtils.py>
# Setup the parameter with below format (every line follow <key>:<val> format, the
# key cannot be changed):
# set openAI API key
API_KEY:<openAI key>
# set the AI model apply to the mapper.
AI_MODEL:<GPT-4>
# set the AI model apply to the verifier, if not set program will use the same as the mapper.
VF_KEY:<openAI key>
VF_AI_MODEL:<gpt-3.5-turbo-16k>
# 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
步驟 1:透過命令執行命令介面程式:
python3 threats2MitreRun.py
步驟 2:將威脅描述檔案複製到您在設定檔中設定的 ScenarioBank 資料夾。選擇功能並在程式中填寫威脅報告來源,如下所示:

步驟 3:報告將在您在設定檔中設定的 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"
}
從網頁介面使用 MITRE-ATT&CK-Mapper
本節將說明如何上傳威脅情境檔案並使用 MITRE-ATT&CK mapper 網頁介面。(您也可以直接貼上威脅情境描述)
步驟 1:透過命令執行命令介面程式:
python3 threats2MitreRun.py
開啟瀏覽器並存取 URL:http://127.0.0.1:5000/ 並選擇「MITRE-ATT&CK mapper」:

步驟 2:按照網頁上的指示設定 mapper AI 模組和驗證器模組,然後上傳威脅描述檔案並按下「Upload」按鈕。(如下所示)

步驟 3:上傳完成後,將會顯示處理程序啟動按鈕,然後按下「Start」按鈕以啟動處理程序。處理程序完成後,瀏覽器將自動下載 *.json 格式的報告。(如下所示,報告的檔案名稱將採用 <uploadfilename>_Report_Atk_YYYY_MM_DD.json 格式)

從網頁介面使用 MITRE-CWE-Matcher
本節將說明如何直接將威脅情境內容貼到網頁並使用 MITRE-CWE matcher 網頁介面。(您也可以透過上傳威脅情境檔案來進行比對)
步驟 1:透過命令執行命令介面程式:
python3 threats2MitreRun.py
開啟瀏覽器並存取 URL:http://127.0.0.1:5000/ 並選擇「MITRE-CWE matcher」:

步驟 2:按照網頁上的指示設定 mapper AI 模組和驗證器模組,然後直接將內容貼到文字欄位並按下「Upload」按鈕。(如下所示)

步驟 3:上傳完成後,將會顯示處理程序啟動按鈕,然後按下「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.