带你读《从实践中学习Kali Linux网络扫描》之三:局域网扫描

简介: 本书详细讲解了网络扫描涉及的各项理论知识和技术。书中首先从理论层面帮助读者明确扫描的目的和方式,然后从基本协议的角度讲解了通用的扫描技术,最后过渡到特定类型网络环境的专有扫描技术。在先期扫描完成后,本书继续深入讲解了如何借助响应内容识别目标,并对常见的服务给出了扫描建议。在最后的相关章节,本书详细讲解了高效的数据整理和分析方式。

点击查看第一章
点击查看第二章

第3章 局域网扫描

  局域网(Local Area Network,LAN)是指某一区域内由多台计算机互联成的计算机组。在局域网中,所有的主机之间都可以进行通信。所以,通过对局域网中的主机进行扫描,即可发现活动的主机,并进行数据传输。本章将介绍对局域网中的主机进行扫描的方法。

3.1 网 络 环 境

  在实施局域网扫描之前,需要对其网络环境有所了解,如网络范围、经过的路由等,然后才可以确定扫描的目标。本节将对局域网网络环境进行简单介绍。

3.1.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和子网掩码对应列表,如表3.1所示。

image.png

  在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地址的点分十进制、十六进制、八进制、二进制之间的互相转换。
  【实例3-1】使用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格式了。
  【实例3-2】使用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范围转换为子网掩码格式了。
  【实例3-3】使用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格式了。
  【实例3-4】使用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选项,可以对指定的目标列表实施扫描。使用该工具的语法格式如下:

image.png

  以上语法中的选项及参数含义如下:

  • -iL:从文件列表中读取目标地址。该列表支持任何格式的地址,包括IP地址、主机名、CIDR、IPv6或者八位字节范围,而且每一项必须以一个或多个空格、制表符或换行符分开。
  • inputfilename:地址列表文件名。

  【实例3-5】使用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 2018-12-21 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。

3.1.2 上级网络

  在一个局域网内,用户也可能会使用多个路由器进行串联,以满足扩大原有的网络范围,或者在原有的网络下构建新的网络(子网络)。如果用户连接的是最底层网络的话,则可以通过路由跟踪的方式扫描到上级网络的路由。根据获取的路由信息,可以猜测上级网络的范围大小。下面将介绍实施路由跟踪的方法。
  1.使用Nmap工具
  Nmap工具提供了一个--traceroute选项,可以用来实现路由跟踪。下面介绍使用Nmap工具实施路由跟踪,以获取上级网络信息。
  【实例3-6】使用Nmap工具找出访问百度服务器(www.baidu.com)所经过的网络节点。执行命令如下:

