返回 主文件
本文件詳細闡述 LLM 驅動 WEB 安全性健康報告生成系統的五大核心價值主張。這些價值不僅是系統設計的指導原則,更是衡量專案成功與否的關鍵指標。
將每次掃描轉化為一次互動式學習體驗,而非僅僅是工具執行。
系統在呈現掃描結果時,提供三個層次的資訊:
[結果層] 發現 Apache 2.4.49 存在路徑穿越漏洞
↓
[原理層] 此漏洞源於 URL 正規化處理錯誤,攻擊者可繞過存取控制
↓
[修復層] 建議升級至 2.4.51 版本,或套用官方安全補丁
在對話模式(模式 C)中,LLM 會主動詢問使用者:
系統不僅顯示最終結果,更會記錄並展示:
nmap -sV -p 80,443 target.com 的每個參數意義建立從「安全目標」到「檢測工具」再到「結果解釋」的完整透明鏈。
傳統資安掃描工具的黑盒問題:
- 使用者不知道為何系統選擇某個工具
- 不清楚檢測結果與原始目標的關聯
- 難以判斷是否已達成檢測目標
使用者目標:檢測網站是否存在已知的伺服器漏洞
[步驟 1] 目標拆解
├─ 子目標 1:識別伺服器類型與版本
├─ 子目標 2:比對 CVE 資料庫
└─ 子目標 3:驗證漏洞可利用性
[步驟 2] 工具映射
├─ 子目標 1 → 工具:nmap (版本探測) + curl (HTTP Header 分析)
├─ 子目標 2 → 工具:CVE 知識庫查詢
└─ 子目標 3 → 工具:LLM 生成的客製化漏洞驗證腳本
[步驟 3] 結果回溯
├─ nmap 結果:Apache/2.4.49 (Unix)
├─ CVE 查詢:CVE-2021-41773 (路徑穿越)
└─ 驗證結果:成功讀取 /etc/passwd → **漏洞確認存在**
在 ScanResults 資料表中,我們設計 correlation_chain 欄位(JSONB):
{
"userGoal": "檢測伺服器已知漏洞",
"decomposition": [
{
"subGoal": "識別伺服器版本",
"tool": "nmap",
"reasoning": "nmap 的 -sV 參數可準確探測服務版本",
"result_ref": "finding_id_001"
},
{
"subGoal": "比對 CVE 資料庫",
"tool": "CVE_Search",
"reasoning": "基於探測到的 Apache 2.4.49 版本進行查詢",
"result_ref": "finding_id_002"
}
]
}
在報告中提供「檢測邏輯圖」區塊,使用者可點擊每個節點查看:
- 為何執行此步驟
- 使用了哪個工具與參數
- 此步驟產出了什麼結果
系統性記錄每次掃描,將零散的檢測活動轉化為可分析的數據資產。
Scans 表 - 掃描任務總覽
CREATE TABLE scans (
scan_id UUID PRIMARY KEY,
user_id UUID REFERENCES users(user_id),
target VARCHAR(512) NOT NULL,
scan_mode VARCHAR(50), -- 'guided' | 'intelligence' | 'conversational' | 'automated'
status VARCHAR(20), -- 'pending' | 'running' | 'completed' | 'failed'
created_at TIMESTAMP DEFAULT NOW(),
completed_at TIMESTAMP,
total_findings INT,
critical_count INT,
high_count INT,
medium_count INT,
low_count INT
);
ScanResults 表 - 每次工具執行的詳細記錄
CREATE TABLE scan_results (
result_id UUID PRIMARY KEY,
scan_id UUID REFERENCES scans(scan_id),
tool_used VARCHAR(100),
generated_script TEXT, -- LLM 生成的腳本
raw_output TEXT, -- 工具原始輸出
structured_findings JSONB, -- 解析後的結構化資料
llm_analysis JSONB, -- LLM 的解釋與建議
execution_time_ms INT,
created_at TIMESTAMP DEFAULT NOW()
);
ScanHistory 表 - 同一目標的歷史趨勢
CREATE TABLE scan_history (
history_id UUID PRIMARY KEY,
target VARCHAR(512),
scan_dates JSONB, -- [{"date": "2025-01-01", "scan_id": "xxx"}]
vulnerability_trend JSONB, -- 漏洞數量變化趨勢
risk_score_trend JSONB -- 風險分數變化
);
企業可查詢「過去 6 個月,我們的內部網站漏洞修復率是多少?」
SELECT
DATE_TRUNC('month', created_at) AS month,
AVG(critical_count) AS avg_critical,
AVG(high_count) AS avg_high
FROM scans
WHERE target LIKE 'internal.company.com%'
AND created_at >= NOW() - INTERVAL '6 months'
GROUP BY month
ORDER BY month;
分析「哪個工具最常發現 Critical 等級的漏洞?」
SELECT
tool_used,
COUNT(*) AS usage_count,
SUM(JSONB_ARRAY_LENGTH(structured_findings)) AS total_findings
FROM scan_results
WHERE structured_findings @> '[{"severity": "Critical"}]'
GROUP BY tool_used
ORDER BY total_findings DESC;
系統每週自動生成「資安健康週報」,比較本週與上週的掃描數據。
將具代表性的掃描結果結構化保存,轉化為持續增長的教學資源。
[階段 1] 案例識別
- 系統自動標記「具教學價值」的掃描結果
- 標準:(1) 發現實際漏洞 (2) 使用多個工具聯合檢測 (3) 稀有或典型的攻擊向量
[階段 2] 匿名化處理
- 移除敏感的目標資訊(IP、Domain)
- 保留技術細節與檢測邏輯
[階段 3] 結構化保存
- 儲存至 EducationalCases 資料表
- 標記漏洞類型、使用工具、難度等級
[階段 4] 知識提取
- LLM 自動生成「學習重點」與「延伸問題」
- 例如:「此案例展示了 XXX 攻擊手法,您可思考如何防禦?」
[階段 5] 社群分享(可選)
- 使用者同意後,可將案例貢獻至公開知識庫
CREATE TABLE educational_cases (
case_id UUID PRIMARY KEY,
title VARCHAR(255), -- 例如:"Apache 路徑穿越漏洞檢測實例"
description TEXT,
vulnerability_type VARCHAR(100), -- 'Path Traversal' | 'SQL Injection' 等
related_cve VARCHAR(50),
severity VARCHAR(20),
difficulty_level VARCHAR(20), -- 'Beginner' | 'Intermediate' | 'Advanced'
-- 檢測過程記錄
scan_result_id UUID REFERENCES scan_results(result_id),
tools_used JSONB, -- ["nmap", "curl", "custom_script"]
detection_steps JSONB, -- 步驟化的檢測流程
-- 教學內容
learning_objectives JSONB, -- ["理解路徑穿越原理", "學習 nmap 版本探測"]
extended_questions TEXT, -- LLM 生成的思考題
-- 元數據
is_public BOOLEAN DEFAULT FALSE,
views_count INT DEFAULT 0,
created_at TIMESTAMP DEFAULT NOW()
);
使用者可透過以下方式搜尋案例:
原始掃描記錄:
- 目標:某測試網站
- 檢測到:SQL Injection 漏洞
- 使用工具:SQLMap
系統自動轉化為教學案例:
# 案例:基於錯誤訊息的 SQL Injection 檢測
## 學習目標
- 理解 SQL Injection 的成因
- 學習使用 SQLMap 進行自動化檢測
- 認識基於錯誤訊息的漏洞識別技巧
## 檢測步驟
1. 使用 curl 手動測試,發現參數 `id=1'` 導致 MySQL 錯誤訊息
2. 使用 SQLMap 自動化驗證:`sqlmap -u "http://target.com?id=1" --batch`
3. SQLMap 確認漏洞並成功提取資料庫結構
## 原始工具輸出(節錄)
[!] legal disclaimer: ...
Parameter: id (GET)
Type: error-based
Title: MySQL >= 5.0 AND error-based
## 風險分析
嚴重性:Critical - 攻擊者可完全控制資料庫
## 修復建議
使用參數化查詢(Prepared Statements)
## 延伸思考
1. 如果網站沒有顯示錯誤訊息,還能檢測 SQL Injection 嗎?(提示:盲注)
2. WAF 如何防禦此類攻擊?
同時滿足初學者的學習需求與專業人員的實務需求,打破兩者的對立。
傳統上,「教學工具」與「生產工具」往往是分離的:
- 教學工具:功能簡化,互動性強,但缺乏實戰能力
- 生產工具:功能強大,自動化高,但學習曲線陡峭
本系統的創新:透過「模式切換」與「資訊分層」,讓同一個系統同時服務兩種需求。
初學者模式(預設)
- 顯示每個步驟的解釋
- 提供背景知識連結
- 互動式確認每個操作
專業模式
- 摺疊解釋性文字
- 直接呈現技術數據
- 允許批次執行
UI 示例:
[切換] 🎓 學習模式 ⇄ 🚀 專業模式
學習模式下:
┌─────────────────────────────────┐
│ 📘 什麼是連接埠掃描? │
│ 連接埠掃描用於探測目標主機開放的 │
│ 網路服務... │
│ [了解更多] [跳過說明] │
└─────────────────────────────────┘
專業模式下:
┌─────────────────────────────────┐
│ nmap -sV -p 80,443,8080 target │
│ Scan Duration: 12.3s │
│ Open Ports: 2 │
└─────────────────────────────────┘
| 使用者類型 | 推薦模式 | 特色 |
|---|---|---|
| 初學者 | 引導式掃描 (Mode 1) + 對話式 (Mode 3) | 選單導向 + LLM 導師 |
| 開發人員 | 情資驅動 (Mode 2) | 自動建議相關檢測 |
| 資安專家 | 全自動掃描 (Mode 4) | 一鍵執行完整套件 |
系統生成兩種版本的報告:
教學版報告(適合學習者與非技術主管)
- 使用圖表與視覺化
- 白話文解釋
- 提供修復的逐步指南
技術版報告(適合開發人員與資安團隊)
- 原始掃描數據
- JSON 格式結構化結果
- 可直接整合至其他系統的 API 輸出
需求:在課堂上演示真實的漏洞檢測
使用方式:
1. 選擇「對話式掃描」模式
2. 投影畫面,與 LLM 對話:「我們今天要學習 XSS,請問應該如何檢測?」
3. LLM 逐步解釋,並生成檢測腳本
4. 執行後,將結果加入「教學案例庫」供學生課後複習
需求:每次部署前自動進行安全檢測
使用方式:
1. 在 CI/CD Pipeline 中調用系統 API
2. 使用「全自動掃描」模式,傳入目標 URL
3. 若發現 Critical 或 High 漏洞,自動阻擋部署
4. 將結果推送至 Slack 通知資安團隊
需求:定期檢測官網安全性,但無專職資安人員
使用方式:
1. 設定每週自動掃描
2. 收到「健康報告」Email,以交通燈號顯示風險等級
3. 報告使用非技術語言,並提供外包廠商的聯繫建議
這五個核心價值並非獨立存在,而是相互強化:
┌─────────────────────────────────────────────┐
│ 資安學習與探究 (價值一) │
│ ↓ │
│ 目標、工具與結果對應 (價值二) │
│ ↓ │
│ 自動化掃描資料庫 (價值三) ← 持續累積 │
│ ↓ │
│ 系統化教學案例庫 (價值四) ← 知識沉澱 │
│ ↓ │
│ 學習與實用並存 (價值五) ← 價值迴圈 │
└─────────────────────────────────────────────┘
協同機制:
1. 每次掃描(價值三)都是一次學習機會(價值一)
2. 清晰的對應關係(價值二)使學習更有效
3. 累積的數據(價值三)轉化為教材(價值四)
4. 雙重價值(價值五)吸引更多使用者,產生更多數據,形成正向循環
| 核心價值 | 量化指標 | 目標(MVP 階段) |
|---|---|---|
| 價值一 | 使用者在報告頁面的平均停留時間 | > 5 分鐘 |
| 價值二 | 「檢測邏輯圖」的查看率 | > 60% |
| 價值三 | 每週新增掃描記錄數 | > 100 筆 |
| 價值四 | 教學案例庫的成長速度 | 每月新增 20+ 案例 |
| 價值五 | 專業模式與學習模式的使用比例 | 接近 1:1 |
本文件最後更新:2025-10-21
返回 主文件