众所周知,在大部分的局域网攻击中,都是利用ARP欺骗原理,当然还有DHCP_dos攻击等手段。
有些运维人员开启了防火墙或者360以及管家之类的软件,在实战中虽然开启了也不一定能防御ARP攻击!因为好多软件是默认不开启的!即使是开启这样的功能,也会对网卡转发报文的效率产生影响,接下来,我就分享下ARP欺骗攻击的原理以及精确的防御方法。
ARP欺骗断网攻击
ARP协议在出现的不久后,有人就发现了这个协议是一根筋的思维,何为一根筋,我们慢慢道来........
首先,通常在实施攻击前我们会利用嗅探工具进行扫描(前期已做分享。)
现在,我利用图中的攻击者去攻击我的真实主机 10.0.8.26/24
打开kali linux 输入以下命令。
我的真实主机也一直在长ping网关进行观察:
实施攻击的时候,我们发现在Ping网关的界面中出现了请求超时,并且你在浏览浏览器的时候也会出现访问不了的故障!
crtl+c停止攻击,看到界面中的网络已恢复!虽然我们开启了360之类的防御软件,但是没有开启特殊防护功能是无法防御的!
这种攻击的原理在于ARP欺骗。ARP这个地址解析协议协议在局域网中我们常常能看到,这种基础协议的作用无非就是通过目的IP地址,请求对方MAC地址的一个过程!这个过程过于基础,这里不做详细解释。
ARP属于一个泛洪的报文,目标mac地址是全F。
取决于交换机的工作原理,交换机见到全F的报文就会形成群发操作,设备时分不清这个是正常流量还是攻击流量!
我们来看下这张图,当服务器想去访问10.0.1.4/24的主机2的时候,在局域网中服务器是不知道主机2在那里,它就会发送一个ARP请求报文,由交换机从除了流入端口外的所有端口转发出去,形成广播报文,等待10.0.1.3的mac地址回应。
在ARP回应报文中携带了主机2的mac地址返回给服务器的时候,我们就可以发送ARP欺骗攻击了。利用技术手段让黑客这台主机发送ARP回应报文,伪装成10.0.1.4这台主机。
在众多网络协议中,ARP这个协议不算是聪明的一类,在它的规则中,任何人发送一个报文并且最后回应道到设备的,我就相信谁的报文。
所以,黑客技术利用了ARP协议的这一BUG,即使你服务器没有发送ARP请求,我也可以毫无顾忌的发送ARP回应报文(单播报文),服务器设备还是相信并且刷新自己的MAC地址表,这就造成了即使真正的数据报文回应到服务器上也会很快的被虚假Mac表覆盖掉,而交换机又不知道这个Mac 地址是真是假,就把来自服务器的数据报文转发给黑客的那台主机了。
这时,你就不能正常访问互联网了。原因就是黑客欺骗了你,让你这台主机以为他就是网关了。
我们可以在arp -a中,能看到主机的网关地址的真实地址。
而被攻击后,就变成了攻击者的Mac地址了。
稍微高明的黑客会让你的数据通过,并且保留你的数据报文,进行嗅探和挖掘。这样就很麻烦了,黑客就可以进行对这些数据进行篡改,限速等等......黑客一是会欺骗你的主机冒充网关,二是欺骗网关冒充你的主机。
ARP两头哄骗技术图解
黑客的攻击机首先会毒化网关,不停的发送arp回应报文称自己是服务器2.毒化网关的ARP缓存表。
黑客再发送arp回应报文给1.40 冒充网关欺骗1.40,毒化服务器2,这样的话,设备就会覆盖当前(后来的优先)的arp表,也叫两头哄骗技术。
最后造成的结果,就是服务器如果想要访问互联网,那么数据一定是经过黑客的那台主机的路径进行访问,黑客那台主机再开启转发功能的话,将你的数据转发给10.0.1.1,那么你是绝对不会察觉到断网的,这样他就可以随心所欲的捕获和限制的你业务流量了。
Kali linux 开启转发功能
我们模拟黑客那台主机,捕获到用户业务数据后,攻击时让用户察觉不到断网,查看用户数据报文。
开启 kali linux 路由转发报文功能
默认是不开启的。如果输入0就代表了关闭路由转发报文功能。
root@kali:~# echo 1 > /proc/sys/net/ipv4/ip_forward
在实施攻击前,我看下局域网内的一个主机真实的网关Mac地址:在我实施攻击之后,我们可以观察到这个网关的地址会变成攻击者的网卡对的mac地址。而且用户不会察觉到断网。
小技巧:
在Linux中我们使用crtl+shift+t的快捷键可以快速的切终端窗口。
在实施攻击之后,我们发现局域网的这台受害者主机的mac地址发生了变化。变成了Kali Linux主机的网卡的mac地址。
演示两头欺骗攻击演示。
除了欺骗受害者冒充网关外,还要毒化网关,告诉网关自己是服务器2。这个实验可以在真机上模拟,为了不使局域网其他真实主机攻击影响,我决定在ENSP模拟器中模拟这次实验。具体拓扑如下:
在局域网中,如果想要实现对数据的截获,必须要进行ARP欺骗,因为用户访问互联网,数据流的方向一定是转向3层接口,不经过局域网其他主机,因此这里的攻击手段主要是ARP欺骗。
在Kali linux 发送ARP回应报文,告诉网关,自己是10.0.8.200这台主机。
再次发送一个ARP回应报文给10.0.8.200这台主机,告诉这台主机自己是网关...... 形成两头欺骗技术。
这样的话,就会造成,如果8.200这台主机访问互联网数据方向一定是这样的:
回程的数据报文也是相反的。
除了在拓扑中配置接口IP地址外,还要在R2上配置一条静态路由,将路由方向指向拓扑中的网关地址:
[R2]ip route-static 0.0.0.0 0.0.0.0 10.0.8.201 (可选)
为的是访问环回接口---后续实验结果用不上
这里我需要解释的是,为何这个桥接的kali linx攻击主机的mac地址是我的真实无线网卡地址呢? 我可以证明下:
站在Kali linux 中去Ping一下8.200,使其形成arp缓存表。
ping完成后,站在R1上查看arp映射表,我们会发现会产生一个同样Mac 地址不同IP的现象,这就说明了,桥接网络时,虚拟机会利用的我无线网卡mac地址实现数据转发。
先让R1访问下3.3.3.3 代表访问公网是正常的。
并且查看arp映射:<R2>dis arp
我们看到其对应的网关Mac地址是:0965结尾的mac地址。
同样,站在网关设备上去看以下8.200的mac地址是631b结尾。
这样才是正常的mac地址表映射。
在确保开启kali linux 转发功能后
①我们实施arp欺骗攻击。毒化网关,告诉其自己是8.200。
我们惊讶的看到网关的ARP表中,8.200的mac地址表变成了攻击主机的mac地址,网关被欺骗了。
②毒化R2的ARP缓存表,冒充自己是网关。
观察R2的arp缓存表,其中的网关arp映射表已被毒化:
这样造成的结果,就是数据流方向就是经过了攻击机。
因为是桥接网卡原因,如果站在R2上去访问3.3.3.3是经过我的网卡,是访问不了的,因此这里我只是访问10.0.8.201,站在攻击主机上看看有没有经过的报文。
站在R2上去长ping 网关地址:
后台运行wireshark抓包软件。
我们在攻击机中利用抓包软件可以看到客户机发送的Icmp 报文。这就证明了我捕获到了相应的数据报文。
不仅仅能捕获ICMP协议报文,还可以捕获telnet报文:
①在网关设备中开启telnet功能(实战中的华为Telnet功能是默认不开启的。)
在AAA模式下新增一个用具,等级为3,设置密文密码。
[R1]aaa
[R1-aaa]local-user fengxin privilege level 3 password cipher 123.com!
[R1-aaa]local-user fengxin service-type telnet
②进入到虚拟链路中设置认证方式为aaa。
[R1]user-interface vty 0 4
[R1-ui-vty0-4]authentication-mode aaa
查看telnet的服务状态:s5720s系列的交换机默认是不开启的,我们需要开启它!
开启后,我们telnet登录设备,最后看看能不能抓到这些设备账户和密码。
攻击保持,在抓包软件中过滤Telnet协议,我们就能看到R2连接网关的账户和密码了。
我们一个个拆取字节,就可以抓取到账户和密码了
在抓包软件中进行分析,追踪流----tcp连接
我们就可以看到分析出来的账号和密码了,存在TCP/IP握手机制,账号需要-1。我们就可以明明白白的看到账号和密码,就连你进入到系统之中,操作了什么我都可以看到!这样网络隐私就被公之于众!
ARP毒化防范
局域网中单单存在ARP欺骗,我们在二层交换机中可以设置dchp snooping和arp动态检测。
如果想要实现防御ARP泛洪攻击,我们可以配置arp 限速(一个接口每秒接收arp报文限制数量)。
小企业中的往往会部署着许多傻瓜式二层交换机,这样只能在每个客户端中开启360安全卫士局域网防护功能或者电脑管家。开启后,再次攻击的哈,会有提示拦截攻击提示!
DHCP_snooping防御配置演示
但是这个实验在ENSP中做,测试的时候并不生效,真实物理机完全生效,这里只做配置演示
前提是这个交换机上一定有dhcp shoping这个功能。
DHCP Snooping是一种是一种DHCP安全技术,能够有效防止网络中仿冒DHCP服务器的攻击,保证客户端从合法的服务器获取IP地址,而且能够记录DHCP客户端IP地址与MAC地址等参数的对应关系而生成绑定表,同时还可以防范各种基于DHCP服务的攻击。
交换机中开启DHCP 功能
[HeXin]dhcp enable
开启DHCP Snooping功能
根据这张拓扑图,来演示我们的dhcp snoping配置实验。
核心交换机上开启DHCP功能:
[HeXin]dhcp enable
在vlan接口下启用DHCP全局模式
[HeXin]interface vlan1
[HeXin-Vlanif1]dhcp select interface
[HeXin-Vlanif1]dhcp server dns-list 202.106.0.20
针对vlan1上开启dhcp snooping功能
[HeXin]dhcp snooping enable
[HeXin]dhcp snooping enable vlan 1
这里我指的是针对vlan1上开启dhcp snooping功能
在交换机的接口中开启dhcp snooping
[HeXin-GigabitEthernet0/0/2]dhcp snooping enable
DHCP Snooping能够实现“信任功能”和“基本侦听功能”。我们后续文章会详细介绍。
测试客户端是否能动态获取地址:
开启DHCP snooping功能之后,交换设备中会形成一张DHCP映射表:
华为官方是这样介绍的:DHCP Snooping基本功能就是能够保证客户端从合法的服务器获取IP地址,而且能够记录DHCP客户端IP地址与MAC地址等参数的对应关系进而生成绑定表。
[HeXin]display dhcp snooping user-bind all
我们能看到交换机所分配的IP地址会对应一个PC的mac地址和所在的交换端口以及对应的vlanID。
用户从这个接口流入DHCP报文,接入层交换机会将相关信息会记录在这张表中,
这样的话如果流入的dhcp报文中不符合这些信息,就认为其实欺骗报文,直接丢弃操作!
除了开启DHCP Snooping功能外,我们可选交换端口中的DAI动态ARP检测!
每个接入层的PC端口都需要配置DAI动态ARP检测。
使能动态ARP检测丢弃报文警告功能。(可选)
[HeXin-GigabitEthernet0/0/2]arp anti-attack check user-bind enable
开启这个功能后,结合DHCP Snooping这张唯一有权威性的映射表去检查报文的mac地址等参数。
设置告警阈值。(可选)
作用防止泛洪的ARP报文流入交换机拖垮性能。
[HeXin-GigabitEthernet0/0/2]arp anti-attack rate-limit enable
默认开启的告警阈值是:每秒100个arp响应报文。
我们也可以指定速率,举例,每5秒检查一次,超过每秒200个arp报文流入就直接将报文丢弃。
[HeXin-GigabitEthernet0/0/2]arp anti-attack rate-limit 200 block timer 5