H-TechniqueRAG 論文閱讀分析:當 ATT&CK 本來就是階層知識,平面的 RAG 檢索從一開始就走錯了路

論文基本資訊

  • 論文標題:Hierarchical Retrieval Augmented Generation for Adversarial Technique Annotation in Cyber Threat Intelligence Text
  • 來源:arXiv
  • 年份:2026
  • 作者:Filippo Morbiato、Markus Keller、Priya Nair、Luca Romano
  • 論文連結:https://arxiv.org/abs/2604.14166
  • 主題:CTI、MITRE ATT&CK、Technique Annotation、Hierarchical RAG、Tactic Retrieval、LLM

這篇 Hierarchical Retrieval Augmented Generation for Adversarial Technique Annotation in Cyber Threat Intelligence Text 可以把它看成是前一代 TechniqueRAG 的明確升級版:作者不是再單純問「RAG 能不能幫忙標註 ATT&CK technique」,而是進一步追問:既然 ATT&CK 本身就是一個有階層的知識體系,為什麼 retrieval 還要把兩百多個 techniques 當成完全平面的 label space 來處理?

這個問題很關鍵。因為在真實的 CTI text 裡,很多攻擊描述其實不是直接點名 technique ID,而是混著情境、行為、工具、目的與結果。若系統一開始就在全域 technique 空間裡硬搜,很容易把語意相近、但屬於不同 tactic 的 technique 一起撈進來,後面即使交給大型語言模型,也只是在更混亂的候選集合上做推理。

作者提出的解法是 H-TechniqueRAG:先判斷比較可能的 tactics,再只在那些 tactics 下面做 technique retrieval、reranking 與 generation。這個設計看似自然,但論文的重點在於:它不只是「加一層分類器」而已,而是把 ATT&CK 的 tactic-technique hierarchy 變成整條 RAG pipeline 的結構性先驗

研究問題

這篇論文想解的其實有三層:

  1. 如何提升 CTI text 到 ATT&CK technique 的標註精度?
  2. 如何降低 flat retrieval 在大 label space 裡帶來的噪音與成本?
  3. 能不能把 ATT&CK 的階層知識直接注入 retrieval 與 generation,而不是只把它當背景知識?

作者點出 flat RAG 的兩個核心問題:

  • semantic collision:不同 tactics 下的 techniques 可能共享相似字詞,導致 retriever 把本來不該同場競爭的 candidate 混在一起。
  • context overload:若把大量 techniques 平鋪直敘塞進 prompt,LLM 很容易受到 long-context 雜訊影響,甚至出現 lost-in-the-middle。

換句話說,這篇不是單純追求更高 F1,而是在修正一個很本質的系統設計錯位:知識本身是階層式的,但 RAG 卻把它當平面資料庫來用。

ATT&CK 階層為什麼重要?

作者把 MITRE ATT&CK 的結構形式化成兩層:

  • Tactics:14 個高層目標,代表攻擊者「想做什麼」
  • Techniques:兩百多個具體手法,代表攻擊者「怎麼做」

這裡的核心直覺很接近人工分析流程:真正的分析師通常不是一上來就從 200+ techniques 全部比對,而是先判斷這段 CTI 比較像 Initial Access、Execution、Persistence、Defense Evasion 哪一類,再在那個比較小的局部空間裡找具體 technique。

因此 H-TechniqueRAG 的想法非常直接:讓系統像分析師一樣,先判 tactic,再判 technique。

方法概觀:H-TechniqueRAG 的四個模組

整體方法分成四個部分:

  1. Hierarchical Knowledge Base Construction
  2. Two-Stage Hierarchical Retrieval
  3. Hierarchical Reranking
  4. Hierarchical Generation

如果把流程簡化,可以寫成:

輸入 CTI text s
   ↓
先對 14 個 tactics 做 retrieval
   ↓
選出 top-M tactics
   ↓
只在這些 tactics 底下的 techniques 做檢索
   ↓
用 tactic-aware reranker 重排
   ↓
把 techniques 依 tactic 結構化地餵給 LLM
   ↓
輸出最終 ATT&CK techniques

最關鍵的差別在於:hierarchy 不只是後處理,而是前面的檢索、後面的重排、以及最後 generation prompt 的共同骨架。

模組一:建立分層知識庫

作者不是只建立單一 technique index,而是分開建立兩套知識庫:

  • Tactic Knowledge Base
  • Technique Knowledge Base

其中 tactic embedding 由 tactic 的描述、關鍵字與典型 adversary behaviors 組成;technique embedding 則整合官方描述、procedure examples 與 detection methods。兩者都使用 Sentence-BERT 做編碼。

