页面载入中...
页面载入中...
在本文中,笔者重点解析了TCP/IP协议栈面临的五大网络安全问题,也介绍到企业网络安全管理人员在面临问题时所能采取的应对措施。
1. IP欺骗
IP Spoof即IP 电子欺骗,可以理解为一台主机设备冒充另外一台主机的IP地址与其他设备通信,从而达到某种目的技术。早在1985年,贝尔实验室的一名工程师Robbert Morris在他的一篇文章“A weakness in the 4.2bsd UNIX TCP/IP software”中提出了IP Spoof的概念,有兴趣的读者可参见原文:~emv/tubed/archives/Morris_weakness_in_ TCPIP.txt 。
但要注意:单纯凭借IP Spoof技术不可能很好地完成一次完整的攻击,因为现有IP Spoof技术是属于一种“盲人”式的入侵手段。
一般来说,IP欺骗攻击有6个步骤:
(1)首先使被信任主机的网络暂时瘫痪,以免对攻击造成干扰;
(2)然后连接到目标机的某个端口来猜测ISN基值和增加规律;
(3)接下来把源地址伪装成被信任主机,发送带有SYN标志的数据段请求连接;
(4)然后等待目标机发送SYN+ACK包给已经瘫痪的主机;
(5)最后再次伪装成被信任主机向目标机发送的ACK,此时发送的数据段带有预测的目标机的ISN+1;
(6)连接建立,发送命令请求。
下面是它的两个关键步骤:
(1)使被信任主机失去工作能力
为了伪装成被信任主机而不露馅,需要使其完全失去工作能力。由于攻击者将要代替真正的被信任主机,他必须确保真正的被信任主机不能收到任何有效的网络数据,否则将会被揭穿。有许多方法可以达到这个目的(如SYN洪水攻击、Land等攻击)。
(2)序列号取样和猜测
对目标主机进行攻击,必须知道目标主机的数据包序列号。通常如何进行预测呢?往往先与被攻击主机的一个端口(如25端口)建立起正常连接。通常,这个过程被重复N次,并将目标主机最后所发送的ISN存储起来。然后还需要估计他的主机与被信任主机之间的往返时间,这个时间是通过多次统计平均计算出来的。如果往返连接增加64,000,则现就可以估计出ISN的大小是128,000乘以往返时间的一半,如果此时目标主机刚刚建立过一个连接,那么再加上64,00。一旦估计出ISN的大小,就开始着手进行攻击,当然你的虚假TCP数据包进入目标主机时,如果刚才估计的序列号是准确的,进入的数据将被放置在目标机的缓冲区中。
但是在实际攻击过程中往往没这么幸运,如果估计的序列号小于正确值,那么将被放弃。而如果估计的序列号大于正确值,并且在缓冲区的大小之内,那么该数据被认为是一个未来的数据,TCP模块将等待其他缺少的数据。如果估计序列号大于期待的数字且不在缓冲区之内,TCP将会放弃它并返回一个期望获得的数据序列号。伪装成被信任的主机IP后,此时该主机仍然处在瘫痪状态,然后向目标主机的被攻击端口(如25)发送连接请求。目标主机立刻对连接请求作出反应,发更新SYN+ACK确认包给被信任主机,因为此时被信任主机仍然处于瘫痪状态,它当然无法收到这个包,紧接着攻击者向目标主机发送ACK数据包,该数据包使用前面估计的序列号加1。如果攻击者估计正确的话,目标主机将会接收该ACK。连接就正式建立起了,可以开始数据传输了。
对于来自网络外部的欺骗,防范的方法很简单,只需要在局域网的对外路由器上加一个限制设置就可以实现了,在路由器的设置里面禁止运行声称来自于网络内部的信息包。
对于来自局域网外部的IP欺骗攻击的防范则可以使用防火墙进行防范,但是对于来自内部的攻击通过设置防火墙则起不到什么作用,这个时候应该注意内部网的路由器是否支持内部接口。如果路由器支持内部网络子网的两个接口,则必须提高警惕,因为它很容易受到IP欺骗。
通过对信息包的监控来检查IP欺骗攻击将是非常有效的方法,使用netlog等信息包检查工具对信息的源地址和目的地址进行验证,如果发现了信息包来自两个以上的不同地址,则说明系统有可能受到了IP欺骗攻击,防火墙外面正有黑客试图入侵系统。
2. SYN Flooding
SYN Flooding是最为有效和流行的一种DoS攻击形式。它利用TCP三次握手协议的缺陷,向目标主机发送大量的伪造源地址的SYN连接请求,消耗目标主机的资源,从而不能够为正常用户提供服务。
在TCP会话初期,有所谓的“三次握手”过程:对每次发送的数据量是怎样跟踪进行协商使数据段的发送和接收同步,根据所接收到的数据量而确定的数据确认数及数据发送、接收完毕后何时撤消联系,并建立虚连接。为了提供可靠的传送,TCP在发送新的数据之前,以特定的顺序将数据包进行编号,并需要等待这些包传送给目标机之后的确认消息。TCP总是用来发送大批量的数据。当应用程序在收到数据后要做出确认时也要用到TCP。由于TCP要时刻跟踪,这需要额外开销,使得TCP的格式有些显得复杂。
TCP三次握手的步骤如下:
(1)设主机A要与主机B通信,要建立一个TCP连接。首先,主机B(在这儿是服务器),必须先运行一个服务器进程,发出一个“被动找开”命令给TCP。之后服务器进程便不断探测端口,看是否有客户进程有连接请求。并处于“听”状态。客户端主机A的应用进程,向其TCP发“主动打开”命令,指明要与某个IP地址的某个端口建立TCP连接。第一次主机A的TCP便向主机B的TCP发出连接请求报文。TCP报文中指明了要连接的IP地址(隐含TP数据报指明)和端口号,设置能够接受的TCP数据段最大值,以及一些用户数据,SYN=1,ACK=0。这称为“第一次握手”。
(2)主机A的连接请求到达主机B后,主机B的TCP查看是否有进程在侦听该端口,如没有,就发送一个RST=1的应答,拒绝连接,否则将到达TCP数据段留给“侦听”进程。“侦听”进程将发回一个应答TCP报文段,其中SYN=1,ACK=1,确认序号ACKSEQ=X+1,同时自己选一个发送序号SEQ=Y。这是“第二次握手”。
(3)主机A收到主机B的确认报文后,再向主机B发出一个确认TCP报文段,其中SYN=1,ACK=1,SEQ=X+1,ACKSEQ=Y+1,这就完成了“第三次握手”。
在SYN Flooding攻击中,黑客机器向受害主机发送大量伪造源地址的TCP SYN报文,受害主机分配必要的资源,然后向源地址返回SYN+ACK包,并等待源端返回ACK包,如图1所示。由于源地址是伪造的,所以源端永远都不会返回ACK报文,受害主机继续发送SYN+ACK包,并将半连接放入端口的积压队列中,虽然一般的主机都有超时机制和默认的重传次数,但是由于端口的半连接队列的长度是有限的,如果不断地向受害主机发送大量的TCP SYN报文,半连接队列就会很快填满,服务器拒绝新的连接,将导致该端口无法响应其他机器进行的连接请求,最终使受害主机的资源耗尽。
图1 SYN Flooding攻击示意图
1
《傲视皇朝平台app_《王者荣耀》加入第四位 SNK 英》:等您翻牌子呢!