cover

紅隊與藍隊:攻防思維入門

理解攻擊不是為了攻擊別人,而是為了知道自己的系統哪裡最脆弱。

攻防對抗的基本模型

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. 攻擊鏈 — 「進去之後怎麼擴大戰果?」

一次成功的攻擊很少是「一步到位」。通常是:

偵查 → 初始入侵 → 橫向移動 → 提權 → 持久化 → 達成目標

例如:

  1. 透過釣魚信取得員工的 VPN 帳號(初始入侵)
  2. 用 VPN 進入內網,掃描其他服務(橫向移動)
  3. 找到一個用預設密碼的 Jenkins(提權)
  4. 從 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()innerHTMLexec() 就警覺:「這裡有沒有外部輸入?」

藍隊思維融入開發:

  • 在關鍵操作加上 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 / SREAWS Security、Container Security
安全開發所有開發者SDL、SAST/DAST 工具鏈
滲透測試想轉職資安OSCP 認證、滲透測試方法論
資安管理Tech Lead / 主管ISO 27001、NIST Framework

CTF 推薦平台:

  • TryHackMe — 最友善的入門平台,有完整的學習路徑
  • HackTheBox — 更貼近真實環境,有挑戰性
  • PicoCTF — CMU 出的 CTF,非常適合初學者
  • PortSwigger Web Security Academy — 專注 Web 安全,免費且深入

反思問題

  1. 你能畫出你系統的攻擊面嗎? 有多少個入口?每個入口有什麼防護?
  2. 如果今天有人拿到你的 production database 的帳密,你多快能知道? 如果答案是「不知道」,你的偵測能力需要加強。
  3. 你的系統有 rate limiting 嗎? 如果有人對你的登入 API 每秒打 1000 次 request,會發生什麼事?
  4. 你上次用「攻擊者視角」review 自己的 code 是什麼時候?

延伸閱讀