除此之外,作者還加入一個非常實用的訊號:tactic-technique co-occurrence prior。也就是根據歷史 CTI 資料,計算某個 tactic 底下各個 techniques 的條件機率。

這個 prior 的用意不是取代 semantic retrieval,而是補上一層 domain frequency bias。舉例來說,在 Initial Access 底下,像 phishing 這類 technique 本來就更常見;當文字線索模糊時,這種先驗有助於穩定排序。

模組二:兩階段階層式檢索

這篇的核心創新就在這裡。

第一階段:Tactic Retrieval

先把輸入 CTI text 編碼成向量,然後和 14 個 tactics 的 embedding 算 cosine similarity,取 top-M tactics。作者在實驗裡用的是 M = 3

這一步雖然看起來簡單,但效果非常大,因為只要 tactic 找得合理,後面 technique 的搜尋空間就會急遽縮小。

第二階段:Technique Retrieval within Candidate Tactics

接著,系統只在候選 tactics 對應的 techniques 內做檢索,而不是再對全域 technique space 做搜尋。分數由兩部分組成:

score = α × semantic similarity + β × co-occurrence prior

作者設定:

  • α = 0.7
  • β = 0.3

也就是語意相似度仍是主體,但會用 tactic 下的常見 technique 分布做校正。

這個設計帶來一個非常實際的結果:candidate technique space 減少了 77.5%。原本 flat retrieval 可能要在 200+ techniques 裡找,現在最多只剩大約 45 個 candidates。

模組三:Hierarchical Reranking

只靠 retrieval 還不夠,所以作者又加上一個 hierarchy-aware reranker。

對每個 candidate technique,reranker 不只看 technique 自己的 embedding,還會把以下資訊一起納入:

  • 該 technique 的 embedding
  • 其 parent tactic 的 embedding
  • 該 tactic 的 retrieval score
  • 該 technique 在該 tactic 下的共現先驗

這其實就是在問一個更合理的問題:這個 technique 不只像不像 query,而是它在這個 tactic 脈絡下像不像 query。

此外,作者還加了一個 consistency calibration:如果某個 technique 的 parent tactic 根本不在候選 tactic 集合裡,就會受到信心懲罰。這樣做可以避免系統最後挑出「語意好像有點像、但層級上不一致」的 technique。

為了避免 tactic retrieval 偶爾失誤,論文也設計了 fallback mechanism:若最大 confidence 太低,就退回 global retrieval。這點很重要,因為 hierarchy 雖然可以加速與去噪,但若上層判錯,也可能把真正答案提前排除;fallback 等於補上一個保險絲。

模組四:Hierarchy-Constrained Generation

最後,作者不是像一般 RAG 那樣把所有 candidate technique 平舖串起來,而是採取分 tactic 組織 context

[Tactic: Initial Access]
- Technique A ...
- Technique B ...

[Tactic: Persistence]
- Technique C ...
- Technique D ...

這種做法有兩個效果:

  • 讓 LLM 的 reasoning 路徑更接近 ATT&CK 的知識結構
  • 顯著縮短 context 長度

論文估算,flat retrieval 若把 200 個 techniques 都塞進 prompt,context 可能接近 20,000 tokens;H-TechniqueRAG 則縮到約 4,500 tokens 左右。這不只影響速度,也直接影響 hallucination 與推理穩定性。

Prompt 也會明確要求模型:

  1. 先判斷哪些 tactics 最相關
  2. 再從候選 techniques 中選擇答案
  3. 確保每個 technique 都屬於這些 tactics

也就是說,generation 本身也被 hierarchy 約束,而不是自由發散。

資料集與實驗設定

作者在三個資料集上測試:

  • CTI-RCM:1,200 筆 CTI text、3,500 個 technique annotations
  • MITRE CTI:2,800 筆 CTI text、8,200 個 annotations
  • TRAM:450 筆,主要用來測 cross-domain generalization

比較對象涵蓋:

  • Zero-shot LLM
  • BERT-NER
  • TTPXHunter
  • CyberMetric-LLM
  • ThreatPilot
  • TagRAG
  • LeanRAG
  • TechniqueRAG(主要 SOTA baseline)

實作上使用:

  • Sentence-BERT all-MiniLM-L6-v2 作為 encoder
  • Llama-3-8B-Instruct 作為 generator
  • FAISS IVF 作檢索索引

主要結果:精度、延遲、成本一起進步

這篇最漂亮的地方,是它不是只在單一指標上贏,而是同時改善 accuracy 與 efficiency。

相較於 TechniqueRAG,H-TechniqueRAG:

  • F1 提升 3.8%
  • 推論延遲下降 62.4%
  • LLM API calls 減少 60%
  • candidate search space 減少 77.5%

