天天看點

帶你讀《從實踐中學習Kali Linux網絡掃描》之三:區域網路掃描第3章 區域網路掃描

點選檢視第一章 點選檢視第二章

第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所示。

帶你讀《從實踐中學習Kali Linux網絡掃描》之三:區域網路掃描第3章 區域網路掃描

  在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選項,可以對指定的目标清單實施掃描。使用該工具的文法格式如下:

帶你讀《從實踐中學習Kali Linux網絡掃描》之三:區域網路掃描第3章 區域網路掃描

  以上文法中的選項及參數含義如下:

  • -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工具實施路由跟蹤的文法格式如下:

帶你讀《從實踐中學習Kali Linux網絡掃描》之三:區域網路掃描第3章 區域網路掃描

  【執行個體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等。

帶你讀《從實踐中學習Kali Linux網絡掃描》之三:區域網路掃描第3章 區域網路掃描

3.2 ARP掃描

  ARP(Address Resolution Protocol,位址解析協定)是根據IP位址擷取實體位址的一個TCP/IP協定。由于主機進行通信時,将會發送一個包含目标IP位址的ARP請求廣播到網絡上的所有主機,并接收傳回消息,以此确定目标的實體位址,是以可以使用主動和被動兩種方式來實施ARP掃描。本節将介紹ARP掃描的方法。

3.2.1 主動掃描

  主動掃描就是主動發送一個ARP請求包,等待目标主機的響應。如果目标主機響應了該請求後,則說明該主機是活動的;否則,說明目标主機不線上。下面介紹使用Nmap工具的-PR選項實施ARP主動掃描的方法。

  使用Nmap工具實施ARP主動掃描的文法格式如下:

帶你讀《從實踐中學習Kali Linux網絡掃描》之三:區域網路掃描第3章 區域網路掃描

  其中,-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主動掃描的方法。文法格式如下:

帶你讀《從實踐中學習Kali Linux網絡掃描》之三:區域網路掃描第3章 區域網路掃描

  其中,-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工具掃描的文法格式如下:

帶你讀《從實踐中學習Kali Linux網絡掃描》之三:區域網路掃描第3章 區域網路掃描

  【執行個體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工具的文法格式如下:

帶你讀《從實踐中學習Kali Linux網絡掃描》之三:區域網路掃描第3章 區域網路掃描

  其中,-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工具實施被動掃描的文法格式如下:

帶你讀《從實踐中學習Kali Linux網絡掃描》之三:區域網路掃描第3章 區域網路掃描

  其中,-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位址查詢網址

。通路成功後,将顯示如圖3.1所示的界面。

帶你讀《從實踐中學習Kali Linux網絡掃描》之三:區域網路掃描第3章 區域網路掃描

  (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相關資訊,包括組織名稱、國家/地區、省份、城市、街道和郵編。

帶你讀《從實踐中學習Kali Linux網絡掃描》之三:區域網路掃描第3章 區域網路掃描

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所示。

帶你讀《從實踐中學習Kali Linux網絡掃描》之三:區域網路掃描第3章 區域網路掃描

  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被動掃描的方法。

  在Nmap中,提供了一個broadcast-dhcp-discover腳本能夠用來發送一個DHCP Discover廣播包,并顯示響應包的具體資訊。通過對響應包的資訊進行分析,能夠找到可配置設定的IP位址。使用broadcast-dhcp-discover腳本實施被動掃描的文法格式如下:

帶你讀《從實踐中學習Kali Linux網絡掃描》之三:區域網路掃描第3章 區域網路掃描

  【執行個體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工具實施被動掃描的文法格式如下:

帶你讀《從實踐中學習Kali Linux網絡掃描》之三:區域網路掃描第3章 區域網路掃描

  其中,-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所示對話框。

帶你讀《從實踐中學習Kali Linux網絡掃描》之三:區域網路掃描第3章 區域網路掃描

  (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所示。

帶你讀《從實踐中學習Kali Linux網絡掃描》之三:區域網路掃描第3章 區域網路掃描

  (4)在其中選擇eth0接口,并單擊按鈕,将開始捕獲資料包,如圖3.6所示。或者,直接輕按兩下選擇的網絡接口,也可以開始捕獲資料包。

  (5)從圖3.6中可以看到監聽到的所有資料包。從Protocol(協定)列中可以看到每個資料包的協定。例如,監聽到的協定資料包有ICMPv6、BROWSER、SSDP、NBNS、LLMNR、ARP、DHCP。此時,通過分析源(Source)和目标位址(Destination),即可知道這些包是由哪個主機發送的,進而确定該主機的狀态。為了能夠快速找到廣播的資料包,可以使用顯示過濾器進行過濾。顯示過濾器的文法格式如下:

帶你讀《從實踐中學習Kali Linux網絡掃描》之三:區域網路掃描第3章 區域網路掃描

  在本例中廣播位址為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的主機是活動的。

帶你讀《從實踐中學習Kali Linux網絡掃描》之三:區域網路掃描第3章 區域網路掃描
帶你讀《從實踐中學習Kali Linux網絡掃描》之三:區域網路掃描第3章 區域網路掃描

  2.使用Tcpdump工具

  Tcpdump是一個指令行的嗅探工具,可以基于過濾表達式抓取網絡中的封包,分析封包,并且在包層面輸出封包内容以便于包層面的分析。其中,使用Tcpdump工具監聽資料包的文法格式如下:

帶你讀《從實踐中學習Kali Linux網絡掃描》之三:區域網路掃描第3章 區域網路掃描

  以上文法中的選項及含義如下:

  • -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工具,以圖形界面分析捕獲到的包。

繼續閱讀