如何透過終端機識別遠端伺服器連接埠上實際運行的服務?

如何透過終端機識別遠端伺服器連接埠上實際運行的服務?

我在目標伺服器上使用了 nmap,它會傳回以下服務

PORT     STATE SERVICE       VERSION
53/tcp   open  domain?
80/tcp   open  http          Microsoft IIS httpd 10.0
88/tcp   open  kerberos-sec  Microsoft Windows Kerberos (server time: 2021-03-17 07:07:34Z)
135/tcp  open  msrpc         Microsoft Windows RPC
139/tcp  open  netbios-ssn   Microsoft Windows netbios-ssn
389/tcp  open  ldap
443/tcp  open  https?
445/tcp  open  microsoft-ds?
464/tcp  open  kpasswd5?
593/tcp  open  ncacn_http    Microsoft Windows RPC over HTTP 1.0
636/tcp  open  tcpwrapped
3268/tcp open  ldap
3269/tcp open  tcpwrapped
3389/tcp open  ms-wbt-server Microsoft Terminal Services

問題是如何識別 Nmap 可能錯誤識別的連接埠上運行的真實服務。例如,在連接埠 53 上,如何透過終端機確保 DNS 服務正在其上運作?

我可以使用哪種技術?我無權訪問目標伺服器,因此看不到伺服器上運行的進程。

答案1

正如 Steffen 指出的,判斷伺服器 X 是否在主機 Z 上的連接埠 Y 上運行的方法是運行與 X 使用相同協定的客戶端,並將其指向主機 Z 上的連接埠 Y。您可以使用許多DNS 用戶端中的任何一個,例如nslookup.

當然,這並不能告訴您有關那裡實際運行的內容的任何信息,除了它與您使用的協議兼容之外。伺服器幾乎可以是任何東西。例如,連接埠80 上的偵聽器(來自您的範例)可能只是一個小腳本,它只是用「HTTP 201 No content\r\nServer: Microsoft IIS httpd 10.0\r\n\r\n」回應任何TCP握手。不用說它是特定的IIS 10.0 了。

Nmap 的內建識別器腳本可能比您更擅長識別大多數伺服器,儘管它們也非常不靈活,如果有人嘗試,很容易被愚弄。熟悉相關工具和協定的人很可能在異常情況下提取比腳本更多的資訊(例如一台伺服器冒充另一台伺服器,或者管理員故意隱藏根據識別伺服器的常見「告訴」)到 Nmap)。然而,一般來說,傳授這種熟悉的基本知識超出了這個答案的範圍,甚至超出了這個網站的範圍。

相關內容