网易首页 > 网易号 > 正文 申请入驻

从TCP协议的原理论rst复位攻击

0
分享至

  在谈RST攻击前,必须先了解TCP:如何通过三次握手建立TCP连接、四次握手怎样把全双工的连接关闭掉、滑动窗口是怎么传输数据的、TCP的flag标志位里RST在哪些情况下出现。下面我会画一些尽量简化的图来表达清楚上述几点,之后再了解下RST攻击是怎么回事。

  TCP是什么?

  TCP是在IP网络层之上的传输层协议,用于提供port到port面向连接的可靠的字节流传输。我来用土语解释下上面的几个关键字:

  port到port:IP层只管数据包从一个IP到另一个IP的传输,IP层之上的TCP层加上端口后,就是面向进程了,每个port都可以对应到用户进程。

  可靠:TCP会负责维护实际上子虚乌有的连接概念,包括收包后的确认包、丢包后的重发等来保证可靠性。由于带宽和不同机器处理能力的不同,TCP要能控制流量。

  字节流:TCP会把应用进程传来的字节流数据切割成许多个数据包,在网络上发送。IP包是会失去顺序或者产生重复的,TCP协议要能还原到字节流本来面目。

  从上面的TCP协议图可以看到,标志位共有六个,其中RST位就在TCP异常时出现,也是我这篇文章重点关注的地方。

  通过三次握手建立连接

  下面我通过A向B建立TCP连接来说明三次握手怎么完成的。

  为了能够说清楚下面的RST攻击,需要结合上图说说:SYN标志位、序号、滑动窗口大小。

  建立连接的请求中,标志位SYN都要置为1,在这种请求中会告知MSS段大小,就是本机希望接收TCP包的最大大小。

  发送的数据TCP包都有一个序号。它是这么得来的:最初发送SYN时,有一个初始序号,根据RFC的定义,各个操作系统的实现都是与系统时间相关的。之后,序号的值会不断地增加,比如原来的序号是100,如果这个TCP包的数据有10个字节,那么下次的TCP包序号会变成110。

  滑动窗口用于加速传输,比如发了一个seq=100的包,理应收到这个包的确认ack=101后再继续发下一个包,但有了滑动窗口,只要新包的seq与没有得到确认的最小seq之差小于滑动窗口大小,就可以继续发。

  滑动窗口

  滑动窗口毫无疑问是用来加速数据传输的。TCP要保证“可靠”,就需要对一个数据包进行ack确认表示接收端收到。有了滑动窗口,接收端就可以等收到许多包后只发一个ack包,确认之前已经收到过的多个数据包。有了滑动窗口,发送端在发送完一个数据包后不用等待它的ack,在滑动窗口大小内可以继续发送其他数据包。举个例子来看吧。

  大家看上图,标志位为.表示所有的flag都为0。标志位P表示flag为PSH的TCP包,用于快速传输数据。

  前三个包是三次握手,客户端表示自己的滑动窗口大小是65535(我的XP机器),服务器端表示滑动窗口是5840(屏幕宽了,没截出来)。从第四个包开始,客户端向服务器发送PSH包,数据长度是520字节,服务器发了ack确认包。注意此时win窗口大小发生了改变哈。以此类推。

  倒数第二、三包,服务器在滑动窗口内连续向客户端发包,客户端发送的ack 124同时确认了之前的两个包。这就是滑动窗口的功能了。

  如果谈到TCP攻击就需要注意,TCP的各种实现中,在滑动窗口之外的seq会被扔掉!下面会讲这个问题。

  四次握手的正常TCP连接关闭

  先画张简单的正常关闭连接状态变迁图。

  FIN标志位也看到了,它用来表示正常关闭连接。图的左边是主动关闭连接方,右边是被动关闭连接方,用netstat命令可以看到标出的连接状态。

  FIN是正常关闭,它会根据缓冲区的顺序来发的,就是说缓冲区FIN之前的包都发出去后再发FIN包,这与RST不同。

  RST标志位

  RST表示复位,用来异常的关闭连接,在TCP的设计中它是不可或缺的。就像上面说的一样,发送RST包关闭连接时,不必等缓冲区的包都发出去(不像上面的FIN包),直接就丢弃缓存区的包发送RST包。而接收端收到RST包后,也不必发送ACK包来确认。

  TCP处理程序会在自己认为的异常时刻发送RST包。例如,A向B发起连接,但B之上并未监听相应的端口,这时B操作系统上的TCP处理程序会发RST包。

  又比如,AB正常建立连接了,正在通讯时,A向B发送了FIN包要求关连接,B发送ACK后,网断了,A通过若干原因放弃了这个连接(例如进程重启)。网通了后,B又开始发数据包,A收到后表示压力很大,不知道这野连接哪来的,就发了个RST包强制把连接关了,B收到后会出现connect reset by peer错误。

  RST攻击

  A和服务器B之间建立了TCP连接,此时C伪造了一个TCP包发给B,使B异常的断开了与A之间的TCP连接,就是RST攻击了。实际上从上面RST标志位的功能已经可以看出这种攻击如何达到效果了。

  那么伪造什么样的TCP包可以达成目的呢?我们至顶向下的看。

  假定C伪装成A发过去的包,这个包如果是RST包的话,毫无疑问,B将会丢弃与A的缓冲区上所有数据,强制关掉连接。

  如果发过去的包是SYN包,那么,B会表示A已经发疯了(与OS的实现有关),正常连接时又来建新连接,B主动向A发个RST包,并在自己这端强制关掉连接。

  这两种方式都能够达到复位攻击的效果。似乎挺恐怖,然而关键是,如何能伪造成A发给B的包呢?这里有两个关键因素,源端口和序列号。

  一个TCP连接都是四元组,由源IP、源端口、目标IP、目标端口唯一确定一个连接。所以,如果C要伪造A发给B的包,要在上面提到的IP头和TCP头,把源IP、源端口、目标IP、目标端口都填对。这里B作为服务器,IP和端口是公开的,A是我们要下手的目标,IP当然知道,但A的源端口就不清楚了,因为这可能是A随机生成的。当然,如果能够对常见的OS如windows和linux找出生成source port规律的话,还是可以搞定的。

  序列号问题是与滑动窗口对应的,伪造的TCP包里需要填序列号,如果序列号的值不在A之前向B发送时B的滑动窗口内,B是会主动丢弃的。所以我们要找到能落到当时的AB间滑动窗口的序列号。这个可以暴力解决,因为一个sequence长度是32位,取值范围0-4294967296,如果窗口大小像上图中我抓到的windows下的65535的话,只需要相除,就知道最多只需要发65537(4294967296/65535=65537)个包就能有一个序列号落到滑动窗口内。RST包是很小的,IP头+TCP头也才40字节,算算我们的带宽就知道这实在只需要几秒钟就能搞定。

  那么,序列号不是问题,源端口会麻烦点,如果各个操作系统不能完全随机的生成源端口,或者黑客们能通过其他方式获取到source port,RST攻击易如反掌,后果很严重。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
