什麼是ASM
攻擊面管理(Attack Surface Management, ASM)簡單來說,它是從攻擊者的視角出發,持續性地發現、分析、分類、監控並管理企業所有暴露在外部、可能被駭客利用的資產與漏洞。傳統的資安防禦(如防火牆、資產盤點)通常是靜態且由內向外的;而 ASM 則是動態且由外向內(Outside-In)的持續防禦管理。
ASM解決的問題
在雲端運算、遠距工作、微服務和影子 IT(Shadow IT,即員工未經 IT 部門允許自行架設的服務)盛行的時代,企業的邊界已經模糊。安全團隊往往面臨「不知道自己有哪些資產暴露在網路上」的窘境。
常見的外部曝險點包括:
- 忘記關閉或測試用的雲端儲存桶(S3 Buckets)。
- 子公司或協力廠商私自架設的 Web 服務。
- 過期未更新的 SSL 憑證。
- 因設定錯誤而對外開放的內部管理後台(如遺留的 Jenkins、RDP 埠)。
ASM在做什麼
可以把ASM 想像成企業在網路世界裡的「自動化全天候保全巡邏系統」。它不跟隨企業內部提供的資產清單,而是直接站在網際網路上,24 小時不間斷地用駭客的偵察手法,去肉搜、盤點、測試企業所有的外露資產。單來說,ASM 是一套「持續發現、分類、評估和監控企業所有網路暴露資產」的防禦機制。
傳統的資安防禦(如資產盤點、弱點掃描)通常是由內向外(Inside-Out)的,依賴企業內部已知的資產清冊。然而,現代企業的 IT 環境極其複雜(包含多雲環境、影子 IT、外部協力廠商、遠端辦公節點等),傳統方法很容易產生盲點。
ASM 的任務,就是模擬駭客進行「偵察(Reconnaissance)」的過程,去找出那些企業自己都不知道、或遺忘掉的資產。
ASM 的核心目標
- 消除影子 IT(Shadow IT): 找出部門私自架設的雲端主機、測試用的 API 節點、過期的活動網站等。
- 縮小暴露面: 關閉不必要的連接埠(Ports),減少駭客可以攻擊的入口。
- 持續性監控: 資產與漏洞是動態變化的,ASM 強調 24/7 的持續監控,而非傳統弱掃的一季一次。
ASM要怎麼做
實務上導入與執行 ASM(攻擊表面管理),並不是單純買一個工具去掃描 IP 這麼簡單,它需要一套標準化的技術流程與跨團隊的協作。要將 ASM 落地,通常會拆解為以下四大具體實作步驟。這是一個 24/7 持續循環的自動化生命週期:
步驟一:外圍資產自動發現 (Asset Discovery)
這是 ASM 最具技術含量的一步。我們不向客戶或內部 IT 要「資產清單」(因為那通常是不準確的),而是只拿一個「核心種子(Seed)」——通常是企業的「主網域名稱(Domain)」或「自治系統號(ASN)」,然後像滾雪球一樣把所有相關資產爬出來。
具體做法與技術:
- DNS 爆破與被動收集: 透過 DNS 紀錄(AXFR 區域傳輸、TXT、MX 紀錄)、公開的 DNS 歷史資料庫(如 SecurityTrails、Passive DNS),撈出所有子網域(Subdomains),甚至是已經棄用但紀錄還在的「懸空 DNS(Dangling DNS)」。
- 憑證透明度日誌 (Certificate Transparency Logs): 監控全球公開的 CT Logs。只要開發團隊向 Let’s Encrypt 或 DigiCert 申請了新證書,ASM 就能第一時間抓到新上線的網址。
- WHOIS 與 ASN 關聯: 查詢企業註冊的 WHOIS 資訊(如電子郵件、公司名稱),並追蹤企業擁有的 BGP ASN 區段,藉此撈出所有相關聯的公網 IP 範圍。
- 開源情報 (OSINT) 與第三方平台: 爬取 GitHub、GitLab、Pastebin,檢查是否有員工誤將公司程式碼、API Key、雲端憑證(AWS/Azure)公開。同時利用 Shodan、Censys 等網路空間搜索引擎交叉比對。
步驟二:資產指紋分析與分類 (Attribution & Fingerprinting)
撈出一堆 IP 和網址後,必須知道它們是幹嘛的。這個步驟就像是幫每個資產建立「數位身分證」。
具體做法與技術:
- 非侵入式指紋辨識 (Banner Grabbing): 探測開放的連接埠(Ports),解析服務回傳的 Banner。例如:辨識出該 Port 跑的是 SSH、RDP,還是某個特定版本的 Apache 網頁伺服器。
- Web 技術棧分析: 分析網頁的 HTTP Header、HTML 結構、Cookie 名稱、JavaScript 框架。明確辨識出該網站是用 WordPress、Drupal 還是某個特定的後端 API 框架(如 Spring Boot)。
- 資產歸屬分類 (Tagging): 自動或手動為資產打上標籤。例如:
[生產環境]、[測試/開發環境]、[影子 IT]、[委外廠商託管],並釐清這個資產的負責窗口是哪一個部門。
步驟三:風險與漏洞評估 (Vulnerability & Risk Assessment)
知道有什麼資產、上面跑什麼服務後,接著要站在攻擊者的視角,找出哪些地方最容易被攻破。
具體做法與技術:
- 已知漏洞比對 (CVE Mapping): 將指紋分析得到的軟體版本(例如:Apache 2.4.49),與 CVE 漏洞庫進行比對,找出是否存在未修補的重大漏洞(如 Remote Code Execution, RCE)。
- 配置錯誤偵測 (Misconfigurations):
- 檢查是否有敏感管理後台外露(如 Jenkins、Kubernetes Dashboard、PhpMyAdmin)。
- 檢查是否有不該對外開放的 Port(如資料庫 3306、Redis 6379、SMB 445)。
- 檢查 SSL/TLS 憑證是否過期、加密強度是否不足。
- 子網域劫持風險 (Subdomain Takeover): 檢查子網域指向的雲端服務(如 AWS S3、GitHub Pages)是否已經釋出,若沒清理乾淨,攻擊者可以直接劫持該子網域。
- 風險優先級排序 (Prioritization): 結合 CVSS 分數與威脅情資(Threat Intelligence)。如果某個漏洞雖然分數高,但該資產只是個無關緊要的測試機,且內部沒有敏感資料,其修復優先級就會被調低;反之,若該漏洞已有現成的 Exploit 在駭客論壇流傳,且資產連接著核心網路,則必須列為最高優先級(Critical)。
步驟四:減險與持續監控 (Mitigation & Continuous Monitoring)
ASM 不是一次性的報告,重點在於縮短「漏洞暴露的時間(Time-to-Remediate)」。
具體做法與技術:
- 自動化告警與工單整合: 當 ASM 系統發現高風險資產時,自動透過 API 將資料推送至內部的 Jira、ServiceNow 或 Slack/Teams 頻道,通知 IT 或開發團隊立即處理。
- 執行減險措施(Remediation):
- 修補(Patch): 升級軟體版本。
- 移除(Remove): 將過期、無人維護的影子 IT 或測試機直接下架。
- 遮蔽(Shield): 如果暫時無法修補,先在前端加上 WAF(網頁應用程式防火牆)防禦,或將資產移入 VPN/零信任架構後方。
- 24/7 持續重新掃描: 網路世界的變化是以分鐘計的。ASM 會設定排程(例如每小時或每天),不斷重複執行步驟一到三,只要工程師一貼上新的雲端配置,系統幾分鐘內就會偵測到並重新評估。
企業落地 ASM 的三種層次
企業在實作 ASM 時,通常會根據預算與人力選擇不同的落地方式:
- 開源工具組合(DIY 玩家): 利用
Amass、Subfinder、Nuclei、Naabu等開源工具,自己寫 Script 串接並整合到 CI/CD 流程中。適合技術實力強、預算有限的資安團隊。 - 商業化 ASM 平台(主流做法): 導入如 Palo Alto Cortex Xpanse、Microsoft Defender External Attack Surface Management (EASM)、Trend Micro AASM 或 Bitsight 等商業產品。特點是開箱即用、圖表化介面,且資產發現的精準度與威脅情資整合度極高。
- 託管服務 (MSSP / Managed ASM): 將 ASM 的監控與第一線告警篩選外包給專業的資安廠商(SOC 團隊),企業內部只接收「確認為真且需要修補」的精確情資。
ASM的優勢與限制
優勢
- 專抓「影子 IT」: 專門揪出那些被企業遺忘、私自架設的測試機、測試網站或 API,消除防禦盲區。
- 24/7 持續監控: 揮別過去一年一度的滲透測試,改為天天自動化盤點,網路上多一個破洞就能即時發現。
- 站在駭客視角排序: 結合威脅情資,告訴你哪個漏洞在外面已經有公開的攻擊工具、駭客正在利用,讓你精準把人力用在刀口上。
- 最直接的減害: 發現不該開的 RDP、資料庫 Port 就直接關掉,用最低成本縮小被攻擊的範圍。
限制
- 看不到內部: ASM 只看得到牆外。如果駭客已經透過釣魚郵件入侵員工電腦並在內網移動,ASM 完全無法偵測內部動態。
- 會有誤報與漏報: 有時會因為共用 IP 或 CDN 而把別人的網站誤判為你的資產(誤報);或因為線索不足,漏掉員工用私人帳號偷偷架設的服務(漏報)。
- 管檢不管修: 它能幫你把漏洞找出來,但無法自動幫你修補程式碼,後續仍需要耗費人力與業務單位溝通、進行停機測試與修補。
- 初期容易資訊爆炸: 剛導入時會撈出成千上萬筆大大小小的風險或過期憑證,若沒有良好的過濾機制,會造成資安團隊的告警疲勞。