据 2020 年上半年中国互联网网络安全监测数据分析报告显示,恶意程序控制服务器、拒绝服务攻击(DDoS)等网络攻击行为有增无减。时至今日,网络攻击已经成为影响网络信息安全、业务信息安全的主要因素之一。
网络攻击是指利用网络存在的漏洞和安全缺陷对网络系统的软硬件及其系统数据进行攻击的行为。TCP/IP 协议作为网络的基础协议,从设计之初并没有考虑到网络将会面临如此多的威胁,导致出现了许多攻击方法。由于网络中的通讯都源于数据包,通过对数据包的自动采集与解码分析,可以快速发现与追溯网络攻击。
TCP/IP 协议
业界通常将 TCP/IP 协议栈划为四层:即链路层、网络层、传输层和应用层。
- 链路层主要用来处理数据在物理介质(如以太网、令牌环等)的传输,实现网卡接口的网络驱动程序;
- 网络层采用 IP 协议是整个协议栈的核心,其主要功能是进行数据包的选路和转发,实现网际互联与拥塞控制等;
- 传输层为主机间的应用程序提供端到端的通信,该层定义了两种协议即 TCP 与 UDP;
- 应用层的主要功能是处理应用程序的逻辑,比如文件传输、名称查询和网络管理等,位于该层的协议有基于 TCP 协议的 FTP 文件传输协议、HTTP 超文本传输协议和基于 UDP 协议的域名服务 DNS 等。
TCP/IP 协议模型层次结构图
由于 TCP/IP 协议有四层且每一层功能、协议各不相同,因此针对不同协议层攻击方法也各不相同:针对链路层的攻击,主要是对网络硬件和基础设施进行物理破坏或强行改变路由器路由;IP 协议与 ARP 协议是网络层最重要的两个协议,针对网络层的攻击,主要有 IP 碎片攻击、ARP 欺骗等;由于 TCP 协议与 UDP 协议是传输层最主要的两个协议,因此针对传输层的攻击非常多,包括 DOS 攻击等;而应用层的协议是整个协议栈最多的,因此针对该层的攻击数量极为庞大,常见的如 DNS 欺骗等。
ARP 攻击
ARP(Address Resolution Protocol,地址解析协议),将网络主机的 IP 地址解析成 MAC 地址,每台主机设备上都拥有一个 ARP 缓存(ARP Cache),通过检查自己的 ARP 缓存,然后进行判断(如果有,可以直接映射;如果无,可以广播 ARP 请求包);
之后检查数据包中的目标 IP 地址是否与自己的 IP 地址一致,如果一致,可以发送 ARP 响应,告知 MAC 地址;
当源节点在收到 ARP 响应数据包后,可以将得到的目标主机 IP 地址和 MAC 地址对映射表项添加至自己的 ARP 缓存中。
ARP 协议工作原理
ARP 攻击就是通过伪造 IP 地址和 MAC 地址来实现 ARP 欺骗,通过在网络中制造大量的 ARP 通信量使网络阻塞,攻击者只要持续不断的发出伪造的 ARP 响应包就能更改目标主机 ARP 缓存中的 IP-MAC 条目,造成网络中断或中间人攻击,因此 ARP 攻击通常也被称作 ARP 欺骗。
尽管 ARP 攻击仅能在以太网进行且门槛很低,造成的影响却很大,比如会出现断网攻击、流量被限、账号被盗等情况。网络运维可以采取 ARP 防御机制,比如通过在交换机部署网络镜像,抓取可疑数据包分析,也可以结合 DHCP 侦听、IP 源防护等技术,维护网络安全。
DoS 攻击
TCP 协议是基于流的方式,面向连接的可靠通信方式,可以在网络不佳的情况下降低系统由于重传带来的带宽开销。
具体来说,TCP 连接的建立过程需要经历三个步骤,每一步同时连接发送端与接收端,俗称“三次握手”:发送端发出 SYN 包,进入 SYN_SENT 状态,表明计划连接的服务器端口以及初始序号,等待接收端确认;
接收端收到 SYN 包,发送 SYN_ACK,对发送端进行确认,进入 SYN_RECV 状态;发送端收到 SYN_ACK 包,向接收端发送 ACK,双方连接建立完成。
TCP 三次握手
由于 TCP 协议是面向连接的传输控制协议,因此 DoS 攻击的主要目的就是使用户主机或网络无法接收或处理外界请求。比如通过制造大流量的无用数据,造成网络拥塞,使被攻击的主机无法和外界正常通信;
利用重复连接缺陷,反复发送重复服务请求,使其无法正常处理其它请求;
又或利用协议缺陷,反复发送攻击数据,占用主机或系统资源,导致死机等。
简单来说,DoS(Denial of Service)拒绝服务攻击通常使用数据包淹没本地系统,以打扰或严重阻碍本地的服务响应外来合法的请求,使本地系统奔溃。
SYN flood 攻击是最常见的 DoS 攻击类型。攻击者将自身 IP 源地址进行伪装,向本地系统发送 TCP 连接请求;
本地系统回复 SYN-ACK 至伪装地址,导致本地系统收不到 RST 消息,无法接收 ACK 回应,将一直处于半连接状态,直至资源耗尽。攻击者发送连接请求速度比 TCP 超时释放资源速度更快,利用反复连接请求,导致本地服务无法接收其它连接。
解决 SYN flood 的最好方法就是做好防范策略,通过网络性能管理工具,自动筛选可疑数据包,缩短 SYN Timeout 时间,设置 SYN Cookie,为每一个请求设置 Cookie,如果短时间内收到某个 IP 的重复 SYN 报文,就认定为攻击,抛弃该 IP 地址。
DNS 攻击
IP 协议为了将数据信息包从原设备传送到目的设备,需要依赖 IP 地址与 IP 路由器。IP 地址是机器语言,通常较长,所以尽管 IP 地址具有唯一性,但是不方便记忆与使用,人们便在此基础上发明了 DNS。DNS(Domain Name System)即域名系统,域名通常较短,兼具可读性与实用性。由于域名与 IP 地址呈一一对应关系,因此,上网时只需在地址栏输入域名,系统会直接进行域名解析,将域名翻译成 IP 地址。
在执行完域名搜索后,域名服务器会保存域名记录,每条记录都会包含域名与 IP 地址。如果域名服务器的某条地址被人为修改,那么就可以人为操作用户的访问地址,这种行为被称为“域名劫持”。“域名劫持”的始作俑者是域名服务器提供商,因此目前解决该问题的有效方法是弃用或换用域名服务器。
除“域名劫持”外,还有另外一种常见的 DNS 攻击叫做“域名污染”或“域名欺骗”。当电脑发送“域名查询”至域名服务器后,域名服务器会将回应发送回电脑,发送请求与接收信息是一个过程,中间会出现时间差,网络攻击会在接收信息前,伪造错误应答至电脑,那么该信息即为错误 IP。
面对网络攻击,我们除了需要提高安全意识,积极尽责地维护系统,加强防火墙设置外,还可以通过对数据包进行分析进而追溯网络攻击。
通过对网络数据进行采集与解码分析,掌握网络中最细微的变化,针对网络攻击的特征值或者行为进行有效的告警信息配置,可以快速定位网络中的攻击。
也可以通过使用具有安全防护功能的网络性能管理工具,譬如天旦网络性能管理 NPM,支持 TCP 端口扫描、ARP 攻击与 DOS 攻击等可疑数据包自动分析,实现自动告警,保障数据信息的正常传输与使用。