胡某,当场死亡!死亡后果自担!

胡某,当场死亡!死亡后果自担!

潘集帮
2024-04-19 09:08:35
农业农村部:正会同有关部门编制逐步把永久基本农田全部建成高标准农田实施方案

农业农村部:正会同有关部门编制逐步把永久基本农田全部建成高标准农田实施方案

人民资讯
2024-04-19 14:08:53
你错过了多少异性给你的暗示?

你错过了多少异性给你的暗示?

户外阿崭
2024-04-08 07:35:07
知名啤酒检出呕吐毒素!网友:再见了

知名啤酒检出呕吐毒素!网友:再见了

21世纪经济报道
2024-04-19 15:43:42
关于死亡,这可能是一篇颠覆你认知的文章!

关于死亡,这可能是一篇颠覆你认知的文章!

尚曦读史
2024-04-05 10:52:47
上海世纪公园24小时开放首夜:游客不足百人,为谁留灯又为何熄灯

上海世纪公园24小时开放首夜:游客不足百人,为谁留灯又为何熄灯

澎湃新闻
2024-04-19 20:40:29
强烈反对西北工业大学公然设立正教授就餐区!

强烈反对西北工业大学公然设立正教授就餐区!

十二维研学空间
2024-04-19 12:37:50
季后赛出局,34岁方硕官宣决定,首钢遗憾,去向曝光,翟小川祝福

