返回列表 回复 发帖

IT培训--IP Spoof技术介绍

广州北大青鸟IT培训--IP Spoof技术介绍

2000年以来,互联网上黑客新闻不断,比如今年3月发生在北京的黑客攻击事件,几家较为著名的ISP相继宣称被同一站点入侵,证据是在受害主机上通过某种形式得到了属于被指控站点的IP纪录,而被指责方则宣称是有人恶意假冒该方IP,而且这种假冒非常容易实现。双方各执一词,争论不下,一方认定攻击来自被指责方,一方则辩解说假冒IP实现极为简单,自己是被人暗算。
   那么,从技术角度讲,假冒IP是否可行,实现起来是不是那么简单呢?我们今天就谈谈这个话题,IP spoof (IP 电子欺骗)。

第一部分
   1.什么是IP spoof?
   IP spoof即IP 电子欺骗,我们可以说是一台主机设备冒充另外一台主机的IP地址,与其它设备通信,从而达到某种目的技术。
   2.IP spoof可以实现吗?
   可以实现,早在1985年,贝尔实验室的一名工程师Robbert Morris在他的一篇文章A weakness in the 4.2bsd unix TCP/IP software中提出了IP spoof的概念,有兴趣的读者可参见原文: http://www.coast.net/~emv/tubed/archives/Morris_weakness_in_TCPIP.txt
但要注意的是单纯凭借IP spoof技术不可能很好的完成一次完整的攻击,因为现有IP spoof技术是属于一种“盲人”式的入侵手段,下面会解释“盲人”的概念。
   3.IP spoof的实现原理
   我们知道,IP是网络层的一个非面向连接的协议, IP数据包的主要内容由源IP地址,目地IP地址,所传数据构成, IP的任务就是根据每个数据报文的目的地址,路由完成报文从源地址到目的地址的传送。至于报文在传送过程中是否丢失或出现差错, IP不会考虑。对IP来讲,源设备与目的设备没有什么关系,它们是相互独立的。IP包只是根据数据报文中的目的地址发送,因此借助高层协议的应用程序来伪造IP地址是比较容易实现的。与此同时,TCP作为保障两台通讯设备之间数据有保证的顺序传输的协议,是面向连接的,它需要连接双方?quot;同意"才能进行通讯。TCP传输双方传送的每一个字节都伴随着一个序列号(SEQ),它期待对方在接收到后产生一个应答(ACK),应答一方面通知对方数据成功收到,另一方面告知对方希望接收的下一个字节。同时,任何两台设备之间欲建立TCP连接都需要一个两方确认的起始过程,称三次握手,可分解如下面来表示:
   第一步:请求方向服务方发送SYN,表示想发起一次TCP连接。我们假定这次的序列号是某个数值X
Trust ->Target
SYN
SEQ:X
   第二步:服务方产生SYN,ACK响应,并向请求方发送ACK, ACK的值为X+1,表示数据成功接收到,且告知下一次希望接收到字节的SEQ是X+1。同时, 服务方向请求方发送自己的SEQ, 我们假定它的序列号是某个数值Y。
Target -> Trust
SYN,ACK
SEQ:Y
ACK:X+1
   第三步: 请求方向服务方发送ACK,表示接收到服务方的回应。这次它的SEQ值为X+1,同时它的ACK值为Y+1,原理同上。
Trust ->Target
ACK
SEQ:X+1
ACK:Y+1
   完成这一步以后, 请求方与服务方之间的连接开放,数据可以进行传输了。

第二部分
   上面是标准TCP连接建立的过程,我们来看IP Spoof状态下的三次握手会是什么一种情况。
   第一步、Hack假冒Trust主机IP向服务方Target发送SYN,告诉Target 来自他所信任的Trust主机想发起一次TCP连接,序列号为数值X,这一步实现比较简单, Hack将IP包的源地址伪造为Trust主机IP地址即可。
Hack ->Target
SYN
SEQ:X
  要注意的是,在攻击的整个过程中,必须使Trust主机与网络的正常连接中断。因为SYN请求中IP包源地址是Trust主机的,当Target收到 SYN请求时,将根据IP包中源地址反馈ACK,SYN给Trust主机, 但事实上Trust并未向Target发送SYN请求,所以Trust收到后会认为这是一次错误的连接,从而向Target回送RST,中断连接。这可不是我们所企求的。为了解决这个问题,在整个攻击过程中我们需要设法停止Trust主机的网络功能,这一实现很简单,用现在威力很强大的tfn2k之类的分布式拒绝服务软件攻击Trust主机,使之拒绝服务即可,(可参考作者另一篇文章《分布式拒绝服务软件》见www.chinabyte.com的网络学院部分)这里就不介绍了。
  第二步、服务方Target产生SYN,ACK响应,并向请求方Trust主机(注意:是Trust,不是Hack,因为Target收到的IP包的源地址是Trust)发送ACK, ACK的值为X+1,表示数据成功接收到,且告知下一次希望接收到字节的SEQ是X+1。同时,Target向请求方Trust发送自己的SEQ,注意,这个数值对Hack是不可见的!!
Target -> Trust
SYN,ACK
SEQ:?
ACK:X+1
第三部分
   在现实中投入应用的IP spoof一般被用于有信任关系的服务器之间的欺骗。假设网上有Target, Trust, Hack三台主机, Target为我们打算愚弄的主机, Trust和Target有基于IP地址的信任关系,也就是说拥有Trust主机IP地址的设备上的用户不需要账号及密码即可进入Target。(使用 window操作系统比较习惯的读者可以把这种信任理解为局域网环境下的PC间无需密码的硬盘共享)既然如此,那么我们就可以在Hack上做手脚假冒 Trust主机IP地址从而骗取Target的信任。这种信任在unix中体现为r服务,比如一个大型网站的管理员除了自己的一台IP为11.22.33.44工作站外还拥有几打的sun 服务器,他厌倦了一次次在各个服务器上登录时等待并输入username,passwd,那么他可以在每台服务器的根目录下生成.rhosts文件,内容为11.22.33.44 +,这表示如果11.22.33.44这个IP有要求,服务器都无条件的提供可信的r服务。举例来讲,在11.22.33.44上执行rsh -l root server1.Yiming.com csh -i,则该管理员即直接进入server1.Yiming.com,不需要任何账号密码。除了这种为了省事的偷懒用途, r服务在目前的网络最多的被用来远程备份,远程磁带设备和需备份文件必须有信任关系。
   好了,在上例中如果我们能假冒11.22.33.44这个IP,那么将会是什么样子?每一台信任它的服务器都会被控制!这才是管理员需要引起的注意的。
   由上我们看到,因为TCP/IP本身的漏洞,IP spoof是有实现条件的,但在目前的互联网中,假冒它人IP,然后利用这个IP去攻击和这个IP无信任的关系的主机从理论上依然很难行的通。

北大青鸟APTECH(广州湘计立德)授权培训中心—学网络工程师,实现轻松就业-找北大青鸟
返回列表