攻击与渗透 (8)

现在,对采样了的50000个ISN序列seq[t] 按照上面的三个方程式来构建空间模型A。这样,就可以通过A的图像特征来分析这个PNRG生成的ISN值的规律。A呈现的空间模型的3D特性越强,它的可分析性就越好。

接着,我们根据这个模型,去分析下一个ISN值seq[t],为此,我们用一个集合K(5000个)去猜测seq[t]。

如果我们知道seq[t-1],要求seq[t],那么,可以通过在这个三维空间中找出一个有良好特性的节点P(x,y,z),将P.x+seq[t-1],我们就可以得到seq[t]。现在,我们将注意力放到怎样在这个三维空间中选择一些点来构成Spoofing集合,也就是怎样通过seq[t-1],seq[t-2],sea[t-3]来推知seq[t]。

由于seq[t-1],seq[t-2],seq[t-3]都可以很容易地在远程主机上探测到,于是,P.y和P.z可以通过以下的公式求出

(图7)

而对于P.x=seq[t]-seq[t-1], 由于seq[t-1]已知,所以,我们可以把它当作是空间的一条直线。如果,在对以前的ISN的采样,通过上面提到的构成的空间模型A呈现某种很强的特征,我们就可以大胆地假设,seq[t]在直线与A的交点上,或者在交点的附近。这样,seq[t]就这样确定了,于是,seq[t+1],seq[t+2]……,我们都可以推断出来。

(图8)

于是,我们大致将构造Spoofing集合分成3个步骤: 

先选取L与A交点之间的所有点。如果,L与A没有交点,我们则选取离L最近的A的部分点。

假设现在 seq[t-1]=25

seq[t-2]=50

seq[t-3]=88

于是,我们可以计算出

y = seq[t-1] - seq[t-2]=25

z = seq[t-2] - seq[t-3]=33

而我们在集合A中找不到满足y=25,z=33这个点,但是,我们找到y=24,z=34和y=27,z=35这两个点,所以,我们要把它们加入Spoofing集合。

我们按照上面的方法,把在A附近(半径<=R1的空间范围内)点集M找出来,然后,我们根据这些点的相应的x值去推导相应的seq[t](按照一定的算法,后面会提到),于是,我们就得到很多的seq[t]。

根据点集M(j),我们在一定的变化浮动范围U里(-R2<=U<=+R2)处理其x值,得出以下的集合K:

M(j).x+1 M(j).x-1 M(j).x+2 M(j).x-2 M(j).x+3 M(j).x-3 …… M(j).x+R2 M(j)-R2

接着我们确定R1和R2的值

    R1值的选取的原则:使M不为空集,一般为1-500个。

    R2值的选取的原则:使K的个数为5000。

对TCP ISN的PRNG分析的总体流程:

(图9)

相关系数的意义:

R1 radius: 影响搜索速度。

R2 radius: 影响猜测ISN的成功率, R2越大,成功率越高,但代价越大。

Average error: 反映了在3.3.2中找出的点集的平均距离。一个过分大的平均距离是不需要的。可以通过是否有足够的正确的猜测值来计算Average error。

delay coordinates分析法的意义

站在攻击者的立场,他是千方百计地想缩小搜索空间,他希望先搜索一些最可能的值,然后再去搜索其它可能性没那么大的值。通过delay coordinates,他可以看去观察ISN数列的特征,如果,按照上面的方法构造的空间模型A呈现很明显的空间轮廓,如一个正方体,一个圆柱体,或者一个很小的区域,那么ISN很可能就是这个空间模型A中的一点,搜索空间就会可以从一个巨大的三维空间缩小到一个模型A。看一下一个设计得很好的PRNG(输出为32位):...2179423068, 2635919226, 2992875947, 3492493181, 2448506773, 2252539982, 2067122333, 1029730040, 335648555, 427819739...

(图10)

RFC 1948要求我们用31位的输出,但是,32位的搜索空间比31位的要大一倍,所以,在后面的PRNG的设计中,我采用了32位的输出。
下面,我们来看一下各种典型的空间模型以及对它们的评价。

(图11)

从空间特性可以看出,某些区域的值互相重叠,某些地方的空间形状很明显,呈针状型,这种PRNG设计得不好,重叠特性很强,攻击者可以从左图分析推断可能性比较大的重叠区域去搜索,这样可以大大减少搜索的难度。

(图12)

这种PRNG参杂了一些可以预测的随机种子,导致空间模型呈现很明显的片状。攻击者可以根据前面的一些ISN来推测后面的ISN。

(图13)

这种PRN***生的随机数序列之间的差值非常小,但是,它的分布特性非常好。所以,虽然,它并没有扩展到整个空间,但是,它比上面几种模型要好的多。攻击者攻击的成功率要少得多。

(图14)

这个PRNG是以计算机时钟为随机源的。它的ISN值都分布在三个很明显的面上。三个面都在模型的中间有一个汇聚点。这样的PRNG设计的非常差,所以,我们在设计PRNG的时候,不能只是以时钟作为随机源。

各种操作系统的TCP ISN生成器的安全性比较

Windows 95 和Windwos 98 SE

(图15)

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgjzxj.html