IP欺骗原理解决方案综述及防范措施
点评:即使是一个很好的实现了TCP / IP协议,因为它有一些不安全感本身,它可以攻击的TCP / IP网络。这些攻击包括序列号欺骗、路由攻击,源地址欺骗,欺骗和授权。除介绍IP欺骗攻击的方法,这同时介绍了如何防止这种攻击。上面的攻击建立在攻击者的计算机上(包括道路)。
即使是一个很好的实现了TCP / IP协议,因为它有一些不安全感本身,它可以攻击的TCP / IP网络。这些攻击包括序列号欺骗、路由攻击,源地址欺骗,欺骗和授权。除介绍IP欺骗攻击的方法,本文还介绍了如何防止这种攻击。
上面的攻击是基于攻击者的计算机(包括路由)连接到Internet的,这里的攻击方法是针对TCP/IP本身的缺陷,而不是特定的实现。
事实上,IP欺骗并不是攻击的结果,而是一种攻击手段,攻击实际上是信任关系的破坏。
知识产权欺骗原则
信任关系
在Unix领域中,信任关系可以很容易获得。如果主机A和B各有一个帐户,在使用中发现,在主机的使用需要输入相应的账户上,进入B账户必须使用主机B,主机A和B把你们两个不相关的用户,显然有些不便。为了减少这种不便,两账户相互信任可以建立在主机和主机B在你的主目录中创建.rhosts文件的主机和主机B从主机,enter'echoB的用户名> /。rhosts'in home目录;enter'echo从你的目录用户名> 'echo。在这一点上,你可以使用任何远程登录,从R *无阻,如rlogin、改、RSH,等等,没有PAS这些命令将允许基于地址的验证,或者允许或拒绝基于IP地址的访问服务。
这里的信任关系是基于IP地址的。
rlogin
远程登录是一个简单的客户/服务器程序,采用TCP传输。rlogin允许用户从一台主机登录到另一个,如果目标主机信任它,Rlogin将允许使用的资源对目标主机没有回答密码安全验证完全是基于源主机的IP地址,,基于以上的例子,我们可以使用rlogin登录从B到远程不提示输入密码。
序列号预测
IP只是发送一个数据包,保证其完整性。如果你不能得到一个完整的IP数据包,IP发送一个ICMP差错报文的源地址,希望重新处理它。然而,这个包也可能丢失。由于IP是无连接的,它不保持连接的状态的任何信息。每个IP数据包松发出不关心前一个和后包。从中,我们可以看到,IP协议栈可以被修改,以及任何IP地址符合可放置在源地址和目的地址的任何要求,也就是说,它提供了虚假的IP地址。
TCP提供可靠的传输,可靠性是一个数据包的多个控制字设置,其中最重要的是数据序列和数据验证,这是由SYN和ACK表示,respectively.tcp对数据的每个字节都有一个序列号,可以发送到源地址已收到的数据包确认(通过ACK数据包的目的地址确定序列的分组序列,而不是发送数据包的源地址序列)。同时,还进行下一个数据的ACK序列号。显然,TCP提供的可靠性更难欺骗的IP。
序列编号、确认和其他符号信息
因为TCP是基于可靠性的,它可以处理等恶劣条件的数据包丢失,重复提供机制,或顺序混乱。事实上,分配发送所有字节的序列号,并期待通过发送数据给接收端的任何确认,TCP将能够确保可靠交货。接收器使用序列号来保证数据的顺序和删除重复的数据包,TCP序列号可以被视为一个32位的计数器,从0到2 ^ 321安排。数据交换为每个TCP连接(通过一定的标志位表示)是按顺序编号的标记点的序列。数(SYN)在TCP数据包位于数据段的前端,e确认位(ACK)确认接收到的数据,并指出要接收的下一个数据序列号。
TCP利用滑动窗口的概念,控制交通。假定当发送数据,在发送端快速的接收终端的速度很慢,为了保证数据不丢失,这是显而易见的,交通控制是必要的,双方的工作节奏是协调。所谓的滑动窗口,可以理解为缓冲区,可以通过receiver.tcp提供的尺寸使用一个滑动窗口告诉发送者可以为它提供数据发送多少缓冲区。由于窗是由16个点定义,接收TCP可以提供最多65535个字节缓冲区。因此,最大可接受的数据序列号可以通过窗口计算第一个数据的大小和序列号。
其他TCP标记位RST(连接重置,重置连接),PSH(按功能、推动功能)和鳍(发送任何数据,不多),如果第一个接收的TCP连接将被断开immediately.rst通常被当收到一个包在接收端不当前连接有关。在某些情况下,TCP模块需要立即发送数据并不能等待被再次填满整个环节。一个高层次的过程会触发PSH标志的TCP头告诉TCP模块立即将所有设置的数据到数据receiver.fin代表应用程序连接端,接收器接收翅片时,它证实了它认为没有将数据接收预计起飞时间.
该安全漏洞首先由Morris描述TCP序列号,他使用TCP序列号来预测TCP包序列,即使它没有从服务器得到任何响应,这使得他可以在本地网络上欺骗主机。
通常TCP连接建立握手序列Huan margaret。客户选择和传输初始序列号(序列标志)不是C,并设置标志位SYN = 1来告诉服务器它需要建立连接。服务器确认传输并发送自己的序列号s,并设置标志位ACK。同时,它告诉未来预期的数据序列号是= 1.the客户确认它。三确认后,数据就被传送。整个过程如下所示:
(c:客户机:服务器)
C:S(SYN)
s:C(SYN),ACK(不是C)
C:S(ACK)
数据或数据
也就是说,对于一个会话,C必须是既可能是一个随机数的确定。
重要的是要知道序数选择初始序列号和如何根据时间变化的时间。这似乎是的情况下当主机的序列号初始化为1主机后开始的,但实际情况并不是这样。初始序列号是由tcp_init function.isn每秒增加128000,如果一个连接时,每个连接都会增加64000的柜台数目。很明显,这是用来代表并重置每9.32小时无连接的32位计数器,这是因为它有助于减少旧的连接信息干扰当前连接的机会,2msl等待时间的概念是用她E(不在本文的讨论范围之内)。如果初始序列号是可选的,它不能保证现有的序列号是不同于前一个。假设有这样一个案例,一个数据包的路由环路终于跳出了黑客编程周期,回到旧;连接(此时其实是不同于前者的现有连接),它显然会干扰现有的连接。
假设入侵者X有一种方法来预测s,在这种情况下,他可以发送以下号码到主机T来模拟客户端的真实情况:
x:s(SYN)
s:SYN(s),ACK(x)
x:s(ACK)
虽然消息不是x,但是x可以知道它的内容,所以它可以发送数据。如果x攻击一个连接,连接允许执行命令,并且其他命令可以执行。
那么,你是怎样产生随机的呢在伯克利系统中,初始序列号变量是由一个常数每秒生成的,当常数为一半时,连接开始。它具有很高的可信度。s用于下一个连接尝试。
Morris指出答复消息
s:SYN(s),ACK(x)
事实上,它不会消失,真正的主机会接收它并尝试重新连接,这不是一个严重的障碍。
Morris发现,通过模拟T上的端口并请求与该端口的连接,他可以生成序列溢出,这似乎使s消息丢失了。另一种方法是等待T关闭或重新启动。
以下是详细的介绍。
IP欺骗
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应答,然后将RST发送给受攻击的主机。