渗透&&探测 (之UDP探测篇)

栏目: 服务器 · 发布时间: 6年前

内容简介:撸完了UDP协议,即我们可以将

撸完了 TCP ,自然要来撸一下 UDP

UDP协议,即 用户数据报协议User Datagram Protocol ),是一个简单的 面向数据报传输层 协议。

我们可以将 UDP 协议看作 IP 协议 暴露传输层 的一个 接口

UDP协议同样以 数据包 ( datagram )的方式传输,它的传输方式也是 Best Effort 的,所以 UDP 协议也是不可靠的( unreliable )。

那么,我们为什么不直接使用 IP 协议而要额外增加一个 UDP 协议呢?

一个重要的原因是 IP 协议中并没有 端口 ( port )的概念。 IP 协议进行的是 IP 地址到 IP 地址的传输,这意味者两台计算机之间的对话。但每台计算机中需要有 多个通信通道 ,并将 多个通信通道 分配给 不同的进程 使用。 一个端口 就代表了这样的一个 通信通道UDP 协议实现了 端口 ,从而让 数据包 可以在送到 IP 地址的基础上,进一步可以送到 某个端口

UDP依然不是那么“可靠”

尽管 UDP 协议非常 简单 ,但它的产生 晚于 更加 复杂TCP 协议。

早期的网络开发者开发出 IP 协议和 TCP 协议分别位于 网络层传输层 ,所有的通信都要先经过 TCP 封装,再经过 IP 封装( 应用层 -> TCP -> IP )。

开发者将 TCP/IP 视为相互合作的 套装 。但很快,网络开发者发现, IP 协议的功能和 TCP 协议的功能是相互 独立 的。

对于一些简单的通信,我们只需要 Best Effort 式的 IP 传输就可以了,而不需要 TCP 协议复杂的建立连接的方式(特别是在 早期 网络环境中,如果 过多 的建立 TCP 连接,会造成很大的网络 负担 ,而 UDP 协议可以相对快速的处理这些简单通信)。

UDP协议随之被开发出来,作为 IP 协议在 传输层傀儡 。这样,网络通信可以通过 应用层->UDP->IP 的封装方式,绕过 TCP 协议。

UDP报文

渗透&&探测 (之UDP探测篇)
UDP 的数据包同样分为 头部 ( header )和 数据 ( payload

)两部分。

UDP是传输层( transport layer )协议,这意味着 UDP 的数据包需要经过 IP 协议的封装( encapsulation ),然后通过 IP 协议传输到 目的电脑 。随后 UDP 包在目的电脑拆封,并将信息送到 相应端口 的缓存中。

  • UDP协议的头部
    1. source port

      UDP包的出发端口

    2. destination port

      目的地端口

    3. Length

      整个 UDP 包的长度。

    4. checksum

      它的算法与 IP 协议的 header checksum 算法相类似。

      然而, UDPchecksum 所校验的序列包括了 整个UDP数据包,以及封装的IP头部的一些信息(主要为出发地IP和目的地IP)。

      这样, checksum 就可以 校验IP:端口 的正确性了。

      IPv4 中, checksum 可以为 0 ,意味着 不使用 checksum。 IPv6 要求必须进行 checksum 校验。

socket

端口( port )是伴随着 传输层 诞生的概念。它可以将 网络层IP 通信分送到 各个通信通道

UDP协议和 TCP 协议尽管在工作方式上有很大的不同,但它们都建立了 从一个端口到另一个端口的通信

渗透&&探测 (之UDP探测篇)

一个特定的 IP 和特定的 端口 就构成了一个 socket

UDP主要特点

  1. 无连接的

    发送数据之前 不需要建立连接 ,减少了开销和发送数据之前的时延。

  2. 尽最大努力交付

    不保证可靠的交付,主机 不需要 维持复杂的链接状态表。

  3. 面向报文的

    发送方的 UDP 对应用程序交下来的报文,在添加首部后就向下交付给 IP 层。

    不拆分 ,也 不合并 ,而是 保留 这些报文的 边界

    因此,应用程序需要选择 合适 的报文 大小

  4. 没有拥塞控制。

  5. 支持一对一、多对一和多对多的交互通信。

  6. 首部开销小,只有8个字节。

UDP端口探测

UDP端口扫描比较麻烦,它同 TCP 不一样,因为它不需要建立连接。

我们向 目标主机 的固定端口发送 UDP 数据包,可以得到 两种结果

  1. 端口开了
    UDP 不会给我们任何回复,没办法,谁叫人家是 无连接的
  2. 端口没开 目标主机端口会给我们回复 ICMPport-unreachable 响应

那么,我们就可以 coding ,大部分同 TCP 探测:

  1. 构造一系列目标端口的 UDP

  2. 通过第二层的 sr 发送并且接收返回的包

  3. 遍历接收的包,判断是否目标端口有 ICMP 回复包,此端口就为没有开放端口

  4. 通过遍历的所有端口集合和不开放端口集合做差集,就能得到所有开放端口的集合

整个代码就是:

渗透&&探测 (之UDP探测篇)

扫描发现对方主机 88 号端口开放:

渗透&&探测 (之UDP探测篇)

愿意与大家分享交流各种技术,个人公众账号[ mindev ],以及 知识星球[ 极客世界 ]

渗透&&探测 (之UDP探测篇)

欢迎订阅公众账号,日更哟~~~


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

查看所有标签

猜你喜欢:

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

Designing for Emotion

Designing for Emotion

Aarron Walter / Happy Cog / 2011-10-18 / USD 18.00

Make your users fall in love with your site via the precepts packed into this brief, charming book by MailChimp user experience design lead Aarron Walter. From classic psychology to case studies, high......一起来看看 《Designing for Emotion》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

SHA 加密
SHA 加密

SHA 加密工具