华信知识服务平台
首页 业界快讯 会议活动 培训信息 专家专栏 每周病毒播报 安全小百科 图书专区 网络营销 定制出版 Intel
Google 在互联网上找 在站内找
安全会议
 
  2008全球数字监控论坛(2008-7-2)
 
  2008年全国信息安全类专业学生创新能力培养研讨会(2008-7-11)
 
  全国“信息安全实验”课程教学经验交流暨师资培训会议(2008-7-14)
 
  全国第19届计算机技术与应用(CACIS2008)学术会议(2008-7-15)
 
  more
每周病毒播报
 

病毒预报 第二百八十四期(2008.7.14-2008.7.20)

 
 

病毒预报 第二百八十三期(2008.7.7-2008.7.13)

 
 

病毒预报 第二百八十二期(2008.6.30-2008.7.6)

 
 

病毒预报 第二百八十一期(2008.6.23-2008.6.29)

 
 

病毒预报 第二百八十期(2008.6.16-2008.6.22)

 
 

病毒预报 第二百七十九期(2008.6.9-2008.6.15)

 
  more
邮件订阅每周病毒播报
E-mail:
 
信息安全系列培训
软件安全系列培训——安全编程(2008-3-29)
“网站安全保护”培训课程
(每月一期)
“企业网络与信息安全”培训课程(2008年6月前每月一期)
 
资源导航
 
  IP欺骗攻击  
引言  

  IP欺骗是一种黑客攻击方法,即使主机系统本身没有任何漏洞,同时也很好的实现了TCP/IP协议,但由于它本身有着一些不安全的地方,因此仍然可以使用各种手段来对TCP/IP网络进行攻击。

 
   
定义  

  IP欺骗是在服务器不存在任何漏洞的情况下,攻击者将其发送的网络数据包的源IP地址篡改为攻击目标所信任的某台主机的IP地址,从而骗取攻击目标信任的一种网络欺骗攻击方法。此方法应用于攻击Unix 平台下通过IP地址进行认证的一些远程服务如rlogin、rsh等,也常应用于穿透防火墙。
IP 欺骗不是进攻的结果,而是进攻的手段,进攻实际上是信任关系的破坏。

 
   
原理结构  

IP欺骗原理:信任关系
在Unix领域中,信任关系能够很容易得到。假如在主机A和B上各有一个帐户,在使用当中会发现,在主机A上使用时需要输入在A上的相应帐户,在主机B上使用时必须输入在B上的帐户,主机A和B把你当作两个互不相关的用户,显然有些不便。为了减少这种不便,可以在主机A和主机B中建立起两个帐户的相互信任关系。在主机A和主机B上你的home目录中创建.rhosts 文件。从主机A上,在你的home目录中输入'echo " B username " > ~/.rhosts' ;从主机B上,在你的home目录中输入'echo " A username " >~/.rhosts' 。至此,你能毫无阻碍地使用任何以r*开头的远程登录如:rlogin,rcall,rsh等,而无口令验证的烦恼。这些命令将允许以地址为基础的验证,或者允许或者拒绝以IP地址为基础的存取服务。因此这里的信任关系是基于IP地址的。
例如Rlogin 是一个简单的客户/服务器程序,它利用TCP传输。Rlogin 允许用户从一台主机登录到另一台主机上,并且,如果目标主机信任它,Rlogin 将允许在不应答口令的情况下使用目标主机上的资源。安全验证完全是基于源主机的IP 地址。因此,根据以上所举的例子,我们能利用Rlogin 来从B远程登录到A,而且不会被提示输入口令。

 
   
相关知识  

  IP欺骗攻击的总体步骤:IP欺骗由若干步骤组成,先做以下假定:首先,目标主机已经选定。其次,信任模式已被发现,并找到了一个被目标主机信任的主机,使得被信任的主机丧失工作能力,同时采样目标主机发出的TCP 序列号,猜测出它的数据序列号。然后,伪装成被信任的主机,同时建立起与目标主机基于地址验证的应用连接。如果成功,可以使用一种简单的命令放置一个系统后门,以进行非授权操作。
