精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>电脑技术>>● 计算机安全>>◇网络安全◇>>小技巧>>"空位攻击"可以欺骗大多数检测系统从而使

主题:"空位攻击"可以欺骗大多数检测系统从而使
发信人: ilyyz()
整理人: (2000-06-14 13:07:39), 站内信件
涉及程序: 
防火墙或者检测系统,RTSD(Real Time Scan Detecter)是典型 
  
描述 
"空位攻击"可以欺骗大多数检测系统从而使攻击包绕过防火墙 
  
详细 
"空位攻击" 可以欺骗大多数检测系统从而使攻击包绕过防火墙
请参看 
http://www.cnns.net/frankie/mirror/rfcs/files/rfc793.txt关于TCP包结构的



定义。
实际上,TCP包头只有6个控制信息位(control bits): URG,ACK,PSH,RST,SYN,FI



N
URG---包含在紧急字段中的数据,很重要,不能忽略
ACK---包含在确认字段中的数据,同上重要
PSH---推送功能
RST---重置连接
SYN---使序列号同步
FIN---数据从发送端发送完毕

然而,tcp.h头文件中为 TCP包头定义的变量是u_char类型,具有1个字节的长度



(8bits),从而有两个空位。

@(#)tcp.h 8.1 (Berkeley) 6/10/93
*/
typedef u_int tcp_seq;
/*
* TCP header.
* Per RFC 793, September, 1981.
*/
struct tcphdr {
u_short th_sport; /* source port */
u_short th_dport; /* destination port */
tcp_seq th_seq; /* sequence number */
tcp_seq th_ack; /* acknowledgement number */
#if BYTE_ORDER == LITTLE_ENDIAN 
u_char th_x2:4, /* (unused) */
th_off:4; /* data offset */
#endif
#if BYTE_ORDER == BIG_ENDIAN 
u_char th_off:4, /* data offset */
th_x2:4; /* (unused) */
#endif
u_char th_flags;
#define TH_FIN 0x01
#define TH_SYN 0x02
#define TH_RST 0x04
#define TH_PUSH 0x08
#define TH_ACK 0x10
#define TH_URG 0x20


u_short th_win; /* window */
u_short th_sum; /* checksum */
u_short th_urp; /* urgent pointer */
};

# 还有更多....
从上面红色的代码,我们看到 th_flags 是一个 u_char的8位数据类型,但只定



义了6个信息位,还有两个空数据位:
|unused|unused|URG|ACK|PSH|RST|SYN|FIN| 
而 tcp.h中TH_SYN 的值为 0x02,体现为bit就是: |0|0|0|0|0|0|1|0|
以检测SYN攻击为例,比较下面两个 if 语句(这是典型的SYN检测程序的代码,检



测净SYN的包):

i) if ( flag == TH_SYN ) 


ii) if ( flag & TH_SYN ) /* 按位与 */
(TH_SYN->SYN flag) 

i)只有当syn位设置为1时if语句为真
即flag的值为 0x2,体现为bit形式就是: |0|0|0|0|0|0|1|0|

ii)而第二个语句是将 |0|0|0|0|0|0|1|0|的SYN常量值与 flag进行按位与操作。



只要flag的SYN位被设置为1时才为真。

在通常情况下,如果SYN被设置为1,则两个语句都为真。
但如果黑客把两个最高位(空位)设置为1,则第一个if语句为假,而第二个if语句



为真
使用第一种if语句的软件,就检测不到SYN攻击。这个包头其它几个控制位都是0



,而只有SYN位是1。

结论:检测系统代码在设置TCP包头的flags值为给定值的时候,必须把最高两位空



位清0。


 
  
解决方案 
在检测系统计算flag值之前的代码,插入如下一句:

flag = flags & 0x3f; 
 
  
相关站点 
http://www.cnns.net/frankie/mirror/rfcs/files/rfc793.txt 




--
※ 修改:.ilyyz 于 Feb 23 17:11:15 修改本文.[FROM: 202.96.191.124]
※ 来源:.月光软件站 http://www.moon-soft.com.[FROM: 202.96.191.124]

[关闭][返回]