
理解攻擊不是為了攻擊別人,而是為了知道自己的系統有多脆弱。
先講結論
紅隊問「我怎麼進去」,藍隊問「我怎麼知道有人進來了」,紫隊確保兩邊的發現都變成具體改善。開發者不需要成為任何一隊的專家,但把紅隊思維帶進日常開發,會讓你的系統安全程度直接升一個檔次。
三個隊伍,三種思維
- 紅隊(攻擊方):模擬攻擊者,找能被利用的漏洞。核心問題是「我怎麼能進去?」。思維特質是創造性、不按規則來
- 藍隊(防禦方):偵測並阻止攻擊。核心問題是「我怎麼知道有人進來了?」。思維特質是系統性、全面覆蓋
- 紫隊(整合方):確保紅隊發現的問題都被修復,防禦能偵測到。橋接兩邊,持續改善
紅隊思維:攻擊者怎麼想
攻擊者不會照你設計的使用流程來用系統。他們看的是攻擊面——有哪些入口?
Web 應用的 API endpoints、檔案上傳、搜尋功能、登入頁面是最常見的目標。基礎設施的 SSH port、管理後台、沒關的 debug port 也是。然後還有「人」這個最大的漏洞:釣魚信、社交工程、內部人員。
更重要的是攻擊鏈的概念。一次成功的攻擊很少是「一步到位」:
偵查 → 初始入侵 → 橫向移動 → 提權 → 持久化 → 達成目標
舉個例子:透過釣魚信拿到員工 VPN 帳號 → 進內網掃其他服務 → 找到一個用預設密碼的 Jenkins → 從 Jenkins credentials 拿到 production DB 密碼。每一步都不是什麼高深的漏洞,但串起來就 game over。
這就是為什麼每一層安全措施都有意義——你在增加攻擊鏈的困難度。而且攻擊者也有成本考量:你的系統比隔壁的更難攻,他們就去攻隔壁的。基本的安全措施就能擋掉 90% 的自動化攻擊。
藍隊思維:防禦者怎麼想
藍隊的核心不是「把所有攻擊都擋住」(不可能),而是一個循環:偵測 → 回應 → 恢復 → 改善。
第一步永遠是可見性——你看得到什麼?網路層的異常連線、應用層的登入失敗和權限錯誤、主機層的異常 process。如果你看不到,你就無法偵測。所以 logging 要覆蓋所有關鍵操作。
偵測策略有三種層次:Signature-based(已知 pattern 比對,簡單但只抓已知攻擊)、Anomaly-based(行為跟平常不一樣,能抓未知攻擊但誤報率高)、Behavioral(使用者行為模式改變,最進階但需要 baseline)。
出事了怎麼辦?確認 → 圍堵 → 根除 → 恢復 → 檢討。 圍堵是限制損害範圍(隔離系統、撤銷被盜 credential),根除是 patch 漏洞清後門,恢復是從備份還原重新部署。最後的檢討最容易被跳過,但它才是防止下次再出事的關鍵。
開發者今天就能做的事
你不需要轉職資安,但這些習慣能讓你的系統更安全:
紅隊思維融入開發: 寫完 API endpoint 花 2 分鐘想「如果我要濫用它我會怎麼做」。每次做權限設計,試著繞過自己的檢查——改了 request body 裡的 userId 呢?看到 eval()、innerHTML、exec() 就警覺:這裡有外部輸入嗎?
藍隊思維融入開發: 關鍵操作加 logging(登入、權限變更、資料匯出),log 要包含 who、what、when、result。設計 rate limiting。寫 runbook:「如果 X 發生了,做 Y」。
想更深入的話,推薦 TryHackMe 入門(有引導式學習路徑)、PortSwigger Web Security Academy(專注 Web 安全,免費且深入)、PicoCTF(CMU 出的,適合初學者)。
你的系統最大的敵人不是厲害的駭客,是那個覺得「這個 endpoint 應該不用檢查權限吧」的自己。
延伸閱讀
- 資安基礎概念 — CIA Triad、OWASP、威脅模型
- Web 應用安全實務 — 具體的攻擊手法與防禦
- 安全開發生命週期 — 把安全融入開發流程
- 事故管理 — 安全事件的回應流程