TCP序列号随机化

在最近一次采访中,我的朋友被问到防火墙的TCP序列号随机化function。 面试官提到,我们知道防火墙会随机分配TCP序列号,但是中间的攻击者仍然可以通过networking嗅探这个数据包,并代表发送者发送。 那么随机化到底是什么呢?

我已经在RFC 6528中研究了这个针对序号的攻击,但是还没有完全掌握这个概念。

我将不胜感激帮助理解这一点。

我对Overmind的回答没有任何反应,这绝对是发明顺序号随机化的一个很好的总结。 但是我不确定它是如何回答问题的,所以我会尽力去做。

你是对的。 没有什么能够阻止特权MITM伪造一个有效的SN复位的TCP复位 – 现在是随机的SN或者没有。 但是,特权MITM不需要这么长时间来干扰他通过他的networking的连接 – 他只需要拔掉一根电缆,或者改变一个路由器的ACL。

SN随机化旨在阻止其他人做同样的事情。 如果你的SN可以被猜出, 任何人都可以伪造TCP重置,并且解除连接的同步。 如果无法猜测,则需要访问数据stream。

通常情况下,每个设备通过使用定时计数器(如时钟)selectISN,每4微秒递增一次。 当TCP启动时,这个计数器被初始化,然后它的值每4微秒增加1,直到达到可能的最大32位值(4Gigs),此时它“缠绕”到0并且恢复递增。 任何时候build立一个新的连接,ISN都是从这个定时器的当前值中获取的。 由于从4到4,294,967,295,每增加4us需要花费4个多小时,这确保每个连接都不会与以前的任何连接发生冲突。 这个方法的主要问题是它使ISN可预测。 恶意的人可以编写代码来分析ISN,然后根据之前使用的ISN预测后续TCP连接的ISN。 由于这代表了过去已经被利用的安全风险,所以防火墙实现在ISNselect过程中使用随机数。 这样,可预测性就不再是问题。