季后赛出局,34岁方硕官宣决定,首钢遗憾,去向曝光,翟小川祝福

东球弟
2024-04-19 11:32:42
WCBA总决赛进抢五!四川单节26-5坎贝奇24+19 内蒙古3人犯满离场

WCBA总决赛进抢五!四川单节26-5坎贝奇24+19 内蒙古3人犯满离场

厝边人侃体育
2024-04-19 21:21:33
联想杨元庆:华为在特定领域突出,但相比联想和英伟达,差距较大

联想杨元庆:华为在特定领域突出,但相比联想和英伟达,差距较大

开心体育站
2024-04-19 19:46:35
1米68女儿生病,让老父亲抱着,老妈愁得挠头,网友:我家也一样

1米68女儿生病,让老父亲抱着,老妈愁得挠头,网友:我家也一样

雪莉故事汇
2024-04-17 11:32:26
英足总认错了:曼城被皇马淘汰后,瓜帅炮轰的密集赛程终于改革!

英足总认错了:曼城被皇马淘汰后,瓜帅炮轰的密集赛程终于改革!

刺头体育
2024-04-20 08:26:17
“北京三老”拒绝退役!方硕提出退役条件,翟晓川:我不老还能战

“北京三老”拒绝退役!方硕提出退役条件,翟晓川:我不老还能战

林子说事
2024-04-20 04:13:45
为何轻取早田希娜?连续追分,日本教练庆祝,谁注意王曼昱反应

为何轻取早田希娜?连续追分,日本教练庆祝,谁注意王曼昱反应

东球弟
2024-04-19 18:54:27
5岁儿子是前男友的,我跪下求丈夫原谅,可亲子鉴定结果让我傻眼

5岁儿子是前男友的,我跪下求丈夫原谅,可亲子鉴定结果让我傻眼

朝暮书屋
2024-04-17 11:47:36
咸鱼变“黄鱼”,表面上买女生自用自行车,实是做肮脏的交易​

咸鱼变“黄鱼”,表面上买女生自用自行车,实是做肮脏的交易​

三月柳
2024-04-18 14:13:38
女婿偷吃岳母22年:一场家庭信任危机的终极揭露

女婿偷吃岳母22年:一场家庭信任危机的终极揭露

社会潜伏者
2024-04-19 17:02:23
性能超越华为Pura70Ultra,售价却便宜一半,16GB+1TB+卫星通信

性能超越华为Pura70Ultra,售价却便宜一半,16GB+1TB+卫星通信

科技阿维
2024-04-19 23:46:04
日本击败阿联酋,国奥提前无缘U23亚洲杯八强和巴黎奥运

日本击败阿联酋,国奥提前无缘U23亚洲杯八强和巴黎奥运

懂球帝
2024-04-20 01:47:16
突发!不忍了,中国果断反击!

突发!不忍了,中国果断反击!

制造界
2024-04-20 00:09:07
2024-04-20 11:08:49
孙有匪
孙有匪
科技
1595文章数 2009关注度
往期回顾 全部

科技要闻

华为今年最关键的事曝光!Pura 70有新消息

头条要闻

媒体:布林肯访华第一天未必见得到王毅

头条要闻

媒体:布林肯访华第一天未必见得到王毅

体育要闻

米切尔这次对线不会输了吧

娱乐要闻

北影节开幕之夜,内娱女星千娇百媚

财经要闻

新华资管香港的秘密:猛投地产或致巨亏

汽车要闻

风神L7预售 东风汽车北京车展阵容公布

态度原创

艺术
旅游
教育
数码
公开课

艺术要闻

最全展览单元剧透!北京最受瞩目艺术现场100青年艺术季终极解读

旅游要闻

最像江南的湖南城市,中国基建没它不行

教育要闻

扬州古琴传承人协助两岸大学成立社团,传承千年非遗古韵

数码要闻

小米首款法式冰箱!米家439L法式冰箱上架:3499元

公开课

睡前进食会让你发胖吗?

无障碍浏览 进入关怀版