天天看點

帶你讀《從實踐中學習Kali Linux網絡掃描》之二:網絡掃描基礎技術第2章 網絡掃描基礎技術

點選檢視第一章 點選檢視第三章

第2章 網絡掃描基礎技術

  在第1章中介紹了網絡掃描的目的和方式。接下來,使用者就可以實施網絡掃描了。本章将介紹一些網絡掃描的基礎技術,如ICMP掃描、TCP掃描、UDP掃描和IP掃描。

2.1 ICMP掃描

  ICMP(Internet Control Message Protocal,網際網路控制封包協定)工作在OSI的網絡層,向資料通信中的源主機報告錯誤。從技術角度來說,ICMP就是一個“錯誤偵測與回報機制”,其目的就是讓使用者能夠檢測網絡的連續狀況,也能夠確定連續的準确性。通過實施ICMP Ping掃描,可以發現目标主機是否活動。本節将介紹ICMP的工作機制及不同的掃描方法。

2.1.1 ICMP工作機制

  ICMP是TCP/IP協定族的一個子協定,用于在IP主機、路由器之間傳遞控制消息。控制消息是指網絡通不通、主機是否可達、路由是否可用等網絡本身的消息。這些控制消息雖然并不傳輸使用者資料,但是對于使用者資料的傳遞卻起着重要的作用。當遇到IP資料無法通路目标、IP路由器無法按目前的傳輸速率轉發資料包等情況時,會自動發送ICMP消息,進而确定目标主機的狀态。為了使讀者對ICMP的響應消息有一個清晰的認識,這裡以表格形式列出了ICMP的所有消息類型,如表2.1所示。

帶你讀《從實踐中學習Kali Linux網絡掃描》之二:網絡掃描基礎技術第2章 網絡掃描基礎技術
帶你讀《從實踐中學習Kali Linux網絡掃描》之二:網絡掃描基礎技術第2章 網絡掃描基礎技術

2.1.2 标準ICMP掃描

  标準ICMP掃描就是簡單的通過向目标主機發送ICMP Echo Request資料包,來探測目标主機是否線上。如果目标主機回複使用者ICMP Echo Reply包的話,則說明目标主機線上;否則說明不線上。其中,最常見的發送ICMP Echo Request包工具就是Ping。使用者還可以使用一個類似Ping的工具fping等。下面将介紹實施标準ICMP掃描的方法。

  1.使用Ping指令

  Ping是Windows、UNIX和Linux系統下的一個指令。使用該指令可以檢查網絡是否連通,可以很好地幫助使用者分析和判定網絡故障。該指令是通過發送一個ICMP Echo Request資料包,并等待目标主機傳回的響應,來檢查網絡是否通暢或者網絡連接配接速度。該指令的文法格式如下: 

帶你讀《從實踐中學習Kali Linux網絡掃描》之二:網絡掃描基礎技術第2章 網絡掃描基礎技術

 

  【執行個體2-1】使用Ping指令實施标準ICMP掃描。執行指令如下:

root@daxueba:~# ping 192.168.33.152
  PING 192.168.33.152 (192.168.33.152) 56(84) bytes of data.
  64 bytes from 192.168.33.152: icmp_seq=1 ttl=64 time=0.516 ms
  64 bytes from 192.168.33.152: icmp_seq=2 ttl=64 time=0.344 ms
  64 bytes from 192.168.33.152: icmp_seq=3 ttl=64 time=0.535 ms
  64 bytes from 192.168.33.152: icmp_seq=4 ttl=64 time=0.365 ms
  64 bytes from 192.168.33.152: icmp_seq=5 ttl=64 time=0.287 ms
  ^C
  --- 192.168.33.152 ping statistics ---
  5 packets transmitted, 5 received, 0% packet loss, time 79ms
  rtt min/avg/max/mdev = 0.287/0.409/0.535/0.100 ms
           

  看到以上輸出資訊,則表示得到了目标主機的響應。由此可以說明,目标主機是活動的。如果目标主機沒有線上的話,将顯示如下資訊:

