四层发现

栏目: Python · 发布时间: 5年前

内容简介:发现的目的是扫描出可能存活的IP地址,四层发现虽然涉及端口扫描,但是并不对端口的状态进行识别,其本质是利用四层协议的一些通信来识别主机ip是否存在传统TCP连接是通过三次握手建立通信过程,然后可以向目标发送资源申请的请求,本机再发送ack进行确认,这是一种基于连接的可靠的通信协议。如果我们之前没有建立TCP连接,而是直接向目标发送ack,这时目标服务器回想本机发送一个RST包进行拒绝,因此,当目标服务器拒绝时,便可以基于次探测目标主机是否存在了!也可以通过三次握手建立通信连接,通过发送的SYN包来确定目标主

发现的目的是扫描出可能存活的IP地址,四层发现虽然涉及端口扫描,但是并不对端口的状态进行识别,其本质是利用四层协议的一些通信来识别主机ip是否存在

TCP探测

传统TCP连接是通过三次握手建立通信过程,然后可以向目标发送资源申请的请求,本机再发送ack进行确认,这是一种基于连接的可靠的通信协议。如果我们之前没有建立TCP连接,而是直接向目标发送ack,这时目标服务器回想本机发送一个RST包进行拒绝,因此,当目标服务器拒绝时,便可以基于次探测目标主机是否存在了!也可以通过三次握手建立通信连接,通过发送的SYN包来确定目标主机是否在线。

UDP探测

UDP不同于TCP,UDP没有通过握手建立连接的过程,UDP只是尽力而为而已,它是一种非连接的不可靠传输协议,因此基于UDP来探测主机,难度和发现的准确率都高于TCP。同样是基于UDP的一些特征信息来探测。

如果目标IP不在线,那我们对其发送的UDP包不会有任何的回应,但假如目标IP在线,而且发送到UDP的目标端口处于开放状态,一般说来,这时目标主机接受到我的UDP包时也不会有任何回应,但有一种列外,即是目标端口没有开放时,会向我们发送一个ICMP不可达的包(但是到这里我们并不对其端口进行扫描)

Scapy构造四层TCP探测数据包

将TCP包头的flag位设定为ACK,然后发送给一个目标/端口,最后判断是否收到RST响应包,以此确定目标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= []
>>>

发包:

a=sr1(r)

上述过程用一行命令实现:

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:基于UDP

nmap  -PU -sn 221.22.0.1-50

四层发现

-PA:基于TCP的ACK,-PS:基于TCP的SYN

nmap -PA80 -sn 221.22.0.1-50

四层发现

hping3

--udp:基于UDP模式

hping3 --udp -c 1 211.144.145.1

四层发现

如果我选择一个内网中不存在的IP,会显示端口不可达

四层发现

基于这个提示,至少可以确定主机是存在的

不加参数--udp,默认使用TCP模式,凡是hping发送的tcp所有的flags位都是not set的,即都是0的状态,它不同于udp的扫描,它通过返回的ack+rst包来判断主机存活

hping3 -c 1 211.144.145.1

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Head First Design Patterns—深入淺出設計模式

Head First Design Patterns—深入淺出設計模式

天瓏

寫應用程式時需要依照需求預先規劃、設計,而設計模式累積了前人的經歷,經由四人幫彙整出一系列的設計模式,以利後人可以套用。本書集合四人幫的23個模式(十幾年前的事)外加這十幾年來新增的一些模式,作者群以詼諧、幽默、圖文並茂、打破傳統著書的方式,由淺入深地詳解了設計模式的精神及重點。全書全部以當紅的 Java 程式語言為範例。 本書特點: * 全世界第二本書......一起来看看 《Head First Design Patterns—深入淺出設計模式》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

MD5 加密
MD5 加密

MD5 加密工具