通訊埠掃描原理解析:如何發現你網路中的隱藏漏洞
想像一下,你半夜聽到窗外傳來輕微的「叩、叩」聲,有人正沿著你家外牆,逐一搖動每一扇窗戶、扭動每一扇門的把手,只為了找出哪一扇門窗沒有上鎖。
在網路世界中,這種行為被稱為通訊埠掃描(Port Scanning)。它是網路攻擊者在發動攻擊前的基本偵察工作,也是系統管理員自我防禦的核心手段。每一個連接到網際網路的裝置,都擁有成千上萬個潛在的「入口」。如果沒有妥善管理,這些入口就會變成入侵者的綠色通道。
要理解這一切是如何運作的,我們得先聊聊網路裝置是如何溝通的。
什麼是通訊埠?實體大樓與虛擬房間
當你把電腦連上網路時,你的 IP 位址就像是這棟大樓的郵遞地址。但如果郵差(網路封包)抵達了這棟大樓,他要怎麼知道這封信是要給一樓的警衛室,還是十樓的會計部?
這就是通訊埠(Port,又稱連接埠)發揮作用的地方。
在 TCP/IP 協定 的標準規範(如 1981 年 9 月發布的 RFC 793)中,每個 IP 位址都配備了 65,535 個虛擬通道,也就是通訊埠。這些通訊埠被分為不同的範圍:
- 系統通訊埠(0 到 1023):由網際網路號碼分配局(IANA)嚴格保留給特定服務。例如,網頁瀏覽(HTTP)使用 80 埠,加密網頁(HTTPS)使用 443 埠,而遠端連線安全殼層(SSH)則使用 22 埠。
- 登記通訊埠(1024 到 49151):供軟體應用程式註冊使用。例如,MySQL 資料庫預設使用 3306 埠。
- 動態或私有通訊埠(49152 到 65535):當你的瀏覽器發起連線時,作業系統會隨機指派其中一個通訊埠作為臨時溝通管道。
通訊埠掃描的目的,就是向這些特定通道發送測試封包,並觀察對方的回應,藉此判斷該通訊埠是「開放」(Open)、「關閉」(Closed)還是「被過濾」(Filtered)。
掃描的運作原理:無聲的探測
最常見的掃描方式是利用 TCP 協定的連線機制。在正常的網路連線中,兩台裝置必須完成「三向交握」(Three-Way Handshake)。
但在通訊埠掃描中,探測者通常不會完成整個連線過程,因為完成連線意味著會在目標系統的日誌(Logs)中留下足跡。最經典的技術是 SYN 掃描,也稱為「半開放掃描」或「隱密掃描」。
如上圖所示,掃描器向目標發送一個 SYN 封包(連線請求)。如果該通訊埠是開放的,目標主機會回傳 SYN-ACK 封包(同意連線)。此時,掃描器已經得到了想要的答案,它會立刻發送一個 RST(重設)封包來切斷連線,而不是發送最後的 ACK 封包。這樣一來,連線就沒有正式建立,許多老舊的系統甚至不會記錄這次事件。
如果通訊埠是關閉的,目標主機會直接回傳一個 RST 封包,告訴掃描器這裡沒有服務在運作。
攻擊者能從開放的通訊埠中得到什麼?
千萬不要以為開放通訊埠只是透露了「我的電腦有開網頁」這麼簡單。對於經驗豐富的駭客來說,開放的通訊埠就像是一張詳細的系統地圖。
1997 年 9 月 1 日,安全專家 Gordon Lyon(筆名 Fyodor)在著名駭客雜誌《Phrack》第 51 期發表了 Nmap(Network Mapper)這款工具。至今,它依然是全球安全人員與駭客最常用的掃描神器。透過 Nmap 這類工具,攻擊者可以進行「版本偵測」與「作業系統指紋識別」(OS Fingerprinting)。
當 Nmap 發現 22 埠開放時,它不會只記錄「SSH 開放」,它會進一步向該通訊埠發送特定的測試資料,迫使目標回傳 banner 資訊。回應可能會顯示:SSH-2.0-OpenSSH_8.2p1 Ubuntu-4ubuntu0.5。
這一行字暴露了極多關鍵資訊:
- 你正在執行 Ubuntu Linux。
- 你的 OpenSSH 版本是 8.2p1。
- 攻擊者可以立刻去 CVE(通用漏洞披露)資料庫搜尋該版本是否存在未修補的漏洞。
如果你的系統沒裝修補程式,攻擊者就能針對特定漏洞發動精準打擊。
如何檢測自己的安全暴露程度?
防禦的第一步是了解自己有哪些漏洞。你不必成為頂尖的資安工程師,也能自行檢查家裡或公司網路的暴露狀況。
1. 使用線上免費掃描工具
如果你想快速檢查家用網路的外部安全,可以使用像是 Gibson Research Corporation 開發的 ShieldsUP! 線上測試服務。這類工具會從外部網路發送測試封包到你的公有 IP,並回報是否有任何常見的通訊埠(如 21、23、80、443、3389)暴露在公眾網路中。
2. 在本機安裝 Nmap 進行內部掃描
如果你想檢測家中的智慧家電、路由器或個人電腦,可以下載 Nmap。在終端機或命令提示字元中輸入以下指令,即可對本機進行基礎掃描: