`
xttifqqk
  • 浏览: 49187 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

TCP的FIN、ACK、SYN、URG、PSH及攻击方式

阅读更多

三次握手Three-way Handshake



一个虚拟连接的建立是通过三次握手来实现的



1. (B) –> [SYN] –> (A)



假如服务器 A和客户机B通讯. 当A要和B通信时,B首先向A发一个SYN (Synchronize) 标记的包,告诉A请求建立连接.



注意: 一个 SYN包就是仅SYN标记设为1的TCP包(参见TCP包头Resources). 认识到这点很重要,只有当A受到B发来的SYN包,才可建立连接,除此之外别无他法。因此,如果你的防火墙丢弃所有的发往外网接口的SYN包,那么你将不 能让外部任何主机主动建立连接。



2. (B) <– [SYN/ACK] <–(A)



接着,A收到后会发一个对SYN包的确认包(SYN/ACK)回去,表示对第一个SYN包的确认,并继续握手操作.



注意: SYN/ACK包是仅SYN 和 ACK 标记为1的包.



3. (B) –> [ACK] –> (A)



B收到SYN/ACK 包,B发一个确认包(ACK),通知A连接已建立。至此,三次握手完成,一个TCP连接完成



Note: ACK包就是仅ACK 标记设为1的TCP包. 需要注意的是当三此握手完成、连接建立以后,TCP连接的每个包都会设置 ACK位



这就是为何连接跟踪很重要的原因了. 没有连接跟踪,防火墙将无法判断收到的ACK包是否属于一个已经建立的连接.一般的包过滤(Ipchains)收到ACK包时,会让它通过(这绝对不是个 好主意). 而当状态型防火墙收到此种包时,它会先在连接表中查找是否属于哪个已建连接,否则丢弃该包



四次握手Four-way Handshake



四次握手用来关闭已建立的TCP连接



1. (B) –> ACK/FIN –> (A)



2. (B) <– ACK <– (A)



3. (B) <– ACK/FIN <– (A)



4. (B) –> ACK –> (A)



注意: 由于TCP连接是双向连接, 因此关闭连接需要在两个方向上做。ACK/FIN 包(ACK 和FIN 标记设为1)通常被认为是FIN(终结)包.然而, 由于连接还没有关闭, FIN包总是打上ACK标记. 没有ACK标记而仅有FIN标记的包不是合法的包,并且通常被认为是恶意的



连接复位Resetting a connection



四次握手不是关闭TCP连接的唯一方法. 有时,如果主机需要尽快关闭连接(或连接超时,端口 或主机不可达),RST (Reset)包将被发送. 注意在,由于RST包不是TCP连接中的必须部分, 可以只发送RST包(即不带ACK标记). 但在正常的TCP连接中RST包可以带ACK确认标记



请注意RST包是可以不要收到方确认的?



无效的TCP标记Invalid TCP Flags



到目前为止,你已经看到了 SYN, ACK, FIN, 和RST 标记. 另外,还有PSH (Push) 和URG (Urgent)标记.



最常见的非法组合是SYN/FIN 包. 注意:由于 SYN包是用来初始化连接的, 它不可能和 FIN和RST标记一起出现. 这也是一个恶意攻击 .



由于现在大多数防火墙已知 SYN/FIN 包, 别的一些组合,例如SYN/FIN/PSH, SYN/FIN/RST, SYN/FIN/RST/PSH。很明显,当网络 中出现这种包时,很你的网络肯定受到攻击了。



别的已知的非法包有FIN (无ACK标记)和”NULL”包。如同早先讨论的,由于ACK/FIN包的出现是为了关闭一个TCP连接,那么正常的FIN包总是带有 ACK 标记。”NULL”包就是没有任何TCP标记的包(URG,ACK,PSH,RST,SYN,FIN都为0)。



到目前为止,正常的网络活动 下,TCP协议栈不可能产生带有上面提到的任何一种标记组合的TCP包。当你发现这些不正常的包时,肯定有人对你的网络不怀好意。



UDP (用户 数据包协议User Datagram Protocol)

TCP是面向连接的,而UDP是非连接的协议。UDP没有对接受进行确认的标记和确认机制。对丢包的处理是在应用层来完成的。(or accidental arrival).



此处需要重点注意的事情是:在正常情况下,当UDP包到达一个关闭的端口时,会返回一个UDP复位包。由于UDP是非面向连接的, 因此没有任何确认信息来确认包是否正确到达目的地。因此如果你的防火墙丢弃UDP包,它会开放所有的UDP端口(?)。



由于Internet上正常情况下一些包将被丢弃,甚至某些发往已关闭端口(非防火墙的)的UDP包将不会到达目的,它们将返回一个复位UDP包。



因为这个原因,UDP端口扫描总是不精确、不可靠的。



看起来大UDP包的碎片是常见的DOS (Denial of Service)攻击的常见形式 (这里有个DOS攻击的例子,http://grc.com/dos/grcdos.htm ).



ICMP (网间控制消息协议Internet Control Message Protocol)

如同名字一样, ICMP用来在主机/路由器之间传递控制信息的协议。 ICMP包可以包含诊断信息(ping, traceroute - 注意目前unix系统 中的traceroute用UDP包而不是ICMP),错误信息(网络/主机/端口 不可达 network/host/port unreachable), 信息(时间戳timestamp, 地址 掩码address mask request, etc.),或控制信息 (source quench, redirect, etc.) 。



你可以在http://www.iana.org/assignments/icmp-parameters 中找到ICMP包的类型。



尽管ICMP通常是无害的,还是有些类型的ICMP信息需要丢弃。



Redirect (5), Alternate Host Address (6), Router Advertisement (9) 能用来转发通讯。



Echo (8), Timestamp (13) and Address Mask Request (17) 能用来分别判断主机是否起来,本地时间 和地址掩码。注意它们是和返回的信息类别有关的。 它们自己本身是不能被利用的,但它们泄露出的信息对攻击者是有用的。



ICMP消息有时也被用来作为DOS攻击的一部分(例如:洪水ping flood ping,死 ping ?呵呵,有趣 ping of death)?/p>



包碎片注意A Note About Packet Fragmentation



如果一个包的大小超过了TCP的最大段长度MSS (Maximum Segment Size) 或MTU (Maximum Transmission Unit),能够把此包发往目的的唯一方法是把此包分片。由于包分片是正常的,它可以被利用来做恶意的攻击。



因为分片的包的第一个分片包含一个包头,若没有包分片的重组功能 , 包过滤器不可能检测附加的包分片。典型的攻击Typical attacks involve in overlapping the packet data in which packet header is 典型的攻击Typical attacks involve in overlapping the packet data in which packet header isnormal until is it overwritten with different destination IP (or port) thereby bypassing firewall rules。包分片能作为 DOS 攻击的一部分,它可以crash older IP stacks 或涨死CPU连接能力。



Netfilter/Iptables中的连接跟踪代码自动 做分片重组。它仍有弱点,可能受到饱和连接攻击,可以把CPU资源耗光。

分享到:
评论

相关推荐

    TCP SYN ACK FIN RST PSH URG.doc

    TCP SYN ACK FIN RST PSH URG 详解 TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层协议。它是 TCP/IP 协议簇中的一部分,负责提供可靠的数据传输服务。今天,...

    TCP.rar_TCP rst_URG_fin_syn

    16位源端口,16位目的端口,32位序号,32位确认序号,4位首部长度都转化成相应的十进制显示,6位保留位,URG,ACK,PSH,RST,SYN,FIN 均为1位二进制, 16位窗口,16位紧急指针,16位校验和均用二进制显示

    TCP抓包分析.doc

    5. **标志位**:包括URG、ACK、PSH、RST、SYN、FIN等,它们控制TCP连接的状态和数据处理方式。 - URG:表示数据紧急,需要快速传输。 - ACK:确认位,表示确认号有效。 - PSH:提示接收方立即传递数据给应用层,...

    基于TCP协议的端口扫描技术

    其中URG、ACK、PSH、RST、SYN和FIN是TCP的六个重要的标识比特位。 * URG:紧急数据标志。如果为1,则表示本数据报中包含紧急数据。此时Urgent Pointer表示的值有效。 * ACK:确认标志位。如果ACK=1,则表示报文中的...

    关于TCP首部的CTL字段的理解.docx

    这六个标志位是:URG、ACK、PSH、RST、SYN和FIN,它们分别代表不同的含义。 1. URG(Urgent Pointer):当URG标志位设置为1时,表示报文段中包含紧急数据。紧急数据是一种特殊的数据,它需要尽快处理,不按照常规...

    tcp三次握手协议

    TCP连接的状态管理中,FLAGS字段包含多个标志位,如SYN、FIN、ACK、PSH、RST和URG,它们各自有特定的含义: - SYN:建立连接,用于同步序列编号。 - FIN:结束连接,表示一方希望关闭连接。 - ACK:确认,表明已...

    TCP端口的高级扫描方法及实现

    这些控制位包括URG、ACK、PSH、RST、SYN和FIN。 - **URG**:紧急模式位,指示紧急指针字段有效。 - **ACK**:确认模式位,指示确认号字段有效。 - **PSH**:推送模式位,告诉接收方应用程序立即从TCP缓冲区读取数据...

    TCP标识介绍

    FLAGS 字段是 TCP 报头中的一个字段,包含了多个标识位,包括 SYN, FIN, ACK, PSH, RST, URG 等。这些标识位的组合可以表达不同的 TCP 连接状态和操作。 八、TCP 连接建立和关闭 TCP 连接建立和关闭都是通过请求-...

    wireshark抓取TCP连接及断开实验

    - `tcp.flags.syn==1 and tcp.flags.ack==0`:显示包含TCP SYN并且不包含ACK标志的封包。 - `tcp.flags.fin==1 and tcp.flags.ack==1`:显示包含TCP FIN和ACK标志的封包。 - `tcp.window_size==0 && tcp.flags.reset...

    tcp序号混乱分析与解决

    4. **TCP标志(TCP Flags)**:这些标志定义了TCP段的类型和当前操作,如SYN(同步序列号,用于建立连接)、ACK(确认,用于响应接收数据)、FIN(结束,用于关闭连接)等。其他标志包括PSH(推,提示接收方立即处理...

    8.2.3 TCP的连接管理1

    7. **控制位(Flags)**:TCP报文段头部有多个控制位,如SYN、ACK、FIN、URG、PSH、RST、ECN、CWR,用于控制连接状态和数据传输特性。例如,RST用于快速断开连接,URG标记紧急指针等。 8. **连接管理中的安全性**:...

    TCP协议详解及实战解析.pdf

    TCP协议的头部包含了多个控制位,如URG、ACK、PSH、RST、SYN和FIN,这些位控制着连接的建立、数据传输和关闭,以及处理紧急数据和错误恢复。此外,TCP头部还有窗口字段,用于通告接收窗口大小,以便流量控制。 TCP...

    TCP作业抓包——TCP、HTTP协议

    TCP的报文结构包括源端口和目的端口、序号、首部长度、控制标志(如URG、ACK、PSH、RST、SYN、FIN)、窗口大小、紧急指针和校验和等。这些字段确保了TCP的连接建立、数据传输和连接终止的可靠性。TCP的三次握手建立...

    TCP标志控制

    这些系统可以通过检查TCP标志位来检测和防止恶意攻击,例如SYN flood攻击等。 TCP标志控制是TCP协议中的一种重要机制,用于控制数据传输的流程和状态。不同的标志位可以控制不同的数据传输状态,确保数据传输的正确...

    Internet协议分析-TCP报文分析

    - 控制位:其中6个标志位SYN, ACK, PSH, RST, FIN, URG指示特定的状态信息,如SYN用于同步,ACK用于确认,FIN用于终止连接等。 - 窗口大小:表示发送方的接收窗口大小,用于流量控制。 - 校验和:提供端到端的错误...

    TCP的三次握手及TCP协议的包文结构

    ### TCP的三次握手及TCP协议的包文结构 #### TCP的三次握手过程 TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,在Internet中的应用极为广泛。为了确保数据传输的...

    TCP报文分析--三次握手 四次挥手

    * 标记:8 位,后 6 位分别是 URG(紧急指针)、ACK(确认序号有效)、PSH(接收方应该尽快将这个报文段交给应用层)、RST(重建连接)、SYN(同步序号用来发起一个连接)、FIN(发送端完成发送任务)。 * 窗口大小...

    TCP接收和发送

    此外,TCP首部有6个标志比特,包括URG、ACK、PSH、RST、SYN和FIN,分别用于紧急指针、确认、推送、重置连接、同步连接和结束连接等操作。 TCP连接的建立通过三次握手过程实现,即SYN-SYN/ACK-ACK的交互,确保双方都...

    检测端口扫描的方法研究

    ### 检测端口扫描的方法研究 ...通过对端口扫描的基本原理、工作方式及现有检测工具的分析,我们可以更好地理解如何有效地检测和防范此类攻击。未来的研究需要更加关注新技术的应用,以应对不断演变的网络威胁环境。

Global site tag (gtag.js) - Google Analytics