网络安全是一个十分重要的话题,但是它同时也是一个十分复杂的问题。各种针对网络的攻击手段层出不穷,对于网络的守护者来说,将这些手段进行分类是一个十分棘手的工作。本书采用了TCP/IP协议族中的分层结构对此进行了分类,按照每种攻击所在的层次对其进行归类。因此从本章开始我们将会按照链路层、网络层、传输层和应用层这个顺序来介绍常见的攻击技术。
据统计目前网络安全的问题有80%来自于“内部网络”,很多黑客也将攻击目标从单纯的计算机转到了网络结构和网络设计上来。链路层是内部网络通信最为重要的协议,而交换机正是这一层典型的设备,所以我们的讲解以交换机为例。但是相比起其它网络设备来说,交换机的防护措施往往也是最差的,因此也经常成为黑客攻击的目标。
这个网络在之前一直可以正常运行,但是在前些天很多用户突然发现网络速度变得十分缓慢,经过我们的检查没有发现线路方面的问题。但是我们发现每次重启交换机之后,网络速度就会恢复正常。而经过一段时间之后,网络速度就会再次变得缓慢。
要么是交换机硬件本身出了故障,要么技术交换机遭到了攻击从而无法正常工作
这是数据链路层的设备。它可以识别数据包中的MAC地址,但是无法识别出里面的IP地址。交换机中有一个包含了端口和硬件地址对应关系的CAM表,目前常见的攻击手段大都是针对CAM表的
MAC 地址欺骗攻击
由于交换机中的CAM表是动态更新的,往往攻击者往往可以通过各种手段对其进行操纵,一个攻击者就可以通过想交换机发送伪造的数据帧,从而实现对CAM表的修改。
黑客使用的是主机硬件为 22:22:22:22:22:22 连接到FastEthernet0/1
而目标主机硬件地址为 33:33:33:33:33:33 连接到FastEthernet0/2
正常情况下交换机CAM表的内容
目标地址 | 地址类型 | 虚拟子网 | 目的端口 |
---|---|---|---|
22:22:22:22:22:22 | Dynamic | 1 | FastEthernet0/1 |
33:33:33:33:33:33 | Dynamic | 1 | FastEthernet0/2 |
黑客将数据包中的源MAC地址修改为33:33:33:33:33:33,然后发送到交换机
遭到黑客攻击之后交换机CAM表的内容
目标地址 | 地址类型 | 虚拟子网 | 目的端口 |
---|---|---|---|
22:22:22:22:22:22 | Dynamic | 1 | FastEthernet0/1 |
33:33:33:33:33:33 | Dynamic | 1 | FastEthernet0/1 |
从而将所有的数据都发往 FastEthernet0/1 ,黑客就可以截获所有属于目标计算机的通信
MAC 地址泛洪攻击
黑客可以利用工具在短时间制造大量的数据帧发送给交换机,从而导致CAM表爆满,这样交换机就会退化成集线器
MAC 地址泛洪攻击是一种针对交换机的攻击方式,目的是监听同一局域网中用户的通信数据。交换机的工作核心:端口-MAC 地址映射表。这张表中记录了交换机每个端口和与之相连的主机 MAC 地址之间的对应关系。通常情况下,交换机的每个端口只会连接一台主机,因而在 CAM 表中每个端口只会对应一个 MAC 地址。如果在这种一一对应的情况下,交换机就无需担心 MAC 地址泛洪攻击的,因为一台交换机只有几十个端口,这样整个 CAM 表中最多也只有几十个项。但是由于现在的交换机都使用了级联技术,也就是 A 交换机可以连接到另一个 B 交换机的级联端口上。这样在B 交换机的级联端口上就会对应多台主机的 MAC 地址,从而在 CAM 表中产生大量的记录。
STP 操纵攻击
交换机中另外一个隐患来源于生成树协议。STP的原理是按照数的结构来构造网络拓扑,消除网络中的环路,避免由于环路的存在而造成广播风暴问题。STP允许冗余,都是同时确保每一时刻只有一条链路是运行的,并且每一回路出现。由于STP需要中个交换设备是通过交换BPDU报文信息传播生成树信息,而黑客就可以通过发送伪造的BPDU报文,控制交换设备的端口转发状态,从而动态的改变网络拓扑结构,并将所有的网络流量劫持到本机
广播风暴攻击
由于以太网中的部分需要都是以广播形式工作的,列如地址解析协议(ARP)、动态主机配置协议(DHCP)等,因此交换机在正常情况下也协议对这些数据包进行广播。都是这些广播会占用主机资源和网络资源,都是在遭受黑客攻击是,就会导致广播在网段内被大量复制,占用大量的网络资源,网络性能下降,甚至网络瘫痪,这就是广播风暴攻击
为了确定交换机受到了哪种威胁,我们决定在用户甲所使用的主机开始捕获数据包,并将捕获到的数据包报错为SwitchAttack.pcapng。然后对其进行分析以找出问题的所在
使用WireShark分析针对交换机的攻击
在 Wireshark 中打开了 SwitchAttack.pcapng 文件,我们很快就在这里面发现了问题。在这个文件中开始很正常地出现了一些 ARP 数据包之后,从编号为 83 号的数据包出现了大量无论是源地址还是目的地址都不属于用户主机的数据包
用户主机的IP地址为 192.168.32.132,以第83个包数据包为列,它却收到了由 86.177.72.125 发往 192.168.117.13的数据包,这些数据包无论是源地址函数目的地址都不在本地网络的范围内。我们又分别在其他用户的主机上进行了数据包捕获,结果发现了同样的问题
WireShark中的统计功能
现在我们发现网络中出现了大量来历不明的数据包,可是到底出现了多少个数据包呢,这些数据包是否来自同一个源地址,或者发向同一个目的地址呢?如果手动地逐个计算的话,那么显然这是一个十分繁重的重复劳动。好在 Wireshark 中提供了极为强大的网络统计功能,利用这些功能我们可以对网络活动有一个宏观的了解。菜单栏”统计”的下拉菜单中的”捕获文件属性”
这些数据包都属于那些类型呢,这个可以利用统计草地中的”需要分级”来看
这个比例看起来很不正常,通常情况下我们在网络中看到的数据包大部分都应该是TCP和UDP,而这个数据包文件居然完全没有TCP和UDP需要的数据包,整整49915个数据包全都是单纯的IP数据包,并没有实现任何功能,也没有承载数据,可能都是攻击者恶意构造的数据包
接下来再来分析这些数据包的来源和目的,这里需要使用到统计功能的”对话”选项。它统计不同主机之间的通信信息。尤其在我们在对服务器和设备之间的信息端对端的分析时,
经过分析之后,网络中出现大量来历不明的数据包,这些数据包无论是源地址函数目的地址都不在网络中
交换机不再对网络中的通信进行转发,而是将收到的通信进行广播,所有的主机上都能收到广播的数据包
所有的这些数据包的协议类型和长度都是相同的
MAC 地址泛洪攻击
MAC 地址泛洪攻击是一种针对交换机的攻击方式,目的是监听同一局域网中用户的通信数据。交换机的工作核心:端口-MAC 地址映射表。这张表中记录了交换机每个端口和与之相连的主机 MAC 地址之间的对应关系。通常情况下,交换机的每个端口只会连接一台主机,因而在 CAM 表中每个端口只会对应一个 MAC 地址。如果在这种一一对应的情况下,交换机就无需担心 MAC 地址泛洪攻击的,因为一台交换机只有几十个端口,这样整个 CAM 表中最多也只有几十个项。但是由于现在的交换机都使用了级联技术,也就是 A 交换机可以连接到另一个 B 交换机的级联端口上。这样在B 交换机的级联端口上就会对应多台主机的 MAC 地址,从而在 CAM 表中产生大量的记录。
找到攻击的源头
好了,现在我们已经确定了当前交换机遭到的是 MAC 泛洪攻击,攻击者发送这些数据包的目的就是用来填满交换机的 CAM 地址表。我们可以肯定这些数据包一定是来自于网络的内部,因为这些数据包的目的 IP 地址多种多样,不可能通过互联网路由到内部网络。
而这些数据包的源 MAC 地址和目的 MAC 都是伪造的,显然也无法以此来找出攻击者的位置。
第1列”MAC Address”表示MAC地址,第5列”Port”表示交换机的端口。可以看到在MAC Address列中有大量的硬件地址,而在Port列却只有 Eth0/0/3一个端口。根据交换机的原理,当一个数据包进入到一个端口时,交换机就会将该数据包中源地址和这个端口的编号写入CAM表,而现在的Port列却只有Eth0/0/3一个端口,大量的不同源MAC地址的数据包进入到了交换机的Eth0/0/3(port 3)而这些数据包又是攻击者恶意构造的,所有连接到Eth0/0/3的主机技术攻击的来源
使用macof发起MAC地址泛洪攻击
开启Kali,系统有内置macof工具。来源这个工具可以轻松发起一个MAC地址泛洪攻击
交换机在早到了攻击之后,内部的CAM表很快就被填满了。交换机退化成集线器,会将收到的数据包全部广播出去,从而无法正常向局域网提供转发功能
如何防御 MAC 地址泛洪攻击
虽然攻击者可以伪造出大量的数据包来攻击交换机,但是由于攻击者的数据包只能从交换机的某一个端口进入,所以我们可以限制每一个端口对应的 MAC 地址数量即可。目前的交换机大都提供了这种功能,我们仍然以 ENSP 中的华为 S3700 交换机为例。在上例中我们已经发现了所有的流量都来自于交换机的 Ethernet0/0/3 端口,那么我们就可以在这个端口上进行设置,保证该端口最多可以学习 8 个 mac 地址,在交换机中进行配置
[Huawei-Ethernet0/0/3] port-security enable
[Huawei-Ethernet0/0/3] port-security mac-address sticky
[Huawei-Ethernet0/0/3] port-security protect-action protect
[Huawei-Ethernet0/0/3] port-security max-mac-num 8
完成这个配置之后,虽然攻击者依然产生了大量的数据包,都是依然只占用了CAM表中的8项4,因而永远无法达到填满整个CAM表的目的