当年世界头号黑客凯文米特尼克完成了怎样的 TCP 劫持?

2016-05-12 22:59:30 +08:00
 nareix
http://www.freebuf.com/fevents/104106.html

14:30 AM

来自美国加州大学的选手曹跃在不共享链路(非中间人攻击)的情况下截取电脑与服务器的 TCP 链接,成功弹出一个钓鱼页面,盗走用户密码。而这个 TCP 协议栈的漏洞,会影响几乎全部的安卓和 Linux 系统。曹跃成功重现了当年世界头号黑客凯文米特尼克完成的 TCP 劫持。

1 、 TCP 是什么?

在互联网启蒙时期,不同的开发者使用了不同通信方式,而为了让通信成功并且可靠,要求所有主机都使用相同的语言,而非各自的“方言”。这时“协议”便出现了,通俗地说就是一种大家约定好的通信方式。

TCP 的全名为传输控制协议,是上世纪 60 年代由麻省理工学院和一些商业组织为美国国防部开发的,作为目前世界上应用最为广泛的协议,被用于网站、邮件及即时通讯网络连接中。

TCP 提供一种面向连接的、可靠的字节流服务。面向连接意味着两个使用 TCP 的应用(通常是一个客户和一个服务器)在彼此交换数据包之前必须先建立一个 TCP 连接。这一过程与打电话很相似,先拨号振铃,等待对方摘机说“喂”,然后才说明是谁。

2 、 TCP 劫持 /破解 TCP 序列号为什么被视为“不可能的任务”?

当主机与服务器通过 TCP 协议建立初始连接时,它们之间会发送一系列数据包,来创建一个连接。 TCP 协议要求把传输的数据分成大小适合的“包”,并给每个“包”一个序列号,接受者成功接收后也会发回一个相应的确认号( ACK )。

因此是否能够有效劫持一个连接,取决于攻击者是否能够预测出 TCP 序列号和端口号。序列号这是一个 32 位随机数,有 40 多亿种可能;端口号则 6 万多种可能,两者相叠加一共有超过 280 万亿种可能。在实际网络环境中,由于网络带宽以及相应 TCP 连接持续时长有限,这样的连接是不可能被暴力猜解的。当今 TCP 连接序列号的设计就是为了防止被破解。

--------

这个新闻说的很牛逼,而且微博上说是『知道 IP 地址就能发起攻击』,然而真正实现并没说。所以到底是咋回事儿?
5800 次点击
所在节点    程序员
4 条回复
ryd994
2016-05-12 23:15:50 +08:00
想多了吧?
“ TCP 连接序列号的设计就是为了防止被破解” 呵呵呵……那 TLS 干什么吃的?
TCP 本来就是不加密的,而且也从不应被认为是安全的。即使不控制链路,一样有机会窃听到交换的数据包。序号是连续递增的,在不控制链路的情况下,难点不是猜到序号,而是在劫持后,避免另一方发现序号错误然后 rst 。控制链路的话当然就简单了, drop rst 包就行。如果不控制链路,个人水平有限,只能想到 ARP 之类的更低层的欺骗。或者服务器的防火墙恰好配置有误。
ryd994
2016-05-12 23:19:57 +08:00
补充一条可能有用的
前提是服务器配置不当(实际上网上很多教程都是这么配的,同时也是为什么 firewalld 的 catch-all reject 而不 drop )
http://www.iptables.info/en/iptables-problems.html#SYNACKANDNEW
nareix
2016-05-12 23:27:17 +08:00
@ryd994 我也觉得是。然而它说『不共享链路』,就是说不在一个链路层,连窃听都不能?
liwei
2016-05-13 08:56:32 +08:00
http://wiki.cas.mcmaster.ca/index.php/The_Mitnick_attack

Kevin Mitnick 当年实施 TCP 劫持时 TCP 协议栈还很简陋,并且需要依赖的外部条件也很多。如果说在当前的 linux 协议栈上还能重现 Mitnick 攻击,难度比当年要高很多。

在没有提供详细的攻击方法之前,我对此持怀疑态度。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/278301

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX