「面试」TCP/IP常见攻击

本文详细介绍了TCP/IP协议中常见的攻击手法,包括IP欺骗、SYN Flooding、UDP Flooding、TCP重置攻击和中间人攻击。通过解释攻击原理和示例,阐述了这些攻击如何导致服务中断或资源耗尽,并提出了相应的缓解措施,如TCP连接的三次握手漏洞和DDoS攻击的防御策略。
摘要由CSDN通过智能技术生成

这一篇主要和大家一起学习回顾关于 TCP/IP 的常见攻击,至少有一个基本的认识

前言

在这里插入图片描述

1 IP欺骗

IP是什么

在网络中,所有的设备都会分配一个地址。这个地址就仿佛小蓝的家地址「多少号多少室」,这个号就是分配给整个子网的,「」对应的号码即分配给子网中计算机的,这就是网络中的地址。「号」对应的号码为网络号,「」对应的号码为主机号,这个地址的整体就是IP地址

通过IP地址我们能知道什么?

通过 IP 地址,我们就可以知道判断访问对象服务器的位置,通过这个 IP 地址就可以判断访问对象服务器的位置,从而将消息发送到服务器。一般发送者发出的消息首先经过子网的集线器,转发到最近的路由器,然后根据路由位置访问下一个路由器的位置,直到重点

IP头部格式

IP头部格式

IP欺骗技术

骗呗,拐骗,诱骗!

IP 欺骗技术就是伪造某台主机的 IP 地址的技术。通过IP 地址的伪装使得某台主机能够伪装另外的一台主机,而这台主机往往具有某种特权或者被另外的主机所信任。

假设现在有一个合法用户 (1.1.1.1) 已经同服务器建立正常的连接,攻击者构造攻击的 TCP 数据,伪装自己的 IP 为 1.1.1.1,并向服务器发送一个带有 RSI 位的 TCP 数据段。服务器接收到这样的数据后,认为从 1.1.1.1 发送的连接有错误,就会清空缓冲区中建立好的连接。

这时,如果合法用户 1.1.1.1 再发送合法数据,服务器就已经没有这样的连接了,该用户就必须从新开始建立连接。攻击时,伪造大量的IP地址,向目标发送 RST 数据,使服务器不对合法用户服务。虽然IP地址欺骗攻击有着相当难度,但我们应该清醒地意识到,这种攻击非常广泛,入侵往往从这种攻击开始。


2 SYN Flooding

SYN Flooding简介

拒绝服务攻击(DDoS)从1970 年出现直到今天都依然在作祟,并给全球范围内的各大组织带来了不可估量的损失。SYN Flood是互联网上最经典的DDoS攻击方式之一,最早出现于 1999 年左右,雅虎是当时最著名的受害者。SYN Flood攻击利用了 TCP 三次握手的缺陷,能够以较小代价使目标服务器无法响应,且难以追查。

SYN flood 是一种常见的 DOS(denial of service拒绝服务)和 DDos (distributed denial of serivce 分布式拒绝服务)攻击方式。这是一种使用TCP协议缺陷,发送大量的伪造的 TCP 连接请求,使得被攻击方 CPU 或内存资源耗尽,最终导致被攻击方无法提供正常的服务。

TCP SYN Flood攻击原理

TCP SYN Flood 攻击利用的是 TCP 的三次握手(SYN -> SYN/ACK -> ACK),假设连接发起方是A,连接接受方是 B,即 B 在某个端口(Port)上监听A发出的连接请求,过程如下图所示,左边是A,右边是B。

在这里插入图片描述

A 首先发送 SYN(Synchronization)消息给 B,要求 B 做好接收数据的准备;B 收到后反馈 SYN-ACK(Synchronization-Acknowledgement) 消息给A,这个消息的目的有两个:

  • 向 A 确认已做好接收数据的准备,

  • 同时要求 A 也做好接收数据的准备,此时 B 已向 A 确认好接收状态,并等待 A 的确认,连接处于半开状态(Half-Open),顾名思义只开了一半;A 收到后再次发送 ACK (Acknowledgement) 消息给B,向 B 确认也做好了接收数据的准备,至此三次握手完成,「连接」就建立了,

大家注意到没有,最关键的一点在于双方是否都按对方的要求进入了可以接收消息的状态。而这个状态的确认主要是双方将要使用的消息序号(SquenceNum),TCP 为保证消息按发送顺序抵达接收方的上层应用,需要用消息序号来标记消息的发送先后顺序的。

TCP是「双工」(Duplex)连接,同时支持双向通信,也就是双方同时可向对方发送消息,其中 SYNSYN-ACK 消息开启了A→B的单向通信通道(B 获知了 A 的消息序号);SYN-ACKACK 消息开启了B→A单向通信通道(A获知了B的消息序号)。

上面讨论的是双方在诚实守信,正常情况下的通信。

但实际情况是,网络可能不稳定会丢包,使握手消息不能抵达对方,也可能是对方故意不按规矩来,故意延迟或不发送握手确认消息。

假设 B 通过某 TCP 端口提供服务,B 在收到 A 的 SYN 消息时,积极的反馈了 SYN-ACK 消息,使连接进入半开状态,因为 B 不确定自己发给 A 的 SYN-ACK 消息或 A 反馈的 ACK 消息是否会丢在半路,所以会给每个待完成的半开连接都设一个Timer,如果超过时间还没有收到 A 的 ACK 消息,则重新发送一次 SYN-ACK 消息给A,直到重试超过一定次数时才会放弃。

B 为帮助 A 能顺利连接,需要分配内核资源维护半开连接,那么当 B 面临海量的连接 A 时,如上图所示,SYN Flood

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值