v* w* A2 l' L3 y' X( f 2.TCP ACK风暴 ) e4 q9 |6 m d i: O
3 Q) a+ I- ~/ s% `5 s& l9 i6 i4 s 前面部分详述的后期非同步劫持入侵有一个基本的不足,即它将大量地产生 TCP ACK包,网络专家称这些大量的 ACK包为 TCP ACK风暴。当一个主机(无论客户机或服务器)收到一个不能接受的包时,主机将向产生的主机发送期待的顺序号来认证这个不能接收的包。 # y% |+ a, L ~8 ~
0 m+ c, E+ o! K, j' K. O 在以前详述的主动的 TCP入侵的情况下,第一个 TCP ACK包将包含服务器的顺序号,客户机因为没有送出请求更改的包,所以将不接受这个认证包。因此,客户机产生自己的认证包,它反过来迫使服务器产生另一个认证包,这些反复循环,理论上对传送每个数据包是一个无止尽循环(如图9)。 3 i4 A* M R" \7 Q1 l$ t d
3 i3 s+ N* t4 P# T. S! q" h图9 入侵产生的风暴循环 因为认证包不传送数据,如果接收者丢失了这个包,ACK包的发送者将不再传递。换句话说,如果一个机器在ACK风暴循环中丢掉一个包,循环便终止。幸运的是,正如您以前所知,TCP将IP用在不可靠的网络层上,以一个非空的包损失,网络设计者将迅速结束循环。而且,网上丢掉的包越多,ACK风暴持续期越短。再加之,ACK循环是自规的--换句话说,黑客产生的循环越多,客户机和服务器接到的交通数量也越多,它反过来增加拥挤度。这样便丢掉包,有更多的循环结束。 4 o U0 z; p1 R" ~% H % [+ M$ x. J4 r9 ~$ _# M7 K( Q3 v TCP 连接在每次客户机或服务器发送数据时创建一个循环。如果既不是客户机又不是服务器发送数据,TCP连接便产生不了循环。如果客户机和服务器都未发送数据也没有黑客认证数据,发送者将再传这个数据。在再传之后,TCP连接将为每一个再传送创建一个风暴,最后连接的双方放弃连接,因为客户机和服务器都未发送ACK包。如果黑客认证了数据传送,TCP连接将仅产生一个风暴。实际上,由于网上的负荷,黑客经常错过数据包,因此黑客将认证再传送的第一个包--意味着每次在黑客传输时入侵将至少产生一个ACK风暴。 9 M& o' y2 G% N1 I5 z8 M2 ~
' C9 m$ O& T8 q; j
3.前期非同步入侵 a, M$ l* L: F) u) N: O9 u2 Z" g- Y8 _; x
在前面,您了解到非同步后TCP劫持入侵(即在客户机和服务器连接之后发生的入侵)。不像非同步后劫持入侵,前期非同步入侵在客户机和服务器的早期连接建立时破坏其连接,而不是在连接已设立或完成之后。前期非同步入侵在服务器端破坏连接,在破坏连接之后,黑客创建一个具有不同顺序号的新连接,前期非同步的入侵工作如下。 7 J5 ^0 ?$ f, q _1 J8 h
3 M! v- u1 e/ c8 o e& r c4 {: d (1)在连接创建阶段2,黑客窃听服务器发送到客户机SYN/ACK包(如图10)。 6 {* Z V+ ?" w( l3 @' D- f3 b
' f# G5 R( o& P1 ?+ j# \5 ]3 D图10 服务器给客户机发送一个ACK包# O7 o2 r9 b8 N
8 z" y( o2 W* ?$ n- D; w% V( g. j8 O
(2)当黑客检测到SYN/ACK包时,黑客发送一个RST复位请求包,接着发送一个与服务器的SYN/ACK包有相同参数SYN包。然而,黑客的请求带着一个不同的顺序号。您可以把这个看作入侵者确认包(ATK_ACK_0)(如图11)。 & Y5 ~, ]6 [; q6 {+ C , ]0 S$ t$ {: d: e6 v图11 黑客发送两个数据包给服务器 & s" z/ g2 W9 X4 Q : x6 m1 j- b0 ?" M (3)服务器将收到RST包时关闭第一个连接,且将在同一端重开一个新的连接,但当收到SYN包时,便具有不同顺序号,服务器将向原用户回送一个SYN/ACK包。 u$ }/ s) ?+ a. n* a7 B* e1 `* p s6 o9 P& m% k/ L
(4)黑客截取SYN/ACK包,向服务器发送它自己的ACK包,服务器开关掷向同步连接以创建状态(如图12)。 3 b2 M3 s/ W* z) C/ |& c' s # `' v- A; ^1 i0 R" J图12 黑客截获包并建立同步接