常见的网络攻击
1.MAC欺骗
原理:针对交换机的Mac地址学习机制,攻击者通过伪造的源Mac地址数据包发送给交换机,造成交换机学习到了错误的Mac地址与端口的映射关系,导致交换机要发送到正确目的地的数据包被发送到了攻击者的主机上,攻击者主机通过安装相关的嗅探软件,可获得相关的信息以实现进一步的攻击。
预防:通过在交换机上配置静态条目,绑定到正确的出接口,就能避免Mac欺骗攻击风险。
2.MAC泛洪
原理:MAC泛洪攻击一利用了交换机的Mac学习机制,攻击者通过发送伪造源地址的数据包,让交换机学习到错误的Mac转发表项,同时交换机的Mac表项是有一定数目限制的,通过发送大量的这种虚假信息包,交换机的Mac转发表项就会被这种虚假的信息占满,导致正常的数据包转发时匹配不到转发表项而泛洪到VLAN内的所有其它端口,这样就可以实现报文侦听了。
利用了
- 交换机的MAC学习机制
- MAC表项的数目限制
- 交换机的转发机制
预防:
- 配置静态额MAC转发表
- 配置端口的MAC学习数目限制
ARP欺骗
原理:在网络监听过程中,攻击者抢先合法主机B应答主机A发起的ARP请求;主机A被误导建立一个错误的映射并保存一段时间,在这段时间内,主机A发送给主机B的信息被误导致攻击者。如果攻击者持续抢先应答ARP请求,数据流就可能被一直误导下去。如果攻击者模拟网络出口路由器发动ARP攻击,内部网络的所有出口信息都将被接管。如果攻击者将出口路由器IP和一个不存在的MAC地址进行映射,即可以导致发送方受到拒绝服务的攻击。可以看出,ARP协议的基础就是信任本网段内所有主机,一台主机不必收到一个ARP请求就可以向其他主机发送ARP相应
预防:
- 设置静态的MAC地址到IP地址的对应表,不要让主机刷新设定好的转换表
- 使用ARP服务器
- 使用proxy代理IP传输
IP欺骗
步骤:
① 首先使被信任主机的网络暂时瘫痪,以免对攻击造成干扰。
②然后连接到目标机的某个端口来猜测序列号和增加规律。
③接下来把源地址伪装成被信任主机,发送带有SYN标志的数据段请求连接。
④然后等待目标机发送SYN+ACK包给已瘫痪的主机。
⑤最后再次伪装成被信任主机向目标机发送ACK,此时的数据段带有预测的目标机的序列号+1。
⑥连接建立,发送命令请求。
预防:
- 抛弃基于地址的信任策略
- 进行包过滤
- 使用加密方法
- 使用随机的初始序列号
Smurf攻击
原理:Smurf攻击方法是发送ICMP应答请求,该请求包的目标地址设置为受害网络的广播地址,这样该网络的所有主机都对此ICMP应答请求作出答复,导致网络阻塞。高级的Smurf攻击,主要用来攻击目标主机。方法是将上述ICMP应答请求包的源地址改为受害主机的地址,最终导致受害主机雪崩。攻击报文的发送需要一定的流量和持续时间,才能真正构成攻击。理论上讲,网络的主机越多,攻击的效果越明显。
预防:在路由设备上配置检查ICMP应答请求包的目的地址是否为子网广播地址或子网的网络地址,如果是,则直接拒绝。
TCP欺骗
原理:TCP欺骗大多数发生在TCP连接建立的过程中,利用主机之间某种网络服务的信任关系建立虚假的TCP连接,可能模拟受害者从服务器端获取信息。具体过程与IP欺骗类似。
步骤:(A信任B, C是攻击者)
①C先破坏掉B,例如使用floogin, redirect, crashing等。
②C用B的地址作为源地址给A发送TCP SYN报文。
③A回应TCP SYN/ACK 报文,从 A发给B,携带序列码S。
④C收不到该序列码S,带为了完成握手必须用S+1作为序列码进行应答,此时C可以通过以下两种方法得到序列码S:
- C监听SYN/ACK报文,根据得到的值进行计算
- C根据A操作系统的特性等,进行猜测
⑤C使用得到的序列码S回应A,握手完成。
TCP拒绝服务—SYN Flood攻击
原理:
①攻击者用带有SYN标志位的数据片段启动握手
②受害者用SYN/ACK应答
③攻击者保持沉默,不进行回应
④由于主机只能支持数量有限的TCP连接处于half-open状态,超过该述幕后,心得连接就都会被拒绝
预防:关闭处于half-open状态的连接
UDP拒绝服务—UDP Flood攻击
原理:攻击者通过向服务器发送大量的UDP报文,占用服务器的链路带宽,导致服务器负担过重而不能正常向外提供服务。
预防:由于UDP协议是无连接的,所以不能对其进行连接状态的检测,通过对UDP报文进行主动统计和学习,分析某个主机发送的UDP报文规律和特征,如果存在一台主机大量发送相同、相似或以某种特定规律变化的UDP报文时,则将其认为是攻击者。通过配置对UDP报文速率限制,可以实现对UDP Flood攻击的防范。
缓冲区溢出攻击
原理:缓冲区是内存中存放数据的地方。在程序试图将数据放到机器内存中的某一个位置的时候,因为没有足够的空间就会发生缓冲区溢出。而人为的溢出则是有一定企图的,攻击者写一个超过缓冲区长度的字符串,植入到缓冲区,然后再向一个有限空间的缓冲区中植入超长的字符串,这时可能会出现两个结果:一是过长的字符串覆盖了相邻的存储单元,引起程序运行失败,严重的可导致系统崩溃;另一个结果就是利用这种漏洞可以执行任意指令,甚至可以取得系统root特级权限。