非中间人就不能劫持TCP了吗
发布时间:2022-07-27 10:47:15 所属栏目:安全 来源:互联网
导读:TCP的初始序列号 Hi,我是Robert,上回说到我费了老大劲才考上了Linux帝国的公务员,被分配到了网络部协议栈大厦的传输层工作。 上班第一天,主管就让我处理一个新的TCP连接练练手。虽然我理论背的滚瓜烂熟,不过还没有实际上手处理过TCP数据包,竟有些紧张
TCP的初始序列号 Hi,我是Robert,上回说到我费了老大劲才考上了Linux帝国的公务员,被分配到了网络部协议栈大厦的传输层工作。 上班第一天,主管就让我处理一个新的TCP连接练练手。虽然我理论背的滚瓜烂熟,不过还没有实际上手处理过TCP数据包,竟有些紧张起来。 接过这个请求连接的数据包后,我准备了一个响应包,将SYN标记和ACK标记都点亮后,接下来就犯了难了。这个确认号ACK我倒是知道是对方的序列号+1,不过我回复的序列号该是多少呢? 这可难不倒我,脱口而出:“肯定是这家伙在半道上监听了网络通信,拿到了他们通信的序列号和确认号,然后就能伪造一方进行通信了” Cerf摇了摇头,“非也,这家伙不是中间人,没有监听通信哦” 这下我倒是蒙了,皱起了眉头,“不是中间人,那就没办法知道序列号了,不知道序列号的前提下,怎么能冒充呢?” 听到我的问题,Cerf会心一笑,“这家伙太聪明了,在冒充之前,他先和服务器建立过连接,拿到了服务器的初始序列号。因为这个序列号是每4ms加1,所以后面掐着时间推算一下,就能算到后面建立连接的时候,服务器新的ISN是什么” 我恍然大悟,“这家伙真鸡贼,那看来这个ISN不能这样简单设定。” “所以啊,我刚刚制止了你,现在RFC出了新规定1948号文件,规定ISN要这么算:” ISN = M + F(localhost, localport, remotehost, remoteport) “M就是你刚刚看那个计数器,在此基础之上,还增加了一个F,把通信双方的IP和端口,也就是四元组信息做一个运算,得到一个值加在计数器之上,增加ISN的不可预测性” 我点了点头,“这个F一般用什么算法呢?” “在咱们Linux帝国,之前用过MD4算法,后来升级成MD5算法了” “感谢Cerf,要不是你我就要犯错误了” Cerf拍拍我的肩,语重心长的说:“你还要不停学习啊,考上帝国公务员只是第一步”。 (编辑:云计算网_泰州站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |