在資安工作中,我經常會看到「MITRE ATT&CK」這個名字。
它可能出現在 SIEM Alert、偵測規則的說明,或資安產品提供的事件資訊裡。有時候旁邊還會標註 Tactic、Technique,以及像 T1059.001 這樣的編號。
過去的我並不是完全沒聽過 ATT&CK。
我大概知道它和攻擊手法有關,也知道那些 Txxxx 編號應該代表某種資安行為。但是,如果要我進一步說明 Tactic 和 Technique 有甚麼不同,或是 SOC Analyst 看到這些 Mapping 之後能拿來做甚麼,我其實沒有完整的答案,也不知道該如何好好利用。
它比較像是「經常看見,但沒有真正弄懂」的東西。
因此這次在整理鐵人賽文章時,我決定重新從頭理解 MITRE ATT&CK。
我不是 ATT&CK 專家,也不是要直接教大家如何使用 ATT&CK 設計的規則。
我只是想先解決一個更基本、也更貼近自己工作經驗的問題:
當 SIEM Alert 上出現 Tactic、Technique 和 Txxxx 時,我到底應該怎麼理解這些資訊?
MITRE ATT&CK 是一套整理攻擊者行為的知識庫。
依照 MITRE 的說明,ATT&CK 收錄基於根據真實世界觀察整理而成的攻擊者戰術與技術,目的是用比較有系統的方式描述攻擊者在行動過程中可能出現的行為。
換句話說,它不是單純列出:
它更關心的是:
攻擊者想達成甚麼目的,以及可能用甚麼方法達成。
這也是為甚麼 ATT&CK 會出現在許多 SIEM、EDR、偵測規則和威脅情報裡。它提供了一種共同語言,讓不同工具、不同廠商和不同分析人員,可以用相對一致的方式描述攻擊行為。
MITRE 官方將 ATT&CK 描述為一個依據真實觀察建立、整理對手戰術與技術的知識庫。
MITRE ATT&CK 官方網站
不過,ATT&CK 的內容非常龐大。
如果一開始就想把整個 Matrix、每一個 Tactic,以及所有 Technique 全部背起來,
很容易還沒理解用途就先被大量名詞淹沒。
所以我這次先從工作中最常看到的三個概念開始:
Tactic 可以先理解成:
攻擊者目前想達成的目標。
MITRE 將 Tactic 說明為 Technique 或 Sub-technique 背後的「Why」,也就是攻擊者採取某項行動的戰術目的。
MITRE ATT&CK:Enterprise Tactics
例如,攻擊者可能想要:
這些比較接近攻擊行動中的「目的」,而不是具體的執行方法。
以前我看到 Initial Access、Execution 或 Credential Access 時,
可能只把它們當成攻擊流程中的分類名稱。
現在我會把它們理解為:
如果這個 Mapping 是合理的,它正在提示我,這個行為可能與攻擊者的哪一種目的有關,或者可能會有什麼下一步。
如果 Tactic 是「為甚麼」,Technique 就比較接近:
攻擊者可能用甚麼方法達成這個目的。
例如,攻擊者想執行程式碼,可能會使用命令列、腳本直譯器或其他方式。
攻擊者想取得 Credential,也可能有多種不同做法。
因此,同一個 Tactic 底下通常會有多個 Technique。反過來說,某些 Technique 也可能因為可以達成不同目的,而與不只一個 Tactic 有關也有可能關聯到多個。
這讓我修正了一個原本過度簡化的理解:
Tactic 不是某一個固定的攻擊步驟
Technique 也不一定只屬於單一情境
ATT&CK 是用來整理攻擊行為的知識模型,不是一份規定攻擊一定會照順序發生的流程表。
MITRE 對 Technique 的說明是:攻擊者透過某種行動達成戰術目標的「How」。MITRE ATT&CK FAQ
有些 Technique 涵蓋的範圍仍然很大,因此 ATT&CK 又使用 Sub-technique 描述更具體的行為。
我目前會用下面這種方式記憶:
Tactic
攻擊者想做甚麼
↓
Technique
攻擊者可能怎麼做
↓
Sub-technique
更具體是使用哪一種做法
例如,T1059 是 Command and Scripting Interpreter,也就是使用命令或腳本直譯環境執行動作。
在它底下,還可以再細分成:
其中 PowerShell 的編號是:
T1059.001
也就是:
T1059 Command and Scripting Interpreter
T1059.001 PowerShell
MITRE 將 T1059.001 列為 PowerShell Sub-technique,並將其關聯到 Execution Tactic。MITRE ATT&CK:T1059.001 PowerShell
看到小數點後面的編號時,可以先把它理解成某個 Technique 底下更具體的 Sub-technique。
第一次看到 T1059.001 這類編號時,很容易把它想成漏洞編號、事件代碼,甚至某種風險分數。
但 Txxxx 主要是 ATT&CK 用來識別 Technique 的 ID。
因此:
T1059.001
並不表示事件的風險是 1059,也不表示某種攻擊一定已經成功。
它只是幫助我們定位到 ATT&CK 中對應的行為分類。
這些編號的價值是讓不同文件、產品與分析結果可以指向同一項 Technique,而不必只依賴文字名稱。
理解前面的結構後,我開始比較能看懂 Alert 上的 ATT&CK Mapping。
假設有一筆 Alert 顯示:
偵測到可疑的 PowerShell 行為
Tactic:Execution
Technique:Command and Scripting Interpreter
Sub-technique:PowerShell
ID:T1059.001
這個例子只是用來說明概念,並不是我的真實事件紀錄。
這組 Mapping 想表達的是:
這項偵測到的行為,可能符合攻擊者使用 PowerShell 執行命令或程式碼的行為模式。
這樣的分類可以幫助 Analyst 快速知道 Alert 大概指向哪一類攻擊行為,也可以沿著 Technique 找到更多背景資料。
但是,這裡有一個非常重要的差別:
行為可以被 Mapping 到某個 Technique
不等於攻擊已經被證實
PowerShell 本身是合法的系統管理與自動化工具。
攻擊者可能會使用 PowerShell,但系統管理員、維運腳本、軟體部署工具和企業自動化流程同樣可能使用它。
所以當 Alert 被 Mapping 到 T1059.001 時,我們不能只因為看見 ATT&CK 編號,就直接判斷:
這台電腦已經被攻擊者入侵。
真正需要做的是回到 Alert 的原始資訊與環境脈絡,繼續確認:
這時我才開始理解,ATT&CK Mapping 比較像是調查線索。
它可以告訴 Analyst:
這個行為可能屬於哪一類攻擊手法,以及接下來可以往哪些方向確認。
但它不能代替日誌、設備狀態、帳號活動、時間順序與環境脈絡。
Day 7 提到:
Alert 是調查起點,不是事件結論。
Day 8 又進一步討論 False Positive 與噪音調校。
到了 Day 9,我發現同樣的觀念也適用於 ATT&CK Mapping:
ATT&CK Mapping 是理解 Alert 的起點,不是攻擊成立的證明。
一筆 Alert 即使 Mapping 到真實存在的 ATT&CK Technique,也不代表它一定是 True Positive。
反過來說,沒有完整 ATT&CK Mapping 的行為,也不代表它一定安全。
Mapping 是否正確、粒度是否適當,仍可能受到產品、偵測規則與當下可用資料影響。
因此 Analyst 不能只看 Technique 名稱,而是要問:
MITRE 官方在使用指引中也提醒,不應把 ATT&CK 當成只要完成勾選就結束的 Checklist;單獨識別出一種 Technique,也不足以代表已經掌握完整情況。MITRE ATT&CK:Get Started
經過這次整理後,我目前認為 ATT&CK 對 SOC Analyst 最直接的價值,不是背下所有 Technique,而是幫助自己建立調查方向。
看到一筆 Alert 時,可以依照這個順序思考:
看到 Alert
↓
理解 Alert 實際偵測到的行為
↓
查看 ATT&CK Mapping
↓
理解對應 Tactic 與 Technique
↓
回到原始日誌及環境脈絡
↓
尋找前後相關活動
↓
形成初步判斷
ATT&CK 可以幫助我替行為找到一個共同名稱,也可以提醒我:
換句話說,ATT&CK 不是替 Analyst 做出最後判斷,而是協助 Analyst 把問題問得更完整。
其實在整理這篇文章之前,我對 MITRE ATT&CK 的理解大概是:
它是一套攻擊手法的分類,Alert 上的 Txxxx 代表某種攻擊技術。
這個理解不能算完全錯,但太過表面。
現在我會把它理解成:
ATT&CK 是一套描述攻擊者行為的共同語言。Tactic 幫助我理解攻擊者可能想達成甚麼目的,Technique 和 Sub-technique 則幫助我理解可能使用甚麼方法。
更重要的是,我開始知道 Alert 上的 ATT&CK Mapping 應該怎麼使用。
它不是裝飾,也不是看到之後就可以直接宣判發生攻擊的標籤,而是一個協助理解行為及展開調查的入口。
這次整理之後,我並沒有因此成為 ATT&CK 專家,也還沒有實際使用 ATT&CK 設計 Detection Rule。
但至少下一次看到 Tactic、Technique 或 T1059.001 時,我不會再只把它們當成一串似懂非懂的名詞。
我開始知道該怎麼查、怎麼理解,以及為甚麼不能只靠 Mapping 就判斷一次攻擊是否成立。
不過,一筆 Alert 與一項 Technique 終究只能告訴我們局部訊號。
如果同一台設備、同一個帳號或相近時間內陸續出現不同活動,我們又該怎麼判斷它們是否屬於同一件事情?
下一篇,我會繼續從這個問題出發,理解事件關聯與攻擊鏈。