这里的服务是指系统中用来提供服务的一些程序,如文件传输服务(FTP)、远程登录服务(SSH)等,在这些服务中包括一些指纹信息,如端口、服务名、提供商及版本等。本文介绍对服务信息进行识别的方法。

1. Nmap服务识别

Nmap工具中提供了一些选项,可以用来进行服务识别。下面分别介绍使用这些选项对服务进行识别的方法。

(1)服务版本识别

每个服务都有对应的版本。通常情况下,在一些旧版本中可能存在漏洞,如果存在漏洞的话,入侵者可以对该主机实施渗透,进而获取重要信息。因此,为了提高系统的安全性,应及时修复漏洞,避免黑客入侵。使用Nmap识别服务版本的语法格式如下:

nmap -sV [host]

其中,-sV表示实施服务版本探测。

识别目标主机192.168.33.152上的所有开放服务版本。执行命令如下:

root@daxueba:~# nmap -sV 192.168.33.152

Starting Nmap 7.70 ( https://nmap.org ) at 2021-07-31 15:11 CST

Nmap scan report for 192.168.33.152 (192.168.33.152)

Host is up (0.00016s latency).

Not shown: 997 closed ports

PORT  STATE SERVICE VERSION

21/tcp  open  ftp   vsftpd 3.0.3

22/tcp  open  ssh   OpenSSH 7.8p1 Debian 1 (protocol 2.0)

80/tcp  open  http   Apache httpd 2.4.34 ((Debian))

MAC Address: 00:0C:29:FD:58:4B (VMware)

Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at

https://nmap.org/submit/ .

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

从以上输出信息中可以看到识别出的服务相关信息。在输出的信息中包括4列,分别是PORT(端口)、STATE(状态)、SERVICE(服务)和VERSION(版本)。通过分析每列信息,可以获取到对应服务的相关信息。例如,TCP端口21对应的服务为FTP,版本为vsftpd 3.0.3。从倒数第2行中还可以看到目标主机的服务操作信息为UNIX或Linux。

(2)扫描所有端口

Nmap中提供了一个选项,可以用来扫描所有端口。用于扫描所有端口的语法格式如下:

nmap --allports [host]

其中,--allports表示扫描所有端口。默认情况下,Nmap仅扫描1000个端口,而且会跳过TCP端口9100。

扫描目标主机192.168.33.147上开放的所有端口。执行命令如下:

root@daxueba:~# nmap --allports 192.168.33.147

Starting Nmap 7.70 ( https://nmap.org ) at 2021-07-31 17:23 CST

Nmap scan report for 192.168.33.147 (192.168.33.147)

Host is up (0.0024s latency).

Not shown: 977 closed ports  #关闭端口

PORT   STATE SERVICE  #开放端口信息

21/tcp   open  ftp

22/tcp   open  ssh

23/tcp   open  telnet

25/tcp   open  smtp

53/tcp   open  domain

80/tcp   open  http

111/tcp  open  rpcbind

139/tcp  open  netbios-ssn

445/tcp  open  microsoft-ds

512/tcp  open  exec

513/tcp  open  login

514/tcp  open  shell

1099/tcp  open  rmiregistry

1524/tcp  open  ingreslock

2049/tcp  open  nfs

2121/tcp  open  ccproxy-ftp

3306/tcp  open  mysql

5432/tcp  open  postgresql

5900/tcp  open  vnc

6000/tcp  open  X11

6667/tcp  open  irc

8009/tcp  open  ajp13

8180/tcp  open  unknown

MAC Address: 00:0C:29:3E:84:91 (VMware)

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

从以上输出信息中可以看到目标主机上开放的所有端口,而且还可以看到共有977个端口是关闭的。例如,目标主机中开放的端口有21、22、23、25和53等。

(3)指定服务版本扫描强度

当使用-sV选项实施版本扫描时,Nmap会发送一系列探测报文,每个报文都被赋予一个1~9之间的值。被赋予较低值的探测报文对大范围的常见服务有效,而被赋予较高值的报文一般没什么用。强度水平说明了应该使用哪些探测报文,数值越高,服务越有可能被正确识别。但是,高强度扫描更耗费时间,强度值必须在0~9之间,默认是7。用于指定服务版本扫描强度的语法格式如下:

nmap --version-intensity

其中,--version-intensity表示设置服务版本的扫描强度。其扫描强度的级别范围为0~9,0表示轻量级,9表示尝试每个探测。

指定服务版本扫描强度为9,将对目标主机实施服务识别。执行命令如下:

root@daxueba:~# nmap --version-intensity 9 192.168.33.152

Starting Nmap 7.70 ( https://nmap.org ) at 2021-07-31 15:14 CST

Nmap scan report for 192.168.33.152 (192.168.33.152)

Host is up (0.000096s latency).

Not shown: 997 closed ports

PORT  STATE SERVICE

21/tcp  open ftp

22/tcp  open ssh

80/tcp  open http

MAC Address: 00:0C:29:FD:58:4B (VMware)

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

从输出信息中可以看到,识别出的目标主机上运行的服务,分别有FTP、SSH和HTTP。

(4)轻量级扫描

我们还可以使用--version-light选项实施轻量级模式扫描。使用这种模式扫描的速度非常快,但是它识别服务的可能性也略微小一点。实施轻量级扫描的语法格式如下:

nmap --version-light [host]

其中,--version-light表示实施轻量级扫描,该选项相当于--version-intensity 2的别名。

对目标主机实施轻量级扫描。执行命令如下:

root@daxueba:~# nmap --version-light 192.168.33.152

Starting Nmap 7.70 ( https://nmap.org ) at 2021-07-31 15:19 CST

Nmap scan report for 192.168.33.152 (192.168.33.152)

Host is up (0.000085s latency).

Not shown: 997 closed ports

PORT  STATE SERVICE

21/tcp open ftp

22/tcp open ssh

80/tcp open http

MAC Address: 00:0C:29:FD:58:4B (VMware)

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

(5)探测所有端口

使用--version-all选项可以对每个端口尝试发送探测报文。其中,使用该选项探测所有端口的语法格式如下:

nmap --version-all [host]

其中,--version-all选项表示保证对每个端口尝试发送探测报文,该选项相当于--version-intensity 9的别名。

(6)跟踪版本扫描

Nmap工具中提供了一个--version-trace选项,可以用来跟踪版本扫描,以获取更详细的信息。用于跟踪版本扫描的语法格式如下:

nmap --version-trace [host]

其中,--version-trace选项表示实施跟踪版本扫描。

对目标主机的服务实施跟踪版本扫描。执行命令如下:

root@daxueba:~# nmap --version-trace 192.168.33.152

Starting Nmap 7.70 ( https://nmap.org ) at 2021-07-31 18:03 CST

PORTS: Using top 1000 ports found open (TCP:1000, UDP:0, SCTP:0)

--------------- Timing report --------------- #时间报告

hostgroups: min 1, max 100000

rtt-timeouts: init 1000, min 100, max 10000

max-scan-delay: TCP 1000, UDP 1000, SCTP 1000

parallelism: min 0, max 0

max-retries: 10, host-timeout: 0

min-rate: 0, max-rate: 0

---------------------------------------------

Packet capture filter (device eth0): arp and arp[18:4] = 0x000C2917 and arp[22:2] = 0x5F2B

Overall sending rates: 30.57 packets / s, 1283.89 bytes / s.

mass_rdns: Using DNS server 192.168.33.2 #DNS服务器

mass_rdns: 0.00s 0/1 [#: 1, OK: 0, NX: 0, DR: 0, SF: 0, TR: 1]

DNS resolution of 1 IPs took 0.00s. Mode: Async [#: 1, OK: 1, NX: 0, DR:

0, SF: 0, TR: 1, CN: 0]

Packet capture filter (device eth0): dst host 192.168.33.154 and (icmp or icmp6 or ((tcp or udp or sctp) and (src host 192.168.33.152))) #包捕获过滤器

Overall sending rates: 12429.46 packets / s, 546896.36 bytes / s.  #综合发送速率

Nmap scan report for 192.168.33.152 (192.168.33.152) #Nmap扫描报告

Host is up (0.000088s latency).

Scanned at 2021-07-31 18:03:28 CST for 0s

Not shown: 997 closed ports

PORT  STATE SERVICE

21/tcp  open  ftp

22/tcp  open  ssh

80/tcp  open  http

MAC Address: 00:0C:29:FD:58:4B (VMware)

Final times for host: srtt: 88 rttvar: 11 to: 100000

Read from /usr/bin/../share/nmap: nmap-mac-prefixes nmap-payloads nmap-services.

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

从以上输出信息中可以看到获取到的详细信息。例如,时间报告、使用的DNS服务器、数据包过滤器和发送速率等。

(7)实施RPC扫描

RPC扫描通常和Nmap的许多端口扫描方法结合使用。这种扫描方式通过向所有处于打开状态的TCP/UDP端口,发送SunRPC程序NULL命令,以确定它们是否是RPC端口。如果是,就判断是哪种程序及其版本。因此,我们也可以使用RCP扫描方式来识别服务的版本信息。RPC扫描的语法格式如下:

nmap -sR [host]

其中,-sR选项表示实施RPC扫描。

对目标主机192.168.33.152实施RPC扫描。执行命令如下:

root@daxueba:~# nmap -sR 192.168.33.152

WARNING: -sR is now an alias for -sV and activates version detection as well as RPC scan.

Starting Nmap 7.70 ( https://nmap.org ) at 2021-07-31 15:20 CST

Nmap scan report for 192.168.33.152 (192.168.33.152)

Host is up (0.000094s latency).

Not shown: 997 closed ports

PORT  STATE SERVICE VERSION

21/tcp  open ftp    vsftpd 3.0.3

22/tcp  open ssh   OpenSSH 7.8p1 Debian 1 (protocol 2.0)

80/tcp  open http   Apache httpd 2.4.34 ((Debian))

MAC Address: 00:0C:29:FD:58:4B (VMware)

Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at

https://nmap.org/submit/ .

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

从以上输出信息中可以看到目标主机上开放的服务指纹信息。

2. Amap服务识别

Amap工具被设计的目的就是用来识别网络服务的。用于识别服务的语法格式如下:

amap [host] [port]

使用Amap工具对目标主机192.168.33.152上的22号端口服务实施扫描。执行命令如下:

root@daxueba:~# amap 192.168.33.152 22

amap v5.4 (www.thc.org/thc-amap) started at 2021-07-31 18:14:06 - APPLICATION

MAPPING mode

Protocol on 192.168.33.152:22/tcp matches ssh

Protocol on 192.168.33.152:22/tcp matches ssh-openssh

Unidentified ports: none.

amap v5.4 finished at 2021-07-31 18:14:12

从输出的信息中可以看到,22号端口匹配的服务为SSH。