TCP/IP攻击原理分析总结

时间:2024-02-20 18:19:46

1引言


由于TCP/IP协议是Internet的基础协议,所以对TCP/IP协议的完善和改进是非常必要的。TCP/IP协议从开始设计时候并没有考虑到现在网络上如此多的威胁(更多请参考RFC文档),由此导致了许多形形色色的攻击方法,一般针对协议原理的攻击(尤其是DDOS)我们无能为力。常见的攻击手法如下:


(1) 源地址欺骗(Source Address Spoofing)、IP欺骗(IP Spoofing)和DNS欺骗(DNS Spoofing).其基本原理:是利用IP地址并不是出厂的时候与MAC固定在一起的,攻击者通过自封包和修改网络节点的IP地址,冒充某个可信节点的IP地址,进行攻击。主要有三种手法:


1瘫痪真正拥有IP的可信主机,伪装可信主机攻击服务器;


2中间人攻击和"会话劫持"(Session Hijack);


3 DNS欺骗(DNS Spoofing);


4 ARP欺骗(Arp Spoofing).


(2)源路由选择欺骗(Source Routing Spoofing).


(3)路由选择信息协议攻击(RIP Attacks).


(4)TCP序列号欺骗和攻击(TCP Sequence Number Spoofing and Attack),基本有2种:


1.伪造TCP序列号,构造一个伪装的TCP封包,对网络上可信主机进行攻击;


2.SYN攻击(SYN Attack)。这类攻击手法花样很多,蔚为大观。但是其原理基本一致,让TCP协议无法完成三次握手协议;


(5) Teardrop攻击(Teardrop Attack)和Land攻击(Land Attack)
和Smurf攻击(Smurf攻击).


2 攻击手法原理的分类


攻击方法的分类是安全研究的重要课题,对攻击的定性和数据挖掘的方法来分析漏洞有重要意义.对于系统安全漏洞的分类法主要有两种:RISOS分类法和Aslam分类法,对于针对TCP/IP协议族攻击的分类也有几种,现列举如下:


(1)  按照TCP/IP协议的层次进行分类:


这种分类是基于对攻击所属的网络层次进行的.TCP/IP协议传统意义上分为四层,在这里我们把它看成五层(把物理层单独独立出来).因此,我们可以把攻击手法分成五类:


1针对物理层的攻击:这些攻击手法是对网络硬件和基础设施进行物理破坏或者强行改变路由器路由.例如:将一个公司的出口线路断掉,使得其无法访问外部网络,在文献[0]中介绍了一些相关内容.


2 针对数据链路层的攻击TCP/IP协议在该层次上有两个重要的协议ARP(地址解析协议)和RARP(反地址解析协议).ARP欺骗和伪装属于该层次,文献[1-7]中探讨关于ARP欺骗过程和实现.


3 针对网络层的攻击:该层次有三个重要协议:ICMP(互连网控制报文协议)、IP(网际协议)、IGMP(因特网组管理协议)。著名的几大攻击手法都在在层次上进行,例如Smurf攻击,IP碎片攻击、ICMP路由欺骗等等,文献[8-12]介绍了一些相关实现技术。


4 针对传输层的攻击:TCP/IP协议传输层有两个重要的协议,TCP协议和UDP协议,该层次的著名攻击手法更多,常见的有Teardrop攻击(Teardrop Attack)、Land攻击(Land Attack)、SYN洪水攻击(SYN Flood Attack),TCP序列号欺骗和攻击等等,会话劫持和中间人攻击也应属于这一层次。文献[8,13-15]有相关攻击手法的介绍和利用代码。


5 针对应用层的攻击:该层次上面有许多不同的应用协议,比如说:DNS,FTP,SMTP等等,针对该层次的攻击数不胜数,但是主要攻击的方法还是针对一些软件实现中的漏洞进行的。针对协议本身的攻击主要是DNS欺骗和窃取,文献[16-19]介绍了一些相关的内容与一些实现。


(2)按照攻击者的目的分类


1 DOS(拒绝服务攻击)和DDOS(分布式拒绝服务攻击);


2 sniffer监听,文献[20,21]是入门的综述,文献[22]讨论的是linux底下sniffer配置;


3 会话劫持与网络欺骗;


4 获得被攻击主机的控制权,针对应用层协议的缓冲区溢出基本上目的都是为了得到被攻击主机的shell,绿盟科技[23]的文档库60%的文章几乎都是关于溢出的。


(3)按危害范围分类


1 受限于局域网,比如说sniffer和一些ARS欺骗;


2 广域网范围,比如说大规模僵尸网络造成的DDOS。


3 一些常用攻击手法的原理


下面我们主要谈论的是由于协议设计漏洞而引起攻击的一些最根本的原理,因为这些协议漏洞是没有patch的,攻击者只要抓住这些先天的不足,就可以举一反三,构造出许多攻击方案。关于具体的软件漏洞引起的可参考组织[23-27]的漏洞公告和其相关文档库。


1  ARP协议漏洞


引起的原因:为了提高效率,ARP使用了Cache,即在主机中专门有个内存缓冲区,保存最近获得的IP/MAC地址对。在发包之前,首先在Cache中查找要发包对象IP对应的MAC地址,如果找不到,则发送一个FF:FF:FF:FF:FF:FF(也就是广播地址)的ARP请求数据包,请求地址解析。这一过程打个形象的比方:在一个大教室里,某班主任A告诉一个同学一个消息,每个同学有个学号和真实姓名,如果班主任知道该同学的真实姓名和学号,他就直接的去找他,告诉那位同学B一个坏消息“由于你的看帖不回帖不良行为你被开除了!*请你下午去喝茶!”其它同学不会得到该消息,因为该消息是直接发给B的。而如果A只知道该同学的学号(也就相当于IP地址),而不知道他的姓名(也就相当于MAC地址),现在他要找到该同学,那他就会问全班:“学号007是那位同学?”全班所有人都听得到,每个人都看下自己的姓名和学号是否相符,周星星同学发现007号是自己,于是007号同学B站起来回复老师一个信息:“学号007是周星星”.这样A就把他的姓名和学号记下来,再把给他的信息告诉他。这里就有问题存在了,如果A要告诉B的是有个人给了007号是一大笔财富的事实被恶意攻击者C事先知道了,他会给A发条信息,冒充007号,进行欺骗。通过这个例子,大家应该明白ARP协议最大的缺陷是:当主机受到ARP数据包时,不会进行任何认证就刷新Cache,记录下错误的IP/MAC对,给ARP欺骗带来机会,造成ARP Cache中毒。



基于此原理,可以来精心的构造中间人攻击或者DOS,有个软件arptool可以实现中间人这种攻击。ffantasyYD(如果我没有记错,这位朋友是四川的)在文献[3]中给出了一个基于ARP欺骗的TCP伪连接D.o.S的例子,相关例子很多。


解决ARP这种漏洞的治本的方法是修改ARP协议,增加网络主机身份识别和论证功能但是这样做也会导致一个问题,网络将变得异常的慢。治标的方法有用路由器代替所有的集线器和入侵检测系统。


2 ICMP协议漏洞



ICMP
协议是传输层的重要协议,许多系统和防火墙并不会拦截ICMP报文(想象下,如果没有ICMP网络世界会是什么样的!),这给攻击者带来可乘之机。ICMP是“Internet Control Message Protocol”(Internet控制消息协议)的缩写。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。我们在网络中经常会使用到ICMP协议,只不过我们觉察不到而已。比如我们经常使用的用于检查网络通不通的Ping命令,这个“Ping”的过程实际上就是ICMP协议工作的过程。还有其他的网络命令如跟踪路由的Tracert命令也是基于ICMP协议的。基于该协议的攻击原理如下:攻击者向一个有大量主机和外网连接的网络广播地址发送一个欺骗性的ping分组(echo请求),这个目标网络称位反弹点,而欺骗性的ping分组源地址就是要攻击的目标主机,由于几乎所有的系统回尽快回复ICMP报文,因此目标主机被大量的echo信息淹没,这样可以造成拒绝服务攻击并瘫痪网络。文献[28]给出了一个比较详细的说明。


3 TCP协议漏洞


这是网络协议最大的缺陷,是攻击者攻击方法的思想源泉,主要问题存在于TCP的三次握手协议上。大家都知道TCP是面向连接的互连网协议。正常的TCP三次握手过程如下:


(1)      请求端A发送一个初始序号ISNa的SYN报文;


(2)      被请求端B收到A的SYN报文后,发送给A自己的初始序列号ISNb,同时将ISNa+1作为确认的SYN+ACK报文;


(3)      A对SYN+ACK报文进行确认,同时将ISNa+1,ISNb+1发送给B,TCP连接完成。


针对TCP协议的攻击的基本原理是:TCP协议三次握手没有完成的时候,被请求端B一般都会重试(即再给A发送SYN+ACK报文)并等待一段时间(SYN timeout),这常常被用来进行DOS,LAND和SYN Flood[文献15]攻击是典型的。另外,TCP协议三次握手并没有对参与通讯的双方进行身份认证,文献[31]中有多个理论上的攻击方法也适合与此。因此有可能通过以下方式进行会话劫持:


首先序列号猜测[具体参考文献29,30],在进行TCP会话劫持[具体参考文献29,30]。


4 总结



针对TCP/IP协议的天生缺陷构造的攻击方法往往难以防范,尤其是DOS和DDOS,几乎是没有PATCH的,但我们可以通过自封包在自己自定义的应用协议中引入密码学协议来对通讯进行身份认证、完整性验证和数据加密,这样可以提高一些安全性。


参考文献


[0]《信息安全工程》,罗斯.安德生著,机械工业出版社出版

[1] http://www.xfocus.net/articles/200204/377.html

[2] http://www.xfocus.net/articles/200209/449.html

[3]http://www.xfocus.net/articles/200506/805.html

[4] http://www.xfocus.net/articles/200204/375.html

[5] http://www.xfocus.net/articles/200103/127.html

[6] http://www.xfocus.net/articles/200208/436.html

[7] http://www.xfocus.net/articles/200404/688.html

[8] http://www.xfocus.net/articles/200201/326.html

[9] http://www.xfocus.net/articles/200103/77.html

[10] http://www.xfocus.net/articles/200204/371.html

[11] http://www.xfocus.net/articles/200106/208.html

[12] http://www.xfocus.net/articles/200208/436.html

[13] http://www.xfocus.net/articles/200006/55.html

[14] http://www.xfocus.net/articles/200006/56.html

[15] http://www.xfocus.net/articles/200106/208.html

[16] http://www.xfocus.net/articles/200303/498.html

[17] http://www.xfocus.net/articles/200006/60.html

[18] http://www.xfocus.net/articles/200008/61.html

[19] http://www.xfocus.net/articles/200008/66.html

[20] http://www.xfocus.net/articles/200103/76.html

[21] http://www.xfocus.net/articles/200104/147.html

[22] http://www.xfocus.net/articles/200001/28.html

[23] http://www.nsfocus.net

[24] http://www.smatrix.org

[25] http://www.xfocus.net

[26] http://www.eviloctal.com/forum/index.php

[27] http://www.ph4nt0m.org/

[28] http://it.spacecn.net/fuwuqi/web/200509/fuwuqi_16204.html

[29] http://www.smatrix.org/bbs/read.php?tid=1529&fpage=1

[30] http://www.smatrix.org/bbs/read.php?tid=1530&fpage=1

[31] 《现代密码学理论与实践》.毛文波.机械工业出版社

本文转自:http://bbs.sciencenet.cn/showtopic-81991.aspx