這組結果很有說服力,因為在許多 RAG 論文裡,通常提升精度要付出更高成本;但這篇相反,作者是透過更合理的知識結構,讓系統同時更準也更便宜。

跨資料集泛化也更穩

在 TRAM 這個 held-out dataset 上,H-TechniqueRAG 的 performance drop 比 TechniqueRAG 小很多。作者認為這代表:hierarchical structural priors 比單純的 flat similarity 更有 domain invariance

這點很值得注意。因為很多 CTI 任務的問題不是模型在訓練集上不夠準,而是換一批威脅報告、換一種寫法、換一個來源後就掉得很快。這篇的結果說明,把 ATT&CK hierarchy 內化進系統,確實能讓模型在資料分布改變時更穩。

Ablation:誰真的有用?

作者做的 ablation 也很清楚:

  • 拿掉 hierarchical retrieval,F1 掉最多,表示這是核心貢獻
  • 拿掉 hierarchical context organization,LLM reasoning 也會明顯退化
  • 拿掉 tactic-aware reranking,排序品質下降
  • 拿掉 co-occurrence prior,也有中度退步
  • 拿掉 fallback,平均影響較小,但 robustness 會變差

這說明 H-TechniqueRAG 不是靠單一技巧撐起來,而是一整條 pipeline 都圍繞 hierarchy 做了重新設計。

錯誤分析

論文把錯誤大致分成幾類:

  • Tactic Misclassification:一開始就判錯 tactic,後面 technique 空間就被限錯了
  • Technique Ambiguity:同 tactic 下的 techniques 本身語意太近
  • Multi-technique Miss:複雜文本可能同時涉及多個 techniques,但系統漏掉部分答案
  • Novel Technique:文本描述超出 ATT&CK 現有覆蓋
  • Text Vagueness:原始 CTI 自己就講得不夠明確

這些錯誤非常合理,也很貼近實務。特別是 tactic misclassification 這件事,等於再次提醒:hierarchy 雖然是很強的 inductive bias,但前提是上層判斷不能太差。因此若未來要進一步改進,我會覺得最值得做的是提升 tactic-level recall,或讓系統在不確定時更柔性地保留跨 tactic 候選。

這篇論文的價值

我認為這篇論文的價值,不只是把 TechniqueRAG 做快一點、準一點,而是提出一個很值得 CTI / SecOps 系統借鏡的原則:

如果你的目標知識空間本來就有成熟的結構,RAG 最好的做法往往不是把所有東西扁平化向量化,而是讓檢索、排序、推理都服從那個結構。

在 ATT&CK 上,這個結構是 tactic → technique;換到別的場景,也可能是 campaign → malware family → behavior,或是 alert → kill chain stage → response playbook。這篇論文的啟發其實比 technique annotation 本身更廣。

限制與我的看法

當然,這篇也不是沒有疑點。

  • 它高度依賴 ATT&CK hierarchy 的穩定性,若任務換成沒有成熟 taxonomy 的場景,方法可移植性會下降。
  • 每個 technique 只屬於單一 tactic 的假設過於乾淨,但真實分析裡不少行為會跨 tactic 解讀。
  • 評估仍以 annotation accuracy 為中心,離真正的 analyst workflow integration 還有距離。

不過即使如此,我還是會給這篇很高評價。原因很簡單:它抓到了真正的問題來源。很多論文在 CTI + LLM 題目裡只是換模型、換 prompt、換 benchmark;這篇則是在問 系統結構是不是一開始就設計錯了。這種論文通常更有生命力。

總結

H-TechniqueRAG 的核心貢獻,是把 MITRE ATT&CK 的 tactic-technique hierarchy 從「背景知識」提升成「RAG pipeline 的主幹」。透過兩階段 hierarchical retrieval、tactic-aware reranking 與 hierarchy-constrained generation,作者同時做到更高 F1、更低延遲、以及更少的 LLM 成本。

如果你正在做:

  • CTI text 到 ATT&CK 的自動標註
  • 可解釋的 TTP extraction
  • 把 RAG 真正接進 threat intel pipeline

這篇很值得讀。它不是只告訴你「哪個模型比較強」,而是提醒一件更重要的事:在資安這種知識結構很重的領域,RAG 的上限往往取決於你是否尊重那個結構。


延伸思考:如果 H-TechniqueRAG 的思路成立,那下一步很自然會是把 hierarchy 再往前推:不只 tactic → technique,也許還能把 campaign、actor、tool、procedure 與 temporal sequence 一起編進多層檢索。到那時,CTI 系統就不只是做 annotation,而是更接近真正的 analyst reasoning engine 了。

You may also like