TCP/IP攻击是利用IP地址并不是出厂的时候与MAC固定在一起的,攻击者通过自封包和修改网络节点的IP地址,冒充某个可信节点的IP地址,进行攻击。
由于TCP/IP协议是Internet的基础协议,所以对TCP/IP协议的完善和改进是非常必要的。TCP/IP协议从开始设计的时候并没有考虑到网络上如此多的威胁,由此导致了许多形形色色的攻击方法。
TCP/IP攻击的常用原理如下:
源地址欺骗、IP欺骗和DNS欺骗其基本原理:是利用IP地址并不是出厂的时候与MAC固定在一起的,攻击者通过自封包和修改网络节点的IP地址,冒充某个可信节点的IP地址,进行攻击。主要有三种手法:
- 瘫痪真正拥有IP的可信主机,伪装可信主机攻击服务器;
- 中间人攻击;
- DNS欺骗(DNS Spoofing)和“会话劫持”(Session Hijack);
源路由选择欺骗:利用IP数据包中的一个选项-IP Source Routing来指定路由,利用可信用户对服务器进行攻击,特别是基于UDP协议的由于其是面向非连接的,更容易被利用来攻击;
路由选择信息协议攻击:攻击者在网上发布假的路由信息,再通过ICMP重定向来欺骗服务器路由器和主机,将正常的路由器标志为失效,从而达到攻击的目的。
TCP序列号欺骗和攻击有三种:
- 伪造TCP序列号,构造一个伪装的TCP封包,对网络上可信主机进行攻击;
- SYN攻击。这类攻击手法花样很多,蔚为大观。但是其原理基本一致,让TCP协议无法完成三次握手协议;
- Teardrop攻击和Land攻击:利用系统接收IP数据包,对数据包长度和偏移不严格的漏洞进行的。
ARP协议漏洞
有三台主机:
A:IP地址 192.168.0.1;硬件地址AA:AA:AA:AA:AA:AA
B:IP地址 192.168.0.2;硬件地址BB: BB: BB: BB: BB: BB
C:IP地址 192.168.0.3;硬件地址CC:CC:CC: CC:CC:CC
一个位于主机B的入侵者想非法进入主机A,可是这台主机上安装有防火墙。通过收集资料得知这台主机A的防火墙只对主机C有信任关系。而入侵者必须要使用telnet来进入主机A,这个时候入侵者应当如何处理?
要telnet到主机A,入侵者可以让主机A相信主机B就是主机C。如果主机A与C的信任关系是建立在IP地址上的。攻击者可以先通过各种拒绝式服务方式让C这台机器暂时宕机,同时将B的IP地址改为192.168.0.3,B就可以成功地通过23端口telnet到A上,而成功地绕过防火墙的限制。
但是,如果AC的信任关系是建立在硬件地址之上,这个时候上述的方式就不行了,需要运用ARP欺骗方式。
入侵者人为地制造一个arp_reply的响应包,发送给想要欺骗的主机A,这是可以实现的,因为ARP协议并没有规定在收到arp_echo请求后才可以发送响应包(这就是能够实现的关键,在一般的情况之下只有路由器进行了arp广播之后,主机才会回复)。这样,就可以通过发送虚假的ARP响应包来修改主机A上的动态ARP缓存来达到欺骗的目的。
具体步骤如下:
①利用工具,进行拒绝式服务攻击,让主机C宕机,暂时停止工作。
②在这段时间里,入侵者把自己的IP改为192.168.0.3(主机C的IP)。
③用工具发一个源地址为192.168.0.3,源MAC地址为BB: BB: BB: BB: BB: BB的包给主机A,要求A更新自己的ARP转换表(ARP缓存)。
④主机A更新了ARP缓存中关于主机C的IPàMAC的对应关系。
⑤防火墙失效了,主机B可以telnet到主机A。
ICMP协议漏洞
ICMP转向连接攻击
攻击者使用ICMP超时或者ICMP主机不可达报文,这两种报文都会使得主机迅速放弃连接。此时通信连接就会被切断。
一台主机错误地认为信息的目标地址不在本地网络之中的时候,网关通常会使用ICMP重定向消息。如果攻击者伪造一条重定向消息,就可以导致主机经过攻击者主机向特定连接发送数据包。
ICMP数据包放大
攻击者向安全薄弱网络的广播地址发送ICMP回显请求,所有的主机都会像被攻击主机,发送ICMP应答,占用了目标系统的带宽,并导致合法通信的拒绝服务(DoS)。
ICMP Ping淹没攻击
大量的ping信息广播淹没了目标系统。
ICMP nuke攻击
nuke发送出目标操作系统无法处理的信息数据包,从而导致该系统瘫痪。
通过ICMP进行攻击信息收集
可以通过ping来检查目标主机是否存活,并且根据返回的TTL值就可以判断目标主机的操作系统(Linux应答TTL为64,windows 200/NT/XP为128,其他系统未列出)。
ICMP攻击防范
策略一:对ICMP数据包进行过滤
使用防火墙的功能
策略二:修改TTL值巧妙骗过黑客
系统缺省的TTL值是可以修改的,可以编写一个批处理文件来进行修改。
TCP协议漏洞
假设主机A和B建立TCP连接,要进行三次握手。针对TCP协议的攻击原理是:TCP协议三次握手没有完成的时候,被请求端B一般都会重试(即再给A发送SYN+ACK报文)并等待一段时间,这就可以用来进行DoS、Land、SYN flood攻击。
在SYN flood攻击中,黑客向受害主机发送大量伪造源地址的TCP SYN报文,受害主机分配必要的资源,然后向源地址返回SYN+ACK包;并等待源地址返回ACK包,由于源地址是伪造的所以源端永远不会发送ACK包,所以受害主机继续发送SYN+ACK包,并将半链接放入端口的积压队列之中,虽然一般主机都有超时机制和默认的重传次数,但是如果不断向受害主机发送大量的TCP SYN报文,半连接队列就会很快被填满,导致受害主机无法响应其他主机的连接请求。
防御方法:针对SYN flood的攻击防范措施主要有两种:一种是通过防火墙、路由器等过滤网关防护,另一种是通过加固TCP/IP协议栈。