1.6 syn比特和fin比特同时设置
在tcp报文的报头中,有几个标志字段:
1、 syn:连接建立标志,tcp syn报文就是把这个标志设置为1,来请求建立连接;
2、 ack:回应标志,在一个tcp连接中,除了第一个报文(tcp syn)外,所有报文都设置该字段,作为对上一个报文的相应;
3、 fin:结束标志,当一台计算机接收到一个设置了fin标志的tcp报文后,会拆除这个tcp连接;
4、 rst:复位标志,当ip协议栈接收到一个目标端口不存在的tcp报文的时候,会回应一个rst标志设置的报文;
5、 psh:通知协议栈尽快把tcp数据提交给上层程序处理。
正常情况下,syn标志(连接请求标志)和fin标志(连接拆除标志)是不能同时出现在一个tcp报文中的。而且rfc也没有规定ip协议栈如何处理这样的畸形报文,因此,各个操作系统的协议栈在收到这样的报文后的处理方式也不同,攻击者就可以利用这个特征,通过发送syn和fin同时设置的报文,来判断操作系统的类型,然后针对该操作系统,进行进一步的攻击。
1.7 没有设置任何标志的tcp报文攻击
正常情况下,任何tcp报文都会设置syn,fin,ack,rst,psh五个标志中的至少一个标志,第一个tcp报文(tcp连接请求报文)设置syn标志,后续报文都设置ack标志。有的协议栈基于这样的假设,没有针对不设置任何标志的tcp报文的处理过程,因此,这样的协议栈如果收到了这样的报文,可能会崩溃。攻击者利用了这个特点,对目标计算机进行攻击。
1.8 设置了fin标志却没有设置ack标志的tcp报文攻击
正常情况下,ack标志在除了第一个报文(syn报文)外,所有的报文都设置,包括tcp连接拆除报文(fin标志设置的报文)。但有的攻击者却可能向目标计算机发送设置了fin标志却没有设置ack标志的tcp报文,这样可能导致目标计算机崩溃。
1.9 死亡之ping
tcp/ip规范要求ip报文的长度在一定范围内(比如,0-64k),但有的攻击计算机可能向目标计算机发出大于64k长度的ping报文,导致目标计算机ip协议栈崩溃。