root@daxueba:~# ping 192.168.33.128
  PING 192.168.33.128 (192.168.33.128) 56(84) bytes of data.
  From 192.168.33.154 icmp_seq=1 Destination Host Unreachable
  From 192.168.33.154 icmp_seq=2 Destination Host Unreachable
  From 192.168.33.154 icmp_seq=3 Destination Host Unreachable           

  從輸出的資訊可以看到,傳回的響應包為Destination Host Unreachable(目标主機不可達)。

帶你讀《從實踐中學習Kali Linux網絡掃描》之二:網絡掃描基礎技術第2章 網絡掃描基礎技術

  2.使用Nmap工具

  Nmap是一個免費開放的網絡掃描和嗅探工具包,也叫網絡映射器(Network Mapper)。Nmap工具的“-PE”選項,可以用來實施ICMP掃描,該工具的文法格式如下:

帶你讀《從實踐中學習Kali Linux網絡掃描》之二:網絡掃描基礎技術第2章 網絡掃描基礎技術

  以上文法中的-PE選項,表示将發送一個ICMP echo、timestamp和netmask請求,來探測目标主機是否線上。

  【執行個體2-2】使用Nmap實施ICMP掃描。執行指令如下:

root@daxueba:~# nmap -PE 192.168.33.152
  Starting Nmap 7.70 ( https://nmap.org ) at 2018-12-20 10:58 CST
  Nmap scan report for 192.168.33.152 (192.168.33.152)
  Host is up (0.00030s 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.31 seconds           

  從輸出的資訊可以看到,目标主機192.168.33.152是活動的(up),而且還可以看到,目标主機開放了三個端口,997個端口是關閉的。其中,開放的端口分别是21、22和80。如果目标主機沒有線上的話,則将顯示如下資訊:

 root@daxueba:~# nmap -PE 192.168.33.128
  Starting Nmap 7.70 ( https://nmap.org ) at 2018-12-20 15:30 CST
  Note: Host seems down. If it is really up, but blocking our ping probes, 
  try -Pn
  Nmap done: 1 IP address (0 hosts up) scanned in 0.53 seconds           

  從輸出的資訊可以看到,目标主機是關閉的(down)。

  3.使用Fping指令

  Fping是一個小型指令行工具,用于向網絡主機發送ICMP回應請求,類似于Ping,但在Ping多個主機時性能要高得多。Fping與Ping指令不同的是,Fping可以在指令行上定義任意數量的主機,或者指定包含要Ping的IP位址或主機清單檔案。其中,使用Fping指令實施掃描的文法格式如下:

帶你讀《從實踐中學習Kali Linux網絡掃描》之二:網絡掃描基礎技術第2章 網絡掃描基礎技術

 【執行個體2-3】使用Fping實施ICMP掃描。執行指令如下:

 root@daxueba:~# fping 192.168.33.128 192.168.33.147 192.168.33.152
  192.168.33.147 is alive
  192.168.33.152 is alive
  ICMP Host Unreachable from 192.168.33.154 for ICMP Echo sent to 192.168.
  33.128
  ICMP Host Unreachable from 192.168.33.154 for ICMP Echo sent to 192.168.
  33.128
  ICMP Host Unreachable from 192.168.33.154 for ICMP Echo sent to 192.168.
  33.128
  ICMP Host Unreachable from 192.168.33.154 for ICMP Echo sent to 192.168.
  33.128
  192.168.33.128 is unreachable           

  從以上輸出的資訊可以看到,測試了3台主機。其中,主機192.168.33.147和192.168.33.152是活動的,主機192.168.33.128不可達。

2.1.3 時間戳查詢掃描

  對于一些伺服器來說,通常會配置防火牆,用來阻止ICMP Echo請求。但是由于一些配置不當,仍然可能會回複ICMP時間戳請求。因而可以通過使用ICMP時間戳查詢掃描,來判斷目标主機是否線上。下面将介紹使用Nmap實施ICMP時間戳查詢掃描的方法。

  使用Nmap實施ICMP時間戳查詢掃描的文法格式如下:

帶你讀《從實踐中學習Kali Linux網絡掃描》之二:網絡掃描基礎技術第2章 網絡掃描基礎技術

  其中,-PP表示進行一個ICMP時間戳Ping掃描。

  【執行個體2-4】對目标主機192.168.33.152實施時間戳查詢掃描。執行指令如下:

 root@daxueba:~# nmap -PP 192.168.33.152
  Starting Nmap 7.70 ( https://nmap.org ) at 2018-12-20 10:58 CST
  Nmap scan report for 192.168.33.152 (192.168.33.152)
  Host is up (0.000095s 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.26 seconds           

  從輸出的資訊中可以看到,目标主機是活動的。

2.1.4 位址掩碼查詢掃描

  位址掩碼查詢掃描和時間戳查詢掃描類似。這種非正常的ICMP查詢,試圖用備選的ICMP登記Ping指定的主機,這種類型的Ping可繞過配置有封鎖标準回聲請求政策的防火牆。使用Nmap實施位址掩碼查詢掃描的文法格式如下:

帶你讀《從實踐中學習Kali Linux網絡掃描》之二:網絡掃描基礎技術第2章 網絡掃描基礎技術

  其中,-PM表示進行一個ICMP位址掩碼Ping掃描。

  【執行個體2-5】使用Nmap對目标主機實施位址掩碼查詢掃描。執行指令如下:

root@daxueba:~# nmap -PM 192.168.33.152
  Starting Nmap 7.70 ( https://nmap.org ) at 2018-12-20 10:59 CST
  Nmap scan report for 192.168.33.152 (192.168.33.152)
  Host is up (0.00011s 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.26 seconds           

  從以上輸出資訊中可以看到,目标主機是活動的。

2.2 TCP掃描

  TCP(Transmission Control Protocol,傳輸控制協定)是一種面向連接配接的、可靠的、基于位元組流的傳輸層通信協定。根據TCP協定的工作流程,可以向目标主機發送不同類型的包,然後根據目标主機的響應情況,來判斷目标主機是否線上。本節将介紹TCP的工作機制及掃描方法。

2.2.1 TCP工作機制

  TCP是網際網路中的傳輸層協定,使用三次握手協定建立連接配接。當主動方發出SYN連接配接請求後,等待對方回答SYN+ACK,并最終對對方的SYN執行ACK确認。這種建立連接配接的方法可以防止産生錯誤的連接配接,TCP使用的流量控制協定是可變大小的滑動視窗協定。TCP建立連接配接的工作流程如圖2.1所示。

帶你讀《從實踐中學習Kali Linux網絡掃描》之二:網絡掃描基礎技術第2章 網絡掃描基礎技術

  以上建立連接配接的詳細工作流程如下:

  (1)用戶端發送SYN(SEQ=x)封包給伺服器端,進入SYN_SEND狀态。

  (2)伺服器端收到SYN封包後,将回應一個SYN(SEQ=y)ACK(ACK=x+1)封包,進入SYN_RECV狀态。

  (3)用戶端收到伺服器端的SYN封包後,将回應一個ACK(ACK=y+1)封包,進入Established狀态。至此,TCP的三次握手就完成了,TCP用戶端和伺服器端成功地建立了連接配接。接下來就可以開始傳輸資料了。

2.2.2 TCP SYN掃描

  TCP SYN掃描也叫做隐蔽掃描或半打開的掃描。在這種技術中,掃描主機向目标主機指定端口發送SYN資料包。如果源主機收到RST資料包,則說明端口是關閉的;如果源主機收到SYN+ACK資料包,則說明目标端口處于監聽狀态。由于掃描主機已經擷取端口的狀态資訊,并不需要建立連接配接,是以傳送一個RST資料包給目标主機,進而停止建立連接配接。在SYN掃描過程中,用戶端和伺服器端沒有形成三次握手,是以沒有建立一個正常的TCP連接配接,是以掃描操作不會被防火牆和日志所記錄。這樣就不會在目标主機上留下任何的痕迹,但是這種掃描需要Root權限。下面将介紹使用Nmap工具實施TCP SYN掃描的方法。

  1.TCP SYN Ping掃描

  Ping掃描主要就是用于探測網絡中活動主機的。Nmap預設Ping掃描是使用TCP ACK和ICMP Echo請求來判斷目标主機是否響應。如果目标主機上有防火牆阻止這些請求時,将會漏掉這些主機。此時,使用者可以使用TCP SYN Ping掃描來處理這種情況。用于TCP SYN Ping掃描的文法格式如下:

帶你讀《從實踐中學習Kali Linux網絡掃描》之二:網絡掃描基礎技術第2章 網絡掃描基礎技術

  其中,-PS表示實施TCP SYN Ping掃描。

  【執行個體2-6】實施TCP SYN Ping掃描。執行指令如下:

 root@daxueba:~# nmap -PS 192.168.33.152
  Starting Nmap 7.70 ( https://nmap.org ) at 2018-12-20 10:59 CST
  Nmap scan report for 192.168.33.152 (192.168.33.152)
  Host is up (0.00015s 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           

  從以上輸出資訊中可以看到,目标主機是開放的。

  2.TCP SYN掃描

  實施TCP SYN掃描的文法格式如下:

帶你讀《從實踐中學習Kali Linux網絡掃描》之二:網絡掃描基礎技術第2章 網絡掃描基礎技術

  其中,-sS表示實施TCP SYN掃描。這裡的-sS選項,實際上是-s和-S兩個選項的組合。可以分别來了解這兩個選項:-s表示告訴Nmap運作哪種類型的掃描;-S表示執行TCP SYN類型掃描。

  【執行個體2-7】實施TCP SYN掃描。執行指令如下:

root@daxueba:~# nmap -sS 192.168.33.152
  Starting Nmap 7.70 ( https://nmap.org ) at 2018-12-20 10:59 CST
  Nmap scan report for 192.168.33.152 (192.168.33.152)
  Host is up (0.00010s 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.24 seconds           

2.2.3 TCP ACK掃描

  TCP ACK掃描和TCP SYN掃描類似,其掃描方法是源主機向目标主機的一個端口發送一個隻有ACK标志的TCP資料包,不論目标主機的端口是否開啟,都會傳回相應的RST資料包,然後通過RST包中的TTL,來判斷端口是否開啟。其中,當TTL值小于64時,表示端口開啟;當TTL值大于64時,則表示端口關閉。下面将介紹實施TCP ACK掃描的方法。

  1.TCP ACK Ping掃描

  TCP ACK Ping掃描和TCP SYN Ping掃描類似,都是根據目标主機的響應來判斷主機是否線上。使用這種掃描方式,可以探測阻止SYN包或ICMP Echo請求的主機。但是這種掃描方式會被防火牆阻止。用于實施TCP ACK Ping掃描的文法格式如下:

帶你讀《從實踐中學習Kali Linux網絡掃描》之二:網絡掃描基礎技術第2章 網絡掃描基礎技術

  其中,-PA表示實施TCP ACK Ping掃描。

  【執行個體2-8】實施TCP ACK Ping掃描。執行指令如下:

 root@daxueba:~# nmap -PA 192.168.33.152
  Starting Nmap 7.70 ( https://nmap.org ) at 2018-12-20 10:59 CST
  Nmap scan report for 192.168.33.152 (192.168.33.152)
  Host is up (0.00054s 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.26 seconds           

  2.TCP ACK掃描

  實施TCP ACK掃描的文法格式如下:

帶你讀《從實踐中學習Kali Linux網絡掃描》之二:網絡掃描基礎技術第2章 網絡掃描基礎技術

  其中,-sA表示實施TCP ACK掃描。

  【執行個體2-9】實施TCP ACK掃描。執行指令如下:

root@daxueba:~# nmap -sA 192.168.33.152
  Starting Nmap 7.70 ( https://nmap.org ) at 2018-12-20 10:55 CST
  Nmap scan report for 192.168.33.152 (192.168.33.152)
  Host is up (0.00010s latency).
  All 1000 scanned ports on 192.168.33.152 (192.168.33.152) are unfiltered
  MAC Address: 00:0C:29:FD:58:4B (VMware)
  Nmap done: 1 IP address (1 host up) scanned in 0.24 seconds           

2.2.4 TCP全連接配接掃描

  TCP全連接配接掃描是端口掃描中最基礎和最穩定的,因為Nmap試圖在其指令指定的每個端口上完成三次握手。這種掃描完整地完成了三次握手過程,之後又通過友好的方式斷開連接配接,是以不容易形成對目标的泛洪攻擊,以至崩潰。這種掃描方法的特點是掃描速度慢、準确性高,對操作者沒有權限上的要求,但是容易被防火牆和IDS(防入侵系統)發現。下面将介紹使用Nmap實施TCP全連接配接掃描的方法。

  使用Nmap實施TCP全連接配接掃描的文法格式如下:

帶你讀《從實踐中學習Kali Linux網絡掃描》之二:網絡掃描基礎技術第2章 網絡掃描基礎技術

其中,-sT表示實施TCP全連接配接掃描。

  【執行個體2-10】使用Nmap實施TCP全連接配接掃描,執行指令如下:

root@daxueba:~# nmap -sT 192.168.33.152
  Starting Nmap 7.70 ( https://nmap.org ) at 2018-12-20 10:57 CST
  Nmap scan report for 192.168.33.152 (192.168.33.152)
  Host is up (0.00089s 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.17 seconds           

2.2.5 TCP視窗掃描

  視窗掃描和ACK掃描完全一樣。它通過檢查傳回的RST封包的TCP視窗域,來判斷目标端口是開放還是關閉。在某些系統上,開放端口用正數表示視窗大小(甚至對于RST封包),而關閉端口的視窗大小為0。是以,當收到RST包時,視窗掃描并不總是把端口标記為unfiltered,而是根據TCP視窗值是正數還是0,分别把端口标記為open或者closed。下面介紹TCP視窗掃描的方法。

  使用Nmap實施TCP視窗掃描的文法格式如下:

帶你讀《從實踐中學習Kali Linux網絡掃描》之二:網絡掃描基礎技術第2章 網絡掃描基礎技術

  其中,-sW選項表示實施TCP視窗掃描。

  【執行個體2-11】對目标主機實施TCP視窗掃描。執行指令如下:

root@daxueba:~# nmap -sW 192.168.33.152
  Starting Nmap 7.70 ( https://nmap.org ) at 2018-12-20 11:00 CST
  Nmap scan report for 192.168.33.152 (192.168.33.152)
  Host is up (0.000087s latency).
  All 1000 scanned ports on 192.168.33.152 (192.168.33.152) are closed
  MAC Address: 00:0C:29:FD:58:4B (VMware)
  Nmap done: 1 IP address (1 host up) scanned in 0.23 seconds           

2.2.6 端口狀态

  前面介紹了幾種常見的TCP掃描端口方式。使用Nmap工具還可以進行一些其他掃描,如TCP FIN掃描和TCP Null掃描等。下面分别介紹這些端口掃描方式。

  使用Nmap進行端口掃描時,可以識别6個端口狀态,分别是open(開放的)、closed(關閉的)、filtered(被過濾的)、unfiltered(未被過濾的)、open|filtered(開放或者被過濾的)和closed|filtered(關閉或者被過濾的)。這裡介紹下Nmap識别的6個端口狀态的具體含義。

  • open(開放的):應用程式正在該端口接收TCP連接配接或者UDP封包。安全意識強的人們應該知道每個開放的端口都是攻擊的入口。攻擊者或者入侵測試者想要發現開放的端口,而管理者則試圖關閉它們或者用防火牆保護它們以免妨礙了合法使用者。非安全掃描可能對開放的端口也感興趣,因為它們顯示了網絡上哪些服務可供使用。
  • closed(關閉的):關閉的端口對于Nmap也是可通路的(它接受Nmap的探測封包并作出響應),但沒有應用程式在其上監聽。它們可以顯示該IP位址上(主機發現,或者ping掃描)的主機正在運作,也對部分作業系統的探測有所幫助。因為關閉的端口是可通路的,也許一會兒之後可能有一些關閉的端口又開放了。系統管理者可能會用防火牆封鎖這樣的端口,這樣它們就會顯示為被過濾的狀态。
  • filtered(被過濾的):由于包過濾阻止探測封包到達端口,Nmap無法确定該端口是否開放。過濾可能來自專業的防火牆裝置、路由器規則或者主機上的軟體防火牆。有時候它們響應ICMP錯誤消息,如類型3代碼13(無法到達目标:通信被管理者禁止),但更普遍的是過濾器隻是丢棄探測幀,不做任何響應。Nmap會重試若幹次,檢測探測包是否是由于網絡阻塞而被丢棄的。這會導緻掃描速度明顯變慢。
  • unfiltered(未被過濾的):未被過濾狀态意味着端口可通路,但Nmap不能确定它是開放還是關閉。使用者隻有通過映射防火牆規則集的ACK掃描,才會把端口分類到這種狀态。使用其他類型的掃描(如視窗掃描、SYN掃描或者FIN掃描),來掃描未被過濾的端口可以幫助确定端口是否開放。
  • open|filtered(開放或者被過濾的):當無法确定端口是開放還是被過濾的時候,Nmap會把該端口劃分成這種狀态。開放的端口不響應就是這種情況,沒有響應也可能意味着封包過濾器丢棄了探測封包和探測封包引起的任何響應。是以Nmap無法确定該端口是開放的還是被過濾的。UDP、IP協定、FIN、Null和Xmas掃描可能把端口歸入此類。
  • closed|filtered(關閉或者被過濾的):該狀态用于Nmap不能确定端口是關閉的還是被過濾的,它隻可能出現在IPID Idle掃描中。

  1.TCP FIN掃描

  有些時候,使用TCP SYN掃描也不是最佳的掃描模式。因為如果目标主機有防火牆的時候,會阻止SYN資料包,這時候可以考慮使用TCP FIN掃描。因為TCP FIN标志的資料包,并不需要完成TCP的握手。TCP FIN掃描就是向目标端口發送一個FIN包。如果收到目标響應的RST包,則說明該端口是關閉的;如果沒有收到RST包,則說明端口可能是開放的或被屏蔽的。使用Nmap實施TCP FIN掃描的文法格式如下:

帶你讀《從實踐中學習Kali Linux網絡掃描》之二:網絡掃描基礎技術第2章 網絡掃描基礎技術

  其中,-sF表示發送一個設定了FIN标志的資料包。

  【執行個體2-12】使用Nmap實施TCP FIN掃描。執行指令如下:

root@daxueba:~# nmap -sF 192.168.33.152
  Starting Nmap 7.70 ( https://nmap.org ) at 2018-12-20 11:01 CST
  Nmap scan report for 192.168.33.152 (192.168.33.152)
  Host is up (0.00063s latency).
  Not shown: 997 closed ports
  PORT   STATE         SERVICE
  21/tcp   open|filtered       ftp
  22/tcp   open|filtered       ssh
  80/tcp   open|filtered       http
  MAC Address: 00:0C:29:FD:58:4B (VMware)
  Nmap done: 1 IP address (1 host up) scanned in 1.42 seconds           

  2.TCP Xmas樹掃描

  TCP Xmas樹掃描也稱為聖誕樹掃描,它發送帶有URG、PSH和FIN标志的TCP資料包。如果目标主機響應一個RST标志資料包,則說明目标主機的端口是關閉的。使用Nmap實施TCP Xmas樹掃描的文法格式如下:

帶你讀《從實踐中學習Kali Linux網絡掃描》之二:網絡掃描基礎技術第2章 網絡掃描基礎技術

  其中,-sX表示實施TCP Xmas樹掃描。

  【執行個體2-13】實施TCP Xmas樹掃描。執行指令如下:

root@daxueba:~# nmap -sX 192.168.33.152
  Starting Nmap 7.70 ( https://nmap.org ) at 2018-12-20 11:01 CST
  Nmap scan report for 192.168.33.152 (192.168.33.152)
  Host is up (0.000078s latency).
  Not shown: 997 closed ports
  PORT   STATE         SERVICE
  21/tcp   open|filtered      ftp
  22/tcp   open|filtered      ssh
  80/tcp   open|filtered      http
  MAC Address: 00:0C:29:FD:58:4B (VMware)
  Nmap done: 1 IP address (1 host up) scanned in 1.40 seconds           

  3.TCP Null掃描

  TCP Null(空)掃描和TCP Xmas樹掃描一樣,也是通過發送非正常的TCP通信資料包對目标計算機進行探測。在很多情況下,Null掃描和Xmas樹掃描正好相反,因為Null掃描使用沒有任何标記(全空)的資料包。根據RFC793規定,如果目标主機的相應端口是關閉的話,則應該響應一個RST資料包;如果目标主機的相應端口是開啟的話,則不會響應任何資訊。使用Nmap實施TCP Null掃描的文法格式如下:

帶你讀《從實踐中學習Kali Linux網絡掃描》之二:網絡掃描基礎技術第2章 網絡掃描基礎技術

  其中,-sN表示實施TCP Null掃描。

  【執行個體2-14】實施TCP Null掃描。執行指令如下:

root@daxueba:~# nmap -sN 192.168.33.152
  Starting Nmap 7.70 ( https://nmap.org ) at 2018-12-20 11:00 CST
  Nmap scan report for 192.168.33.152 (192.168.33.152)
  Host is up (0.00067s latency).
  Not shown: 997 closed ports
  PORT   STATE         SERVICE
  21/tcp   open|filtered       ftp
  22/tcp   open|filtered       ssh
  80/tcp   open|filtered       http
  MAC Address: 00:0C:29:FD:58:4B (VMware)
  Nmap done: 1 IP address (1 host up) scanned in 1.40 seconds           

2.3 UDP掃描

  UDP掃描通過向目标主機發送UDP包,根據目标主機的響應情況來判斷目标是否線上。由于UDP協定是非面向連接配接的,對UDP端口的探測也就不像TCP端口的探測那樣依賴于連接配接建立過程,這使得UDP端口掃描的可靠性并不高。是以,雖然UDP協定較之TCP協定更簡單,但是對UDP端口的掃描卻是相當困難的。本節将介紹UDP掃描的工作機制及掃描方法。

2.3.1 UDP工作機制

  UDP(User Datagram Protocol,使用者資料報協定)是與TCP響應的協定。它是面向非連接配接的協定,它不與對方建立連接配接,而是直接就把資料包發送過來。UDP适用于一次隻傳少量資料,對可靠性要求不高的應用環境。其中,Ping指令的原理就是向對方主機發送UDP資料包,然後對方主機确認是否收到資料包。如果資料包是否到達的消息及回報回來,那麼網絡就是通的。

2.3.2 實施UDP掃描

  UDP掃描是通過發送UDP資料包到目标主機并等待響應,來判斷目标端口是否開放。如果目标傳回ICMP不可達的錯誤(類型3,代碼3),則說明端口是關閉的;如果得到正确的或适當的響應,則說明端口是開放的。下面介紹使用Nmap實施UDP掃描的方法。

  1.UDP Ping掃描

  UDP Ping掃描就是通過向目标主機發送一個空的UDP包到指定端口,然後根據目标主機的響應情況來判斷目标是否線上。盡管一些伺服器會配置防火牆阻止連接配接,但有些情況下使用者可能僅配置了過濾TCP連接配接,而忘記配置UDP過濾規則。是以,使用UDP Ping掃描也是發現主機的一種方法。其文法格式如下:

帶你讀《從實踐中學習Kali Linux網絡掃描》之二:網絡掃描基礎技術第2章 網絡掃描基礎技術

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

  • -PU:掃描隻會對目标進行UDP Ping掃描。這種類型的掃描會發送UDP包來獲得一個響應。
  • portlist:指定掃描的端口,預設是40125。

      【執行個體2-15】對目标主機的53号端口實施UDP Ping掃描。執行指令如下:

root@daxueba:~# nmap -PU53 61.135.169.121
  Starting Nmap 7.70 ( https://nmap.org ) at 2019-01-02 14:45 CST
  Note: Host seems down. If it is really up, but blocking our ping probes, 
  try -Pn
  Nmap done: 1 IP address (0 hosts up) scanned in 2.12 seconds           

  從輸出的資訊中可以看到,目标主機上的53号端口沒有開放,進而推斷出目标主機不線上。

帶你讀《從實踐中學習Kali Linux網絡掃描》之二:網絡掃描基礎技術第2章 網絡掃描基礎技術

  2.UDP掃描

  實施UDP掃描的文法格式如下:

帶你讀《從實踐中學習Kali Linux網絡掃描》之二:網絡掃描基礎技術第2章 網絡掃描基礎技術

  其中,-sU表示這種掃描技術是用來尋址目标主機打開的UDP端口。它不需要發送任何的SYN包,因為這種技術是針對UDP端口的。UDP掃描發送UDP資料包到目标主機,并等待響應。如果傳回ICMP不可達的錯誤消息,說明端口是關閉的;如果得到正确的或适當的回應,則說明端口是開放的。

  【執行個體2-16】實施UDP掃描。執行指令如下:

root@daxueba:~# nmap -sU 192.168.33.147
  Starting Nmap 7.70 ( https://nmap.org ) at 2018-12-20 11:15 CST
  Nmap scan report for 192.168.33.147 (192.168.33.147)
  Host is up (0.00046s latency).
  Not shown: 990 closed ports
  PORT        STATE               SERVICE
  9/udp       open|filtered     discard
  53/udp      open                domain
  68/udp      open|filtered     dhcpc
  69/udp      open|filtered     tftp
  111/udp     open                rpcbind
  137/udp     open                netbios-ns
  138/udp     open|filtered     netbios-dgm
  2049/udp    open                nfs
  3401/udp    open|filtered     squid-snmp
  16420/udp   open|filtered     unknown
  MAC Address: 00:0C:29:3E:84:91 (VMware)
  Nmap done: 1 IP address (1 host up) scanned in 1107.22 seconds           

  從輸出的資訊中可以看到目标主機上開放的UDP端口及對應服務。例如,開放的UDP端口有53、111和137等。

2.4 IP掃描

  IP(Internet Protocol Address,網際協定位址)也稱為IP位址,是配置設定給使用者上網使用的網際協定裝置的位址标簽。Nmap工具提供了一個-sO選項,可以用來實施IP掃描。通過實施IP掃描,可以探測到目标主機中TCP/IP協定簇中有哪些協定,類型号分别是多少。其中,用于實施IP掃描的文法格式如下:

帶你讀《從實踐中學習Kali Linux網絡掃描》之二:網絡掃描基礎技術第2章 網絡掃描基礎技術

  其中,-sO表示使用IP協定掃描确定目标主機支援的協定類型。

  【執行個體2-17】使用Nmap實施IP掃描。執行指令如下:

root@daxueba:~# nmap -sO 192.168.33.152
  Starting Nmap 7.70 ( https://nmap.org ) at 2018-12-20 11:03 CST
  Warning: 192.168.33.152 giving up on port because retransmission cap hit (10).
  Nmap scan report for 192.168.33.152 (192.168.33.152)
  Host is up (0.00052s latency).                        #目标主機是開放的
  Not shown: 244 closed protocols                        #關閉的協定号
  PROTOCOL STATE                SERVICE                    #開放的協定号
  1          open                 icmp
  2          open|filtered      igmp
  6          open                 tcp
  17         open                 udp
  64         open|filtered      sat-expak
  95         open|filtered      micp
  101        open|filtered      ifmp
  103        open|filtered      pim
  131        open|filtered      pipe
  136        open|filtered      udplite
  142        open|filtered      rohc
  230        open|filtered      unknown
  MAC Address: 00:0C:29:FD:58:4B (VMware)
  Nmap done: 1 IP address (1 host up) scanned in 274.75 seconds           

  從以上輸出資訊中可以看到目标主機上支援所有協定。例如,支援的協定有ICMP、IGMP、TCP和UDP等,對應的協定号分别為1、2、6和17。

繼續閱讀