HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

浅析 TCP 握手欺骗

  • 2015-12-10
  • 本文字数:1230 字

    阅读完需:约 4 分钟

通常来说,TCP 握手就表示通讯双方互相验证了 IP 地址。事实却并非如此,TCP 握手欺骗是一种新型的攻击方式。

假设 A 是客户端,正在连接 B:

A: Hi B, I’m A, send number 5.
B: Hi A, I’m B, 5, send number 3.
A: Hi B, I’m A, 3, send number 6. I’d like example.net.
B: Hi A, I’m B, 6, send number 4. Here comes the data: …

在这之后,A 与 B 将会互发数据。同时为了保证所有数据都能被收到,即通信的可靠性,数字会不断增加。在 1981 年设计 TCP 协议时,安全性没有被优先考虑。ARPANET 给出了一个列表,他们需要一个协议来发送数据,并且不用担心数据重传错误、校验数据完整性、保持数据包序列等等,TCP 解决了这些问题。这些数字被称为序列号(Seq)和确认号(Ack),它们会引发两个问题:

  • 字段不够大(32 位)
  • 由于他们承担了双重责任,为了不破坏连接不正确的数字必须被丢弃。换句话说,你可以发送不正确的 Ack,但只要后续的数据包拥有正确的 Ack 将会被正常接收。

我们来演示一下利用者两个缺陷进行攻击,A 发送数据给 B:

A: Hi B, I’m C, send number 5.
B: Hi C, I’m B, 5, send number 3.
A: Hi B, I’m C, 1, send number 6. I’d like example.net.
B: Hi C, I’m B, that’s incorrect. Close the connection please.
A: Hi B, I’m C, 2, send number 6. I’d like example.net.
B: Hi C, I’m B, that’s incorrect. Close the connection please.
A: Hi B, I’m C, 3, send number 6. I’d like example.net.
B: Hi C, I’m B, 6, send number 4. Here comes the data: …

上面的情形中 B 根本无从知道自己在响应一个伪装的 IP 地址,真正的 C 也根本不知道发生了什么。平均需要花费 120GB 网络流量就能创建一个欺骗连接,这取决于你的运气,不好的话可能需要 200GB,但运气好时只需要 72GB。许多拥有 1gbps 带宽的 VPS 非常便宜,如果你充分利用它,每次攻击平均只要 17 分钟左右。通常如果你想要注入一个有效载荷,例如发送一个命令,它需要被放在现有数据后面,这会增加攻击所需的流量。例如发送“GET / HTTP/1.0\n\n”平均需要 152GB 或者 20 分钟,但这会使得你的连接在对方的 access logs 显示为一个正常的连接。

由于 TCP 协议自身的原因,这种攻击很难解决。虽然可以拒绝大量的不正确的 Ack,并可以以此为理由关闭连接,即便如此,还是会留下巨大的利用空间。如果要互相认证对方,那就需要额外的安全条件,例如使用 TSL。即使证书没有被认证过,由于客户端需要接收额外的数据,任何加密的 TSL 会话都会认证,这样欺骗就无法进行。总之,不要使用基于 IP 地址的认证,不要相信 IP 地址白名单,当你需要安全性的时候使用安全协议认证。


感谢魏星对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群(已满),InfoQ 读者交流群(#2))。

2015-12-10 18:002968
用户头像

发布了 32 篇内容, 共 19.1 次阅读, 收获喜欢 8 次。

关注

评论

发布
暂无评论
发现更多内容

电子行业云MES解决方案

万界星空科技

MES系统

夯实金融云基础设施底座,天翼云助力金融行业释放发展新活力

天翼云开发者社区

云计算 安全

NFT游戏模式开发,外包技术公司团队搭建

V\TG【ch3nguang】

NFT平台搭建,如何开发一个NFT平台

V\TG【ch3nguang】

kill -15 与kill -9的区别

源字节1号

开源 软件开发 前端开发 后端开发 小程序开发

“智算聚芯力 津彩新未来”天津市人工智能计算中心200P上线仪式暨天津人工智能应用创新论坛成功举办

彭飞

前端开发纷繁复杂,是否有更高效的开发方式?

高端章鱼哥

前端开发 低代码 低代码前端

未来3-5年,前端开发往哪个方向发展更好就业?

互联网工科生

前端 前端开发 低代码

大语言模型测试

赤色闪电

电气设计软件有哪些?EPLAN让你成为专业工程师

智造软件

EPLAN 电器辅助设计 电气设计

Numpy和Pandas简介

3D建模设计

Python 数据科学

为什么当下MES如此火热,各大制造业工厂都在推行?

万界星空科技

MES系统

HTTPS的安全体现在什么地方?

巨量HTTP

https HTTP

大模型时代的 AI 原生云

Baidu AICLOUD

AI 原生云

昇腾 AI 创新大赛2023河北区域赛成功举办,22支优秀团队脱颖而出

彭飞

一文秒懂!腾讯云ES HTTPS 集群访问通信最佳实践

腾讯云大数据

ES

图解Kafka消费者客户端分区分配策略

石臻臻的杂货铺

Kafk

App Tamer for Mac(CPU智能控制管理) v2.8.1激活版

mac

苹果mac Windows软件 App Tamer 优化管理软件

工业互联网的破局密钥——低代码开发

力软低代码开发平台

喜讯!广通优云两大产品入选软博会“年度优秀创新软件产品推广目录”

广通优云

议题征集中| KCD 2023 杭州站,共话云原生技术

OpenAnolis小助手

云原生 杭州 龙蜥社区 议题征集 KCD

大规模流量下的云边端一体化流量调度体系

火山引擎边缘云

边缘计算 数字孪生 边缘云 火山引擎边缘云

Python数据结构5步入门

3D建模设计

Python 数据工程

研发管理的挑战、本原与方案

iSoftBook

项目管理 软件工程 研发管理平台 敏捷方法 研发云平台

实现 LangChain 版本的 AutoGPT 项目的图形化界面

赤色闪电

Python 基础知识:语法、数据类型和控制结构

3D建模设计

Python 数据工程

OpenHarmony—应用间HSP开发指导

OpenHarmony开发者

OpenHarmony

关于前端就业前景的一点看法

树上有只程序猿

前端 前端开发

国产“芯”突破 | 优博讯携手海思推出AI新零售创新方案

Geek_2d6073

安全可靠的文件传输服务助力完成更高效的医疗保健工作(上)

镭速

文件传输服务 医疗保健

安全可靠的文件传输服务助力完成更高效的医疗保健工作(下)

镭速

文件传输服务 医疗保健

浅析TCP握手欺骗_安全_百占辉_InfoQ精选文章