
紅隊與藍隊:攻防思維入門
理解攻擊不是為了攻擊別人,而是為了知道自己的系統哪裡最脆弱。
攻防對抗的基本模型
graph LR R[🔴 紅隊<br/>攻擊方] <-->|對抗| B[🔵 藍隊<br/>防禦方] R -.->|發現漏洞| P[🟣 紫隊<br/>整合改善] B -.->|回報盲點| P P -.->|改進建議| R P -.->|強化措施| B style R fill:#E91E63,color:#fff style B fill:#2196F3,color:#fff style P fill:#9C27B0,color:#fff
| 紅隊 (Red Team) | 藍隊 (Blue Team) | 紫隊 (Purple Team) | |
|---|---|---|---|
| 角色 | 模擬攻擊者 | 防禦與偵測 | 整合攻防結果 |
| 目標 | 找到能被利用的漏洞 | 偵測並阻止攻擊 | 確保紅隊發現的問題都被修復 |
| 核心問題 | 「我怎麼能進去?」 | 「我怎麼知道有人進來了?」 | 「這個漏洞被修了嗎?防禦能偵測到嗎?」 |
| 思維特質 | 創造性、不按規則來 | 系統性、全面覆蓋 | 橋接、持續改善 |
紅隊思維:攻擊者怎麼想
攻擊者不會照你設計的使用流程來用你的系統。他們會問:
1. 攻擊面分析 — 「有哪些入口?」
公開的 Web 應用 ←── 最常見的目標
├── API endpoints
├── 檔案上傳
├── 搜尋功能(可能有注入)
└── 登入頁面
公開的基礎設施
├── SSH port
├── 管理後台
└── 未關閉的 debug port
人
├── 釣魚信
├── 社交工程
└── 內部人員
2. 攻擊鏈 — 「進去之後怎麼擴大戰果?」
一次成功的攻擊很少是「一步到位」。通常是:
偵查 → 初始入侵 → 橫向移動 → 提權 → 持久化 → 達成目標
例如:
- 透過釣魚信取得員工的 VPN 帳號(初始入侵)
- 用 VPN 進入內網,掃描其他服務(橫向移動)
- 找到一個用預設密碼的 Jenkins(提權)
- 從 Jenkins 的 credentials 取得 production DB 的密碼(達成目標)
思維價值: 你的系統不是被「一個漏洞」攻破的,而是被一連串不起眼的小問題串起來。每一層的安全措施都在增加攻擊鏈的困難度。
3. 攻擊者的時間經濟學
攻擊者也有成本考量:
- 如果你的系統比隔壁的更難攻,他們會去攻隔壁的
- 基本的安全措施就能擋掉 90% 的自動化攻擊
- 真正的 APT(Advanced Persistent Threat)會投入大量時間,但那通常是國家級或商業間諜的事
藍隊思維:防禦者怎麼想
藍隊的核心不是「把所有攻擊都擋住」(不可能),而是:
偵測 → 回應 → 恢復 → 改善
1. 可見性 — 「你看得到什麼?」
| 層次 | 你該看到的 | 常見盲點 |
|---|---|---|
| 網路層 | 異常的連線、大量的 request | 加密流量裡的惡意行為 |
| 應用層 | 登入失敗、權限錯誤、異常的 API 呼叫 | 合法帳號的異常行為 |
| 主機層 | 異常的 process、檔案修改 | Container 內部的行為 |
| 資料層 | 大量的 data export、異常的 query | 慢速的 data exfiltration |
如果你看不到,你就無法偵測。 所以藍隊的第一步永遠是:確保 logging 覆蓋所有關鍵操作。
2. 偵測策略
Signature-based — 「這個 pattern 我認識,它是壞的」
簡單有效,但只能抓已知的攻擊
Anomaly-based — 「這個行為跟平常不一樣」
能抓未知攻擊,但誤報率高
Behavioral — 「這個使用者的行為模式改變了」
最進階,需要 baseline
3. 事件回應 — 出事了怎麼辦
確認 → 圍堵 → 根除 → 恢復 → 檢討
- 確認:這真的是安全事件嗎?還是誤報?
- 圍堵:限制損害範圍(隔離受影響的系統、撤銷被盜的 credential)
- 根除:找到並移除攻擊者的存取(patch 漏洞、清除後門)
- 恢復:恢復正常運作(從備份還原、重新部署)
- 檢討:為什麼會發生?怎麼防止下次?(搭配 事故管理)
開發者能做的事
你不需要成為紅隊或藍隊專家,但這些習慣會讓你的系統更安全:
紅隊思維融入開發:
- 寫完一個 API endpoint,花 2 分鐘想:「如果我要濫用這個 endpoint,我會怎麼做?」
- 每次做權限設計,試著繞過自己的檢查:「如果我改了 request body 裡的 userId 呢?」
- 看到
eval()、innerHTML、exec()就警覺:「這裡有沒有外部輸入?」
藍隊思維融入開發:
- 在關鍵操作加上 logging(登入、權限變更、資料匯出)
- Log 要包含:who(誰)、what(做了什麼)、when(什麼時候)、result(成功還是失敗)
- 設計 rate limiting 和 circuit breaker
- 寫 runbook:「如果 X 發生了,要做 Y」
入門學習路徑
如果你想更深入了解資安,以下是建議的學習路線:
第一步:建立觀念(0-3 個月)
- 讀完 OWASP Top 10 並理解每一項
- 練習基本的 CTF(Capture The Flag)挑戰
- 推薦平台:TryHackMe(有引導式學習路徑)、PicoCTF(適合初學者)
第二步:動手實作(3-6 個月)
- 在自己的環境中練習(DVWA、WebGoat、Juice Shop)
- 學習使用 Burp Suite 做 Web 應用測試
- 嘗試 HackTheBox 的 Easy 機器
第三步:選擇方向
| 方向 | 適合的人 | 學習重點 |
|---|---|---|
| Web 安全 | 前後端工程師 | OWASP Testing Guide、Burp Suite |
| 雲端安全 | DevOps / SRE | AWS Security、Container Security |
| 安全開發 | 所有開發者 | SDL、SAST/DAST 工具鏈 |
| 滲透測試 | 想轉職資安 | OSCP 認證、滲透測試方法論 |
| 資安管理 | Tech Lead / 主管 | ISO 27001、NIST Framework |
CTF 推薦平台:
- TryHackMe — 最友善的入門平台,有完整的學習路徑
- HackTheBox — 更貼近真實環境,有挑戰性
- PicoCTF — CMU 出的 CTF,非常適合初學者
- PortSwigger Web Security Academy — 專注 Web 安全,免費且深入
反思問題
- 你能畫出你系統的攻擊面嗎? 有多少個入口?每個入口有什麼防護?
- 如果今天有人拿到你的 production database 的帳密,你多快能知道? 如果答案是「不知道」,你的偵測能力需要加強。
- 你的系統有 rate limiting 嗎? 如果有人對你的登入 API 每秒打 1000 次 request,會發生什麼事?
- 你上次用「攻擊者視角」review 自己的 code 是什麼時候?
延伸閱讀
- 資安基礎概念 — CIA Triad、OWASP、威脅模型
- Web 應用安全實務 — 具體的攻擊手法與防禦
- 安全開發生命週期 — 把安全融入開發流程
- 事故管理 — 安全事件的回應流程