传输层的主要协议是TCP、UDP。
流行的攻击方式:
又称伪造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重置。
netwox
TCP会话劫持是一项复杂的TCP协议攻击技术方法,其目标是劫持通信双方已经建立的TCP会话连接,假冒其中一方(通常选择客户端)的身份,与另一方进行进一步的通信。
通常一些网络服务会在建立TCP会话之后进行应用层的身份认证,客户端在通过身份认证之后,就可以通过TCP会话连接对服务端进行控制或获取资源,期间不再需要再次进行身份认证。TCP会话劫持就可以为攻击者绕过应用层身份认证,因此得到了较高水平攻击者的青睐。
以上措施能够避免攻击者成为通信双方的中间人,从而轻易地进行会话劫持攻击。
对抗TCP会话劫持攻击最通用的方法:采用网络层加密机制,即IPsec协议。这样避免了攻击者在网络上嗅探得到传输层的端口及序列号等关键信息。
或者查看网络中是否存在ACK风暴、其他欺骗报文,都可以有效地检测出TCP会话劫持攻击。
使服务器不能够为正常访问的用户提供服务。
对一些紧密依靠互联网开展业务的企业和组织带来了致命的威胁。
客户端和服务器建立TCP连接的三次握手:
这就是正常的TCP三次握手,是使用TCP传输协议建立会话连接的基础。
在SYN Flood攻击中,攻击主机向受害主机发送大量伪造源地址的TCP SYN报文,受害主机分配必要的资源,然后向源地址返回SYN/ACK包,并等待源端返回ACK包。
如果伪造的源地址主机活跃,将会返回一个RST包直接关闭连接,但大部分伪造源地址是非活跃的,这种情况下源端永远都不会返回ACK报文,受害主机继续发送SYN/ACK包,并将半开连接放入端口的积压队列中,虽然一般的主机都有超时机制和默认的重传次数,但是由于端口的半连接队列的长度是有限的,如果不断的向受害主机发送大量的TCP SYN报文,半开连接队列就会很快填满,服务器也就拒绝新的连接,导致该端口无法响应其他机器进行的正常连接请求,最终使受害主机被拒绝服务。
简单来说:攻击主机利用三次握手协议的缺陷,向目标主机发送大量的伪造源地址的SYN连接请求,消耗目标主机的连接队列资源,从而不能够为正常用户提供服务。
netwos
当服务器收到一个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状态:源地址不存在或不可达时态
原理: