当前位置: 首页 > 图文教程 > 网络安全 > 安全基础 > 网络安全讲座之:攻击与渗透(6)

安全基础
IE浏览器防黑十大秘籍,黑客也没招
网络工程师讲解系统安全漏洞的形成和防治
清除导致XP系统反复重启的新网银木马
识破QQ欺骗网络地址的几种方法汇总
安全基础知识 细说暴库的原理与方法
排除无线突然中断故障实例
强搜天线 搜出WiFi世界的安全漏洞
网管应用技巧 内网安全十大策略说明
如何修改局域网内部打印机的IP地址
如何找出IIS中隐藏的网站
EFS加密技术的概念分析及一次解密经过
提高Windows XP系统安全性要关闭的10种服务
PHPBB 2.0.22 MOD版最新注入漏洞
修复Windows系统忘记密码的9个高招
用SockOnline软件轻松突破端口限制
安全基础知识 最强0到33600端口详解
执行文件方式加密FLASH文件的解密方法
网吧被入侵后的应对解决方法
网页“黑手”如何攻击你的Windows系统
不要让别人读了你的信 谈私密数据保护

安全基础 中的 网络安全讲座之:攻击与渗透(6)


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-10-28   浏览: 31 ::
收藏到网摘: n/a

其它一些方法

  构造TCP ISN生成器的一些更直接的方法是:简单地选取一些随机数作为ISN。这就是给定一个32位的空间,指定 ISN = R(t)。(假设R()是完全的非伪随机数生成函数)

  固然,对于完全随机的ISN值,攻击者猜测到的可能性是1/232是,随之带来的一个问题是ISN空间里面的值的互相重复。这违反了许多RFC(RFC 793, RFC 1185, RFC 1323, RFC1948等)的假设----ISN单调增加。这将对TCP协议的稳定性和可靠性带来不可预计的问题。

  其它一些由Niels Provos(来自OpenBSD 组织)结合完全随机方法和RFC 1948解决方案:

  ISN = ((PRNG(t)) << 16) + R(t)     32位

  其中

  PRNG(t) :一组随机指定的连续的16位数字  0x00000000 -- 0xffff0000

  R(t) :16位随机数生成器(它的高位msb设成0)0x00000000 -- 0x0000ffff

  上面的公式被用于设计OpenBsd的ISN生成器,相关的源代码可以从下面的网址获得

http://www.openbsd.org/cgi-bin/cvsweb/src/sys/netinet/tcp_subr.c

  Provos的实现方法有效地生成了一组在给定时间内的不会重复的ISN的值,每两个ISN值都至少相差32K,这不但避免了随机方法造成的ISN的值的冲突,而且避免了因为哈希函数计算带来的性能上的下降,但是,它太依赖于系统时钟,一旦系统时钟状态给攻击者知道了,就存在着系统的全局ISN状态泄密的危机。

  TCP ISN生成器的构造方法的安全性评估

  ISN与PRNGs(伪随机数生成器)

  我们很难用一台计算机去生成一些不可预测的数字,因为,计算机被设计成一种以重复和准确的方式去执行一套指令的机器。所以,每个固定的算法都可以在其他机器上生成同样的结果。如果能够推断远程主机的内部状态,攻击者就可以预测它的输出;即使不知道远程主机的PNRG函数,但因为算法最终会使ISN回绕,按一定的规律重复生成以前的ISN,所以,攻击者仍然可以推断ISN。幸运的是,目前条件下,ISN的重复可以延长到几个月甚至几年。但是,仍然有部分PRNG生成器在产生500个元素后就开始回绕。解决伪随机数的方法是引入外部随机源,击键延时,I/O中断,或者其它对攻击者来说不可预知的参数。把这种方法和一个合理的HASH函数结合起来,就可以产生出32位的不可预知的TCP ISN的值,同时又隐蔽了主机的PNRG的内部状态。不幸的是,很少的TCP ISN产生器是按这种思路去设计的,但即使是这样设计的产生器,也会有很多的实现上的漏洞使这个产生器产生的ISN具有可猜测性。

  RFC1948的建议提供了一种比较完善的方法,但是,对攻击者来说,ISN仍然存在着可分析性和猜测性。其中,PRNG的实现是个很关键的地方。

  Spoofing 集合

  需要知道一点是,如果我们有足够的能力能够同时可以发出232个包,每个包由不同的ISN值,那么,猜中ISN的可能性是100%。但是,无论从带宽或计算机的速度来说都是不实际的。但是,我们仍然可以发大量的包去增加命中的几率,我们把这个发出的攻击包的集合称为Spoofing集合。通常,从计算机速度和网络数据上传速率两方面来考虑,含5000个包的Spoofing的集合对众多的网络用户是没有问题的,5000-60000个包的Spoofing集合对宽带网的用户也是不成问题的,大于60000个包的Spoofing集合则超出一般攻击者的能力。网络的速度和计算机性能的不断增加会提高那种使用穷尽攻击方法猜测ISN的成功率。从攻击者的立场,当然希望能够通过定制一个尽可能小的Spoofing集合,而命中的几率又尽可能高。我们假定我们攻击前先收集50000个包作为ISN值的采样,然后,我们把这些ISN用作对将来的ISN的值猜测的依据。

  一种称为“delay coordinates”的分析方法

  在动态系统和非线性系统中,经常使用一种叫做“delay coordinates”的分析法,这种方法使我们可以通过对以前的数据的采样分析来推想以后的数据。

  我们试图以建立一个三维空间(x,y,z)来观察ISN值(seq[t])的变化,其中t取0,1,2, ……



(图6)

  方程组(E1)

  现在,对采样了的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]。