TCP UDP端口扫描

  • 格式:doc
  • 大小:1.14 MB
  • 文档页数:20

下载文档原格式

  / 36
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验二十五TCP 与UDP 端口扫描【实验目的】

1. 了解常用的TCP、UDP端口扫描的原理及其各种手段;

2. 增强网络安全意识。

【实验学时】

2学时

【实验环境】

在本实验中需要1 台交换机、1 台协议分析仪、2 台实验PC,需要所有的主机能够访

问互联网,使用协议分析仪采集数据包,对采集到的数据进行分析。

将所有的设备都接入到交换机上,并在交换机上配置端口映像功能,具体IP 分配如下表:

表7-3 设备IP地址分配表

设备连接如下图所示:

图7-41 实验拓扑图

【实验内容】

1、学习TCP和UDP端口扫描的原理;

2、实现一次端口扫描;

3、了解怎么防范基于端口扫描的攻击。

【实验流程】

图7-42 实验流程图

【实验原理】

端口的基础知识:

为了了解扫描的工作原理,首先简单介绍一下端口的基本知识。

端口是TCP协议中所定义的,TCP协议通过套接字(socket)建立起两台计算机之间

的网络连接。套接字采用[IP地址:端口号]的形式来定义,通过套接字中不同的端口号可以区别同一台计算机上开启的不同TCP 和UDP 连接进程。对于两台计算机间的任一个TCP 连接,一台计算机的一个[IP 地址:端口]套接字会和另一台计算机的一个[IP 地址:端口]套接字相对应,彼此标识着源端、目的端上数据包传输的源进程和目标进程。这样网络上传输的数据包就可以由套接字中的IP 地址和端口号找到需要传输的主机和连接进程了。由此可见,端口和服务进程一一对应,通过扫描开放的端口,就可以判断出计算机中正在运行的服务进程。

TCP/UDP 的端口号在0~65535 范围之内,其中1024 以下的端口保留给常用的网络

服务。例如:21 端口为FTP 服务,23 端口为TELNET 服务,25 端口为SMTP 服务,80 端口为HTTP服务,110 端口为POP3服务等。

TCP报文头格式:

要进行TCP/UDP端口扫描,必须对TCP和UDP 的报文进行全面的了解,下图是TCP

的报文格式,

图7-43 TCP报文

源端口:这是源设备发出TCP段的进程的16比特端口号。

目的端口:这是目的设备上作为本报文最终希望的接收方进程的16 比特端口号。

序列号:在正常传输情况下,这是本段数据第一个字节的序列号,在连接请求SYN 报文中,该字段携带了源TCP 的ISN,数据第一个字节的序列号将被指定为紧跟

该字段内容的下一个编号。

确认序列号:若ACK 比特置位,说明本段充当一个确认,该字段含有源正在期待的目的地将要发送下一个序列号。

数据偏移:该项详细说明了TCP 首部含有多少个32 比特字的数据,换句话说,该值乘以4 就等于首部字节数,而后者必须总是 4 的倍数,该字段称为数据偏移

是因为它指明数据起点距TCP段开头偏移了多少个32比特。

保留:该字段留给将来使用,发送时置0。

URG:紧急指针(urgent pointer)有效,置为1 时,说明数据段的优先数据传输特

性已经被激活,且紧急指针字段有效。

ACK:确认序号有效,置为1 时,说明数据段携带一个确认,确认编号字段值有效且携带着期望从数据段目的地收到的下一个序列号。

PSH:接收方应该尽快将这个报文段交给应用层,数据段发送方正在使用TCP 推特性,请求立即将段中数据推向接收设备上的应用程序。

RST:重建连接计算机网络协议原理实验教程

SYN:同步序号用来发起一个连接。序列号字段含有发送方的ISN。

FIN:发送端正在请求连接关闭。

窗口:该字段指出本端的发送方愿意从接收方处一次接受多少个8 比特数据。它通常等于分配给该条连接用以接受数据缓冲区的当前长度。

校验和:16 比特检验和

紧急指针:该字段与URG 控制比特联合用于优先数据传输,该字段包含了紧急数据最后一个字节的序列号。

扫描原理:

