服务和版本探测

目的:服务名,版本号

某端口上的服务数据库:Using its nmap-services database of about 2,200 well-known services, Nmap would report that those ports probably correspond to a mail server (SMTP), web server (HTTP), and name server (DNS) respectively.

nmap-service-probes database

Nmap 的 服务探针数据库(可以在 nmap-service-probes 文件中找到)包含一个 端口指令,它将特定的探针与已知端口关联(例如,端口 53 用于 DNS,端口 443 用于 HTTPS)。

不论强度设置如何,某些探针总会被发送到特定端口。例如:

  • DNS 探针总是会应用到端口 53(这是 DNS 服务的默认端口)。
  • SSL 探针总是会应用到端口 443(这是 HTTPS 的默认端口)。
  • 这样可以确保像 DNS 或 SSL 这样的关键探针不会被跳过,哪怕选择了较低的强度等级。

.探测的内容:Nmap tries to determine the service protocol (e.g. FTP, SSH, Telnet, HTTP),

the application name (e.g. ISC BIND, Apache httpd, Solaris telnetd),

the version number, hostname, device type (e.g. printer, router),

the OS family (e.g. Windows, Linux).

Nmap also gets the Common Platform Enumeration (CPE) representation of this information

Nmap has about 6,500 pattern matches for more than 650 protocols such as SMTP, FTP, HTTP, etc.

1
2
(-A)Nmap -A option enables version detection among other things.(-sV + -O操作系统检测 + -sC脚本扫描 + --traceroute)
-A 是 “Aggressive Scan”(激进扫描)选项,它会启用多种高级扫描功能,用于更全面地探测目标主机的服务、操作系统、版本信息等
1
-sV (Version detection) -sR
1
2
3
--allports (Don't exclude any ports from version detection)

By default, Nmap version detection skips TCP port 9100 because some printers simply print anything sent to that port, leading to dozens of pages of HTTP GET requests, binary SSL session requests, etc。打印机
1
2
3
--version-intensity <intensity> (Set version scan intensity)

The default is 7.
1
2
--version-light (Enable light mode)
等于--version-intensity 2
1
2
--version-all (Try every single probe)
等于 --version-intensity 9
1
2
3
--version-trace (Trace version scan activity)
打印在版本扫描时产生的大量调试信息
是--packet-trace所打印信息的子集

在使用 Nmap 进行 版本扫描-sV)时,Nmap 会向目标主机的开放端口发送一系列探针(probes),每个探针都有一个稀有度值,该值的范围是 1 到 9。低稀有度值的探针适用于常见的服务,而高稀有度值的探针通常适用于不太常见的服务。扫描的强度等级决定了哪些探针将被应用。强度越高,越可能正确识别服务,但扫描时间也会越长。

低编号的探针(稀有度值为 1 到 3)适用于常见的、广泛使用的服务(如 HTTP、FTP、SSH),通常能够提供准确的识别结果。

高编号的探针(稀有度值为 7 到 9)用于测试一些不太常见的服务,这些探针比较少见,但在特殊情况下可能非常有用。

0 表示不进行版本检测(等同于不使用 -sV)。

低强度(0–4):适合快速扫描,尤其是当你已经知道目标上有哪些服务时,或者当扫描速度比准确性更重要时。

默认强度(7):适用于大多数情况,速度和全面性之间的平衡,能够覆盖常见服务。

高强度(8–9):适合深入的漏洞评估或扫描未知系统,尤其是当你需要识别不常见的服务时。