CEH M01-04|攻擊面(Attack Surface)與攻擊向量(Attack Vector)
Module 01:Introduction to Ethical Hacking|道德駭客入門
本課目標:理解駭客可能從哪裡接觸系統、透過什麼方式發動攻擊,以及資安人員如何找出需要保護的地方。
編輯補充:以下銀行、學校及Northstar均為合成教材情境;範例網址不是測試指令,不操作真實第三方系統。
建議學習時間:10~15 分鐘。
一、先掌握最重要的觀念:攻擊面是「哪裡」,攻擊向量是「怎麼做」
想像你是一間銀行的資安主管。
銀行有大門、ATM、自動客服電話、網路銀行,以及供員工使用的內部系統。
某天,老闆問你:
「我們的銀行可能從哪些地方被攻擊?」
這時候,你不能只回答:「我們有防火牆,所以很安全。」
因為駭客不一定要突破防火牆。
他可能假冒客服人員取得客戶帳密,也可能利用網路銀行的程式漏洞,甚至可能透過員工的電腦進入內部系統。
因此,我們必須分成兩個問題:
問題 A:哪些地方可能受到攻擊?
這叫做 Attack Surface(攻擊面)。
問題 B:攻擊者可能使用什麼方法?
這叫做 Attack Vector(攻擊向量)。
美國 NIST 將攻擊面定義為系統邊界上,攻擊者可能嘗試進入、造成影響或取得資料的接觸點集合。英國 NCSC 則以取得未授權存取的方法來解釋攻擊向量。NIST Computer Security Resource Center
來源補充:攻擊向量的定義另對照NCSC官方術語表;原文將兩個來源併述,這裡補上對應連結。
四個容易混淆的專有名詞
| 名詞 | 白話文 | 銀行的例子 |
|---|---|---|
| Attack Surface(攻擊面) | 哪些地方可能被接觸或影響? | 網路銀行登入頁面 |
| Attack Vector(攻擊向量) | 攻擊者可能怎麼下手? | 使用竊取的帳密嘗試登入 |
| Vulnerability(弱點/漏洞) | 哪裡有安全防護上的不足? | 系統沒有適當限制登入嘗試 |
| Exploit(漏洞利用) | 如何實際利用某個弱點? | 利用程式缺陷執行未授權操作 |
其中,Attack Vector 不一定需要軟體漏洞。
例如,駭客透過社交工程欺騙員工,可能利用的是人員判斷或作業流程上的弱點,而非程式漏洞。
另外,Exploit 有時也指用來利用漏洞的工具或程式,不一定只代表攻擊行為。
請記住一個重要的邏輯:
有攻擊面,不代表存在弱點;存在弱點,也不代表攻擊已經成功。
二、Attack Surface:為什麼正常的功能也可能成為攻擊面?
假設你經營一間線上學習平台。
學生可以登入網站、觀看課程、上傳作業以及下載成績。
為了讓學生使用這些功能,網站必須與外界互動。
這些互動的地方,就是我們需要分析的攻擊面。
1. 網站與 API
例如:
https://school.example/login
這是一個登入介面。
使用者能透過它輸入帳號和密碼。
但請思考:
如果使用者可以送出登入資料,攻擊者是不是也可能透過這個介面送出資料?
答案是有可能。
這並不代表登入介面有漏洞,而是代表它屬於需要安全防護的接觸點。
接著認識 API(Application Programming Interface,應用程式介面)。
API 可以理解成:
讓不同軟體按照約定的方式提出要求、交換資訊的溝通介面。
例如:
學生使用手機 App
│
▼
App 向學校 API 要求成績
│
▼
學校伺服器
│
▼
檢查學生身分與資料權限
│
▼
回傳允許查看的成績 這個 API 也是攻擊面。
因為有人可能透過它提出不應被允許的要求。
2. 網路與設備
除了網站之外,公司的其他設備也可能形成攻擊面。
例如,管理員使用的遠端管理服務、員工筆電,以及公司內部的檔案伺服器。
即使某個服務沒有對外公開,也不代表沒有攻擊面。
原因很簡單:
攻擊者有可能先取得一般員工帳號,或控制一台內部設備,再嘗試接觸其他系統。
這就帶出兩個概念:
External Attack Surface(對外攻擊面):從網際網路等外部環境可能接觸的系統部分。
Internal Attack Surface(內部攻擊面):必須具備內部網路連線、特定身分或其他條件才能接觸的系統部分。
OWASP 特別強調,攻擊面分析不能只看網站首頁,還應包含資料進出路徑、API、管理功能及不同使用者的權限。OWASP Cheat Sheet Series
3. 人員與作業流程
這是初學者經常忽略的部分。
假設公司客服可以協助使用者重設密碼。
如果有人假冒使用者,要求客服重設帳號,就可能透過這個流程造成安全問題。
因此,資安不能只注意電腦程式。
人員、實體設備以及作業程序,也可能成為整體攻擊面的一部分。
一個重要觀念:攻擊面越多,不一定代表風險越高
假設有兩間公司。
A 公司有 20 個公開網頁,但都是沒有登入功能的靜態介紹頁面。
B 公司只有 3 個對外功能,其中一個可以存取所有客戶的個人資料。
哪間公司比較危險?
我們無法只憑入口數量判斷。
還必須分析接觸條件、弱點、防護措施,以及一旦遭利用可能產生的損害。
這也是為什麼 M01-02 的風險觀念相當重要。
三、Attack Vector:攻擊者可能怎麼下手?
現在我們已經知道,網路銀行登入頁面是攻擊面。
接著要問:
「攻擊者可能透過什麼方式利用這個接觸點?」
我們可以分析幾種可能的攻擊向量。
| 攻擊向量 | 白話說明 | 可能需要的條件 |
|---|---|---|
| Phishing(網路釣魚) | 誘騙使用者交出帳密 | 使用者受騙,且後續防護未有效阻擋 |
| Credential Stuffing(憑證填充攻擊) | 利用其他地方外洩的帳密組合嘗試登入 | 帳密重複使用,且登入防護不足 |
| Exploitation(漏洞利用) | 利用系統中存在的漏洞 | 漏洞存在,而且符合利用條件 |
| Social Engineering(社交工程) | 利用欺騙或心理操縱,誘使人員做出不當操作 | 人員受騙,且作業程序未能阻擋 |
注意,這些攻擊向量並不互斥。
例如,網路釣魚本身也是社交工程的一種。
一場真實攻擊,也可能同時結合好幾種方式。
為什麼不能只知道攻擊名稱?
假設有人說:
「這間銀行可能被網路釣魚攻擊。」
這個說法雖然合理,但資訊還不夠。
資安人員必須進一步確認攻擊成立的條件。
例如,員工是否可能收到惡意郵件?即使收到,是否真的點擊?即使輸入帳密,是否還有其他驗證機制?
因此,攻擊向量代表一種可能的下手方式,不等於攻擊已經發生,更不等於攻擊成功。
四、Trust Boundary:為什麼登入成功,仍然不代表可以存取所有資料?
接著介紹一個對軟體安全非常重要的概念。
Trust Boundary(信任邊界)。
你可以把它理解成:
不同信任程度或不同權限範圍之間,需要重新進行安全檢查的分界。
假設有一個學校成績系統。
學生 A 已經成功登入。
但是,學生 A 想查看學生 B 的成績。
這時候,系統應該怎麼處理?
答案是:
不能因為學生 A 已經登入,就讓他查看學生 B 的資料。
這涉及兩個非常重要的資安名詞。
| 名詞 | 問題 | 白話例子 |
|---|---|---|
| Authentication(身分驗證) | 你是誰? | 確認你是學生 A |
| Authorization(權限檢查/存取授權) | 你有權做這件事嗎? | 確認學生 A 能不能查看學生 B 的成績 |
這兩者不一樣。
名詞補充:這裡的Authorization是系統針對資料與操作的權限判斷;M01-03的安全測試授權則是有權者批准測試活動。兩者都在問是否獲准,但對象與層次不同。
身分驗證成功,只是確認使用者的身分。
接下來,系統仍須檢查該身分是否具有特定操作與資料存取權限。
用流程圖理解
學生 A 登入
│
▼
系統確認身分
│
▼
Authentication 成功
│
▼
學生 A 要求下載成績報告
│
▼
Authorization 權限檢查
│
├── 有權下載 → 提供報告
│
└── 無權下載 → 拒絕要求 如果系統只執行 Authentication,卻沒有正確執行 Authorization,就可能造成越權存取。
OWASP 建議採取預設拒絕(Deny by Default)、最小權限(Least Privilege),並在每次存取要求中執行適當的權限檢查,而不是只依賴使用者已登入的事實。OWASP Cheat Sheet Series
這裡也有一個常見的程式設計錯誤:
把管理員按鈕隱藏,不等於已經禁止一般使用者執行管理功能。
因為隱藏按鈕只是改變使用者看到的畫面。
真正的安全檢查,仍必須由可信任的系統端負責執行。
五、完整案例:我們如何運用這些概念?
假設有一個虛構平台 Northstar。
平台提供個人學習報告下載功能。
規定是每個學生只能下載自己的報告。
我們現在是經過合法授權的資安測試人員,需要檢查這項功能。
Step 1:Asset Identification(辨認資產)
首先思考:
「我們要保護什麼?」
答案是學生的私人學習報告。
它涉及學生個人資料,因此需要維持機密性。
Step 2:Attack Surface Identification(辨認攻擊面)
接著思考:
「使用者從哪裡接觸報告?」
答案是報告下載功能,以及處理下載要求的後端 API。
這些都是需要檢查的接觸點。
Step 3:Attack Vector Analysis(分析攻擊向量)
我們提出一個假設:
如果學生 A 試圖透過報告下載功能取得學生 B 的報告,系統會不會錯誤地提供資料?
注意,目前只是提出可能的攻擊方式。
我們還不知道系統是否存在漏洞。
Step 4:Authorized Testing(授權測試)
在明確授權的測試環境中,我們建立兩個測試帳號。
使用不含真人資訊的合成資料進行測試。
| 測試情境 | 預期結果 |
|---|---|
| A 下載 A 的報告 | 允許 |
| A 下載 B 的報告 | 拒絕 |
| B 下載 B 的報告 | 允許 |
假設第二項測試發現:
學生 A 真的取得學生 B 的報告。
那麼,我們就有證據指出:
這個功能在特定測試條件下,存在不當授權的問題。
這類問題涉及 Broken Access Control(存取控制失效),也可能屬於 IDOR(不安全的直接物件參照)或 BOLA(物件層級授權失效)。
這些進階名詞現在只要認識,不需要深入研究。
Step 5:Mitigation(改善防護)
改善的方法不是把下載按鈕藏起來。
而是要求伺服器收到下載要求時,確認目前的使用者確實有權存取指定報告。
修正後,再重新執行測試。
除了確定學生 A 無法取得學生 B 的報告,也必須確定學生 A 仍然可以正常下載自己的報告。
這才代表防護措施沒有不必要地破壞正常服務。
Step 6:Evidence(保留證據)
假設我們成功重現學生 A 越權取得學生 B 報告的問題。
這代表什麼?
我們可以合理判斷,系統在測試條件下存在存取控制弱點。
但是,還不能直接宣稱:
「所有學生資料都已經外洩。」
因為發現漏洞,與證明過去有人利用漏洞,是兩件不同的事情。
正式評估還需要確認實際影響範圍與相關事件紀錄。
六、用一個框架整理整堂課
現在把 M01-01 到 M01-04 串起來。
Asset(資產)
我們要保護什麼?
│
▼
Attack Surface(攻擊面)
哪些地方可能被接觸?
│
▼
Attack Vector(攻擊向量)
攻擊者可能怎麼做?
│
▼
Vulnerability(弱點)
是否存在可被利用的不足?
│
▼
Security Controls
(安全控制)
現有防護能否阻擋?
│
▼
Risk Assessment
(風險評估)
發生可能性與影響多大?
│
▼
Mitigation(改善)
如何降低或控制風險?
│
▼
Verification(驗證)
防護是否有效且不影響服務? 這是便於學習的分析流程,不代表每一項攻擊都會依照固定順序發生。實務上通常需要反覆修正假設與評估。
至於 Trust Boundary(信任邊界),則是這個流程中的重要檢查位置。
我們必須特別留意資料或操作要求從一個信任範圍進入另一個信任範圍時,是否具備適當的檢查。
OWASP 的 Threat Modeling(威脅建模)也強調透過資料流程、系統元件與信任邊界,找出可能遭受攻擊的位置。OWASP Cheat Sheet Series
CEH 考試與實務上,這一課最值得掌握的五個觀念
| 重要性 | 必學觀念 | 為什麼? |
|---|---|---|
| ★★★★★ | Attack Surface vs. Attack Vector | 最基礎的名詞區別 |
| ★★★★★ | Authentication vs. Authorization | 理解身分驗證與越權存取 |
| ★★★★☆ | Attack Surface ≠ Vulnerability | 避免把正常功能誤判為漏洞 |
| ★★★★☆ | Trust Boundary | 理解安全檢查應放在哪裡 |
| ★★★★☆ | Attack Surface Reduction | 理解停用不必要服務、限制暴露範圍的防護原則 |
這是依據概念重要性與後續學習需求所做的教學排序,不是官方考題配分。
七、課後檢核:請你試著回答
一家公司的員工信箱可以正常收信。
某天,一位員工收到一封假冒 IT 部門的電子郵件。
郵件寫著:
「你的公司帳號即將停用,請立即點擊以下連結重新驗證密碼。」
這封郵件中的連結會將使用者帶到假冒公司的登入網站。
目前我們只知道郵件已成功寄達。
沒有證據顯示員工點擊連結、輸入帳密,或帳號遭到他人登入。
請回答三個問題:
Q1. 在這個案例中,哪些地方可以視為攻擊面?
Q2. 攻擊者可能採用的 Attack Vector(攻擊向量)是什麼?
Q3. 根據目前的證據,我們能不能判定員工帳號已經遭到入侵?為什麼?
你不需要背誦英文定義,只要能用自己的話清楚區分就可以。
等你回答後,我會依照 CEH 的觀念逐題評估,指出正確之處與需要補強的地方。
本課最重要的記憶口訣:攻擊面看「哪裡」,攻擊向量看「怎麼做」,弱點看「哪裡沒防好」,最後用證據判斷是否真的出事。
展開參考解答|Q1|哪些是攻擊面?
公司的收信介面、員工收信與核對通知的流程,以及後續登入相關的接觸點,都是可盤點的部分。外部訊息能接觸到人員與系統,不代表信箱本身已證實有漏洞。
展開參考解答|Q2|攻擊向量是什麼?
這是透過釣魚郵件假冒IT通知,誘導員工前往假登入網站交出帳密的可能路徑;也屬於社交工程。寄信者想利用這個方法,不代表後續步驟已成功。
展開參考解答|Q3|能判定帳號已入侵嗎?
還不能。目前只確認郵件寄達,尚無點擊、提交帳密、他人成功登入或不當存取的證據。可以說已觀察到釣魚嘗試,不能直接說帳號已失陷。
即使曾交出密碼,也要確認是否有其他驗證或存取限制。找不到紀錄不等於保證沒有事件,還要確認紀錄的完整性與查核範圍。
參考解答供自行核對;答案已公布不等於本人已作答或理解。本次為同一概念內容修訂,不另計一次交付。
概念 Q&A
待補:收到相關問題後,會整理為匿名教學版。