1. 程式人生 > >網路利器NMAP系列(一)| 網路掃描介紹

網路利器NMAP系列(一)| 網路掃描介紹

Nmap

前言

網路掃描簡單來講就是發現並收集網路上活躍主機相關資訊的過程,比如:作業系統型別、開啟的埠號、服務和執行的應用。

0x01 網路協議基本原理

本節內容主要針對網路協議小白,請大神略過。

目前基本上所有的教材針對網路協議的介紹,都是使用ISO的OSI(Open Systems Interconnection)七層模型,如下圖所示:

七層模型

但是在實際的開發工作中,開發人員大多數使用的都是TCP的五層模型,OSI七層模型與TCP五層模型的對應關係如下圖所示:

模型對比

在實際的網路掃描過程中,協議型別和埠基本上是掃描工具必備的引數,網路協議模型中各層的協議型別如下圖所示:

分層協議

0x02 網路掃描技術

1.主機發現

網路掃描的第一步就是確定網路中活躍主機的數量及其相應的IP,這樣就進一步精確的確定了物件。主機發現的方法主要有:

  • ICMP ECHO Request 通過Ping命令傳送ICMP型別為8的包,如果主機是活躍的,會回覆一個ICMP型別為0的包。

  • ICMP Timestamp 通過Ping命令傳送ICMP型別為13的包,如果主機是活躍的,會回覆一個ICMP型別為14的包。

  • ICMP Address Mask Request 通過Ping命令傳送ICMP型別為17的包,如果主機是活躍的,會回覆一個ICMP型別為18的包。

  • TCP Ping 通過Ping命令傳送TCP SYN或TCP ACK的包,如果主機是活躍的,會對請求包進行回覆,具體回覆的內容取決於包的型別、主機的作業系統、防火牆策略等。

  • UDP Ping 通過Ping命令向主機的UDP埠傳送UDP包,如果主機是活躍的,但UDP埠是關閉的,會回覆一個ICMP Port Unreachable包。由於UDP的無連線特性,如果主機不回覆任何內容,主機和UDP埠也有可能是活躍的。

2.埠和服務掃描

網路掃描的第二步就是對活躍的主機,進行埠和服務掃描。埠和服務的活躍就意味著漏洞存在的可能性。埠和服務掃描的方法主要有:

  • Connect scan 通過正常的TCP連線和主機建立連線,如果主機的TCP埠是活躍的而且沒有被防護牆過濾,會回覆一個SYN/ACK包,否則回覆一個RST/ACK包。這種掃描方法由於是建立正常的連線,所以很容易被發現或記錄。

  • Half-open scan 故名思議,當主機回覆第一個SYN/ACK包的時候,掃描器就認為埠是活躍的,所以就用一個RST包來結束此次連線,並不完成完整的三次握手。

  • Stealth scan 通過傳送報頭帶有各種標誌的包,比如,SYN/ACK、FIN、ACK、NULL等,同時結合其他的規避技術來進行掃描。

3.作業系統發現

作業系統發現,也叫指紋識別,通過指紋來判斷主機執行的系統型別。所謂的指紋,就是被掃描主機回覆的一些特徵資訊,比如,TCP/IP棧、TCP視窗大小、TCP初始序列號等。指紋識別可以通過被動的方式,也可以通過主動的方式。

0x03 網路掃描工具

目前網路掃描工具種類比較多,商業和開源的都有,本節著重介紹幾款比較流行的工具:

  • Nmap 一款開源、跨平臺的網路掃描工具,擁有豐富的第三方外掛。

  • Superscan 一款免費、適用於Windows平臺的網路掃描工具。

  • YAPS 全稱是Yet Another Port Scanner,一款免費、適用於Windows平臺的網路掃描工具。

  • NEWT 一款同時具有商業和免費版本、適用於Windows平臺的網路掃描工具。