cover

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

先講結論

紅隊問「我怎麼進去」,藍隊問「我怎麼知道有人進來了」,紫隊確保兩邊的發現都變成具體改善。開發者不需要成為任何一隊的專家,但把紅隊思維帶進日常開發,會讓你的系統安全程度直接升一個檔次。

三個隊伍,三種思維

  • 紅隊(攻擊方):模擬攻擊者,找能被利用的漏洞。核心問題是「我怎麼能進去?」。思維特質是創造性、不按規則來
  • 藍隊(防禦方):偵測並阻止攻擊。核心問題是「我怎麼知道有人進來了?」。思維特質是系統性、全面覆蓋
  • 紫隊(整合方):確保紅隊發現的問題都被修復,防禦能偵測到。橋接兩邊,持續改善

紅隊思維:攻擊者怎麼想

攻擊者不會照你設計的使用流程來用系統。他們看的是攻擊面——有哪些入口?

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()innerHTMLexec() 就警覺:這裡有外部輸入嗎?

藍隊思維融入開發: 關鍵操作加 logging(登入、權限變更、資料匯出),log 要包含 who、what、when、result。設計 rate limiting。寫 runbook:「如果 X 發生了,做 Y」。

想更深入的話,推薦 TryHackMe 入門(有引導式學習路徑)、PortSwigger Web Security Academy(專注 Web 安全,免費且深入)、PicoCTF(CMU 出的,適合初學者)。


你的系統最大的敵人不是厲害的駭客,是那個覺得「這個 endpoint 應該不用檢查權限吧」的自己。

延伸閱讀