当客户端从服务器收第一个SYN/ACK包时便把开关掷向ESTABLISHED(已创建)状态,黑客的成功依赖于为CLT_TO_SVR_OFFSET造取了正确的数值,选取错误的数值将使客户端的包和黑客的包不能被接受,而且这样可能产生意想不到的结果,包括连接的终止。 ) ?3 i. \7 ~7 B# N
# c* h9 M+ O; ] o. e) Z; @ 4.空数据非同步入侵 ; Y6 O/ S) M0 n9 w" U $ p+ b$ M: C5 Y8 e" b 在前面部分里,您已了解了黑客如何利用在连接的早期阶段截获一个TCP连接来实施一次前期非同步入侵,非同步一个TCP连接后,黑客能实施一次空数据非同步入侵。空数据指不会影晌服务器的任何东西,不会改变TCP 认证号,黑客通过同时向服务器和客户端发送大量数据来实施一次空数据入侵。 1 y h: O: m8 z# c
; {. m" P7 ?6 I5 Q7 V
黑客发送的数据对客户端来说是不可见的。相反,空数据迫使TCP会话中连接的两台计算机切换到非同步状态,因为纯粹的空数据干预到了计算机维护TCP连接的能力。 - H( j8 \6 ?7 M# g5 G- a
9 R- R) l8 Z' I- w- S* i) V9 l
5.Telnet会话入侵 - \; i( x# Q! p* o- C6 S$ l4 H# t3 O( v$ R
前面部分已详述了黑客能在一个已存在的或新运行的TCP连接上实施的各种入侵。然而,黑客也可以干预到几乎任何网络通讯。例如,黑客可以用TELNET会话实施以下截获方案: ' L4 g8 x! k8 P# V6 z' c" i4 R+ I' m2 a6 [5 T
(1)在入侵之前,黑客通常先观察网上的传送,而不进行任何干预。 ) Q& \+ y- A/ U: k5 V+ @* H `
6 B, s' U! P! C# l* \! a3 v
(2)适当时候,黑客向服务器发送一大批空数据。在被截获的TELNET会话上,黑客发送一个含扩展字号IAC NOP LAC NOP 的ATK_SVR_OFFSET字。TELNET协议将NOP命令定义为"空操作",换句话说,不做任何操作且忽视这一对中的字。由于此空操作,服务器的TELNET的后台驻留程序将把每个字都解释为空数值,因为这一点,后台驻留程序将数据流中的每个对删掉。然而,服务器对扩展空传送的接收将扰乱正进行工作的TELNET会话,在此步之后,服务器接收以下命令: - C$ E+ z1 s% e! }1 a$ y4 d) S& P2 O) @% Q5 a
SVR_ACK = CLT_SEQ+ATK_SVR_OFFSET - H7 U1 a8 D6 J+ }- f
9 l/ V' J0 p, y3 y n4 f5 I (3)服务器对黑客命令的接收将创建一个非同步TELNET的连接。 1 ~ P/ a* c+ l1 _% t( z7 g$ R2 e
R( u' {' i+ V8 u3 u
(4)为了迫使客户机转换到非同步状态,黑客向客户端实施一个与服务器相同的步骤(如图13)。 . e, | T' r4 J* v8 E; y
2 P( k/ V& O M; _+ o
图13 黑客如何向客户端和服务发送空数据 (5)为完成TELNET会话入侵,黑客实施前面详述的步骤,直到黑客成为TELNET会话连接的中间人(如图14)。 ( V" h, k8 {9 r! U3 v) X! ` y' u m f& q0 R+ q3 t图2-14 如果Telnet 会话可以传送空数据的话,黑客只能利用前面详述的五个步骤的TELNET截获方式。纵使如此,黑客对于选择合适时间发送空数据仍有困难。如果时间不正确,入侵将很容易破坏Telnet会话,或者会引起会话干扰,而不能让黑客控制会话。当您参与TELNET会话,预料不到的结果将表明黑客正在截获会话。 / I* T5 Z* v' a; G+ [9 J
8 |0 Z/ _% p' e) [' A, ?
6.对ACK风暴的了解 " j y) f. E0 m% G" t
5 C: d' a. H J) b 在TCP连接内,几乎所有含ACK设定标识而不带数据的包都是未接收包的确认信息。在任何网上,特别是在INTERNET通讯中,将发生大量的转送。在一个遭受了前面详述的各种入侵的网上,会发生更多的转送。转送的号码将依据网上的负荷和引起风暴的黑客主机而定,一个服务器登录能包含多达300多个空包。特别地,在一个实际入侵中传送的数据包可能产生10至30个ACK空包。 1 g3 w$ j: ]' y3 m; |
2 g* T5 z. G6 E 7.检测及其副作用 * p! P- P1 C& k $ y% b+ W3 H* `1 U. x 您可以利用ACK入侵的各种缺陷来检测入侵,这部分将描述三种检测方式,但记住仍有其他方法。 " D6 J) C; _1 J% D9 i, p
/ z7 B- X4 z+ W7 U# D: f0 I* |' ~ 非同步状态检测。您可以利用TCP包来观察连接双方的顺序号。根据顺序号。您可以判断出连接是否处于非同步状态。然而,仅当假定您在连接上传送顺序号时没有黑客改变它,您才可以在连接的双方阅读包--这是一个一般的安全假定。 ; B- s' {) A# {/ r* r7 K, {9 m. m; K) ^( C, o1 x; f9 ~4 T' x3 P
ACK风暴检测:些局域以太网的TCP交通在入侵前的统计表明,总的TELNET包的无数据包率为三分之一,而当一个黑客入侵时,为1/300。 3 y5 r) s( t/ [+ i1 F: q4 | ! c! y8 m; |$ w1 @, |+ w9 \5 q" n 包百分率记数:您可以通过对包的百分率记数来监视连接的状态。通过对有入侵时的包百分率和普通数据包百分率的对比,可以提醒您存在非同步入侵。表1显示了通常连接中数据包和ACK包每分钟的数目。 " A, L3 H$ h1 b# T8 c 9 Q9 \7 e! L- `1 N5 T' {$ G 表1 普通传送中,ACK包每分钟传送的数目 . I$ X6 K2 K) W4 x' ~1 m
包的类型 本地 以太网传输 / M6 F y7 _6 K* h
Total TCPs 80-100 1400 ! H" N6 @, R- H, v# U8 b0 l4 D" X Total ACK 25-75 500 1 [; j$ O3 S ^4 Q3 z Total Telnet 10-20 1400 ' h! `$ `3 T, R. E( c) i$ J* m Total Telnet ACK 5-10 45 # J& F+ b: K, X) h2 p6 |+ ]5 P- [0 O
: {3 f( ^5 Q8 W8 E. I* h' k2 r TCP包和 ACK包的数目在本地以太网上变化很大。一个常规连接上的ACK TELNET包的百分率一般稳定在45%左右,Telnet会话是一种交互式会话,服务器必须对用户敲入的每一个字母进行响应和认证。事实上这正是Telnet包计数稳定性的原因所在。在TELNET会话中,基于降低包丢失率的考虑,每个包通常仅含一个字母或一行正文,所以数据交换量较小。正如TELNET数据流,流向远程以太网的数据与其是一致的。因为它的高数据负荷,接收主机可能丢失一些包。 - U% {6 x" A& l( C 6 [9 {* S5 S, K, n& w 相对地,当黑客入侵时,真正的包与ACK包的比值会发生改变。表2显示了黑客入侵时包的计数。 8 x( N8 }& E7 x# b8 d
% `# u( U, V6 U8 s; p, b 表2 遭入侵时,ACK包的计数情况 % L# U9 }# i# S( A! c1 i" T 包的类型 本地连接 2 P3 t" x+ ~3 K# Z( R
Total Telnet 80-400 1 [# \3 Q9 f5 ]/ M/ O! K Total Telnet ACK 75-400 % q' x/ n0 i" w+ F