2024年10月24日 星期四

[研究]Windows Server 2022預設開啟那些 Port (nmap, netstat, tasklist, powershell)

[研究]Windows Server 2022預設開啟那些 Port (nmap, netstat, tasklist, powershell)

2024-10-24

Windows Server 2022 繁體中文標準版在 VMware Workstation  上安裝後,nmap 7.9.5 測試開啟了那些 port ? (有安裝 VMware Tools )

********************************************************************************

指令:nmap -sT -p T:1-65535 -T4 127.0.0.1

-T4:這是 掃描速度的選項。

  • T0 (Paranoid):偏執模式。極慢的掃描方式,通常每隔幾分鐘才發送一個封包,適合在高度防禦系統下進行,避免被偵測。
  • T1 (Sneaky):隱匿模式。緩慢且隱蔽的掃描方式,適合在防火牆或入侵檢測系統非常敏感的情況下使用,以減少被發現的機率。
  • T2 (Polite):禮貌模式。較為謹慎的掃描方式,會降低掃描速率以減少對目標系統的負載或避免引發網路擁塞。
  • T3 (Normal):正常模式。預設的掃描速度,既不過慢也不過快,適合大多數情況下的掃描。
  • T4 (Aggressive):積極模式。加快掃描速度,會減少等待時間,適合在網路性能良好且沒有防火牆等阻擋掃描的情況下使用。
  • T5 (Insane):瘋狂模式。極速掃描,僅適合在非常快速且穩定的網路環境中使用。這種模式的掃描速率非常快,但可能容易被防火牆或入侵檢測系統發現。

-sT:   這是 TCP 連接掃描 (TCP Connect Scan)。它使用的是完整的三次握手過程來進行端口掃描,適用於當你沒有權限使用更低階的掃描(例如 SYN 掃描,-sS)時。這種掃描方式比較容易被防火牆檢測到。

-p T:1-65535:   -p 用來指定掃描的端口範圍。T:1-65535 指定了 TCP 端口範圍從 1 到 65535,也就是所有的 TCP 端口。這個參數會掃描目標主機的所有可能的 TCP 端口。

********************************************************************************

結果

Starting Nmap 7.95 ( https://nmap.org ) at 2024-10-23 13:28 台北標準時間
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0027s latency).
Not shown: 65523 filtered tcp ports (no-response), 1 filtered tcp ports (admin-prohibited)
PORT      STATE SERVICE
135/tcp   open  msrpc
445/tcp   open  microsoft-ds
5357/tcp  open  wsdapi
5985/tcp  open  wsman
47001/tcp open  winrm
49664/tcp open  unknown
49665/tcp open  unknown
49666/tcp open  unknown
49667/tcp open  unknown
49668/tcp open  unknown
49669/tcp open  unknown

Nmap done: 1 IP address (1 host up) scanned in 231.97 seconds



********************************************************************************
【把 VMware Tools 移除後測試】

也就是 VMware Tools 沒有影響。

********************************************************************************

Copilot

這些預設開啟的 port 用途如下:
  • 135/tcp: Microsoft RPC (Remote Procedure Call) 服務,用於遠程過程呼叫。
  • 445/tcp: SMB (Server Message Block) 服務,用於文件和打印共享。
  • 5357/tcp: WSDAPI (Web Services on Devices API),用於設備的網絡通訊。
  • 5985/tcp: WS-Management 服務,用於管理和監控。
  • 47001/tcp: WinRM (Windows Remote Management),用於遠程管理。
  • 49664/tcp-49669/tcp: 這些是未知用途的 port,可能是用於內部服務或應用程式。

Port用途服務名稱檔案名稱程序名稱
135/tcpMicrosoft RPCRPC 服務rpcss.dllsvchost.exe
445/tcpSMB (Server Message Block)文件和打印共享srv2.syssrv2svc.exe
5357/tcpWSDAPI (Web Services on Devices API)WSDAPI 服務wsddsvc.dllwsddsvc.exe
5985/tcpWS-ManagementWindows 管理員工具winrm.exewinrm.exe
47001/tcpWinRM (Windows Remote Management)Windows 遠程管理winrm.exewinrm.exe
49664/tcp-49669/tcp未知用途未知未知未知

********************************************************************************

這些 port 分別是 Windows 服務中,哪個服務開起? 服務名稱 ?

ChatGPT 說:

以下是每個端口對應的 Windows 服務名稱和相關用途:

135/tcp (msrpc)

服務名稱: RPC Endpoint Mapper
用途: 為 RPC(Remote Procedure Call)通訊提供端口分配。當應用程式通過 RPC 與服務溝通時,這個服務負責分配合適的端口並進行通信。

445/tcp (microsoft-ds)

服務名稱: SMB (Server Message Block)
用途: 用於檔案共享、打印共享和網路瀏覽等功能。這是為了實現 SMB 協議所開啟的端口,許多文件共享服務依賴它運行。

5357/tcp (wsdapi)

