网络扫描:局域网网络环境
在实施局域网扫描之前,需要对其网络环境有所了解,如网络范围、经过的路由等,然后才可以确定扫描的目标。本文对局域网网络环境进行简单介绍。
1. 网络范围
当用户实施局域网扫描时,首先要确定一个网络范围,如单个IP地址、多个IP地址、一个地址范围或整个子网,否则将会浪费大量的时间。IP地址是由两部分组成,即网络地址和主机地址。网络地址表示其属于互联网的哪一个网络,主机地址表示其属于该网络中的哪一台主机。二者是主从关系。IP地址根据网络号和主机号,分为A类(1.0.0.0~126.0.0.0)、B类(128.1.0.0~191.255.0.0)和C类(192.0.1.0~223.255.255.0)三类及特殊地址D类和E类。另外,全0和全1都保留不用。下面简单对每类地址作一个分析。
A类:该类地址范围为1.0.0.0~126.0.0.0,子网掩码为255.0.0.0。在该地址中,第一个字节为网络号,后三个字节为主机号。该类IP地址的最前面为0,所以地址的网络号取值于1~126之间。
B类:该类地址范围为128.1.0.0~191.255.0.0,子网掩码为255.255.0.0。在该地址中,前两个字节为网络号,后两个字节为主机号。该类IP地址的最前面为10,所以地址的网络号取值于128~191之间。
C类:该类地址范围为192.0.1.0~223.255.255.0,子网掩码为255.255.255.0。在该地址中,前3个字节为网络号,最后一个字节为主机号。该类IP地址的最前面为110,所以地址的网络号取值于129~223之间。
D类:是多播地址。该类IP地址的最前面为1110,所以地址的网络号取值于224~239之间。一般用于多路广播用户。多播地址是让源设备能够将分组发送给一组设备的地址。属于多播组的设备将被分配一个多播组IP地址,多播地址范围为224.0.0.0~239.255.255.255。由于多播地址表示一组设备,因此只能用作分组的目标地址。源地址总是为单播地址。多播MAC地址以十六进制值01-00-5E开头,余下的6个十六进制位是根据IP多播组地址的最后23位转换得到的。
E类:是保留地址。该类IP地址的最前面为1111,所以地址的网络号取值于240~255之间。
在扫描时还可以通过CIDR格式来指定扫描整个子网。其中,CIDR格式是由网络地址和子网掩码两部分组成,中间使用斜杠(/)分隔。下面将给出一个CIDR和子网掩码对应列表,如表1所示。
表1 CIDR对照表
在IP地址中,还有一种特殊的IP地址是广播地址。广播地址是专门用于同时向网络中所有工作站进行发送的一个地址。在使用TCP/IP协议的网络中,主机标识段host ID为全1的IP地址为广播地址,广播的分组传送给host ID段所涉及的所有计算机。例如,10.0.0.0(255.0.0.0)网段,其广播地址为10.255.255.255;172.16.0.0(255.255.0.0)网段,其广播地址为172.16.255.255;192.168.1.0(255.255.255.0)网段,其广播地址为192.168.1.255。其中,广播地址对应的MAC地址为FF-FF-FF-FF-FF-FF。
(1)使用Netmask工具
在Kali Linux中,默认提供了一个名为Netmask工具,可以用来实现IP地址格式转换。该工具可以在IP范围、子网掩码、CIDR、Cisco等格式中互相转换,并且提供了IP地址的点分十进制、十六进制、八进制、二进制之间的互相转换。
使用Netmask工具将IP范围转换为CIDR格式。执行命令如下:
root@daxueba:~# netmask -c 192.168.0.0:192.168.2.255
192.168.0.0/23
192.168.2.0/24
从以上输出的信息中可以看到,已经成功地将IP范围转换为CIDR格式了。
使用Netmask工具将IP范围转换为标准的子网掩码格式。执行命令如下:
root@daxueba:~# netmask -s 192.168.0.0:192.168.2.255
192.168.0.0/255.255.254.0
192.168.2.0/255.255.255.0
从以上输出的信息中可以看到,已经成功地将IP范围转换为子网掩码格式了。
使用Netmask工具将IP范围转换到Cisco格式。执行命令如下:
root@daxueba:~# netmask -i 192.168.0.0:192.168.2.255
192.168.0.0 0.0.1.255
192.168.2.0 0.0.0.255
从以上输出的信息中可以看到,已经成功地将IP范围转换为Cisco格式了。
使用Netmask工具将CIDR格式转换到IP范围格式。执行命令如下:
root@daxueba:~# netmask -r 192.168.0.0/23
192.168.0.0-192.168.1.255 (512)
从以上输出的信息中可以看到,已经成功地将CIDR格式转换为IP范围格式了。
(2)使用Nmap工具实施扫描
Nmap工具提供了一个-iL选项,可以对指定的目标列表实施扫描。使用该工具的语法格式如下:
nmap -iL [inputfilename]
以上语法中的选项及参数含义如下:
-iL:从文件列表中读取目标地址。该列表支持任何格式的地址,包括IP地址、主机名、CIDR、IPv6或者八位字节范围,而且每一项必须以一个或多个空格、制表符或换行符分开。
inputfilename:地址列表文件名。
使用Nmap工具对192.168.33.0/24整个子网中的主机进行扫描。这里将该目标写入hosts.list文件,具体如下:
root@daxueba:~# vi hosts.list
192.168.33.0/24
此时,将使用-iL选项,指定对该目标列表文件实施扫描。执行命令如下:
root@daxueba:~# nmap -iL hosts.list
Starting Nmap 7.70 ( https://nmap.org ) at 2021-07-03 11:28 CST
Nmap scan report for 192.168.33.152 (192.168.33.152)
Host is up (0.00096s 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 scan report for 192.168.33.1 (192.168.33.1)
Host is up (0.00022s latency).
All 1000 scanned ports on 192.168.33.1 (192.168.33.1) are filtered
MAC Address: 00:50:56:C0:00:08 (VMware)
Nmap scan report for 192.168.33.2 (192.168.33.2)
Host is up (0.00044s latency).
All 1000 scanned ports on 192.168.33.2 (192.168.33.2) are closed
MAC Address: 00:50:56:FE:0A:32 (VMware)
Nmap done: 3 IP addresses (3 hosts up) scanned in 4.12 seconds
从以上显示的结果中可以看到,192.168.33.0/24网络内有3台活动主机。其中,活动的主机地址分别是192.168.33.152、192.168.33.1和192.168.33.2。
2. 上级网络
在一个局域网内,用户也可能会使用多个路由器进行串联,以满足扩大原有的网络范围,或者在原有的网络下构建新的网络(子网络)。如果用户连接的是最底层网络的话,则可以通过路由跟踪的方式扫描到上级网络的路由。根据获取的路由信息,可以猜测上级网络的范围大小。下面介绍实施路由跟踪的方法。
(1)使用Nmap工具
Nmap工具提供了一个--traceroute选项,可以用来实现路由跟踪。下面介绍使用Nmap工具实施路由跟踪,以获取上级网络信息。
使用Nmap工具找出访问百度服务器(www.baidu.com)所经过的网络节点。执行命令如下:
root@daxueba:~# nmap --traceroute www.baidu.com
Starting Nmap 7.70 ( https://nmap.org ) at 2021-07-03 15:28 CST
Nmap scan report for www.baidu.com (61.135.169.125)
Host is up (0.019s latency).
Other addresses for www.baidu.com (not scanned): 61.135.169.121
Not shown: 998 filtered ports
PORT STATE SERVICE
80/tcp open http
443/tcp open https
TRACEROUTE (using port 443/tcp)
HOP RTT ADDRESS
1 1.22 ms 192.168.1.1 (192.168.1.1)
2 3.56 ms 10.188.0.1 (10.188.0.1)
3 ... 10
11 18.21 ms 61.135.169.125
Nmap done: 1 IP address (1 host up) scanned in 9.22 seconds
从输出的信息中可以看到,Nmap工具自动将百度服务器的IP地址解析出来并进行了扫描。从显示的结果中可以看到,本地到百度服务器经过的上级路由依次为192.168.1.1和192.168.0.1。而且,还可以看到目标服务器上开放了80和443两个端口。
(2)使用Traceroute工具
Traceroute是一款用来侦测由源主机到目标主机所经过的路由请求的重要工具。Traceroute工具收到目的主机IP后,首先给目的主机发送一个TTL=1(TTL指生存时间)的UDP数据包,而经过的第一个路由器收到这个数据包之后,自动把TTL减去1。当TTL变为0之后,路由器就将这个数据包抛弃了,并同时产生一个主机不可达的ICMP超时数据报给主机。主机收到这个ICMP数据报以后,会发送一个TTL=2的数据报给目的主机,然后刺激第二个路由器给主机发送ICMP数据报,如此反复,直到到达目的主机。这样Traceroute就可以拿到所有路由器的IP,从而避开IP头只能记录有限路由的IP地址。下面介绍使用Traceroute工具实施路由跟踪的方法。
使用Traceroute工具实施路由跟踪的语法格式如下:
traceroute [Target]
使用Traceroute工具侦测访问百度服务器的所有路由。执行命令如下:
root@daxueba:~# traceroute www.baidu.com
traceroute to www.baidu.com (61.135.169.125), 30 hops max, 60 byte packets
1 192.168.1.1 (192.168.1.1) 0.622 ms 0.520 ms 0.616 ms
2 10.188.0.1 (10.188.0.1) 3.504 ms 3.463 ms 3.528 ms
3 193.6.220.60.adsl-pool.sx.cn (60.220.6.193) 12.510 ms 12.441 ms 12.364 ms
4 253.8.220.60.adsl-pool.sx.cn(60.220.8.253) 14.471 ms 169.9.220.60.
adsl-pool.sx.cn (60.220.9.169) 12.489 ms 249.8.220.60.adsl-pool.sx.cn (60. 220. 8.249) 12.112 ms
5 * 219.158.96.89 (219.158.96.89) 24.322 ms 219.158.103.81 (219.158.103.81) 21.709 ms
6 124.65.194.18 (124.65.194.18) 23.039 ms 124.65.194.166 (124.65.194. 166) 23.014 ms 124.65.194.154 (124.65.194.154) 26.398 ms
7 123.126.0.54 (123.126.0.54) 20.222 ms 19.757 ms 61.51.113.194 (61.51.113.194) 32.827 ms
8 61.49.168.78 (61.49.168.78) 27.969 ms 123.125.248.110 (123.125.248. 110)
21.597 ms 61.49.168.102 (61.49.168.102) 21.717 ms
9 * * *
10 * * *
11 * * *
12 * * *
13 * * *
14 * * *
15 * * *
16 * * *
17 * * *
18 * * *
19 * * *
20 * * *
21 * * *
22 * * *
23 * * *
24 * * *
25 * * *
26 * * *
27 * * *
28 * * *
29 * * *
30 * * *
在以上输出信息中,每条记录序列号从1开始。其中,每个记录就是一跳,每跳表示一个网关。而且我们还可以看到每行有3个时间,单位是ms。这3个时间表示探测数据包向每个网关发送3个数据包后,网关响应后返回的时间。另外,我们还发现有一些行是以星号表示的。出现这种情况,可能是防火墙封掉了ICMP的返回消息,所以我们无法获取到相关的数据包返回数据。从输出的第一行信息可以看到,已经成功解析出百度服务器的IP地址为61.135.169.125,共经过30跳,包大小为60个字节。从显示的记录中可以看到,经过的路由有192.168.1.1、10.188.0.1、60.220.6.193等。
在NAT模式下,Traceroute运行存在问题,无法展现上一级的路由信息。
