TCP/IP由网络层的IP协议和传输层的TCP协议组成。常见的漏洞类型包括ARP病毒攻击、基于RIP的攻击、DNS欺骗、TCP 连接欺骗。
TCP/IP是TransmissionControlProtocol/InternetProtocol的简写 ,中译名为传输控制协议/因特网互联协议,又名网络通讯协议,是 lnternet 最基本的协议、Interact国际互联网络的基础。
TCP/IP由网络层的IP协议和传输层的TCP协议组成。TCP/IP定义了电子设备如何连入因特网,以及数据如何在它们之间传输的标准。
TCP/IP协议采用了4层的层级结构,分别是网络接入层、网络层、传输层和应用层。每一层都呼叫它的下一层所提供的网络来完成自己的需求。
简单来讲,TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。
而IP协议规定需要给因特网的每一台电脑规定一个地址,这个地址就是IP地址。IP地址通过软件实现网络物理地址“统一”的方法。这种方法使用统一的地址格式,在统一管理下将地址分配给主机。
由于TCP/IP协议是一个开放性的协议导致其在TCP/IP 协议栈中,绝大多数协议没有提供必要的安全机制,存在一定的漏洞安全问题。
TCP/IP 协议常见漏洞类型
ARP 病毒攻击
ARP病毒攻击的工作原理是通过伪造通信双方一端的IP地址或 MAC 地址,让另一端误以为该主机为正确主机从而达到欺骗目的。
当网络中源主机A想和目的主机 B 进行通信,A会先广播ARP请求报文,期望B能收到并返回给A自己的 MAC 地址。但由于报文采用的是广播形式,因此攻击者 C在收到A的请求报文时会将自己的IP地址伪造成B的IP地址,这在 ARP请求报文中可以很容易获得,接着攻击者C向发送带有 B 的IP地址,C的 MAC地址的返回消息,让A误以为C就是合法的目的主机 B,从而攻击者C就达到了盗取信息的目的。
基于RIP的攻击
RIP 是一种基于距离(跳数)的路由选择协议,它的作用是计算数据包在网络中路由的最佳路径,因为RIP基于跳数且规定了最大跳数不可以超过15,因此它只适用于中小型的网络。基于RIP的攻击实际上是攻击网络中路由器的路由表。因为 RIP 是基于 UDP 协议进行传输,而 UDP 是一种不可靠,不需要建立连接的传输层协议。因此运行着 RIP 协议的路由器会无条件的接受任何来自网路中的报文,包括一些非法的路由表更新报文。
路由器在接受这些报文时会在没有执行路由表更新命令的情况下改变自身的路由表。从而导致该路由器的路由表紊乱,甚至可能影响该路由器的邻接路由器,继而导致整个网络瘫痪,带来严重的后果。
DNS欺骗
DNS(Domain name resolution)又称域名解析协议,它用来将域名和 IP 地址进行相互转换,
从而让用户在上网的时候可以直接输入域名而不是冗长繁琐的 IP 地址。
在 DNS 欺骗中,攻击者通常会先攻击 DNS 服务器并取而代之,并改变原先 DNS 服务器中的 IP 地址和域名的映射关系。
当用户访问相应的域名时返回的实际上是一个错误的网页,而攻击者可以通过这个网页向用户植入病毒或直接展开攻击。DNS欺骗的手段分为两种,一种是篡改本地主机的 Hosts 文件,Hosts文件实现的就是 DNS 服务器的功能。
例如将Hosts 文件中的一个域名对应的 IP 地址改成本机的回环地址(127.0.0.1),这样用户在访问这个域名时就无法到达想要的网页。另一种是DNS劫持,即劫持用户使用的DNS服务器,通常来说黑客会将自己已经建立好的攻击网站的IP地址映射到用户经常访问的网站的域名,而该攻击网站和原网站看上去相差无几,这样用户即使被攻击也毫不知情。
TCP 连接欺骗
虽然TCP协议是一种可靠的链路层协议,但是由于每台主机的IP地址在每次上网的时候都可能发生改变,因此攻击者可以通过这个漏洞扰乱两台主机的TCP连接。TCP连接欺骗中,攻击者C会一直对主机A进行攻击(例如 Dos 攻击)使其瘫痪,从而阻止A与B进行通信,然后自己再伪造成主机 A与B 建立 TCP连接。过程如下:
C→B:SYN=1,seq=a
B→A:SYN=1,ACK=1,seq=b,ack=a+1
C→B:ACK=1,seq=a+1,ack=b+1
攻击者C首先向B发送连接请求报文,同步位SYN置为1,序列号 seq为a。B收到请求报文后,向A发出确认报文,确认号 ack为 a+1,序号seq 为 b,由于A处于瘫痪中因此不会发送响应报文。C 通过网络嗅探工具得到B向A发送的 ack 和seq,对B发送确认报文,将ACK 置为1,序号 seq为 a+1,确认号 ack为 b+1。这样B和攻击者C之间就直接建立了TCP连接,并可以直接向B发送指令,而B还认为指令是由合法主机A发送过来的,将执行这些命令。从而导致C可以任意地向B发送攻击命令,致使B瘫痪。