服務名稱: Function Discovery Resource Publication
用途: 使用 Web Services on Devices (WSD) 協議來發佈網路設備(例如打印機、掃描儀)並允許其他設備發現它們。

5985/tcp (wsman)

服務名稱: Windows Remote Management (WS-Management)
用途: 這是 Windows 的遠端管理框架,用於支持基於標準的管理協議,允許系統管理員遠端配置和管理 Windows 系統,並且與 PowerShell Remoting 密切相關。

47001/tcp (winrm)

服務名稱: Windows Remote Management (WS-Management)
用途: 與 5985 端口類似,提供 WinRM 的額外功能支持,用於遠端管理。

49664/tcp 到 49669/tcp (unknown)

服務名稱: 這些端口屬於 RPC 動態端口範圍,通常由以下幾個核心 Windows 服務使用:
服務名稱: Remote Procedure Call (RPC)、DCOM Server Process Launcher、Distributed Transaction Coordinator、或其他使用 RPC 的服務。
用途: 這些動態端口是隨機分配給基於 RPC 的服務。每次 RPC 通信時,系統會從一個範圍內動態分配端口,具體端口號會隨著時間和需求變化。

如果需要具體服務對應這些動態端口,可以使用 PowerShell 或 Netstat 等工具來查看實際運行中的服務。

********************************************************************************

【用 Netstat, tasklist, PowerShell 查看實際運行中的服務】

netstat -ano
-a: 顯示所有活動的連接和監聽端口。
-n: 以數字格式顯示地址和端口號。
-o: 顯示與每個連接關聯的進程 ID (PID)。



tasklist /svc /FI "PID eq <PID>"

使用 PowerShell 查看端口和進程

PS C:\> Get-Process -Id (Get-NetTCPConnection | Where-Object { $_.LocalPort -eq 135 }).OwningProcess

Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
-------  ------    -----      -----     ------     --  -- -----------
    879      18     4628      11680       0.64    972   0 svchost


PS C:\>


如果想 PowerShell 列出所有開放的 TCP 端口和對應的進程名稱:

Get-NetTCPConnection | ForEach-Object {
    $proc = Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue
    [PSCustomObject]@{
        LocalPort   = $_.LocalPort
        RemotePort  = $_.RemotePort
        State       = $_.State
        ProcessName = $proc.ProcessName
    }
} | Sort-Object LocalPort

PS C:\> Get-NetTCPConnection | ForEach-Object {
>>     $proc = Get-Process -Id $_.OwningProcess -ErrorAction SilentlyContinue
>>     [PSCustomObject]@{
>>         LocalPort   = $_.LocalPort
>>         RemotePort  = $_.RemotePort
>>         State       = $_.State
>>         ProcessName = $proc.ProcessName
>>     }
>> } | Sort-Object LocalPort

LocalPort RemotePort  State ProcessName
--------- ----------  ----- -----------
      135          0 Listen svchost
      135          0 Listen svchost
      139          0 Listen System
      445          0 Listen System
     5357          0 Listen System
     5985          0 Listen System
    47001          0 Listen System
    49664          0 Listen lsass
    49664          0 Listen lsass
    49665          0 Listen wininit
    49665          0 Listen wininit
    49666          0 Listen svchost
    49666          0 Listen svchost
    49667          0 Listen svchost
    49667          0 Listen svchost
    49668          0 Listen spoolsv
    49668          0 Listen spoolsv
    49669          0 Listen services
    49669          0 Listen services


PS C:\>

使用 Get-WmiObject 檢查服務

PS C:\> Get-WmiObject Win32_Service | Where-Object { $_.ProcessId -eq 972 }


ExitCode  : 0
Name      : RpcEptMapper
ProcessId : 972
StartMode : Auto
State     : Running
Status    : OK

ExitCode  : 0
Name      : RpcSs
ProcessId : 972
StartMode : Auto
State     : Running
Status    : OK

PS C:\>

整合步驟

  1. 使用 netstat -ano 確定使用特定端口的 PID。
  2. 使用 tasklist /svc /FI "PID eq <PID>" 或 PowerShell 查詢該 PID 對應的服務名稱或進程。
  3. 使用 PowerShell 查詢特定端口或進程的更多詳細資訊。

********************************************************************************

個別查有些麻煩,一口氣全部列出的方法看這篇

[研究]列出 Windows Server 2022預設所有開放的 Port ? 用途 ? 服務名稱 ? 檔案名稱 ? 程序名稱 ?

(完)

相關

[研究]列出 Windows Server 2022預設所有開放的 Port ? 用途 ? 服務名稱 ? 檔案名稱 ? 程序名稱 ?https://shaurong.blogspot.com/2024/10/windows-port.html

[研究]Windows Server 2022預設開啟那些 Port (nmap, netstat, tasklist, powershell)
https://shaurong.blogspot.com/2024/10/windows-server-2022-port-nmap-netstat.html



沒有留言:

張貼留言