HCIE网络安全第三天

TCP协议

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接(连接导向)的、可靠的、 基于IP的传输层协议。TCP在IP报文的协议号是6。
下面来看一下TCP协议的报头,顺便详细说明一下每个字段的意义。
在这里插入图片描述

Source Port
16比特
源端口,标识哪个应用程序发送。

Destination Port
16比特
目的端口,标识哪个应用程序接收。

Sequence Number
32比特
序号字段。TCP链接中传输的数据流中每个字节都编上一个序号。序号字段的值指的是本报文段所发送的数据的第一个字节的序号。

Acknowledgment Number
32比特
确认号,是期望收到对方的下一个报文段的数据的第1个字节的序号,即上次已成功接收到的数据字节序号加1。只有ACK标识为1,此字段有效。

Data Offset
4比特
数据偏移,即首部长度,指出TCP报文段的数据起始处距离TCP报文段的起始处有多远,以32比特(4字节)为计算单位。最多有60字节的首部,若无选项字段,正常为20字节。

Reserved
6比特
保留,必须填0。

URG
1比特
紧急指针有效标识。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。

ACK
1比特
确认序号有效标识。只有当ACK=1时确认号字段才有效。当ACK=0时,确认号无效。

PSH
1比特
标识接收方应该尽快将这个报文段交给应用层。接收到PSH =
1的TCP报文段,应尽快的交付接收应用进程,而不再等待整个缓存都填满了后再向上交付。

