3.2.6 电子欺骗法
来源:安全中国
3.2.6 电子欺骗法
攻击者为了获取目标主机上的资源,可能会采用电子欺骗的手段来达到目的。电子欺骗法主要是通过伪造数据包,并使用目标主机可信任的IP地址作为源地址把伪造好的数据包发送到目标主机上,以此获取目标主机的信任,进而访问目标主机上的资源。
由于TCP/IP协议本身存在很多缺陷,因此,不论目标主机上运行的是何种操作系统,电子欺骗都是容易实现的,它也常被用做获取目标主机信任的一种攻击方式。例如,TCP序列号欺骗、路由欺骗、源地址欺骗和授权欺骗等都是针对TCP/IP本身的缺陷实现的攻击方法。
1.TCP序列号欺骗
TCP序列号欺骗是通过TCP的三次握手过程,推测服务器的响应序列号而实现的。这种欺骗即使在没有得到服务器响应的情况下,也可以产生TCP数据包与服务器进行通信。
为了确保端到端的可靠传输,TCP对所发送出的每个数据包都分配序列编号,当对方收到数据包后则向发送方进行确认,接收方利用序列号来确认数据包的先后顺序,并丢弃重复的数据包。TCP序列号在TCP数据包中占32位字节,有发送序列号SEQS和确认序列号SEQA两种,它们分别对应SYN和ACK两个标志。当SYN置1时,表示所发送的数据包的序列号为SEQS ;当ACK置1时,表示接收方准备接收的数据包的序列号为SEQA 。
在客户机与服务器建立连接的三次握手过程中,序列号的变化如下。
① Client → Server :SYN(SEQS=ISNC)
② Server → Client :SYN(SEQS=ISNS),ACK(SEQA=ISNC+1)
③ Client → Server :ACK(SEQA=ISNS+1)
其中,客户机首先向服务器发送一个初始序列号ISNC ,并置SYN=1,表示需要与服务器建立连接;服务器确认这个传输后,向客户机返回它本身的序列号ISNS,并置ACK=1,同时通知客户机下一个期待获得的数据序列号是ISNC+1;最后,客户机再次确认,完成三次握手的过程。
在这个三次握手的过程中,如果能够推测出由服务器返回的序列号ISNS的值,则可实现序列号欺骗攻击。假设User是服务器上的可信任主机,Xser是冒充User的入侵者,那么,如果Xser预测出了ISNS的值,则TCP序列号欺骗攻击的过程
如下。
① Xser → Server:SYN(SEQS=ISNC);使用User的IP作为源地址
② Server → User :SYN(SEQS=ISNS),ACK(SEQA=ISNC+1)
③ Xser → Server:ACK(SEQA=ISNS+1);使用User的IP作为源地址
在这里,Xser以User的身份向服务器发送初始序列号,并置SYN=1,请求与服务器建立连接;当服务器收到该请求后,向User返回应答序列号,如果此时User能正常工作,则认为这是一个非法数据包而终止连接,使攻击者的目的落空,否则,攻击者将继续以User的身份向服务器发送已推测出的确认序列号ISNS+1,并与服务器建立连接,进而可在服务器上行使User的权限,执行相应的操作。
使用这种攻击需要具备两个基本条件:一是能推测出序列号ISNS的值;二是所冒充的可信任主机不能正常工作。其中,最关键的是要推测出由服务器返回的序列号ISNS的值。由服务器返回的这个值可能是个随机数,它通常与被信任主机和服务器间的RTT时间有关,必须经过多次采样和统计分析,才可能推测到这个值。通常,可重复多次与被攻击主机的某个端口(如SMTP)建立正常连接,然后断开,并记录每次连接所设定的ISN值。另外,还需要多次测试可信任主机与服务器间的RTT时间,并统计出平均值。根据这个RTT时间值,可以通过下式估算出ISN的值。
一旦估计出ISN的值,就可进行攻击,这个攻击过程是利用IP欺骗法实现的。
2.IP欺骗
IP欺骗是利用可信任主机的IP地址向服务器发起攻击的。
为了实现IP欺骗,必须首先使可信任主机丧失工作能力,然后,使用可信任主机的IP与服务器建立连接,进而达到攻击的目的。