論文閱讀分析:用大型語言模型從網路犯罪論壇萃取威脅情資
論文基本資訊
- 論文標題:The Use of Large Language Models (LLM) for Cyber Threat Intelligence (CTI) in Cybercrime Forums
- 來源:White Paper
- 年份:2024 年 10 月
- 作者:Vanessa Clairoux-Trépanier、Isa-May Beauchamp、Estelle Ruellan、Masarah Paquet-Clouston、Serge-Olivier Paquette、Eric Clay
- 論文連結:https://arxiv.org/abs/2408.03354
- 主題:CTI、LLM、Cybercrime Forums、Zero-shot Information Extraction、論壇威脅情報分析
這篇 The Use of Large Language Models (LLM) for Cyber Threat Intelligence (CTI) in Cybercrime Forums 的核心問題非常明確:大型語言模型能不能直接拿來做 cybercrime forums 的 CTI 萃取,而且準確到足以支撐實際分析工作?
和許多只處理公開 threat reports 的研究不同,這篇論文把場景放在 XSS、Exploit.in、RAMP 這類網路犯罪論壇。這種資料源的難度其實更高,因為論壇對話通常具有以下特性:
- 內容鬆散、上下文斷裂
- 大量黑話、代稱、暗示性敘述
- 同一條 thread 橫跨多天甚至多週
- 存在交易、吹噓、轉述、歷史事件與二手消息混雜的情況
因此,這篇研究的價值不只是再證明一次「LLM 可以抽資訊」,而是更具體地評估:在高噪音、高語境依賴的論壇環境中,LLM 做 zero-shot CTI extraction 到底可靠到什麼程度。
研究問題
作者實際想回答的問題,可以拆成三層:
- LLM 是否能在 zero-shot 設定下,從 cybercrime forum 對話中抽取可行動的 CTI 變數?
- 這些抽取結果的準確率、precision、recall 是否足以支撐第一線威脅分析工作?
- 若模型犯錯,錯誤主要來自哪裡?是 prompt、時間語態、chunking、變數定義,還是上下文不足?
這三個問題之所以重要,是因為傳統做法通常需要大量人工標註訓練資料,再用分類器或抽取模型處理;但作者想測的是:如果不先建昂貴標註語料,而直接用 LLM 以人類語言指令進行抽取,能不能得到足夠好的結果。
任務定義:模型到底要抽什麼?
這篇論文不是讓模型自由發揮,而是要求模型對每日論壇對話(daily conversations / events)完成兩件事:
- 產生該段對話的摘要
- 抽取一組預先定義的 CTI 關鍵變數
從文中描述可知,研究一共聚焦於 10 個關鍵 CTI 變數,其中包括:
- 是否存在交易行為(is_sale)
- 是否提到 initial access sale(is_initial_access)
- 是否瞄準大型組織(is_targeting_large_organization)
- 是否涉及關鍵基礎設施(is_targeting_critical_infrastructure)
- 是否提到 remotely exploitable vulnerability(is_remotely_exploitable)
- 是否提到 actively exploited vulnerability(is_actively_exploited)
- 是否涉及地緣政治(is_geopolitics)
- 涉及哪些技術(targeted_technologies)
- 涉及哪些產業(industries)
換句話說,這不是一般摘要任務,而是結構化 CTI variable extraction。也因為輸出空間相對明確,才讓 precision / recall 的評估成為可能。
方法概觀
作者使用的基礎模型是 gpt-3.5-turbo-16k-0613,並採用一個多步驟流程來處理論壇資料。整體 pipeline 大致如下:
Daily forum conversations
↓
論壇資料擷取與預處理
↓
取得 thread context(標題或過去摘要)
↓
將 context + 當日對話送入 LLM
↓
LLM 產生 unit summary
↓
LLM 輸出結構化 CTI variables
↓
人工 coder 驗證與計算指標
這裡最值得注意的是,作者不是單純把單一貼文丟給模型,而是以「daily_batch in a thread」為分析單位,並利用 thread title 或過往 conversation summary 當作補充上下文。這代表系統有在嘗試解決論壇對話高度依賴上下文的問題。
模型與 Prompt 設計
論文的一個重要設計是:用 analyst persona 的 prompt 來約束模型行為。作者明確要求模型以 cyber threat intelligence analyst 的角度進行審查,並抽取指定欄位。
文中給出的 prompt 風格大致如下:
As a cyber threat intelligence analyst, your task is to review the conversation and identify key indicators…
然後要求輸出結構化 JSON-like 格式,例如:
{
"summary": "...",
"variables": {
"is_sale": true,
"is_initial_access": true,
"targeted_technologies": "..."
}
}
這個設計的技術重點有三個:
- 角色指定(analyst persona):讓模型站在 CTI 分析師視角判讀文本
- 明確欄位約束:降低自由生成造成的漂移
- 固定輸出格式:讓後續 pipeline 更容易解析與統計
若從資訊抽取角度來看,這本質上是一個 prompt-based structured extraction 系統,而不是 fine-tuned classifier。
上下文設計:thread title 與 prior summary 的角色
這篇論文在系統設計上有一個很值得注意的地方,就是對上下文來源的處理:
- 若 thread 是新的,則使用 thread title 當 context
- 若 thread 已存在,則使用 先前對話摘要 當 context
這其實是非常關鍵的設計,因為論壇中的單日對話常常只是一串零碎回覆;如果只看局部內容,很容易漏掉 thread 真正的主題。例如某些對話正文看起來沒有直接提到政府、軍事或 access sale,但 thread title 已經把核心意圖寫出來了。
文中後面的錯誤分析也證實:標題往往提供關鍵語義,如果沒有把 title 正確納入 context,就容易誤判。
資料與標註設計
這篇研究的資料來源來自三個 cybercrime forums:
- XSS
- Exploit.in
- RAMP
作者提到,先從這些論壇中抽取超過 700 個 daily conversations;而在正式評估時,採用了 500 個隨機抽樣對話 作為主要人工驗證樣本。由於部分 binary variable 的正例過少,作者又額外補抽資料,讓每個 binary variable 至少有:
- 50 個 TRUE
- 50 個 FALSE
這個設計的目的,是避免在嚴重不平衡資料下,accuracy 看起來很高但模型實際沒有偵測能力。這點和作者後面強調 precision / recall 的原因是一致的。
人工驗證部分則由 兩位分析人員 進行,他們會:
- 逐條閱讀論壇對話
- 檢查 LLM summary 是否準確
- 對 10 個 CTI variables 分別判定是否與 LLM 一致
- 再進行 inter-coder agreement,形成合併版 ground truth
文中報告兩位 coder 的平均 inter-coder agreement 為 95.05%,顯示人工驗證品質相對穩定。
評估指標
作者使用的指標相當標準,但有清楚說明它們在資安場景中的意義:
- Accuracy:整體正確率
- Precision:模型標成正例的項目中,有多少是真的
- Recall:所有真正正例中,有多少被模型抓到
這篇論文有一個不錯的地方,是它沒有只報 accuracy。作者明確指出,在 highly imbalanced setting 下,accuracy 可能嚴重誤導。例如某變數的 TRUE 只有 8/500,如果模型永遠預測 FALSE,accuracy 仍可能非常高,但完全沒有用。
因此,對 CTI 這種任務來說:
- 若誤報成本高,precision 更重要
- 若漏報成本高,recall 更重要
這個討論是有技術含量的,因為它把模型評估和實際安全作業的風險偏好連接起來了。
實驗結果
整體而言,這篇論文的主要結果相當強:
- 平均 accuracy:96.23%
- 平均 precision:90.0%
- 平均 recall:88.2%
此外,summary 本身的準確率達到 98.8%(N=500)。
若進一步看各變數表現,可以發現不同變數的難度明顯不同:
- is_sale:precision 90.9%,recall 99.2%
- is_initial_access:precision 96.1%,recall 95.2%
- is_targeting_large_organization:precision 95.7%,recall 81.5%
- is_targeting_critical_infrastructure:precision 85.2%,recall 67.6%
- is_remotely_exploitable:precision 94.9%,recall 82.2%
- is_actively_exploited:precision 75.0%,recall 94.1%
- is_geopolitics:precision 92.2%,recall 97.6%
- targeted_technologies:accuracy 92.2%
- industries:accuracy 98.9%
這些數字很有意思,因為它們揭示了:模型對定義較清楚、語義較穩的變數表現更好;對概念模糊、需較多背景判斷的變數表現較弱。
結果分析:哪些任務做得好?
從結果來看,表現最穩的幾類任務包括:
- 交易相關判斷(is_sale)
- initial access sale
- 產業識別(industries)
原因並不難理解。這些任務通常具有比較明確的語義線索,例如:
- sale / price / auction / access 等詞彙
- 特定產業名稱或已知領域詞
這類任務更接近「有明顯語言證據的資訊抽取」,因此零樣本 prompt-based LLM 比較容易做對。
結果分析:哪些任務較難?
比較困難的部分主要集中在需要更高層語意判斷的變數,例如:
- large organization
- critical infrastructure
- actively exploited
這些變數的難點不只在文本本身,而在於:
- 概念邊界模糊
- 需要世界知識或背景知識
- 需要分辨「現在正在發生」還是「過去事件報導」
- 有些需要從 title、thread context 或關聯變數推理
例如 critical infrastructure 的 recall 只有 67.6%,表示模型漏掉了不少相關案例。這顯示 LLM 雖然能抽關鍵詞,但在高度抽象的安全概念判斷上,仍然會受到 prompt 定義與上下文設計的限制。
錯誤來源分析:這篇論文最有價值的地方之一
若只看結果,這篇論文已經足以說明 LLM 在論壇 CTI 上有可用性;但真正有研究價值的,其實是作者對錯誤來源的分析。這部分很適合研究生看,因為它直接點出系統設計的脆弱點。
1. 無法區分「故事/歷史事件」與「當前事實」
作者發現,模型最常犯的錯之一,是把轉述新聞、描述過去案例、講歷史事件的內容,誤判成當前正在進行的 sale 或威脅活動。這代表模型雖然抓到關鍵語彙,但沒有正確處理 temporal semantics。
從方法角度看,這其實不是單純的分類誤差,而是 event temporality understanding 的失敗。對 CTI 來說,這類錯誤很致命,因為它會直接把歷史事件誤當成當前威脅訊號。
2. Prompt 的 verb tense 會影響判定
作者指出,prompt 用現在式,例如「an actor is selling something」,但 summary 常以過去式表達,這可能使模型在面對「已經賣出」這種語境時不確定是否應標為 TRUE。
這一點很重要,因為它說明 prompt engineering 不只是措辭美化,而會直接影響變數定義邊界。換言之,這篇論文其實把 prompt semantics 當成模型設計的一部分。
3. Data chunking 方式會改變結論
作者強調 daily conversation 的 chunking 方式會影響結果。若某個 sale thread 橫跨數日,而某天的局部內容不含明確 sale 線索,模型可能就判成 FALSE;但從整條 thread 看,該 thread 明明是在賣資料庫或 access。
這意味著這不是單純的模型能力問題,而是 unit of analysis 的設計問題。若分析單位切太細,會低估事件;若切太粗,又可能把多個不同子議題混在一起。
4. 模糊概念沒有明確操作型定義
像 large organization、critical infrastructure 這類變數,本身就沒有在 prompt 中被定義得足夠嚴格。結果就是模型只能依靠自身常識去猜,於是只對 Apple、Microsoft、Netflix 這種「明顯夠大」的組織判得較準,而對較不知名但實際上仍屬大型機構的目標容易漏判。
這說明了 LLM 在 zero-shot 任務中的一個經典限制:如果概念沒有被操作化,模型就會以自身語言分布中的典型印象來代替正式定義。
5. 變數之間的邏輯依賴沒有被顯式建模
作者也指出,一些變數其實彼此有邏輯連結。例如 industries 與 critical infrastructure / large organization 之間,本來就可能存在對應;又例如 target technology 為 iCloud,背後實際上應能聯想到 Apple。可是目前系統是逐變數抽取,而沒有顯式建模 cross-variable consistency。
從方法角度來說,這表示目前系統仍偏向 independent variable extraction,還沒走到 joint inference 或 structured consistency checking。
這篇論文的技術意義
這篇研究最有意思的地方,不在於它用了 GPT-3.5,而在於它展示了:在沒有大型標註資料、沒有專門 fine-tuning 的條件下,透過 analyst persona prompt、結構化輸出與適度上下文補充,LLM 已經能把論壇 CTI 萃取做到相當可用的程度。
但同時它也清楚告訴我們,若要把這類系統真正推進到實務級,還需要處理至少四個問題:
- 時間語義辨識
- 更嚴格的變數操作型定義
- 更合理的 conversation chunking 策略
- 跨變數一致性建模
也就是說,這篇論文不是在說「LLM 已經把論壇 CTI 做完了」,而是在說「LLM 已經足夠強到值得被正式放進論壇 CTI pipeline,但 pipeline 設計本身仍然決定了最終品質」。
重點整理
- 這篇論文評估 gpt-3.5-turbo 在 cybercrime forums 上進行 zero-shot CTI 資訊抽取的能力。
- 任務包含 forum conversation 摘要與 10 個關鍵 CTI 變數抽取。
- 資料來自 XSS、Exploit.in、RAMP 等論壇,並由兩位 coder 進行人工驗證。
- 整體表現為:平均 accuracy 96.23%、precision 90%、recall 88.2%。
- 在 is_sale、is_initial_access、industries 等變數上表現相當穩定。
- 在 critical infrastructure、large organization 等較模糊概念上,表現受限於定義與上下文。
- 主要錯誤來源包括:歷史事件與當前事件混淆、verb tense 問題、data chunking 問題,以及跨變數一致性不足。
Takeaway
如果要用一句話總結這篇論文,它真正證明的是:LLM 已經可以成為 cybercrime forum CTI 萃取的有效前線工具,但它的可用性並不只取決於模型本身,而更取決於 prompt、上下文設計、分析單位切法與變數定義是否嚴謹。
對研究生或實務分析者來說,這篇論文的價值不只是在一組漂亮數字,而是在它很具體地展示了 zero-shot LLM-based CTI extraction 的可行性與邊界。若未來要把論壇分析、暗網監測與威脅摘要自動化,這篇論文提供了一個非常值得參考的系統化起點。
免責聲明
本文由 AI 整理與撰寫,內容主要依據公開論文、技術文件與可取得之研究資料進行彙整、解讀與摘要。儘管已盡力確保內容之完整性與可讀性,仍可能因模型理解限制、資料來源差異或語意轉譯過程而存在疏漏、不精確或更新延遲之處。本文內容僅供研究交流與知識分享參考,實際技術細節、實驗設定與最終結論,仍應以原始論文、官方文件及作者公開資料為準。
