如何通过终端识别远程服务器端口上正在运行的实际服务?

如何通过终端识别远程服务器端口上正在运行的实际服务?

我在目标服务器上使用了 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,您可以使用许多 DNS 客户端中的任何一个,比如nslookup

当然,除了它与您使用的协议兼容之外,这并没有告诉您那里实际运行的内容。服务器几乎可以是任何东西。例如,端口 80 上的侦听器(来自您的示例)可能只是一个小脚本,它只是用“HTTP 201 No content\r\nServer: Microsoft IIS httpd 10.0\r\n\r\n”响应任何 TCP 握手,这大致是一个有效的 HTTP 响应(尽管即使客户端没有发送 HTTP 请求,它也可能发送该响应),但并不意味着侦听器在任何有用的意义上都是 Web 服务器,更不用说它是特定的 IIS 10.0。

Nmap 的内置识别器脚本可能比您更擅长识别大多数服务器,但它们也非常不灵活,如果有人试图欺骗,它们很容易被欺骗。熟悉相关工具和协议的人很可能在特殊情况下(例如一台服务器冒充另一台服务器,或者管理员故意隐藏了根据 Nmap 识别服务器的常见“提示”)比脚本提取更多信息。但是,一般来说,传授这种熟悉程度的基本知识超出了本答案或本网站的范围。

相关内容