四層發現

發現的目的是掃描出可能存活的IP地址,四層發現雖然涉及端口掃描,可是並不對端口的狀態進行識別,其本質是利用四層協議的一些通訊來識別主機ip是否存在服務器

TCP探測

傳統TCP鏈接是經過三次握手創建通訊過程,而後能夠向目標發送資源申請的請求,本機再發送ack進行確認,這是一種基於鏈接的可靠的通訊協議。若是咱們以前沒有創建TCP鏈接,而是直接向目標發送ack,這時目標服務器回想本機發送一個RST包進行拒絕,所以,當目標服務器拒絕時,即可以基於次探測目標主機是否存在了!也能夠經過三次握手創建通訊鏈接,經過發送的SYN包來肯定目標主機是否在線。tcp

UDP探測

UDP不一樣於TCP,UDP沒有經過握手創建鏈接的過程,UDP只是盡力而爲而已,它是一種非鏈接的不可靠傳輸協議,所以基於UDP來探測主機,難度和發現的準確率都高於TCP。一樣是基於UDP的一些特徵信息來探測。spa

若是目標IP不在線,那咱們對其發送的UDP包不會有任何的迴應,但假如目標IP在線,並且發送到UDP的目標端口處於開放狀態,通常說來,這時目標主機接受到個人UDP包時也不會有任何迴應,但有一種列外,便是目標端口沒有開放時,會向咱們發送一個ICMP不可達的包(可是到這裏咱們並不對其端口進行掃描)code

Scapy構造四層TCP探測數據包

將TCP包頭的flag位設定爲ACK,而後發送給一個目標/端口,最後判斷是否收到RST響應包,以此肯定目標IP是否在線。不管是基於幾層的探測掃描,獲得結果也只不過是一種極大可能的參考,一切均可能不是真實的ip

先構造三層ip包,再構成四層tcp,而後將三層/四層組合起來構成一個TCP包資源

root@:~# scapy
 
>>> i=IP()
>>> t=TCP()
>>> r=(i/t)
>>> r.display()
###[ IP ]### 
  version= 4
  ihl= None
  tos= 0x0
  len= None
  id= 1
  flags= 
  frag= 0
  ttl= 64
  proto= tcp
  chksum= None
  src= 127.0.0.1
  dst= 127.0.0.1
  \options\
###[ TCP ]### 
     sport= ftp_data
     dport= http
     seq= 0
     ack= 0
     dataofs= None
     reserved= 0
     flags= S
     window= 8192
     chksum= None
     urgptr= 0
     options= []
 
>>> r[IP].dst="192.168.1.1"
>>> r[IP].dst="19
>>> r[IP].dst="192.168.1.1"
>>> r[TCP].flags="A"
>>> r.display()
###[ IP ]### 
  version= 4
  ihl= None
  tos= 0x0
  len= None
  id= 1
  flags= 
  frag= 0
  ttl= 64
  proto= tcp
  chksum= None
  src= 192.168.0.108
  dst= 192.168.1.1
  \options\
###[ TCP ]### 
     sport= ftp_data
     dport= http
     seq= 0
     ack= 0
     dataofs= None
     reserved= 0
     flags= A
     window= 8192
     chksum= None
     urgptr= 0
     options= []
>>>

發包:it

a=sr1(r)

上述過程用一行命令實現:io

a=sr1(IP(dst="192.168.0.1")/TCP(dport=80,flags="A"),timeout=1)

Scapy構造四層UDP探測數據包

a=sr1(IP(dst="192.168.0.102")/UDP(dport=7345),timeout=1)

使用nmap進行四層發現

nmap不只能夠用於端口掃描,還能夠用於四層發現
參數-PU:基於UDPclass

nmap  -PU -sn 221.22.0.1-50

clipboard.png

-PA:基於TCP的ACK,-PS:基於TCP的SYNcli

nmap -PA80 -sn 221.22.0.1-50

clipboard.png

hping3

--udp:基於UDP模式

hping3 --udp -c 1 211.144.145.1

clipboard.png
若是我選擇一個內網中不存在的IP,會顯示端口不可達
clipboard.png
基於這個提示,至少能夠肯定主機是存在的
不加參數--udp,默認使用TCP模式,凡是hping發送的tcp全部的flags位都是not set的,即都是0的狀態,它不一樣於udp的掃描,它經過返回的ack+rst包來判斷主機存活

hping3 -c 1 211.144.145.1
相關文章
相關標籤/搜索