TCP UDP端口扫描
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 是有连接的,它知道在第一步中应该
发送的SYN 包没有送出,从而认为此连接过程出错,发送一个RST 包以拆除连接。
而这正是我们想要的——只要有响应,就说明目标系统存在,且目标端口处于关闭状态。
此扫描方式的优点比前两种都要隐秘,不容易被发现。
该方案有两个缺点:首先,要判断对方端口是否开放必须等待超时,增加了探测时间,而且容易得出错误的结论;其次,一些系统并没有遵循规定,最典型的就是Microsoft 公司所开发的操作系统。
这些系统一旦收到这样的数据报,无论端口是否开放都会回应一个RST 连接复位数据报,这样一来,这种扫描方案对于这类操作系统是无效的。
XMAS扫描和NULL扫描:这两类扫描正好相反,XMAS 扫描设置TCP包中所有标志
位(URG,ACK,RST,PSH,SYN,FIN),根据RFC793,对于所有关闭的端口,目标系
统应该返回RST 标志。
根据这一原理就可以判断哪些端口是开放的,而NULL 扫描则关闭TCP包中的所有标志位,这种方法与上一方法原理是一样,只是发送的数据包不一样而已。
本扫描方案中,是向目标端口发送一个不包含任何标志的分组。
根据RFC793,对于所有关闭的端口,目标系统也应该返回RST 标志。
UDP端口扫描
UDP协议是数据包协议,为了要发现正在服务的UDP端口,通常的扫描方式是构造一
个内容为空的UDP数据包送往目的端口。
若目的端口上有服务正在等待,则目的端口返回错误的消息;若目的端口处于关闭状态,则目的主机返回ICMP 端口不可达消息。
如果目标端口是以一个“ICMP port Unreachable”(ICMP 端口不可到达)消息来作为
响应的,那么该端口是关闭的。
相反,如果没有收到这个消息那就可以推断该端口打开着。
还有就是一些特殊的UDP回馈,比如SQL Server 服务器,对其1434号端口发送“x02”或者“x03”就能够探测得到其连接端口。
由于UDP 是无连接的不可靠协议,因此这种技巧的准确性很大程度上取决于与网络及系统资源的使用率相关的多个因素。
另外,当试图扫计算机网络协议原理实验教程
描一个大量应用分组过滤功能的设备时,UDP 扫描将是一个非常缓慢的过程。
如果要在互联网上执行UDP扫描,那么结果就是不可靠的。
一般而言,扫描者并不是孤立地、单纯地使用某种扫描技术,而是综合地应用一系列的
扫描方法。
而如果大范围地进行某种扫描,反复高速地发出特定的连接请求,所造成的结果就是目标主机上存在大量等待的TCP 连接,目标网络中充斥着许多无用的数据包,最终导致网络拥塞,主机无法正常使用,这正是DOS 的表现。
因此若要防范网络扫描要做到以下三点:
(1)、在防火墙及过滤设备上采用严格的过滤规则,禁止扫描的数据包进入系统。
(2)、主机系统除了必要的网络服务外,禁止其它的网络应用程序。
(3)、对于只对内开放的网络服务,更改其提供服务的端口,此外,网络扫描时发送的
数据或多或少都会含有扫描者自身相关信息,从而也可以抓取扫描时的数据包,对扫描者进行反向追踪,这也是一个值得研究的方向。
【实验步骤】
步骤一:设定实验环境
在PCA 配置IP 地址为172.16.1.11/24,并在PCA 上搭建一个WEB 服务器,并将服
务启动起来,如下图所示:
图7-44 搭建WEB服务
在PCB配置IP地址为172.16.1.4/24,并在PCB 上安装RG-PATS网络协议分析仪客户端软件,在PCB上模拟攻击者进行扫描。
将所有的PC 和RG-PA TS网络协议分析仪连接到交换机上。
步骤二:TCP connect()扫描
在PCB打开RG-PATS 网络协议分析仪,点击菜单栏的TCP按钮,如下图所示:
图7-45 打开TCP连接工具
在IP地址栏中输入WEB Server服务器地址,端口为80,如下图所示:
图7-46 TCP连接工具
配置完成后,先打开RG-PATS 网络协议分析仪开始采集数据,然后点击“连接”按键,这时客户端就与服务器建立TCP连接,如下图所示:
图7-47 TCP连接
停止RG-PATS 网络协议分析仪数据采集,会采集到TCP 三次握手的数据包,如下图所示:
图7-48 采集SYN 手报文
图7-49 采集SYN+ACK报文
图7-50 采集ACK报文
这说明当我们用TCP connect()扫描时,如果服务启动时,会形成TCP三次握手。
使用TCP 连接器去连接服务器上的FTP 服务(必须确保FTP 服务没有启动),将IP 地址设置为172.16.1.11,端口为21。
如下图所示:
图7-51 TCP连接工具
配置完成后,先打开RG-PATS 网络协议分析仪开始采集数据,然后点击“连接”按键,这时客户端就与服务器建立TCP连接,但连接会失败,因为服务器没有开启FTP服务。
如下图所示:
图7-52 TCP连接
停止RG-PATS网络协议分析仪数据采集,会采集到RST 数据包,如下图所示:
图7-53 采集RST报文
如果目标端口处于关闭状态,则目标主机会向扫描主机发送RST 的响应。
步骤三:TCP SYN扫描
在PCB上打开数据包发生器,编辑一个TCP的SYN 数据包。
首先点击菜单栏“添加”,如下图所示:
图7-54 添加报文
添加一个TCP协议模板,点击确认添加,如下图所示:
图7-55 添加TCP协议模板
修改协议模板的每个值:
Ethernet II封装:目标物理地址设置为PCA的MAC地址。
原物理地址设置为PCB 的MAC 地址
类型:0800
IP封装:版本信息:4
IP头长度:5
服务类型:00
总长度:52
标识:0
标志:2
生存时间:128
协议类型:6
发送IP地址:172.16.1.4
目标IP地址:172.16.1.11
TCP封装:源端口号:47792
目标端口号:80
序号:46D7EE9E
TCP首部长度:5
标志位:02
注意:在编辑数据时IP的长度应该设置正确,在选择TCP 标志位时,可以点右侧的“编辑数据”进行选择TCP标志,如下图所示:
图7-56 添加SYN 报文
编辑完成数据包后,需要点击菜单栏的校验和,进行数据检验,如下图所示:
图7-57 计算校验和
下图是编辑完成并经过校验的数据包:
图7-58 编辑完成的报文
数据编辑完成后,需要发送到PCA,进行TCP SYN 扫描。
首先打开网络协议分析仪,采集服务器的回应。
点击协议数据发器的菜单栏的发送键,如下图所示:
图7-59 报文发送数量
计算机网络协议原理实验教程
选择循环发送,发送次数为1,点击“开始”按键开始发送。
发送完成后,结束网络协议分析仪的采集,找到采集到的数据包,如下图所示:
图7-60 采集SYN 报文
图7-61 采集SYN+ACK报文
图7-62 采集RST报文
如上图所示,如果我们发送一个SYN 包给服务器,如果收到SYN/ACK 包,则说明端口处于侦听状态,然后马上发送RST 包,中止连接。
步骤四:UDP 端口扫描
首先在PCA服务器上使用命令netstat –a命令查看那些UDP端口已打开,如下图所示:
图7-63 查看端口
在列表中没有打开DNS 服务,编辑一个DNS服务的UDP数据包进行扫描。
打开协议数据发生器,点击“添加”按键,添加一个UDP 协议模板,如下图所示:
图7-64 添加UDP协议模板
修改协议模板的每个值:
Ethernet II封装:标物理地址设置为PCA的MAC地址。
原物理地址设置为PCB 的MAC 地址
类型:0800
IP封装:IP头长度:5
服务类型:00
总长度:52
标识:0
标志:2
生存时间:128
协议类型:17
发送IP地址:172.16.1.4
目标IP地址:172.16.1.11
TCP封装:端口号:1030
目标端口号:53
UDP总长度:32
编辑完成数据包后,需要点击菜单栏的校验和,进行数据检验,如下图所示:
图7-65 计算校验和
下图是编辑完成并经过校验的数据包:
图7-66 编辑完成报文
数据编辑完成后,需要发送到PCA,进行UDP 扫描。
首先打开网络协议分析仪,采集服务器的回应。
点击协议数据发器的菜单栏的发送键,如下图所示:
图7-67 报文发送数量
选择循环发送,发送次数为10,点击“开始”按键开始发送。
发送完成后,结束网络
协议分析仪的采集,找到采集到的数据包,如下图所示:
图7-68 采集报文
这时服务器返回一个ICMP目标不可达数据包,这说明服务器的DNS 服务没有启动。
服务器上启动了NTP时间服务,其端口号为123,使用UDP扫描NTP服务,编辑UDP 数据包,打开协议数据发生器,添加一个UDP 协议模板。
修改协议模板的每个值:
Ethernet II封装:目标物理地址设置为PCA的MAC地址。
原物理地址设置为PCB 的MAC 地址
计算机网络协议原理实验教程类型:0800
IP封装:版本信息:4
IP头长度:5
服务类型:00
总长度:52
标识:0
标志:2
生存时间:128
协议类型:17
发送IP地址:172.16.1.4
目标IP地址:172.16.1.11
TCP封装:源端口号:103
目标端口号:123
UDP总长度:32
编辑完成数据包后,需要点击菜单栏的校验和,进行数据检验,如下图所示:
图7-69 计算校验和
下图是编辑完成并经过校验的数据包:
图7-70 编辑完成报文
数据编辑完成后,需要发送到PCA,进行UDP 扫描。
首先打开网络协议分析仪,采集服务器的回应。
点击协议数据发器的菜单栏的发送键,如下图所示:
图7-71 报文发送数量
选择循环发送,发送次数为10,点击“开始”按键开始发送。
发送完成后,结束网络
协议分析仪的采集,找到采集到的数据包,这时服务器不会有任何响应,这说明NTP 服务已经启动。