💡 先搞懂問題:你真的知道自家網路開了什麼嗎?
一間公司的網路上少則幾十、多則上千台設備:伺服器、交換器、印表機、NAS、監視器,還有同事自己接上的無線基地台。資產清冊記錄的是「應該有什麼」,但網路上實際開著哪些服務,常常沒有人說得準。測試完忘了關的管理頁面、廠商維修時打開沒關的遠端桌面、出廠就預設開著的 Telnet,都可能躺在那裡好幾年。
攻擊者不會看你的清冊。他們會直接對網路送出探測,看誰有回應、回應了什麼;入侵內網之後,第一件事通常也是掃描周圍還有哪些主機和服務。所以防守方要在取得授權後,用同樣的方法先掃一遍自己,把「實際開著的」和「應該開著的」互相對照,兩者的差異就是要處理的曝露面(attack surface)。這個動作叫網路掃描(network scanning),最常用的開源工具是 Nmap(Network Mapper)。
一個比喻:新任管理員巡樓推門
想像你剛接下一棟辦公大樓的管理工作。管委會給了你一份書面同意書和一串鑰匙,請你把每層樓的每扇門都推推看,記下哪些門後有人在辦公。推門時會遇到三種情況:有人來應門;門後傳來一句「這裡沒人」;或是門口站著警衛把你攔下,你什麼回音都聽不到。
右邊這條走廊有三扇門,點點看每一扇推下去的反應。
- 現實中推門幾乎不會把門推壞,但網路上有些老舊設備、工控控制器經不起大量探測,可能變慢甚至當機。所以掃描要控制速度與範圍,工控(OT)環境更要優先改用被動監聽。
- 「沒有回音」不代表門後沒有房間。探測可能在半路就被防火牆丟掉,Nmap 只能說它無法判斷埠到底開沒開,所以才歸為 filtered,而不是 closed。
- 管理員手上有同意書。沒有授權就去推別人家的門,即使沒進去,也可能觸法、違反網路服務合約,或被對方當成攻擊前兆處理。
🎮 互動實驗室
五個實驗室由淺入深:先看封包怎麼往返,再練判讀、記選項,最後處理一份盤點結果,並感受掃描速度的取捨。所有畫面都是頁內模擬,不會連到任何真實系統。
1三向交握播放器:三種掃描各收到什麼回應
正常建立一條 TCP 連線要三步,稱為三向交握(three-way handshake):想連線的一方送 SYN(我想連線),對方若有服務在聽就回 SYN/ACK(好,我也準備好了),發起方再送 ACK(收到)。掃描就是利用「對方怎麼回應第一個探測」來判斷埠的狀態。選一種掃描方式和目標埠的真實狀態,按「下一步」一個封包一個封包看。
2埠狀態判讀:看回應,下判定
Nmap 回報的不是「埠開沒開」這麼簡單的是非題,而是它根據回應能確定到什麼程度。下面每一題描述一次探測和收到的回應,請你替 Nmap 下判定。
3選項配對:Nmap 常見選項 ↔ 意義
先點上排一個選項,再點下方你認為對應的意義。配對正確會固定下來並變成綠色。這裡只練「選項代表什麼」,不組合成完整指令。
4盤點結果處置:哪些服務不該開?
以下是一份虛構的內網盤點結果。掃描已取得資訊主管的書面授權,時段是週六 22:00 到 24:00,事先通知了監控中心;掃描從員工網段的一台盤點工作站發起。請把每一筆發現和資產清冊對照,選出最合適的處置。
5掃描速度的取捨:快、被發現、設備吃不消
Nmap 用時間範本 -T0 到 -T5 控制探測的間隔與同時送出的數量。拉動滑桿、改變掃描的埠數與目標類型,看估計時間、被 IDS 注意到的可能性,以及目標設備的負擔怎麼變。(數值為教學示意,不是實測)
📘 原理補完:把推門接回封包
一、防守方的掃描是一套流程,不是一個指令
比喻裡的管理員先拿到同意書才巡樓,真實的掃描也一樣:授權、範圍與時段在前,送出封包在中間,對照清冊與處置在後。少了前段,掃描可能被當成攻擊、打斷業務;少了後段,掃完的報告只會躺在資料夾裡。點下圖每個步驟看它要回答的問題。
授權文件至少要寫清楚:誰核准、目的、可以掃的網段與排除清單(例如不能碰的產線設備或第三方託管主機)、允許的時段、使用的工具與強度、聯絡窗口與出事時的停止條件。掃描前通知監控中心(SOC),他們才能把這段期間的告警對上已核准的作業,而不是誤判成攻擊,或反過來把真正的攻擊當成「應該是在做盤點」。雲端或託管的主機還要看服務商的規範,有些需要事先申請。
二、主機探索:先找出誰在線上
一個 /24 網段有 256 個位址,逐一掃 1000 個埠很費時,所以 Nmap 預設會先做主機探索(host discovery),只對有回應的主機掃埠。依官方文件,有特權的使用者跨網段探索時,預設會送出 ICMP Echo 請求、對 443 埠的 TCP SYN、對 80 埠的 TCP ACK 與 ICMP 時間戳記請求,任何一個有回應就算存活;目標在同一個乙太網段時則改用 ARP 詢問。切換下圖看不同情況。
兩個相關選項常被搞混。-sn 是「只做主機探索、不掃埠」,適合先快速了解網段裡有哪些設備;-Pn 則相反,是「跳過主機探索」,把每個指定的位址都當成存活直接掃埠。當目標的防火牆擋掉 ping 之類的探測,預設探索會誤判它不在線上而漏掃,這時才需要 -Pn,代價是對大量不存在的位址也白白送出探測,時間會拉長很多。
三、連接埠的狀態:Nmap 其實有六種說法
比喻只講了三種反應,Nmap 官方定義了六種狀態。後三種都代表「Nmap 無法完全確定」,這不是工具不夠聰明,而是回應本身不足以區分。下圖整理 TCP 與 UDP 掃描時,每種回應會被判成什麼,點選或切換看說明。
| 狀態 | 官方意義(白話) | 常在什麼情況出現 |
|---|---|---|
| open | 有應用程式正在這個埠接受 TCP 連線或 UDP 資料。 | SYN 掃描收到 SYN/ACK;UDP 收到服務回應。是盤點的重點,也是攻擊者要找的入口。 |
| closed | 探測到得了這個埠、主機也有回應,但沒有應用程式在聽。 | 收到 RST,或 UDP 收到 ICMP 埠不可達。代表主機存在,而且這個埠目前沒有被防火牆擋。 |
| filtered | 封包過濾讓探測到不了埠,無法判斷開或關。 | 重送後仍無回應,或收到特定的 ICMP 不可達錯誤。通常是防火牆或路由器的過濾規則。 |
| unfiltered | 埠到得了,但無法判斷開或關。 | 主要出現在 ACK 掃描(-sA),常用來推測防火牆規則,不是一般盤點會看到的結果。 |
| open|filtered | 無法判斷是開著還是被過濾。 | UDP 掃描沒收到任何回應時最常見:可能服務收到了但不回話,也可能探測被丟掉。 |
| closed|filtered | 無法判斷是關著還是被過濾。 | 只在少數特殊掃描方式(如 IP ID idle 掃描)出現,考試知道有這個狀態即可。 |
四、Connect、SYN、UDP 三種掃描差在哪
實驗室 1 已經看過封包怎麼走,這裡把差異與原因說清楚。Connect 掃描(-sT)請作業系統用一般的 connect() 建立連線,三向交握完整走完,得到答案後再把連線關掉;它不需要特殊權限,所以是一般使用者權限時的預設。缺點是連線真的建立過,目標上的服務可能記錄一筆「有人連進來又什麼都沒說就走了」,而且比 SYN 掃描多送封包。
SYN 掃描(-sS)由 Nmap 自己組出 SYN 封包送出,需要原始封包(raw packet)權限,也就是系統管理員或 root,有權限時它就是預設。收到 SYN/ACK 就知道埠開著,接著掃描端的作業系統因為沒有發起過這條連線,會自動回一個 RST,交握的第三步從來沒有發生,所以叫半開掃描(half-open)。因為連線沒有完成,一般應用程式通常不會留下連線紀錄;但 IDS 與防火牆看的是封包,大量的 SYN 一樣看得到,「半開比較隱密」只是相對於應用程式日誌而言。
UDP 掃描(-sU)面對的是沒有交握的協定。服務若回了 UDP 資料就是 open;主機回 ICMP 埠不可達(type 3、code 3)就是 closed;什麼都沒收到只能判 open|filtered。它明顯比 TCP 慢,因為許多作業系統會限制 ICMP 錯誤訊息的發送速率(官方文件舉例,Linux 2.4.20 核心每秒只送一個「目的地不可達」),Nmap 只好放慢腳步。官方也提醒,DNS(53)、SNMP(161/162)、DHCP(67/68)等常見服務都跑在 UDP 上,只掃 TCP 就會漏掉一整塊曝露面;UDP 掃描可以和 SYN 掃描在同一次執行中一起做。
| 比較 | Connect-sT | SYN-sS | UDP-sU |
|---|---|---|---|
| 完成交握 | 是 | 否(回 RST) | 無交握 |
| 需要權限 | 不用 | 管理員/root | 管理員/root |
| 服務日誌 | 較可能留紀錄 | 通常不會 | 視服務而定 |
| 速度 | 較慢 | 快 | 最慢 |
| 不確定性 | 低 | 低 | 高(open|filtered) |
五、門後是什麼:服務版本與作業系統偵測
回到推門比喻,知道門開著還不夠,管理員還想知道門後是會計室還是機房、用的是哪一年的設備。一般埠掃描結果裡的服務名稱(例如 22/tcp 顯示 ssh),其實只是 Nmap 依埠號查表猜的;如果有人把網站開在 22 埠,表上照樣寫 ssh。服務版本偵測(-sV)會對開著的埠送出一系列探測,和它的服務探測資料庫比對回應,辨識出通訊協定、軟體名稱與版本號,有時還能看出主機名稱與裝置類型。作業系統偵測(-O)則是看 TCP/IP 堆疊本身的細微差異,例如初始序號的產生方式、TCP 選項的支援與排列、初始視窗大小,和已知指紋資料庫比對,官方文件指出至少找到一個開著和一個關著的 TCP 埠時準確得多。點下圖三層看它們各自回答什麼。
這兩項的限制也要記住。作業系統偵測是「猜」,會附上可信度,中間有防火牆或負載平衡器時可能猜錯;版本偵測送的探測比單純掃埠多,也比較容易在服務日誌留下紀錄。更重要的是,Nmap 告訴你「這台跑 OpenSSH 某版本」,但不會告訴你這個版本有哪些已知漏洞、風險多高,那是 Nessus、OpenVAS 這類弱點掃描器的工作。Nmap 也有 NSE 腳本引擎(--script)可以對特定服務做進一步檢查,但主要定位仍是找主機、埠與服務。
六、速度與老舊設備:為什麼 OT 不能照掃
時間範本 -T0 到 -T5 依序叫 paranoid、sneaky、polite、normal、aggressive、insane。依官方文件,-T0 與 -T1 主要是為了避開 IDS,逐一送出探測、每個間隔 5 分鐘與 15 秒;-T2 每個探測間隔 0.4 秒,用來減少頻寬與目標負擔;-T3 是預設;-T4 適合快速而穩定的網路;-T5 假設網路極快,願意犧牲一些準確度換速度。越快的範本,逾時等待越短、重送次數越少,遇到反應慢的設備就可能把開著的埠誤判掉。
老舊的印表機、網路設備,尤其是工控環境的 PLC、RTU,網路堆疊往往很陽春,短時間湧進大量探測或看不懂的封包,可能變慢、重開甚至當機。Nmap 官方也承認,確實有寫得不好的應用程式與 TCP/IP 堆疊會被特定掃描弄當。在 OT 場域,停機直接影響生產與人身安全,所以盤點要優先用被動方式:從交換器鏡像埠收流量,分析有哪些設備、用哪些協定、平常誰和誰通訊,建立基線。真的需要主動測試,也只在非生產環境、測試台或維修時段進行,並降低強度、限縮範圍。更多 OT 的特性可參考 物聯網與工控安全。
七、換到防守方的位置:怎麼發現自己被掃描
掃描會留下痕跡,差別只在留在哪裡、有沒有人看。最明顯的特徵是同一個來源在短時間內碰觸大量不同的埠或主機,而且大多數是被拒絕或沒有完成的連線。這些痕跡會出現在防火牆的拒絕紀錄、IDS 的掃描偵測告警、NetFlow 裡大量又短又沒傳資料的連線,以及服務日誌裡「連線後什麼都沒送就中斷」的紀錄。下圖是一份虛構的防火牆日誌,把每筆連線依時間與目的埠畫成點,切換看看掃描長什麼樣子。
慢速掃描能躲過「幾秒內超過多少個埠」這類短時間門檻,但每個探測仍然會被記錄,把日誌集中到 SIEM、用較長的時間窗做關聯,還是有機會抓到。內網裡出現大範圍掃描更要警覺:在 MITRE ATT&CK 中,入侵後掃描內部網路找服務屬於探索(Discovery)戰術,對應的技術是 Network Service Discovery(T1046),常是橫向移動的前兆。例如某台員工電腦突然對整個網段的 445、135 埠發起大量連線,就該當成可能被入侵的主機來調查。防火牆與 IDS 的角色可參考 防火牆、DMZ 與 IDS/IPS,日誌怎麼集中與關聯可參考 日誌管理與 SIEM。
八、容易混淆的地方
- Nmap vs 弱點掃描器:Nmap 主要找主機、埠、服務與版本;Nessus、OpenVAS 會進一步比對已知弱點並給風險等級。兩者常搭配,但不能互相取代。弱掃、滲透測試與紅隊的差異,見 弱掃、滲透測試與紅隊演練。
- open 不等於有漏洞:對外網站的 443 本來就該開。要判斷的是「這個服務該不該開、該對誰開」,以及版本是否需要修補。
- filtered 不等於安全:它只代表「從你掃描的位置」到不了。換一個網段、換一個來源,結果可能完全不同,所以盤點常需要從多個位置各掃一次。
- closed 也透露資訊:收到 RST 代表主機存在,而且這個埠沒被防火牆擋;作業系統偵測也需要關著的埠才比較準。
- -Pn vs -sn:一個跳過主機探索、直接掃埠;一個只做主機探索、不掃埠,方向剛好相反。
- -sV vs -O:前者問「這個埠上跑什麼軟體、哪個版本」,後者問「這台主機是什麼作業系統」。埠號與協定的基礎可參考 OSI 七層、通訊埠與網路攻防。
✅ 自我檢測
以下是原創情境題,點選答案後會立即顯示對錯與解析。
🎯 重點整理:考前 30 秒
- 為什麼掃自己:攻擊者會先掃描找入口,防守方要用同樣方法盤點「實際開著的服務」,和資產清冊對照,找出不該開或不該對所有人開的服務。
- 授權在前:掃描前取得書面授權,寫清楚範圍、排除清單、時段、工具強度與聯絡窗口,並通知監控單位;只掃自己有權限的網路。
- 埠狀態:SYN/ACK 是 open,RST 是 closed,沒回應或特定 ICMP 不可達是 filtered;UDP 沒回應只能判 open|filtered,ICMP 埠不可達(type 3、code 3)是 closed。
- 三種掃描:
-sT完成三向交握、不需特權;-sS半開,收到 SYN/ACK 後回 RST、需管理員權限、是有權限時的預設;-sU掃 UDP,慢且不確定性高,但 DNS、SNMP、DHCP 不能漏。 - 選項對照:
-p指定埠(-p-全部 65535 個),-sV服務版本,-O作業系統,-Pn跳過主機探索,-sn只做主機探索,-T0~-T5由慢到快。 - 速度與 OT:越快越容易被 IDS 發現、越可能壓垮老舊設備、也越可能漏判;OT 環境優先被動監聽,主動測試只在非生產環境或維修時段且降低強度。
- 偵測與定位:同一來源短時間碰大量埠是掃描特徵;內網出現大範圍掃描屬 ATT&CK 探索階段,要調查來源主機。Nmap 找埠與服務,Nessus 等弱掃器才比對已知漏洞。