网络扫描,是对计算机主机或者其它网络设备进行安全性检测,以找出安全隐患和系统

漏洞。但是,网络扫描软件事实上也是一把双刃剑:入侵者利用它来寻找对系统发起攻击的

途径,而系统管理员则利用它来有效防范黑客入侵。通过网络扫描,扫描者能够发现远端网

络或主机的配置信息、TCP/UDP 端口的分配、提供的网络服务、服务器的具体信息等。

网络扫描可以划分为ping 扫描、端口扫描、操作系统探测、弱点探测、防火墙规则探测五

种主要技术,运用的原理各不相同。

端口扫描是探测主机所开放的端口。因为端口扫描通常只做最简单的端口联通性测试,

不进行更进一步的数据分析,因此比较适合进行大范围的扫描:对指定IP 地址进行某个端

口值段的扫描;或者指定端口值对某个IP 地址段进行扫描。然后基于端口扫描的结果,进

行操作系统探测和弱点扫描。端口扫描大体上分为TCP 扫描和UDP扫描两类。

TCP扫描:

TCP 建立连接分三步,也称三次握手:

1、请求端发送一个SYN 包,指明客户打算连接的目的端口。

2、观察目的端返回的包:返回SYN/ACK包,说明目的端口处于侦听状态;返回RST

/ACK包,说明目的端口没有侦听,连接会重置。

3、若返回SYN/ACK包,则请求端向目的端口发送ACK包完成3 次握手,连接建立。

TCP全连接

全连接扫描,就是和目的主机建立一个TCP 连接,而目的主机的log 文件中会生成记

录。全连接扫描是TCP端口扫描的基础,现有的全连接扫描有TCP connect()扫描和TCP

反向ident 扫描等。其中TCP connect()扫描的实现原理如下所述:

扫描主机通过TCP/IP协议的三次握手与目标主机的指定端口建立一次完整的连接。连

接由系统调用connect 开始。如果端口开放,则连接将建立成功;否则,若返回-1 则表示

端口关闭。建立连接成功:响应扫描主机的SYN/ACK连接请求,这一响应表明目标端口处

于监听(打开)的状态。如果目标端口处于关闭状态,则目标主机会向扫描主机发送RST

的响应。

TCP 连接扫描技术的一个最大的优点是不需要任何权限,系统中的任何用户都有权利

使用这个调用。另一个好处是速度快。如果对每个目标端口以线性的方式,使用单独的

“connect()”函数调用,那么将会花费相当长的时间,用户可以同时打开多个套接字,从

而加速扫描。使用非阻塞I/O 允许用户设置一个低的时间以用尽周期,并同时观察多个套接

字。但这种方法的缺点是很容易被发觉,并且很容易被过滤掉。目标计算机的日志文件会显

示一连串的连接和连接出错的服务消息,目标计算机用户发现后就能很快使它关闭。半连接扫描半连接扫描,也称为TCP SYN 扫描,则违反了TCP三次握手的规则,此扫描发送SYN

包开始三次握手并等待目的主机的响应。如果收到SYN/ACK包,则说明端口处于侦听状

态,扫描者马上发送RST 包,中止连接。因为半连接扫描并没有建立连接,目的主机的log

文件中可能不会记录此扫描。现有的半连接扫描有TCPSYN 扫描和IP ID头dumb扫描等。

SYN 扫描的优点在于即使日志中对扫描有所记录,但是尝试进行连接的记录也要比全

扫描少得多。缺点是在大部分操作系统下,发送主机需要构造适用于这种扫描的IP 包,通

常情况下,构造SYN数据包需要超级用户或者授权用户访问专门的系统调用。TCP隐蔽扫描。RFC793 指出,处于关闭状态的端口,在收到探测包时会响应RST 包,而处于侦听状

态的端口则忽略此探测包。根据发送探测包的不同,TCP隐蔽扫描又分为SYN/ACK扫描、

FIN扫描、XMAS(圣诞树)扫描和NULL 扫描四种。

SYN/ACK 扫描和FIN 扫描:这两类扫描均绕过TCP三次握手过程的第一步,直接给

目的端口发送SYN/ACK 包或者FIN 包。因为TCP 是有连接的,它知道在第一步中应该