安全隐患
在 Internet 设计之初,首先应用于研究环境,针对少量、可信的用户群体,网络安全问题不是主要的考虑因素。随着互联网的不断发展,TCP/IP 协议族成为使用最广泛的网络互连协议。但由于协议在设计之初对安全考虑的不够,导致协议存在着一些安全风险问题。因此,在TCP/IP 协议栈中,绝大多数协议开始并没有提供必要的安全机制,例如:
- 不提供认证服务;
- 明文传输,不提供数据保密性服务;
- 不提供数据完整性保护;
- 不提供抗抵赖服务。
TCP/IP 协议栈中各层都有自己的协议。由于这些协议在开发之初,并未重点考虑安全因素,缺乏必要的安全机制。并且,随着各类协议应用的越来越普遍,针对这些协议的安全威胁及攻击行为也越来越频繁,TCP/IP 协议栈的安全问题也越来越凸显。
根据各协议栈的特点,常见的安全风险及攻击手段如下:
- 应用层有漏洞、缓冲区溢出攻击、WEB 攻击、病毒、木马等;
- 传输层有 TCP 欺骗、TCP 拒绝服务攻击、UDP 拒绝服务攻击、端口扫描等;
- 网络层有 IP 欺骗、Smurf 攻击、ICMP 攻击、地址扫描等;
- 链路层有 MAC 欺骗、MAC 泛洪、ARP 欺骗等;
- 物理层有物理破坏、线路侦听等。
物理层存在的安全隐患
线路侦听
在常用的网络设备中,集线器和中继器工作原理类似,都只负责比特流的转发。这样,从任何一个端口收上来的数据包都会转发到其它端口,如果黑客的主机能够和这台设备相连,通过相关的嗅探工具,就能够获取该网络上的通信数据信息。
对于无线网络,由于数据信息由无线信号传输,窃听者很容易获取到传输信号,无线网络数据的保护需要通过安全加密协议来保障。
侦听是以太网中黑客惯用的手段,是基于数据传送进行攻击的基础。发起攻击的主机使用配置为混杂模式的网卡,可以监听到同一物理网段内所有的报文。使用明文方式进行验证的协议(SNMP/POP3/Telnet/..),用户名和口令会泄露;使用明文进行传送的报文,其内容会泄漏,报文头中的内容也可能被利用。
数据链路层中存在的安全隐患
MAC欺骗
MAC(Medium/Media Access Control)地址,用来表示互联网上每一个站点的标识符,采用十六进制数表示,共六个字节(48 位)。其中,前三个字节是由 IEEE 的注册管理机构 RA负责给不同厂家分配的代码(高位 24 位),也称为“编制上唯一的标识符”(Organizationally Unique Identifier),后三个字节(低位 24 位)由各厂家自行指派给生产的适配器接口,称为扩展标识符。
针对交换机的 MAC 地址学习机制,攻击者将伪造的源 MAC 地址数据帧发送给交换机,造成交换机学习到了错误的 MAC 地址与端口的映射关系,导致交换机要发送到正确目的地的数据帧被发送到了攻击者的主机上。攻击者主机通过安装并使用相关的嗅探软件(如Sniffer、Wireshark),可获得相关的信息以实现进一步的攻击。
通过在交换机上配置静态条目,绑定到正确的出接口,可以避免 MAC 欺骗攻击风险。
MAC泛洪
正常情况下,交换机会通过 MAC 学习机制建立 MAC 地址表项,从而使主机间的数据帧只在主机相连接的端口之间转发,其它端口并不能接收到这些数据帧,从而降低了数据报文被侦听的风险。
MAC 泛洪攻击利用了交换机的 MAC 学习机制和 MAC 表项数目有限原理。攻击者通过发送大量伪造源地址的数据帧,让交换机学习到大量错误的 MAC 转发表项;当交换机的 MAC转发表项数量达到上限后,交换机不再更新 MAC 地址表;主机之间正常的数据帧进行转发时反而匹配不到转发表项,从而泛洪到 VLAN 内的所有其它端口。这样就可以实现报文侦听了。
在网络中实施 MAC 泛洪攻击,会导致网络的可用性降低。一个原因是,部分交换机表项达到上限后,数据帧会通过 CPU 进行“软转发”,从而导致交换机的转发性能大幅下降;第二个原因是,数据帧在 VLAN 内的所有端口间泛洪,占用了大量的网络带宽。
通过在交换机上配置 MAC 地址静态表项,或者限制交换机每个端口的 MAC 地址学习数 量,可以降低交换机遭受 MAC 泛洪攻击的风险。
网络层存在的安全隐患
ARP欺骗
用户A和用户B将要进行网络通讯时,A发送ARP Request询问B的MAC地址,B 响应ARP Reply向A反馈自己的MAC地址。
在以太网交换机的 ARP 实现机制中,设备只考虑如何将 IP 地址映射到 MAC 地址,而不对这种映射关系进行验证。例如,当主机收到 ARP 回应(ARP Reply)报文后,它并不会去验证自己是否发送过这个 ARP 请求(ARP Request)报文,而是直接将 ARP 回应报文里的 MAC 地址与 IP 对应的关系记录下来,并替换原有的 ARP 缓存表。
在 ARP 欺骗攻击过程中,攻击者会向被攻击主机发送伪造的 ARP 回应报文,报文中包含了一个错误的 MAC 地址与 IP 地址的映射关系。被攻击主机根据这个 ARP 回应报文,建立一个错误的映射并保存一段时间,在这段时间内,被攻击主机发出的报文就被转发给了攻击者。
如果攻击者持续攻击行为,数据流就可能被一直误导下去。如果攻击者攻击网络出口路由器,使路由器中 ARP 表项错误,则会造成所有主机无法访问外网。如果攻击者将出口路由器IP 和一个不存在的 MAC 地址进行映射,即可以导致业务流量的请求方受到拒绝服务的攻击。
如上面分析,ARP 欺骗攻击行为会导致两种最常见的网络故障,一种是攻击主机作为“中间人”,被攻击主机的数据都会被它窃取;另一种是使被攻击主机无法访问网络。
配置 IP 和 MAC 静态绑定是防范 ARP 欺骗攻击的常用方法。在实践中,会在主机和网关上同时配置 IP 和 MAC 绑定,则可以有效地防范 ARP 欺骗攻击。
IP欺骗攻击
IP 欺骗指攻击者产生伪造源 IP 地址的 IP 报文,以便冒充其他系统或发件人的身份。
另外,IP 欺骗的另一个目的是攻击者试图隐藏自己。通过伪造自身的 IP 地址向目标系统发送恶意请求,造成目标系统受到攻击却无法确认攻击源,或者取得目标系统的信任以便获取机密信息。
IP 欺骗攻击常见于如下场景:
- 场景一,攻击者通过 IP 欺骗隐藏自己。这种场景常用于 DDoS 攻击(分布式拒绝攻击)。攻击者在攻击过程中,随机生成大批假冒源 IP,使攻击者很难分析出真正的攻击源,从而达到攻击者隐藏自身的目的。
- 场景二,攻击者通过 IP 欺骗来窃取数据。例如,原本 A 主机信任 B 主机,也就是 B可以畅通无阻地获取 A 的数据资源。而攻击主机 C 为了能同样获取到 A 的数据,就需要伪装成 B 去和 A 通信。这时 C 需要做两件事,第一是想办法让 B“把嘴堵上”,不再向 A 发送请求,比如向 B 主机发起 DoS 攻击(拒绝服务攻击),占用 B 的连接使其无法正常发出报文;第二是伪造包含 B 的源 IP 的数据包,从而假冒 B 和 A 交互以达到窃取数据的目的。
IP 欺骗的防范,一方面需要目标设备采取更强有力的认证措施(如强口令等),而不仅仅根据源 IP 就信任来访者;另一方面可以采用健壮的交互协议以提高伪装源 IP 的门槛。
Smurf攻击
Smurf 攻击方法的原理如下:
攻击者发出 ICMP 应答请求,该请求的目标地址设置为受害网络的广播地址,这样该网络的所有主机都对此 ICMP 应答请求作出答复,导致网络阻塞。
另外,还有针对特定主机的 Smurf 攻击,方法是将上述 ICMP 应答请求的源地址改为受害主机的地址,最终导致受害主机雪崩。攻击报文的发送需要一定的流量和持续时间,才能真正构成攻击。理论上讲,网络的主机越多,攻击的效果越明显。
针对 Smurf 攻击,可以在路由设备上配置检查 ICMP 应答请求包的目的地址是否为子网广播地址或子网的网络地址,如果是,则路由器直接拒绝该报文。