我在目标服务器上使用了 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 识别服务器的常见“提示”)比脚本提取更多信息。但是,一般来说,传授这种熟悉程度的基本知识超出了本答案或本网站的范围。