使被信任主机丧失工作能力
一旦发现被信任的主机,为了伪装成它,往往使其丧失工作能力。由于攻击者将要代替真正的被信任主机,他必须确保真正被信任的主机不能接收到任何有效的网络数据,否则将会被揭穿。有许多方法可以做到这些。这里介绍“TCP SYN 淹没”。
前面已经谈到,建立TCP连接的第一步就是客户端向服务器发送SYN请求。 通常,服务器将向客户端发送SYN/ACK 信号。这里客户端是由IP地址确定的。客户端随后向服务器发送ACK,然后数据传输就可以进行了。然而,TCP处理模块有一个处理并行SYN请求的最上限,它可以看作是存放多条连接的队列长度。其中,连接数目包括了那些三步握手法没有最终完成的连接,也包括了那些已成功完成握手,但还没有被应用程序所调用的连接。如果达到队列的最上限,TCP将拒绝所有连接请求,直至处理了部分连接链路。因此,这里是有机可乘的。
黑客往往向被进攻目标的TCP端口发送大量SYN请求,这些请求的源地址是使用一个合法的但是虚假的IP地址(可能使用该合法IP地址的主机没有开机)。而受攻击的主机往往是会向该IP地址发送响应的,但可惜是杳无音信。与此同时IP包会通知受攻击主机的TCP:该主机不可到达,但不幸的是TCP会认为是一种暂时错误,并继续尝试连接(比如继续对该IP地址进行路由,发出SYN/ACK数据包等等),直至确信无法连接。
当然,这时已流逝了大量的宝贵时间。值得注意的是,黑客们是不会使用那些正在工作的IP地址的,因为这样一来,真正IP持有者会收到SYN/ACK响应,而随之发送RST给受攻击主机,从而断开连接。前面所描述的过程可以表示为如下模式。
1 Z (X) ---SYN ---> B
Z (X) ---SYN ---> B
Z (X) ---SYN ---> B
2 X <---SYN/ACK-- B
X <---SYN/ACK-- B
3 X <--- RST --- B
在时刻1时,攻击主机把大批SYN 请求发送到受攻击目标(在此阶段,是那个被信任的主机),使其TCP队列充满。在时刻2时,受攻击目标向它所相信的IP地址(虚假的IP)作出SYN/ACK反应。在这一期间,受攻击主机的TCP模块会对所有新的请求予以忽视。不同的TCP 保持连接队列的长度是有所不同的。BSD 一般是5,Linux一般是6。使被信任主机失去处理新连接的能力,所赢得的宝贵空隙时间就是黑客进行攻击目标主机的时间,这使其伪装成被信任主机成为可能。
序列号取样和猜测
前面已经提到,要对目标主机进行攻击,必须知道目标主机使用的数据包序列号。现在,我们来讨论黑客是如何进行预测的。他们先与被攻击主机的一个端口(SMTP是一个很好的选择)建立起正常的连接。通常,这个过程被重复若干次,并将目标主机最后所发送的ISN存储起来。黑客还需要估计他的主机与被信任主机之间的RTT时间(往返时间),这个RTT时间是通过多次统计平均求出的。RTT 对于估计下一个ISN是非常重要的。前面已经提到每秒钟ISN增加128000,每次连接增加64000。现在就不难估计出ISN的大小了,它是128000乘以RTT的一半,如果此时目标主机刚刚建立过一个连接,那么再加上一个64000。再估计出ISN大小后,立即就开始进行攻击。当黑客的虚假TCP数据包进入目标主机时,根据估计的准确度不同,会发生不同的情况:
·如果估计的序列号是准确的,进入的数据将被放置在接收缓冲器以供使用。
·如果估计的序列号小于期待的数字,那么将被放弃。
·如果估计的序列号大于期待的数字,并且在滑动窗口(前面讲的缓冲)之内,那么,该数据被认为是一个未来的数据,TCP模块将等待其它缺少的数据。如果估计的序列号大于期待的数字,并且不在滑动窗口(前面讲的缓冲)之内,那么,TCP将会放弃该数据并返回一个期望获得的数据序列号。下面将要提到,黑客的主机并不能收到返回的数据序列号。
1 Z(B) ----SYN ---> A
2 B <---SYN/ACK--- A
3 Z(B) -----ACK---> A
4 Z(B) ---——PSH---> A
攻击者伪装成被信任主机的IP 地址,此时,该主机仍然处在停顿状态(前面讲的丧失处理能力),然后向目标主机的513端口(rlogin的端口号)发送连接请求,如时刻1所示。在时刻2,目标主机对连接请求作出反应,发送SYN/ACK数据包给被信任主机(如果被信任主机处于正常工作状态,那么会认为是错误并立即向目标主机返回RST数据包,但此时它处于停顿状态)。按照计划,被信任主机会抛弃该SYN/ACK数据包。然后在时刻3,攻击者向目标主机发送ACK数据包,该ACK使用前面估计的序列号加1(因为是在确认)。如果攻击者估计正确的话,目标主机将会接收该ACK 。至耍,将开始数据传输。一般地,攻击者将在系统中放置一个后门,以便侵入。经常会使用 ′cat ++ >> ~/.rhosts′。之所以这样是因为,这个办法迅速、简单地为下一次侵入铺平了道路。

 
   