root@daxueba:~# nmap --traceroute www.baidu.com
  Starting Nmap 7.70 ( https://nmap.org ) at 2019-01-04 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工具实施路由跟踪的语法格式如下:

image.png

  【实例3-7】使用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等。

image.png

3.2 ARP扫描

  ARP(Address Resolution Protocol,地址解析协议)是根据IP地址获取物理地址的一个TCP/IP协议。由于主机进行通信时,将会发送一个包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址,所以可以使用主动和被动两种方式来实施ARP扫描。本节将介绍ARP扫描的方法。

3.2.1 主动扫描

  主动扫描就是主动发送一个ARP请求包,等待目标主机的响应。如果目标主机响应了该请求后,则说明该主机是活动的;否则,说明目标主机不在线。下面介绍使用Nmap工具的-PR选项实施ARP主动扫描的方法。
  使用Nmap工具实施ARP主动扫描的语法格式如下:

image.png

  其中,-PR表示实施ARP Ping扫描。
  【实例3-8】使用Nmap实施ARP主动扫描。执行命令如下:
  

root@daxueba:~# nmap -PR 192.168.33.152
  Starting Nmap 7.70 ( https://nmap.org ) at 2018-12-21 11:49 CST
  Nmap scan report for 192.168.33.152 (192.168.33.152)
  Host is up (0.000073s 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.21 seconds

  从以上输出信息中可以看到,目标主机192.168.33.152是活动的。而且,开放的端口有3个,分别是21、22和80。
  1.使用Netdiscover工具
  Netdiscover是一个主动/被动的ARP侦查工具。使用该工具可以在网络上扫描IP地址,检查在线主机或搜索为它们发送的ARP请求。下面介绍使用Netdiscover工具实施ARP主动扫描的方法。语法格式如下:

image.png

  其中,-r [range]表示指定扫描的网络范围。
  【实例3-9】使用Netdiscover工具实施ARP主动扫描。执行命令如下:
  

root@daxueba:~# netdiscover -r 192.168.1.0/24
   Currently scanning: Finished!   |   Screen View: Unique Hosts 
    
   6 Captured ARP Req/Rep packets, from 3 hosts.   Total size: 360  
   ________________________________________________________________
     IP            At MAC Address     Count     Len  MAC Vendor / Hostname      
   ----------------------------------------------------------------
   192.168.1.1   70:85:40:53:e0:35   20   1200   Unknown vendor 
   192.168.1.3    1c:6f:65:c8:4c:89    14    840    GIGA-BYTE TECHNOLOGY 
     CO.,LTD. 
   192.168.1.41   1c:77:f6:60:f2:cc   5   300    GUANGDONG OPPO MOBILE 
  TELECOMMUNICATIONS CORP.,LTD

  从以上输出信息中可以看到,扫描到了3台活动主机,地址分别是192.168.1.1、192.168.1.3和192.168.1.41。
  2.使用arp-scan工具
  arp-scan是一款ARP扫描工具。该工具可以进行单一目标扫描,也可以进行批量扫描。批量扫描的时候,用户可以通过CIDR、地址范围或者列表文件的方式指定。该工具允许用户定制ARP包,构建非标准数据包。同时,该工具会自动解析MAC地址,给出MAC地址对应的硬件厂商,以帮助用户确认目标。其中,使用arp-scan工具扫描的语法格式如下:

image.png

  【实例3-10】使用arp-scan工具对目标主机192.168.1.3实施扫描。执行命令如下:

root@daxueba:~# arp-scan 192.168.1.3
  Interface: eth0, datalink type: EN10MB (Ethernet)
  Starting arp-scan 1.9.5 with 1 hosts (https://github.com/royhills/arp-scan)
  192.168.1.3    1c:6f:65:c8:4c:89    GIGA-BYTE TECHNOLOGY CO.,LTD.
  1 packets received by filter, 0 packets dropped by kernel
  Ending arp-scan 1.9.5: 1 hosts scanned in 0.590 seconds (1.69 hosts/sec). 
  1 responded

  从以上的输出信息中可以看到,目标主机是活动的。此外,还可以看到该目标主机的MAC地址为1c:6f:65:c8:4c:89,网卡生产厂商为GIGA-BYTE TECHNOLOGY CO.,LTD。
  3.使用Arping工具
  Arping是一个ARP级别的Ping工具,主要用来向局域网内的其他主机发送ARP请求的指令。使用该工具可以测试局域网内的某个IP地址是否已被使用。Arping工具的语法格式如下:

image.png

  其中,-c 表示指定发送的ARP包数。
  【实例3-11】使用Arping工具实施ARP扫描,并发送一个ARP请求包。执行命令如下:

root@daxueba:~# arping -c 1 192.168.33.147
  ARPING 192.168.33.147
  60 bytes from 00:0c:29:3e:84:91 (192.168.33.147): index=0 time=238.821 usec
  --- 192.168.33.147 statistics ---
  1 packets transmitted, 1 packets received,   0% unanswered (0 extra)
  rtt min/avg/max/std-dev = 0.239/0.239/0.239/0.000 ms

  从以上输出信息中可以看到,收到了目标主机返回的一个响应包,由此可以说明目标主机是活动的。如果目标主机不在线,将显示如下信息:
  

root@daxueba:~# arping -c 1 192.168.33.128
  ARPING 192.168.33.128
  Timeout
  --- 192.168.33.128 statistics ---
  1 packets transmitted, 0 packets received, 100% unanswered (0 extra)

  从输出的信息中可以看到,返回的消息为Timeout(超时)。

3.2.2 被动扫描

  被动扫描是通过长期监听ARP广播,来发现同一局域网中的活动主机。Netdiscover工具既可以以主动模式扫描主机,也可以以被动模式嗅探存活的主机。下面介绍使用Netdiscover工具实施被动扫描的方法。
  Netdiscover工具实施被动扫描的语法格式如下:

image.png

  其中,-p:被动模式(passive mode),不发送任何数据包,仅嗅探。
  【实例3-12】使用Netdiscover工具实施被动扫描。执行命令如下:  

root@daxueba:~# netdiscover -p

  执行以上命令后,将显示如下信息:

Currently scanning: (passive)   |   Screen View: Unique Hosts     
   
   39 Captured ARP Req/Rep packets, from 3 hosts.   Total size: 2340 
   _________________________________________________________________
     IP          At MAC Address  Coun  Len   MAC Vendor / Hostname      
   -----------------------------------------------------------------
   192.168.1.1   70:85:40:53:e0:35   20   1200  Unknown vendor    
   192.168.1.3   1c:6f:65:c8:4c:89     14    840   GIGA-BYTE TECHNOLOGY 
     CO.,LTD.
   192.168.1.41   1c:77:f6:60:f2:cc  5   300       GUANGDONG OPPO MOBILE 
  TELECOMMUNICATIONS CORP.,LTD 

  从输出的第1行信息中,可以看到正在使用被动模式(passive)实施扫描。从第2行信息中,可以看到嗅探到的包数、主机数及包大小。第3行以下的信息则是嗅探到的包信息。在该部分中共包括6列,分别是IP(IP地址)、At MAC Address(MAC地址)、Count(包数)、Len(长度)、MAC Vendor(MAC地址生产厂商)和Hostname(主机名)。通过分析捕获到的包,可以知道当前局域网中活动的主机IP地址、MAC地址及MAC地址的生产厂商等。例如,主机192.168.13的MAC地址为1c:6f:65:c8:4c:89,MAC地址厂商为GIGA-BYTE,主机名为TECHNOLOGY CO.,LTD.。如果用户不想要继续扫描的话,可以按快捷键Ctrl+C停止被动扫描。

3.2.3 设备MAC查询

  通过对目标主机实施ARP扫描后,可以获取到目标主机的MAC地址,以及MAC生产厂商。但有一些设备无法获取到其生产厂商,此时可以到https://mac.51240.com/ 网站进行查询,以获取更详细的信息。
  【实例3-13】查询设备MAC地址的详细信息。具体操作步骤如下:
  (1)在浏览器中输入MAC地址查询网址https://mac.51240.com/。访问成功后,将显示如图3.1所示的界面。

image.png

  (2)在图3.1所示的“MAC地址”文本框中输入要查询的MAC地址,并单击“查询”按钮即可获取到对应信息。其中,输入的MAC地址格式为00-01-6C-A6-29或00:01:6C:06:A6:29。例如,这里查询MAC地址为70:85:40:53:e0:35的信息,查询结果如图3.2所示。
  (3)从图3.2中可以看到获取到的MAC相关信息,包括组织名称、国家/地区、省份、城市、街道和邮编。

image.png

3.3 DHCP被动扫描

  DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,主要作用就是给内部网或网络服务供应商自动分配IP地址。当一个客户端需要获取一个IP地址时,将会向DHCP服务器发送广播包,收到请求的服务器会提供一个可用的IP地址给客户端,所以可以监听该协议的包。本节将介绍实施DHCP被动扫描的方法。

3.3.1 DHCP工作机制

  DHCP协议采用UDP作为传输协议,主机发送请求消息到DHCP服务器的67号端口,DHCP服务器回应应答消息给主机的68号端口。DHCP协议的具体工作流程如图3.3所示。

image.png

  DHCP工作流程的详细交互过程如下:
  (1)DHCP客户端以广播的方式发出DHCP Discover报文。
  (2)所有的DHCP服务器都能够接收到DHCP客户端发送的DHCP Discover报文,所有的DHCP服务器都会给出响应,向DHCP客户端发送一个DHCP Offer报文。DHCP Offer报文中Your(Client) IP Address字段就是DHCP服务器能够提供给DHCP客户端使用的IP地址,且DHCP服务器会将自己的IP地址放在Option字段中以便DHCP客户端区分不同的DHCP服务器。DHCP服务器在发出此报文后会存在一个已分配IP地址的记录。
  (3)DHCP客户端只能处理其中的一个DHCP Offer报文,一般的原则是DHCP客户端处理最先收到的DHCP Offer报文。DHCP客户端会发出一个广播的DHCP Request报文,在选项字段中会加入选中的DHCP服务器的IP地址和需要的IP地址。
  (4)DHCP服务器收到DHCP Request报文后,判断选项字段中的IP地址是否与自己的地址相同。如果不相同,DHCP服务器不做任何处理只清除相应IP地址分配记录。如果相同,DHCP服务器就会向DHCP客户端响应一个DHCP ACK报文,并在选项字段中增加IP地址的使用租期信息。
  (5)DHCP客户端接收到DHCP ACK报文后,检查DHCP服务器分配的IP地址是否能够使用。如果可以使用,则DHCP客户端成功获得IP地址,并根据IP地址使用租期自动启动续延过程。如果DHCP客户端发现分配的IP地址已经被使用,则DHCP客户端向DHCP服务器发出DHCP Decline报文,通知DHCP服务器禁用这个IP地址。然后,DHCP客户端将开始新的地址申请过程。
  (6)DHCP客户端在成功获取IP地址后,随时可以通过发送DHCP Release报文释放自己的IP地址。DHCP服务器收到DHCP Release报文后,会回收相应的IP地址并重新分配。

3.3.2 被动扫描

  通过对DHCP协议的工作流程进行分析可知,当客户端请求获取IP地址时,会发送一个DHCP Discover广播包,此时,局域网中的所有主机都可以收到该数据包。所以,通过监听方式,即可实现DHCP被动扫描。下面将介绍实施DHCP被动扫描的方法。
  1.使用Nmap工具
  在Nmap中,提供了一个broadcast-dhcp-discover脚本能够用来发送一个DHCP Discover广播包,并显示响应包的具体信息。通过对响应包的信息进行分析,能够找到可分配的IP地址。使用broadcast-dhcp-discover脚本实施被动扫描的语法格式如下:

image.png

  【实例3-14】使用broadcast-dhcp-discover脚本向局域网中发送DHCP Discover广播包。执行命令如下:

root@daxueba:~# nmap --script broadcast-dhcp-discover 
  Starting Nmap 7.70 ( https://nmap.org ) at 2018-12-30 18:30 CST
  Pre-scan script results:
  | broadcast-dhcp-discover: 
  |   Response 1 of 1: 
  |     IP Offered: 192.168.33.156                        #提供的IP地址
  |     DHCP Message Type: DHCPOFFER                    #DHCP消息类型
  |     Server Identifier: 192.168.33.254                #服务器标识符
  |     IP Address Lease Time: 30m00s                    #IP地址释放时间
  |     Subnet Mask: 255.255.255.0                        #子网掩码
  |     Router: 192.168.33.2                            #路由地址
  |     Domain Name Server: 192.168.33.2                #域名服务
  |     Domain Name: localdomain                        #域名
  |     Broadcast Address: 192.168.33.255                #广播地址
  |     NetBIOS Name Server: 192.168.33.2                #NetBIOS名称服务
  |     Renewal Time Value: 15m00s                        #更新时间值
  |_    Rebinding Time Value: 26m15s                    #第二次选择时间值
  WARNING: No targets were specified, so 0 hosts scanned.
  Nmap done: 0 IP addresses (0 hosts up) scanned in 1.32 seconds

  从以上输出信息中可以看到,可以提供的IP地址为192.168.33.156。
  2.使用dhcpdump工具
  dhcpdump是一个命令行格式的DHCP流量嗅探工具,可以捕获DHCP的请求/回复流量,并以用户友好的方式显示解码的DHCP协议消息。使用dhcpdump工具实施被动扫描的语法格式如下:

image.png

  其中,-i [interface]表示指定监听的网络接口。
  在Kali Linux中,默认没有安装dhcpdump工具。如果要使用该工具,则必须先安装。执行命令如下:

root@daxueba:~# apt-get install dhcpdump

  执行以上命令后,如果没有报错,则说明安装成功。
【实例3-15】使用dhcpdump工具实施被动扫描。执行命令如下:

root@daxueba:~# dhcpdump -i eth0
    TIME: 2019-01-02 17:33:29.634                    #时间
      IP: 0.0.0.0 (0:c:29:fd:58:4b) > 255.255.255.255 (ff:ff:ff:ff:ff:ff)                                                        #IP地址
      OP: 1 (BOOTPREQUEST)                            #报文类型
   HTYPE: 1 (Ethernet)                                #客户端的网络硬件地址类型
    HLEN: 6                                        #客户端的网络硬件地址长度
    HOPS: 0                                        #跳数
     XID: 5a162962                                    #事务ID
    SECS: 0                                        #秒数
   FLAGS: 0                                        #标志
  CIADDR: 0.0.0.0                                    #客户端自己的IP地址
  YIADDR: 0.0.0.0                                    #你的IP地址
  SIADDR: 0.0.0.0                                    #服务器的IP地址
  GIADDR: 0.0.0.0                                    #中继代理IP地址
  CHADDR: 00:0c:29:fd:58:4b:00:00:00:00:00:00:00:00:00:00    #客户端硬件地址
   SNAME: .                                        #服务器的主机名
   FNAME: .                                        #启动文件名
  OPTION:  53 (  1) DHCP message type         3 (DHCPREQUEST)    #选项
  OPTION:  12 (  7) Host name                 daxueba
  OPTION:  55 ( 16) Parameter Request List      1 (Subnet mask)
                           28 (Broadcast address)
                            2 (Time offset)
                            3 (Routers)
                           15 (Domainname)
                            6 (DNS server)
                          119 (Domain Search)
                           12 (Host name)
                           44 (NetBIOS name server)
                           47 (NetBIOS scope)
                           26 (Interface MTU)
                          121 (Classless Static Route)
                           42 (NTP servers)
                          249 (MSFT - Classless route)
                           33 (Static route)
                          252 (MSFT - WinSock Proxy Auto Detect)
                          
  ----------------------------------------------------------
    TIME: 2019-01-02 17:33:29.634                    #时间
      IP: 192.168.33.254 (0:50:56:f7:d0:3e) > 192.168.33.152 (0:c:29:fd:58:4b)                                                    #IP地址
      OP: 2 (BOOTPREPLY)                            #报文类型
   HTYPE: 1 (Ethernet)                                #客户端的网络硬件地址类型
    HLEN: 6                                        #客户端的网络硬件地址长度
    HOPS: 0                                        #跳数
     XID: 5a162962                                    #事务ID
    SECS: 0                                        #秒数
   FLAGS: 0                                        #标志
  CIADDR: 0.0.0.0                                    #客户端自己的IP地址
  YIADDR: 192.168.33.152                            #你的IP地址
  SIADDR: 192.168.33.254                            #服务器的IP地址
  GIADDR: 0.0.0.0                                    #中继代理IP地址
  CHADDR: 00:0c:29:fd:58:4b:00:00:00:00:00:00:00:00:00:00    #客户机硬件地址
   SNAME: .                                        #服务器的主机名
   FNAME: .                                        #启动文件名
  OPTION:  53 (  1) DHCP message type         5 (DHCPACK)        #选项
  OPTION:  54 (  4) Server identifier         192.168.33.254
  OPTION:  51 (  4) IP address leasetime      1800 (30m)
  OPTION:   1 (  4) Subnet mask               255.255.255.0
  OPTION:  28 (  4) Broadcast address         192.168.33.255
  OPTION:   3 (  4) Routers                   192.168.33.2
  OPTION:  15 ( 11) Domainname                localdomain
  OPTION:   6 (  4) DNS server                192.168.33.2
  OPTION:  44 (  4) NetBIOS name server       192.168.33.2
  ----------------------------------------------------------

  以上输出的信息,就是一个DHCP请求及响应包信息。通过对以上输出结果的分析,可知道第一个包为BOOTPREQUEST(请求),第二个包为BOOTPREPLY(响应)。

3.4 其 他 监 听

  除ARP和DHCP请求外,在局域网中还有一些协议,会主动发送一些广播或组播包,如BROWSER、SSDP和LLMNR等。此时通过监听方式,可以了解到一些活动主机的信息。本节将介绍对这些协议数据包进行监听的方法。
  1.使用Wireshark工具
  Wireshark是一款非常流行的网络封包分析软件,功能十分强大。使用该工具可以截取各种网络封包,并显示网络封包的详细信息。下面将介绍使用Wireshark工具监听局域网中的各种广播数据包。
  【实例3-16】使用Wireshark进行数据包监听。具体操作步骤如下:
  (1)关闭系统中运行的程序,以免产生流量影响对数据包的分析。然后启动Wireshark工具。在图形界面依次选择“应用程序”|“嗅探/欺骗”|wireshark命令,将弹出如图3.4所示对话框。或者,在命令行输入如下命令:

root@daxueba:~# wireshark

  执行以上命令后,将弹出如图3.4所示对话框。

image.png

  (2)该对话框中显示的是一个警告信息,提示在init.lua文件中使用dofile函数禁用了使用超级用户运行Wireshark。这是因为Wireshark工具是使用Lua语言编写的,并且在Kali Linux中的init.lua文件中有一处语法错误,所以会提示Lua:Error during loading:。此时只需要将init.lua文件中倒数第二行代码修改一下就可以了,原文件中倒数第一、二行代码如下:

root@daxueba:~# vi /usr/share/wireshark/init.lua
  dofile(DATA_DIR.."console.lua")
  --dofile(DATA_DIR.."dtd_gen.lua")

  
  将以上第1行修改如下:

--dofile(DATA_DIR.."console.lua")
  --dofile(DATA_DIR.."dtd_gen.lua")

  修改完该内容后,再次运行Wireshark将不会提示以上警告信息。
  (3)此时,单击OK按钮,即可启动Wireshark工具,如图3.5所示。

image.png

  (4)在其中选择eth0接口,并单击按钮,将开始捕获数据包,如图3.6所示。或者,直接双击选择的网络接口,也可以开始捕获数据包。
  (5)从图3.6中可以看到监听到的所有数据包。从Protocol(协议)列中可以看到每个数据包的协议。例如,监听到的协议数据包有ICMPv6、BROWSER、SSDP、NBNS、LLMNR、ARP、DHCP。此时,通过分析源(Source)和目标地址(Destination),即可知道这些包是由哪个主机发送的,进而确定该主机的状态。为了能够快速找到广播的数据包,可以使用显示过滤器进行过滤。显示过滤器的语法格式如下:

image.png

  在本例中广播地址为192.168.33.255,所以输入的显示过滤器为“ip.dst==192.168.33.255”。当过滤成功后,显示如图3.7所示。
  (6)在图3.7中显示的数据包都是广播数据包。发送这几个广播数据包的源IP地址分别是192.168.33.147和192.168.33.1。由此可以说明,当前局域网中IP地址为192.168.33.147和192.168.33.1的主机是活动的。

image.png

image.png

  2.使用Tcpdump工具
  Tcpdump是一个命令行的嗅探工具,可以基于过滤表达式抓取网络中的报文,分析报文,并且在包层面输出报文内容以便于包层面的分析。其中,使用Tcpdump工具监听数据包的语法格式如下:

image.png

  以上语法中的选项及含义如下:

  • -i < interface >:指定监听的网络接口。
  • -w < file >:指定数据包保存的文件名。
      【实例3-17】使用Tcpdump工具监听局域网(192.168.33.0/24)中的广播数据包。执行命令如下:
root@daxueba:~# tcpdump -i eth0 'dst 192.168.33.255'

  执行以上命令后,将显示如下信息:

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
  listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes
  16:42:08.253592 IP 192.168.33.1.netbios-ns > 192.168.33.255.netbios-ns: 
  NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
  16:42:09.003718 IP 192.168.33.1.netbios-ns > 192.168.33.255.netbios-ns: 
  NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
  16:42:09.753975 IP 192.168.33.1.netbios-ns > 192.168.33.255.netbios-ns: 
  NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
  16:43:40.623859 IP 192.168.33.147.netbios-dgm > 192.168.33.255.netbios-dgm:
  NBT UDP PACKET(138)
  16:43:40.623967 IP 192.168.33.147.netbios-dgm > 192.168.33.255.netbios-dgm:
  NBT UDP PACKET(138)
  16:55:47.618389 IP 192.168.33.147.netbios-dgm > 192.168.33.255.netbios-dgm:
  NBT UDP PACKET(138)
  16:55:47.618562 IP 192.168.33.147.netbios-dgm > 192.168.33.255.netbios-dgm:
  NBT UDP PACKET(138)
  16:58:20.188490 IP 192.168.33.1.netbios-ns > 192.168.33.255.netbios-ns: 
  NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
  16:58:20.939089 IP 192.168.33.1.netbios-ns > 192.168.33.255.netbios-ns: 
  NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST
  16:58:21.689402 IP 192.168.33.1.netbios-ns > 192.168.33.255.netbios-ns: 
  NBT UDP PACKET(137): QUERY; REQUEST; BROADCAST

  从以上输出信息中可以看到监听到的数据包。从显示的包信息中,可以看到数据包的源和目标IP地址、使用的协议及包长度。如果想停止监听数据包的话,按Ctrl+C组合键后,将显示如下信息:

^C
  10 packets captured
  10 packets received by filter
  0 packets dropped by kernel

  
  从输出的信息中可以看到,捕获到了10个数据包。在以上命令中,没有指定将输出结果写入到一个文件中,所以是标准输出。如果使用-w选项指定捕获文件的话,将不会是标准输出。此外,还可以使用Wireshark工具,以图形界面分析捕获到的包。

相关文章
|
17天前
|
安全 Linux 虚拟化
网络名称空间在Linux虚拟化技术中的位置
网络名称空间(Network Namespaces)是Linux内核特性之一,提供了隔离网络环境的能力,使得每个网络名称空间都拥有独立的网络设备、IP地址、路由表、端口号范围以及iptables规则等。这一特性在Linux虚拟化技术中占据了核心位置🌟,它不仅为构建轻量级虚拟化解决方案(如容器📦)提供了基础支持,也在传统的虚拟机技术中发挥作用,实现资源隔离和网络虚拟化。
网络名称空间在Linux虚拟化技术中的位置
|
17天前
|
网络协议 安全 Linux
Linux网络名称空间之独立网络资源管理
Linux网络名称空间是一种强大的虚拟化技术🛠️,它允许用户创建隔离的网络环境🌐,每个环境拥有独立的网络资源和配置。这项技术对于云计算☁️、容器化应用📦和网络安全🔒等领域至关重要。本文将详细介绍在Linux网络名称空间中可以拥有的独立网络资源,并指出应用开发人员在使用时应注意的重点。
|
17天前
|
安全 网络协议 Linux
Linux网络名称空间概述
Linux网络名称空间是操作系统级别的一种虚拟化技术🔄,它允许创建隔离的网络环境🌐,使得每个环境拥有自己独立的网络资源,如IP地址📍、路由表🗺️、防火墙规则🔥等。这种技术是Linux内核功能的一部分,为不同的用户空间进程提供了一种创建和使用独立网络协议栈的方式。本文旨在全方面、多维度解释Linux网络名称空间的概念、必要性和作用。
Linux网络名称空间概述
|
25天前
|
Linux
Linux中centos桌面消失网络图标
Linux中centos桌面消失网络图标
13 0
|
15天前
|
存储 算法 Linux
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
39 6
|
5天前
|
机器学习/深度学习 缓存 监控
linux查看CPU、内存、网络、磁盘IO命令
`Linux`系统中,使用`top`命令查看CPU状态,要查看CPU详细信息,可利用`cat /proc/cpuinfo`相关命令。`free`命令用于查看内存使用情况。网络相关命令包括`ifconfig`(查看网卡状态)、`ifdown/ifup`(禁用/启用网卡)、`netstat`(列出网络连接,如`-tuln`组合)以及`nslookup`、`ping`、`telnet`、`traceroute`等。磁盘IO方面,`iostat`(如`-k -p ALL`)显示磁盘IO统计,`iotop`(如`-o -d 1`)则用于查看磁盘IO瓶颈。
|
4天前
|
Unix Linux Windows
Linux的学习之路:3、基础指令(2)
Linux的学习之路:3、基础指令(2)
28 0
|
17天前
|
网络协议 Linux
在Linux中,管理和配置网络接口
在Linux中管理网络接口涉及多个命令,如`ifconfig`(在新版本中被`ip`取代)、`ip`(用于网络设备配置)、`nmcli`(NetworkManager的CLI工具)、`nmtui`(文本界面配置)、`route/ip route`(处理路由表)、`netstat/ss`(显示网络状态)和`hostnamectl/systemctl`(主机名和服务管理)。这些命令帮助用户启动接口、设置IP地址、查看连接和路由信息。不同发行版可能有差异,建议参考相应文档。
19 4
|
1天前
|
存储 监控 网络协议
【计算机网络】第三章 数据链路层(虚拟机与局域网)
【计算机网络】第三章 数据链路层(虚拟机与局域网)
|
2天前
|
存储 网络协议 关系型数据库
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信
Python从入门到精通:2.3.2数据库操作与网络编程——学习socket编程,实现简单的TCP/UDP通信