RST
1比特
重建连接标识。当RST=1时,表明TCP连接中出现严重错误(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立连接。

SYN
1比特
同步序号标识,用来发起一个连接。SYN=1表示这是一个连接请求或连接接受请求。

FIN
1比特
发端完成发送任务标识。用来释放一个连接。FIN=1表明此报文段的发送端的数据已经发送完毕,并要求释放连接。

Window
16比特
窗口:TCP的流量控制,窗口起始于确认序号字段指明的值,这个值是接收端正期望接收的字节数。窗口最大为65535字节。

Checksum
16比特
校验字段,包括TCP首部和TCP数据,是一个强制性的字段,一定是由发端计算和存储,并由收端进行验证。在计算检验和时,要在TCP报文段的前面加上12字节的伪首部。

Urgent Pointer
16比特
紧急指针,只有当URG标志置1时紧急指针才有效。TCP的紧急方式是发送端向另一端发送紧急数据的一种方式。紧急指针指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。

Options
可变
选项字段。TCP协议最初只规定了一种选项,即最长报文段长度(数据字段加上TCP首部),又称为MSS。MSS告诉对方TCP“我的缓存所能接收的报文段的数据字段的最大长度是MSS个字节”。
新的RFC规定有以下几种选型:选项表结束,无操作,最大报文段长度,窗口扩大因子,时间戳。

窗口扩大因子:3字节,其中一个字节表示偏移值S。新的窗口值等于TCP首部中的窗口位数增大到(16+S),相当于把窗口值向左移动S位后获得实际的窗口大小。
时间戳:10字节,其中最主要的字段是时间戳值(4字节)和时间戳回送应答字段(4字节)。
选项确认选项:

Padding
可变
填充字段,用来补位,使整个首部长度是4字节的整数倍。

data
可变
TCP的数据负载。

TCP的连接方式
三次握手机制:
TCP是面向连接的,无论哪一方向另一方发送数据之前,都必须先在双方之间建立一条连接。
在TCP/IP协议中,TCP 协议提供可靠的连接服务,连接是通过三次握手进行初始化的。三次握手的目的是同步连接双方的序列号和确认号 并交换 TCP窗口大小信息。

在这里插入图片描述
三次握手过程:
第一次握手:建立连接。客户端发送连接请求报文段,将SYN位置为1,Sequence Number为x;然后,客户端进入SYN_SEND状态,等待服务器的确认;
第二次握手:服务器收到SYN报文段。服务器收到客户端的SYN报文段,需要对这个SYN报文段进行确认,设置Acknowledgment Number为x+1(Sequence Number+1);同时,自己自己还要发送SYN请求信息,将SYN位置为1,Sequence Number为y;服务器端将上述所有信息放到一个报文段(即SYN+ACK报文段)中,一并发送给客户端,此时服务器进入SYN_RECV状态;
第三次握手:客户端收到服务器的SYN+ACK报文段。然后将Acknowledgment Number设置为y+1,向服务器发送ACK报文段,这个报文段发送完毕以后,客户端和服务器端都进入ESTABLISHED状态,完成TCP三次握手。

四次挥手过程:
第一次分手:主机1(可以使客户端,也可以是服务器端),设置Sequence Number和Acknowledgment Number,向主机2发送一个FIN报文段;此时,主机1进入FIN_WAIT_1状态;这表示主机1没有数据要发送给主机2了;
第二次分手:主机2收到了主机1发送的FIN报文段,向主机1回一个ACK报文段,Acknowledgment Number为Sequence Number加1;主机1进入FIN_WAIT_2状态;主机2告诉主机1,我也没有数据要发送了,可以进行关闭连接了;
第三次分手:主机2向主机1发送FIN报文段,请求关闭连接,同时主机2进入CLOSE_WAIT状态;
第四次分手:主机1收到主机2发送的FIN报文段,向主机2发送ACK报文段,然后主机1进入TIME_WAIT状态;主机2收到主机1的ACK报文段以后,就关闭连接;此时,主机1等待2MSL后依然没有收到回复,则证明Server端已正常关闭,那好,主机1也可以关闭连接了。

TCP半开攻击
攻击原理:
利用tcp的三次握手服务器会分配一个资源,攻击者利用大量的syn连接但是不回复ack的手段,消耗握手资源,使得受害者无法给正常用户提供握手资源导致tcp无法握手,形成DOS攻击。
其实就是由于大量的SYN数据包请求服务器,导致服务器系统等待缓存资源瞬间被占满,服务器瘫痪,从而不能响应正常的服务请求。

实施攻击的工具:
netwox 76号工具
sudo netwox 76 -i 192.168.66.130 -p 80
-i代表目的地址
-p代表端口号

防御方式:
建立syscookies机制,用hash算法提取tcp头部的一些字段做标记。

TCP RST重置攻击
攻击原理:
上面我们说过TCP报文中各个字段的功能,而RST是重建连接标识。在 TCP 重置攻击中,攻击者通过向通信的一方或双方发送伪造的消息,告诉它们立即断开连接,从而使通信双方连接中断。

正常情况下发送RST报文的原因:

  1. 到不存在的端口的连接请求
    产生复位的一种常见情况是当连接请求到达时,目的端口没有进程正在监听。对于UDP,当一个数据报到达目的端口时,该端口没在使用,它将产生一个ICMP端口不可达的信息;而TCP则使用复位。
  2. 异常终止一个连接
    终止一个连接的正常方式是一方发送FIN,这也称为有序释放,因为在所有排队数据都已发送之后才发送FIN,正常情况下没有任何数据丢失。但也有可能发送一个复位报文段而不是FIN来中途释放一个连接,这也称为异常释放。
    异常终止一个连接对应用程序来说有两个优点:
    (1)丢弃任何待发数据并立即发送复位报文段;
    (2)RST的接收方会区分另一端执行的是异常关闭还是正常关闭。
  3. 检测半关闭连接
    如果一方已经关闭或异常终止连接而另一方却还不知道,我们将这样的TCP连接称为半打开的。任何一端的主机异常都可能导致发生这种情况。只要不打算在半打开连接上传输数据,仍处于连接状态的一方就不会检测另一方已经出现异常。下面介绍一种建立半打开连接的情形。在bsdi上运行Telnet客户程序,通过它和svr4上的丢弃服务器建立连接。接着断开服务器主机与以太网的电缆,并重启服务器主机。这可以模拟服务器主机出现异常(在重启服务器之前断开以太网电缆是为了防止它向打开的连接发送FIN,某些TCP在关机时会这么做)。服务器主机重启后,我们重新接上电缆,并从客户向服务器发送一行字符。由于服务器的TCP已经重新启动,它将丢失复位前连接的所有信息,因此它不知道数据报文段中提到的连接。TCP处理的原则是接收方以复位作为应答。

实施攻击的工具:
netwox 78号工具
sudo netwox 78 -i 192.168.45.22 -f “port 80 ”
-i是受害主机IP
-f是匹配流量的意思,对端口号为80的流量发送攻击报文

TCP劫持攻击
攻击思路:
在这里插入图片描述
1、hacker获取client与server的tcp会话包(通过arp毒化,mac泛洪攻击等);
2、观察server给client主机发送的tcp报文,以获取client将要给server发送的下一个报文信息;
3、hacker通过工具伪造一个tcp报文,发送给server,其内容信息通过步骤2中获取的报文来确定。
1) mac地址换成hacker
2)三层的ip地址不变还是client的ip,目标也不变还是server的ip
3)tcp信息根据观察构造,保证他是client给server的下一个报文tcp报文

实施攻击的工具:
netwox 40号工具
sudo netwox 40 --ip4-ttl 128 --ip4-protocol 6 --ip4-src 192.168.66.129 --ip4-dst 192.168.66.131 -tcp-src 50349 --tcp-dst 23 --tcp-seqnum 3657776184 --tcp-acknum 1813087074 --tcp-ack --tcp-psh --tcp-window 227 --tcp-data
命令内容包括TTL值、协议号、源IP、目的IP、源端口、目的端口、序列号、确认号、tcp的ack和psh位置为1、滑动窗口大小和数据内容,内容上述命令没有阐述。

防御技术:

  1. 不要把网络安全信任关系建立在IP基础上或者MAC基础上,(RARP同样存在欺骗的问题),理想的关系应该建立在IP+MAC基础上。
  2. 设置静态的MAC—>IP对应关系表,不要让主机刷新设定好的转换表。
  3. 停止使用ARP,将需要的ARP作为永久条目保存在对应表中。
  4. 建立防火墙来连续监控网络。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值