发展  

  IP欺骗攻击开始于1994年12月25日 14:09:32 米特尼克(美国人,“世界头号电脑黑客”他曾闯入许多电脑网络,包括入侵北美空中防务体系、美国国防部,偷窃了2万个信用号卡和复制软件。)的第一轮探测来自于一台名叫toad.com的主机,这是他事先攻破的一台系统,用来做入侵其他系统的跳板。

 
   
其他  

IP欺骗的防止
这种攻击的关键是相对粗糙的初始序列号变量在Berkeley系统中的改变速度。TCP协议需要这个变量每秒要增加25000次。Berkeley 使用的是相对比较慢的速度。但是,最重要的是,是改变间隔,而不是速度。
我们考虑一下一个计数器工作在250000Hz时是否有帮助。我们先忽略其他发生的连接,仅仅考虑这个计数器以固定的频率改变。
为了知道当前的序列号,发送一个SYN包,收到一个回复:
X---S: SYN(ISN X )
S---X: SYN(ISN S ) ,ACK(ISN X ) (1)
第一个欺骗包,它触发下一个序列号,能立即跟随服务器对这个包的反应:
X---S: SYN(ISN X ) ,SRC = T (2)
序列号ISN S用于回应了:
S---T: SYN(ISN S ) ,ACK(ISN X )
是由第一个消息和服务器接收的消息唯一决定。这个号码是X和S的往返精确的时间。这样,如果欺骗能精确地测量和产生这个时间,即使是一个4-U时钟都不能击退这次攻击。
序列号取样和猜测
要对目标主机进行攻击,必须知道目标主机使用的数据包序列号。现在来讨论黑客是如何进行预测的。他们先与被攻击主机的一个端口(SMTP是一个很好的选择)建立起正常的连接。通常,这个过程被重复若干次,并将目标主机最后所发送的ISN存储起来。黑客还需要估计他的主机与被信任主机之间的RTT时间(往返时间),这个RTT时间是通过多次统计平均求出的。RTT 对于估计下一个ISN是非常重要的。前面已经提到每秒钟ISN增加128000,每次连接增加64000。现在就不难估计出ISN的大小了,它是128000乘以RTT的一半,如果此时目标主机刚刚建立过一个连接,那么再加上一个64000。再估计出ISN大小后,立即就开始进行攻击。当黑客的虚假TCP数据包进入目标主机时,根据估计的准确度不同,会发生不同的情况:
·如果估计的序列号是准确的,进入的数据将被放置在接收缓冲器以供使用。
·如果估计的序列号小于期待的数字,那么将被放弃。
·如果估计的序列号大于期待的数字,并且在滑动窗口(前面讲的缓冲)之内,那么,该数据被认为是一个未来的数据,TCP模块将等待其它缺少的数据。如果估计的序列号大于期待的数字,并且不在滑动窗口(前面讲的缓冲)之内,那么,TCP将会放弃该数据并返回一个期望获得的数据序列号。下面将要提到,黑客的主机并不能收到返回的数据序列号。
1 Z(B) ----SYN ---> A
2 B <---SYN/ACK--- A
3 Z(B) -----ACK---> A
4 Z(B) ---——PSH---> A
攻击者伪装成被信任主机的IP 地址,此时,该主机仍然处在停顿状态(前面讲的丧失处理能力),然后向目标主机的513端口(rlogin的端口号)发送连接请求,如时刻1所示。在时刻2,目标主机对连接请求作出反应,发送SYN/ACK数据包给被信任主机(如果被信任主机处于正常工作状态,那么会认为是错误并立即向目标主机返回RST数据包,但此时它处于停顿状态)。按照计划,被信任主机会抛弃该SYN/ACK数据包。然后在时刻3,攻击者向目标主机发送ACK数据包,该ACK使用前面估计的序列号加1(因为是在确认)。如果攻击者估计正确的话,目标主机将会接收该ACK 。至耍,将开始数据传输。一般地,攻击者将在系统中放置一个后门,以便侵入。经常会使用 ′cat ++ >> ~/.rhosts′。之所以这样是因为,这个办法迅速、简单地为下一次侵入铺平了道路。
一个和这种TCP序列号攻击相似的方法,是使用NETSTAT服务。在这个攻击中,入侵者模拟一个主机关机了。如果目标主机上有NETSTAT,它能提供在另一端口上的必须的序列号。这取消了所有要猜测的需要。
抛弃基于地址的信任策略
阻止这类攻击的一种非常容易的办法就是放弃以地址为基础的验证。不允许r*类远程调用命令的使用;删除.rhosts 文件;清空/etc/hosts.equiv 文件。这将迫使所有用户使用其它远程通信手段,如telnet、ssh、skey等等。
进行包过滤
如果您的网络是通过路由器接入Internet 的,那么可以利用您的路由器来进行包过滤。确信只有您的内部LAN可以使用信任关系,而内部LAN上的主机对于LAN以外的主机要慎重处理。您的路由器可以帮助您过滤掉所有来自于外部而希望与内部建立连接的请求。
使用加密方法
阻止IP欺骗的另一种明显的方法是在通信时要求加密传输和验证。当有多种手段并存时,可能加密方法最为适用。
使用随机化的初始序列号
黑客攻击得以成功实现的一个很重要的因素就是,序列号不是随机选择的或者随机增加的。Bellovin 描述了一种弥补TCP不足的方法,就是分割序列号空间。每一个连接将有自己独立的序列号空间。序列号将仍然按照以前的方式增加,但是在这些序列号空间中没有明显的关系。可以通过下列公式来说明:
ISN =M+F(localhost,localport ,remotehost ,remoteport )
M:4微秒定时器
F:加密HASH函数。
产生的序列号,对于外部来说是不应该能够被计算出或者被猜测出的。Bellovin 建议F是一个结合连接标识符和特殊矢量(随机数,基于启动时间的密码)的HASH函数

 
   
  返回>>  
信息安全系列培训听众登记表

    如果您对我们的培训有兴趣,请完整填写下表并提交
    ——您将有机会免费获得电子工业出版社图书一本。

    有相关问题也可通过以下联系方式咨询
    ①电话咨询:010-88254012;联系人:潘昕
    ②传真:010-88254490
    ③电子邮件:panxin@phei.com.cn

信息安全系列培训听众登记表(*为必填项)
 *姓   名:  * E-mail:
 办公电话:  手    机:
 邮寄地址:  邮政编码:
 感兴趣的课程(可多选):
  企业网络与信息安全   网站安全保护
  院校老师办公安全意识与技能培训  


关于本站|联系我们|业界快讯|会议活动|培训信息|专家专栏|病毒播报|安全百科|图书专区|应用技巧|安全学堂