IP欺骗的原理

上一篇 / 下一篇  2008-06-19 10:15:36 / 个人分类:技术&其他

dCc!r-IVow2p0 作者:r00t 来源:eNet论坛51Testing软件测试网0_U.Z.Xg%N;T
51Testing软件测试网p.s%w-bc;Pw%Eq
  看到上面的说明,每一个黑客都会想到:既然hosta和hostb之间的信任关系是基于IP址而建立起来的,那么假如能够冒充hostb的IP,就可以使用rlogin登录到hosta,而不需任何口令验证。这,就是IP欺骗的最根本的理论依据。
e&\+J$K |l$w0
;Kkyb,f~'m{0  但是,事情远没有想像中那么简单!虽然,可以通过编程的方法随意改变发出的包的IP地址,但TCP协议对IP进行了进一步的封装,它是一种相对可靠的协议,不会让黑客轻易得逞。不信?好,先来看一下一次正常的TCP/IP会话的过程。
v']4Vr.t0M#_%d-IU0
;}O1gH7M'c e E0  由于TCP是面向连接的协议,所以在双方正式传输数据之前,需要用“三次握手”来建立一个稳重的连接。假设还是hosta和hostb两台主机进行通信,hostb首先发送带有SYN标志的数据段通知hosta建立TCP连接,TCP的可靠性就是由数据包中的多位控制字来提供的,其中最重要的是数据序列SYN和数据确认标志ACK。B将TCP报头中的SYN设为自己本次连接中的初始值(ISN)。51Testing软件测试网EP"J6i/n"[6R {]!Y

rY `Y_1T0  当hosta收到hostb的SYN包之后,会发送给hostb一个带有SYN+ACK标志的数据段,告之自己的ISN,并确认hostb发送来的第一个数据段,将ACK设置成hostb的SYN+1。
1~ V w:xp#\(Lw I0
|)L tV(zd @:Df&[0  当hostb确认收到hosta的SYN+ACK数据包后,将ACK设置成hosta的SYN+1。Hosta收到hostb的ACK后,连接成功建立,双方可以正式伟输数据了。51Testing软件测试网"eYya;~ d ~
51Testing软件测试网d[ }X)\Yl Q#u
  我们就很容易想到,假如想冒充hostb对hosta进行攻击,就要先使用hostb的IP地址发送SYN标志给hosta,但是当hosta收到后,并不会把SYN+ACK发送到我们的主机上,而是发送到真正的hostb上去,这时……嘿嘿……露陷了吧?因为hostb根本没发送发SYN请请。所以如果要冒充hostb,首先要hostb失去工作能力。也就是所谓的拒绝服务攻击,让hostb瘫痪。51Testing软件测试网V!|"pT:d%b:A6^+h,Pr
51Testing软件测试网7g4a!vkQT0Nv
  可是……这样还是远远不够的……,最难的就是要对hosta进行攻击,必须知道hosta使用的ISN。TCP使用的ISN是一个32位的计数器,从0到4 294 967 295。TCP为每一个连接选择一个初始序列号ISN,为了防止因为延迟、重传等扰乱三次握手,ISN不能随便选取,不同的系统有着不同的算法。理解TCP如何分配ISN以及ISN随时间的变化规律,对于成功的进行IP欺骗攻击是很重要的!ISN约每秒增加128 000,如果有连接出现,每次连接将把计数器的数值增加64 000。很显然,这使得用于表示ISN的32位计数器在没有连接的情况下每9.32小时复位一次。
;c2h:q%p5ea"[(_ |sR4e051Testing软件测试网m#A,b3`)]D%G)V(c
  这所以这样,是因为它有利于最大于度地减少“旧有”连接的信息干扰当前连接的机会。如果初始序例号是随意选择的,那么不能保证现有序例号是不同于先前的。假设有这样一种情况,在一个路由回路中的数据包最终跳出循环,回到了“旧有”的连接,显然这会对现有连接产生干扰。预测出攻击目标的序例号非常困难,而且各个系统也不想同,在Berkeley系统,最初的序列号变量由一个常数每秒加1产生,等加到这个常数的一半时,就开始一次连接。51Testing软件测试网Yf$R.D+f+}
51Testing软件测试网8X%`uBtJ @r.i
  这样,如果开始啊一个合法连接,并观察到一个ISN正在使用,便可以进行预测,而且这样做有很高的可信度。现在我们假设黑客已经使用某种方法,能预测出ISN。在这种情况下,他就可以将ACK序便号送给hosta,这时连接就建立了。51Testing软件测试网.O|5SH&u'e4n

e+P hr\|051Testing软件测试网~ \!b4M!Vvm


TAG:

引用 删除 miss.liu   /   2014-01-03 15:00:49
 

评分:0

我来说两句

Open Toolbar