Port
Nmap 報告在 8080 上打開 http-proxy,但沒有執行
從我的 Mac OSX 執行以下命令時:
nmap -PN server.com
它報告以下內容:
Starting Nmap 7.70 ( https://nmap.org ) at 2019-04-18 16:14 EDT Nmap scan report for server.com (9.9.9.9) Host is up (0.020s latency). Not shown: 997 filtered ports PORT STATE SERVICE 80/tcp open http 443/tcp open https 8080/tcp open http-proxy
http 和 https 很好,但我對
http-proxy
. 我們在這台伺服器的 8080 埠上沒有執行任何東西:# sudo ss -lnp | grep :8080 #
和 netstat 輸出:
# netstat -tnlp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 12378/mysqld tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 2441/nginx: master tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN 2441/nginx: master tcp6 0 0 :::80 :::* LISTEN 2441/nginx: master tcp6 0 0 :::443 :::* LISTEN 2441/nginx: master
這是一個 Nginx 伺服器,沒有任何其他的代理,它只是 Nginx。我們可以做些什麼來“關閉”這個非開放的埠。這是 Nmap 的錯誤還是我誤解了什麼?
當 Nmap 在該埠上接收到對 SYN 探測的 SYN/ACK 響應時,或者(在 TCP 連接模式下,
-sT
)與該埠的 TCP 連接成功時,Nmap 會報告打開的 TCP 埠。有幾種情況下 netstat/ss 和 Nmap 的輸出可能不同:
- 某些東西正在攔截到埠的流量並欺騙來自預期目標的回复。住宅 ISP 對埠 25、137、139 和 445 執行此操作,以避免蠕蟲和垃圾郵件。透明代理為 80 和 443 執行此操作以攔截 Web 流量。您有時可以使用 Nmap 檢測這一點,方法是使用該
--reason
選項並查找來自已知良好埠與可疑埠的響應數據包的 TTL 差異。您還可以比較數據包擷取中的響應,因為響應的其他部分可能不同(主要是 TCP 選項)。- 防火牆將埠轉發到同一系統上的不同埠。您將無法從外部得知這種情況正在發生,但您可以檢查防火牆設置以檢測它。
- 埠正被轉發到不同的系統,例如作為 NAT 設備上的埠轉發。在大多數情況下,
--reason
上面建議的選項和其他比較可以檢測到這一點。另一種方法是使用qscan
NSE 腳本來比較回复的時間,以確定某些埠是否由於額外的路由而出現延遲。這也可以像數字 1 一樣檢測干擾。- 目標上的某些東西正在響應,好像埠 8080 已打開,而不使用作業系統來管理連接。這可能是一個使用者空間的 TCP 堆棧
masscan
,它使用數據包擷取來檢查入站流量和原始套接字來生成回复。- 作業系統中的某些東西阻止了普通工具顯示打開的埠。通常稱為“rootkit”,這是各種旨在隱藏感染的遠端訪問惡意軟體的功能。和二進製文件可能已被覆蓋
netstat
,ss
或者核心模組可能正在攔截系統呼叫並過濾返回值以隱藏埠。在 8080 這樣的公共埠上發現這種情況是非常不尋常的。Nmap 通常用於檢測這種干擾,因為它報告目標的實際行為,而不是 rootkit 偽造的內部記帳。不過,您必須確保沒有其他東西干擾掃描。