delay coordinates分析法的意义
站在攻击者的立场,他是千方百计地想缩小搜索空间,他希望先搜索一些最可能的值,然后再去搜索其它可能性没那么大的值。通过delay coordinates,他可以看去观察ISN数列的特征,如果,按照上面的方法构造的空间模型A呈现很明显的空间轮廓,如一个正方体,一个圆柱体,或者一个很小的区域,那么ISN很可能就是这个空间模型A中的一点,搜索空间就会可以从一个巨大的三维空间缩小到一个模型A。看一下一个设计得很好的PRNG(输出为32位):...2179423068, 2635919226, 2992875947, 3492493181, 2448506773, 2252539982, 2067122333, 1029730040, 335648555, 427819739...
RFC 1948要求我们用31位的输出,但是,32位的搜索空间比31位的要大一倍,所以,在后面的PRNG的设计中,我采用了32位的输出。
下面,我们来看一下各种典型的空间模型以及对它们的评价。
从空间特性可以看出,某些区域的值互相重叠,某些地方的空间形状很明显,呈针状型,这种PRNG设计得不好,重叠特性很强,攻击者可以从左图分析推断可能性比较大的重叠区域去搜索,这样可以大大减少搜索的难度。
这种PRNG参杂了一些可以预测的随机种子,导致空间模型呈现很明显的片状。攻击者可以根据前面的一些ISN来推测后面的ISN。
这种PRNG产生的随机数序列之间的差值非常小,但是,它的分布特性非常好。所以,虽然,它并没有扩展到整个空间,但是,它比上面几种模型要好的多。攻击者攻击的成功率要少得多。
这个PRNG是以计算机时钟为随机源的。它的ISN值都分布在三个很明显的面上。三个面都在模型的中间有一个汇聚点。这样的PRNG设计的非常差,所以,我们在设计PRNG的时候,不能只是以时钟作为随机源。
各种操作系统的TCP ISN生成器的安全性比较
Windwos 98 SE
但很难明白为什么Windows 98的算法更弱。我们看到R1为0,也就是说,A的空间特性太明显,以致M集只需要一个点就可以算出seq[t]。我们看到,Windows 98的R2小于Windows 95的R2,换言之,Windows 98的seq[t]的搜索代价更少。
Windows NT4 SP3,Windows SP6a和Windows 2000
Windows NT4 SP3在ISN的PNRG算法也是非常弱的,成功率接近100%。Windows 2000和Windows NT4 SP6a的TCP 序列号有着相同的可猜测性。危险程度属于中到高的范围。虽然,我们在图上看不到很明显的3D结构化特征,但是,12%和15%对攻击者来说,已经是一个很满意的结果。
FreeBSD 4.2,OpenBSD 2.8和OpenBSD-current
OpenBSD-current的PRNG 输出为31-bit,也就是说,△seq[t]的值域范围可以是231 –1,意味着,y,z值域也很大,这对使我们很难确定M集,经过我们的处理后,可以看到一个云状物(见上图),它的R1半径很大,而且分布均匀,不呈现任何的空间结构化特性,很难对它进行分析。
Linux 2.2
Linux 2.2的TCP/IP序列号的可分析性也是很少,比起OpenBSD-current,它的PRNG的输出宽度只有24bit,但是,对抵御攻击已经足够了。Linux是按照RFC 1948规范的。它的HASH函数从实现来说,应该是没有什么的漏洞,而且,它应该是引入了外部随机源。
Solaris
Solaris的内核参数tcp_strong_iss有三个值,当tcp_strong_iss=0时,猜中序列号的成功率是100%;当tcp_strong_iss=1时,Solaris 7和Solaris 8一样,都能产生一些特性相对较好的序列号。
tcp_strong_iss=2时,依据Sun Microsystem的说法,系统的产生的ISN值非常可靠,不可预测。通过观察采样值的低位值的变化,可以相信它的PRNG的设计采用了RFC 1948规范,正如Solaris的***所提到的。
但是,我们观察到,Solaris7(tcp_strong_iss=2)虽然使用了RFC 1948,但是,仍然相当的弱,究其原因,是因为Solaris没有使用外部随机源,而且也没有在一段时间之后重算
。由一些Solaris系统动态分配IP地址的主机群要特别小心,因为Solaris在启动之后,一直都不会变(这一点与Linux不同),于是,攻击者在合法拥有某个IP地址的时候,他可以在TCP会话期间对序列号进行大量的采样,然后,当这个IP地址又动态地分配给其他人的时候,他就可以进行攻击(在Clinet-Server结构的网络系统中要尤为注意,因为,许多应用都是分配固定的端口进行通讯)。
获得信息
一旦攻击者获得root的权限,他将立即扫描服务器的存储信息。例如,在人力资源数据库中的文件,支付账目数据库和属于上层管理的终端用户系统。在进行这一阶段的控制活动时,攻击者在脑海中已经有明确的目标。这一阶段的信息获取比侦查阶段的更具有针对性,该信息只会导致重要的文件和信息的泄漏。这将允许攻击者控制系统。
攻击者获得信息的一种方法是操纵远程用户的Web浏览器。大多数的公司并没有考虑到从HTTP流量带来的威胁,然而,Web浏览器会带来很严重的安全问题。这种问题包括Cross-frame browsing bug和Windows spoofing以及Unicode等。浏览器容易发生缓冲区溢出的问题,允许攻击者对运行浏览器的主机实施拒绝服务攻击。一旦攻击者能够在局部使系统崩溃,他们便可以运行脚本程序来渗透和控制系统。
Cross-frame browsing bug允许怀有恶意的Web站点的制作者创建可以从用户计算机上获得信息的Web页面。这种情况出现在4.x和5.x版本的Netscape和Microsoft浏览器上,这种基于浏览器的问题只会发生在攻击者已经知道文件和目录的存储位置时。这种限制看起来不严重,但实际上并非如此。其实,任何攻击者都清楚地知道缺省情况下UNIX操作系统的重要文件存放在(\etc)目录下,Windows NT的文件在(\winnt)目录下,IIS在(\inetpub\wwwroot)目录下等等。