工业网络中的ARP攻击

来源:互联网 发布:写入关键词 大数据 编辑:程序博客网 时间:2024/06/02 21:00

大约在一个月前,我到某工厂出差,这个厂内的网络突然崩溃,设备均没法正常通讯,停产了一整个下午。据说厂方查了挺久的。后来拜访IT部门,发现他们的网络遭到了不明来源的ARP攻击。

ARP实际上是 TCP/IP 协议中的非常重要的地址解析协议(Address Resolution Protocol)。这个协议主要是协助主机根据 IP地址获得对应的 MAC 地址。理论上,没有ARP网络就没法通信。但ARP怎么又变成了攻击手段呢?

那就要从网络的原理说起了。

ARP原理

IP地址是网络层应用的地址,是分层次等级的。而硬件地址是数据链路层使用的地址,是硬件出厂的时候固化的。网络数据传输的时候,IP地址将存放在IP数据报中,IP数据报通过分组封装到MAC帧中,主机通过网络将MAC帧进行传输,网络设备根据MAC帧内的目标MAC地址接收数据并重组为IP数据报,然后再根据IP地址继续进行信息传输或信息接收。

也就是说,信息传送给给下一个节点的时候,需要知道下一个节点的IP地址和MAC地址。根据所在网络的拓扑,IP地址的划分是有IP协议规范的,可以根据路由表确定下一跳的IP地址。但是,MAC地址是硬件设备出厂的时候固化的,同一个网络中,MAC地址往往没有规律可循。而且一旦更换网卡,MAC地址也发生改变。所以数据传送必须是IP地址与MAC地址的协作。

其实,无论网络层使用什么协议(一般是IP协议),在实际网络链路上传送数据时,都需要使用到硬件地址。而ARP就是用来完成IP地址到MAC地址的转换的。

现实中,网络内的每一个主机都有一个ARP高速缓存,存放在当前局域网内各个主机和路由的IP地址与MAC地址的映射。主机根据IP地址向目标主机发送数据的时候,需要先查询自己的ARP高速缓存,如果有目标主机的IP-MAC映射,则将对应的MAC地址写入到MAC帧进行数据传送;如果没有目标主机的IP-MAC映射关系,那么该主机就要广播发送ARP请求分组(目标MAC为FF-FF-FF-FF-FF-FF,所有设备收到这样目标MAC地址的帧,均需要进行解析),当目标主机收到该ARP请求后,会向主机发出相应ARP分组,分组的内容包含了目标主机的IP地址和MAC地址,然后主机就可以将该映射写入自己的ARP高速缓存。然后就可以按照一般规律进行数据发送了。

需要注意的是,ARP高速缓存里面使用老化机制,如果某个映射在一段时间内没有被使用,就会被删除掉。

ARP欺骗

既然知道了ARP的原理,那么攻击手段也自然很容易理解了。目前使用的攻击手段主要有两种,一种是对路由器表的ARP表进行欺骗,伪装自己是局域网内的某个主机,不停地发送虚假的ARP应答欺骗路由;一种是对局域网内主机进行网关欺骗,伪装自己是路由器,发送虚假的路由ARP应答欺骗主机。

ARP攻击是怎样做的

具体的代码我就不上传了,简单来说,只需要知道被攻击的设备的 MAC 地址和 IP 地址,然后将假的 MAC 地址和假的目标 IP 地址一直作为 ARP 应答分组发送给被攻击的设备。被攻击设备往往可以收到难辨真假的 ARP 应答。这样被攻击的设备就无法获取正确的 IP-MAC 地址映射,导致数据封装 MAC 帧时发生错误,通讯故障。

ARP 攻击,直接利用了网络协议的漏洞。
这里写图片描述

被攻击的设备无法分辨真正的目标主机,发生故障。无法根据IP地址追溯到目的主机。
这里写图片描述

ARP攻击防范

方法一: IP地址与MAC地址的静态绑定

ARP攻击防范其实也有很简单的办法。攻击利用了IP-MAC通讯地址转换的协议漏洞,那要防范攻击,干脆直接不让其进行协议转换就行了。

但是,这种方法有很明显的缺点:

  1. 需要维护相应的转换表;
  2. 在工业环境里,路由可以设置静态绑定,但是,不少工业设备并没有网关静态绑定的选项!这样,只能保证路由器不被欺骗,底下设备的安全性无法保障,网络依然有很大的风险!攻击者可以轻易地在局域网内部对子网设备发起攻击。

方法二:路由主动发送正确的ARP信息

这种方法只能维护ARP欺骗引起的掉线问题,不能解决实际问题。因为恶意的欺诈病毒,会不停发送假的ARP应答。真假应答鱼龙混杂,主机并没有办法分辨。

方法三:准入控制

以往的局域网协议中,只要设备填写了局域网内IP地址,就可以直接接入局域网,访问内网设备,不受路由控制。在相关路由上做准入控制,就需要接入子网的设备提供用户名与密码,得到权限,才能访问局域网。这是对以往协议很好的补充。

方法四:变更网络结构

当然啦,工业通讯还有很多方法的啦。实际上,工厂内PLC间的交互信号,一般不建议通过路由器做交换,因为经过路由的话,很可能被路由器上面的设备截获数据。PLC间的通讯可以通过专门供PLC之间直接通讯的设备,例如:西门子的PN/PN耦合器。不影响正常生产的数据,例如产量数据等,可以通过单独的网络通信模块经过路由器往上层管理系统传送。

1 0
原创粉丝点击