網路利器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 網路掃描工具
目前網路掃描工具種類比較多,商業和開源的都有,本節著重介紹幾款比較流行的工具: