传输层协议攻击
前言
传输层的主要协议是TCP、UDP。
流行的攻击方式:
- TCP RST攻击
- TCP会话劫持攻击
- TCP SYN洪泛拒绝服务攻击
TCP RST 攻击
又称伪造TCP重置报文攻击,假冒干扰TCP通信连接的技术方法。
在TCP协议头的标志位中拥有一个“reset”比特位,绝大部分数据包中该标志位都置为0,而一旦该标志为置为1,则接收该数据包的主机将立即断开这个TCP会话连接,不再利用该连接进行数据包发送和接收。
危害:
当恶意攻击者滥用TCP重置报文,就会对正常的网络通信造成严重。
?
如上图所示:
在TCP RST攻击中,攻击者Eve可以通过嗅探方式监视Alice和Bob之间的TCP连接,在获得源、目标IP地址及端口,以及序列号之后,就可以结合IP源地址欺骗技术伪装成通信一方(也就是伪装成Alice)发送TCP重置报文给Bob,在确保端口号一致及序列号落入TCP窗口之内的情况下,即可直接关闭这个TCP连接,造成通信双方正常网络通信的中断,从而达到拒绝服务的效果。
好处:
TCP RST攻击还可以应用在网络入侵检测和防御系统,用来阻断攻击连接。
例如:
开源网络入侵检测系统Snort中·使用了TCP重置报文来阻断可疑的入侵攻击连接;
中国防火长城(GFW:Great Fire Wall)利用该项技术对包含封禁内容的会话连接进行阻断:在Google搜索引擎搜索某些词时,常常会返回“net::ERR_CONNECTFION_RESET"错误,即TCP会话连接被RST重置。
实现TCP RST攻击工具:
netwox
TCP会话劫持攻击
攻击原理:
TCP会话劫持是一项复杂的TCP协议攻击技术方法,其目标是劫持通信双方已经建立的TCP会话连接,假冒其中一方(通常选择客户端)的身份,与另一方进行进一步的通信。
TCP会话劫持的优势:
通常一些网络服务会在建立TCP会话之后进行应用层的身份认证,客户端在通过身份认证之后,就可以通过TCP会话连接对服务端进行控制或获取资源,期间不再需要再次进行身份认证。TCP会话劫持就可以为攻击者绕过应用层身份认证,因此得到了较高水平攻击者的青睐。
TCP会话劫持攻击技术过程:
?
- Alice主机与Bob服务器进行连接,并通过身份认证建立起会话;
- Bob服务器将会向Alice发送响应包,并包含服务器当前序列号(记为SVR_SEQ),以及期望客户端发送的下一个序列号(记为SVR_ACK);
- 攻击者Eve通过ARP欺骗实施中间人攻击,可以嗅探获得Alice和Bob之间的通信内容,然后假冒Alice的IP地址及身份,向Bob服务器发送数据包。但发送的数据包中的序列号(记为CLT_SEQ)必须满足条件:SVR_ACK<=CLT_SEQ<=SVR_ACK+SVR_WND,其中SVR_WND为服务器的接收窗口,Bob服务器才会接收该数据包。这样Ece就可以以Alice的身份和Bob进行通信。
- Alice仍然还是会继续维持与Bob服务器之间的连接会话,但由于与Bob之间的ACK值互相不再匹配产生出“ACK风暴”(ACK Storm),即在攻击机注入数据包后,客户端在接收到服务器的响应包后,将会发现ACK值不正确,并向服务器发回含有它所期望的ACK值的ACK包,期望重新建立起同步状态,而服务器收到Alice的ACK包后,也会发现它并不符合接收条件,因此再返回一个ACK包,这样就构成了死循环,在网络上来回发送ACK,直到有一个ACK包因为网络拥塞或其他原因丢失。
- 但因为ACK风暴会使得ACK会话劫持攻击容易被网络管理人员发现,所以攻击者往往会发送RST重置掉Alice和服务器的会话连接。
TCP会话劫持攻击的防范措施:
- 禁用主机上的源路由
- 采用静态绑定IP-MAC映射表以避免ARP欺骗
- 引用和过滤ICMP重定向报文
以上措施能够避免攻击者成为通信双方的中间人,从而轻易地进行会话劫持攻击。
对抗TCP会话劫持攻击最通用的方法:采用网络层加密机制,即IPsec协议。这样避免了攻击者在网络上嗅探得到传输层的端口及序列号等关键信息。
或者查看网络中是否存在ACK风暴、其他欺骗报文,都可以有效地检测出TCP会话劫持攻击。
TCP SYN Flood拒绝服务攻击
攻击目的
使服务器不能够为正常访问的用户提供服务。
危害
对一些紧密依靠互联网开展业务的企业和组织带来了致命的威胁。
攻击原理
客户端和服务器建立TCP连接的三次握手:
- 客户端通过传送SYN同步信息到服务器,要求建立TCP连接
- 服务器响应客户端SYN-ACK,以响应请求
- 客户端应答ACK,TCP会话连接随之建立
这就是正常的TCP三次握手,是使用TCP传输协议建立会话连接的基础。
在SYN Flood攻击中,攻击主机向受害主机发送大量伪造源地址的TCP SYN报文,受害主机分配必要的资源,然后向源地址返回SYN/ACK包,并等待源端返回ACK包。
如果伪造的源地址主机活跃,将会返回一个RST包直接关闭连接,但大部分伪造源地址是非活跃的,这种情况下源端永远都不会返回ACK报文,受害主机继续发送SYN/ACK包,并将半开连接放入端口的积压队列中,虽然一般的主机都有超时机制和默认的重传次数,但是由于端口的半连接队列的长度是有限的,如果不断的向受害主机发送大量的TCP SYN报文,半开连接队列就会很快填满,服务器也就拒绝新的连接,导致该端口无法响应其他机器进行的正常连接请求,最终使受害主机被拒绝服务。
简单来说:攻击主机利用三次握手协议的缺陷,向目标主机发送大量的伪造源地址的SYN连接请求,消耗目标主机的连接队列资源,从而不能够为正常用户提供服务。
攻击工具
netwos
SYN洪泛攻击防范措施
-
SYN-Cookie技术
当服务器收到一个SYN报文后,不立即分配缓冲区,而是利用连接的信息生成一个Cookie,并将这个Cookie作为将要返回的SYN/ACK报文的初始序列号。当客户端返回一个ACK报文时,根据包头信息计算Cookie,与返回的确认序列号(初始序列号+1)的前24位进行对比,如果相同,则是一个正常的连接,然后分配资源,建立连接。
简单来说:针对标准TCP连接建立过程资源分配上的这一缺陷,改变了资源分配的策略。巧妙之处在于避免在连接信息未完全到达前进行资源分配,使得SYN Flood攻击的资源消耗失效。关键点在于Cookie的计算,Cookie的计算应该做到包含这次连接的状态信息,使攻击者不能伪造Cookie。
缺点:
SYN-Cookie技术由于在连接建立过程中不需要在服务器端保存任何信息,实现了无状态的三次握手,从而有效的防御了SYN Flood攻击。正是由于Cookie的值只涉及包头的部分信息,在连接建立的过程中不在服务器端保存任何信息,所以失去了协议的很多功能,比如:超时重传。另外,计算Cookie值有一定的运算量,增加了连接建立的延迟时间,因此SYN-Cookie技术不能作为高性能服务器的防御手段。通常采用动态资源分配机制,当分配了一定的资源后再采用Cookie技术。
-
防火墙地址状态监控技术
连接状态:
初态:任何源地址刚开始的状态
NEW状态:第一次出现或多次出现也不能断定存在的源地址的状态
GOOD状态:断定存在的源地址所处的状态
BAD状态:源地址不存在或不可达时态
原理:
- 对于一个伪造源地址的SYN报文,若源地址第一次出现,则源地址的状态为NEW状态,当监听到服务器的SYN/ACK报文,表明服务器已经为该源地址的连接请求建立了半连接。此时,监控程序代源地址发送一个ACK报文完成连接。这样,半连接队列中的半连接数不是很多。计时器开始计时,由于源地址使伪造的,所以不会受到ACK报文,超时后,监控程序发送RST数据包,服务器释放该连接,该源地址的状态转为BAD状态。此后,对于每一个来自该源地址的SYN报文,监控程序都会主动发送一个RST报文。
- 对于一个合法的SYN报文,若源地址第一次出现,则源地址的状态为NEW状态,服务器响应请求,发送SYN/ACK报文,监控程序发送ACK报文,连接建立完毕。之后,来自客户端的ACK很快到达,该源地址的状态就会转为GOOD状态,服务器可以很好地处理重复到达的ACK包。
|