一种基于DNP3协议的IFAR攻击检测算法
2022-12-06李彤馨王勇邹春明田英杰周宇昊
李彤馨,王勇,邹春明,田英杰,周宇昊
(1.上海电力大学,计算机科学与技术学院,上海 200120;2.公安部第三研究所,国家网络与信息系统安全产品质量监督检测中心,上海 200031;3.国网上海市电力公司,电力科学研究院,上海 200437;4.华电电力科学研究院有限公司,国家能源分布式能源技术研发(实验)中心,浙江,杭州 310030)
0 引言
工业控制系统一般包含监控和数据采集系统(SCADA),它能控制和监控所有相关的基础设施,如发电厂、供水管道、电力系统等。针对此类系统的网络攻击越来越频繁,会给我们的社会带来不可挽回的损失。在过去,互联网服务提供商在专有网络上运行,与合作网络(即商业网络)和互联网隔离。目前,它们的架构已经发生了变化,并在外部与商业网络和互联网互联。所以现在更像是可以上网的企业局域网。这一变化大大增加了遭受网络攻击的可能性。
分布式网络协议(DNP3)是现代监控和数据采集网络协议之一。DNP3是主设备和从设备之间通过各种通信介质进行通信的双向协议。这是一个相对可靠和有效的协议。为了实现更好的效率,DNP3采用了一种称为增强性能架构(EPA)的网络层模型。EPA[1]有3个层次:物理层、数据链路层和应用层。为了提高可靠性,DNP3在其应用层中包含了传输功能。
由于DNP3在设计阶段并未考虑到安全机制,因此DNP3很容易遭受到攻击。目前常见的攻击检测方法主要包括防火墙、入侵检测系统、蜜罐技术等。其中,防火墙主要采取端口扫描技术,具有实时处理的优势;入侵检测系统通过先进的入侵检测技术来保障系统的安全;蜜罐技术通过不同的蜜罐对攻击数据进行捕获。以上3种方法存在误报率较高的问题,因此无法适应工业系统中的安全需求。为此,本文采用仿真的方式,搭建DNP3通信环境,配置防火墙,利用机器学习方法进行异常检测,并证明该方案的有效性。
1 相关研究
为了解决工业以太网DNP3广播协议认证的安全问题,LU等[2]分析了可信DNP3协议的攻击向量和安全需求。他们首先在控制网络中采用可信平台,对DNP3客户端和服务器的身份和安全状态进行认证,防止节点敏感信息被泄露;其次,针对广播模式下信息安全认证机制缺失的问题,提出了一种基于哈希链方法的可信DNP3-BAE广播加密协议,该新方案可以对源代码进行加密,而无需对现有平台进行重大升级,但该方法只是加强了访问机制,而没有对攻击者进行限制。YIN等[3]提出了一种创新的基于入侵检测系统的网络安全解决方案,以检测监控和数据采集系统中DNP3协议的恶意活动,通过一种基于DNP3漏洞评估和不同层次攻击模型的新方法,利用机器学习从解析的DNP3协议中选择特征,并添加包括恶意软件样本在内的数据。此外,他们还开发了一种具有分类和可视化过程的网络攻击算法,最终实验表明,该网络安全解决方案能够在基于物联网的智能电网通信环境中实时监测攻击。RODOFILE等[4]整理了已知攻击,确定并组合了现有的攻击范围,扩展并“填补了”攻击范围中的空白,从而提出了一个完整的网络攻击检测框架。该框架能感知针对整个基于监控和数据采集系统的关键基础设施的攻击,但这一方法不具有代表性。因此,本文基于考虑数据的代表性问题,采用孤立森林来计算攻击数据的“孤立”程度,越被“孤立”的样本点则代表性越高,从而能有效分类出攻击数据。
2 DNP3协议及其安全性分析
2.1 DNP3协议结构及其功能介绍
DNP3可通过TCP/UDP进行封装,以便在以太网上运行,支持DNP3协议的从设备默认会开放TCP的20000端口用于通信。(图1)DNP3协议在设计之初没有考虑到安全、认证等因素,以致后来出现了Secure DNP3(主要加强了认证)。DNP3在主站会话上需要约定目的地址、源地址,而从设备收到后需要验证目的地址,再进行处理,如果目的地址不相同则会根据在协议栈实现的处理来决定是否不响应和关闭连接,或者返回异常功能报文等。
图1 DNP3模型[3]
DNP3是一种开放标准,可以使用多种拓扑进行部署,包括点对点(一个主站点和一个主站点或从属站点),多点拓扑(一个或多个主站点和多个主站点)或使用系统布局的分层布局树状结构,一个外站既可以充当DNP3主站的从站,也可以充当其他站的主站。如图1所示,DNP3消息可以映射到OSI模型的上层,并且基础的三层,包括数据链路层、传输层和应用层。
2.2 DNP3协议的安全分析
利用仿真系统搭建DNP3协议的通信过程,其中主站的IP地址为192.168.79.141,从站的IP地址为192.168.79.1。如图2所示,首先扫描主站得到目的IP后将其添加到目标1(TARGET1)上。
图2 添加主站为目标
从图3可以看到,主机192.168.79.1与主机192.168.79.141正在端口20000上进行基于TCP的通信,即DNP3通信协议。因此可以进行下一步的攻击。
图3 扫描通信过程
图4为使用中间人攻击后的结果。由图4可以看出,APR中毒攻击主要将被攻击方分为2组:组1为192.169.79.141,即DNP3通信主站;组2为192.168.79.1,即DNP3通信从站。中间人攻击即通过各种技术手段将受入侵者控制的1台计算机虚拟放置在网络连接中的2台通信计算机之间,这台计算机就称为“中间人”。在进行中间人攻击期间,接受的包有3540个,丢失的包有19个,丢失率达到0.54%。
图4 攻击结果
由此可见,DNP3通信过程容易遭受到攻击,常见的攻击方式归纳如下。
(1) 中间人攻击:这种类型的攻击可以归类为网络攻击,是构成对DNP3节点或网络发起的大多数其他攻击的基础。这种攻击通过各种技术手段,将入侵者控制的1台计算机放置在网络连接中的2台通信计算机之间,这台计算机就称为“中间人”[5]。
(2) DNP3数据包修改和注入攻击:为了操纵或修改DNP3数据包,攻击者使用多种方法。其中包括先劫持正在进行的TCP连接(这依赖于中间人攻击的成功),然后拦截要修改的数据包。这个被截取的包在被修改后,重新计算得出循环冗余校验码。在循环冗余校验重新计算之后,使用包注入工具,便能将修改后的包重新注入通信介质。
(3) DNP3冷重启消息攻击:当分站收到DNP3冷重启请求命令,并且确认数据包来自主机时,分站在通信序列完成后执行完全重启。分站还将在重启前向主机发送一个回复,告知分站可用的时间。该攻击还会向分站发送一个名为冷重启的命令,该命令会导致分站完全重启。
(4) 以DNP3应用层为目标的分布式拒绝服务攻击:拒绝服务(DoS)攻击是一种试图使机器或网络资源对其预期用户不可用的攻击。例如,临时或无限期中断或暂停连接到网络服务。这种攻击是因为DNP3是通过TCP/IP传输的。使用这种攻击方法,攻击者会向受害者的节点发送大量数据包,试图耗尽受害者的资源。
3 攻击检测算法IFAR的设计
为了增强基于DNP3通信协议过程中数据的机密性、完整性、可用性与可控性,本文提出基于此系统的攻击检测算法,为工控系统提供了更安全可信的环境。
3.1 数据捕获
数据的捕获主要通过Pfsense与Snort入侵检测系统实现,其中Pfsense主要对连接数进行设置,成为该系统的第一道防线。当攻击者发起攻击时,攻击数据就会流经Pfsense防火墙,不符合所设置的规则则会被捕获。Pfsense所捕获的攻击行为数据为
Xi={x1,x2,…,xn}
(1)
Snort入侵检测系统则主要是对Pfsense中未检测出来的攻击进行检测,Snort捕获的数据可以表示为
YI=R-Xi={y1,y2,…,yn}
(2)
Snort检测方法与Pfsense的类似,将捕获数据与Snort规则库的规则进行对比,若数据符合Snort的检测规则,便被认定为攻击行为,系统则会发出预警。
通过上述过程,实现对攻击的检测及报警。
3.2 IFAR算法
单纯使用防火墙结合Snort入侵检测系统无法高效地检测出攻击数据,因此,本文提出IFAR算法,即孤立森林结合关联规则算法(iForest-Association Rules),对数据进行分析。首先,采用孤立森林算法[6]对数据进行分类,将其分为正常数据与异常数据;然后,使用关联规则算法,对未知攻击的攻击特征进行提取,生成其关联规则,同时将生成的规则添加到Snort中,对其进行更新,以此来实现对攻击的检测。具体数据分析实现的过程如下。
iForest算法[6]是一种无监督算法,适用于连续数据,即不需要有标记的样本,只需要特征是连续的。在iForest算法中,不再是描述正常的样本点,而是要孤立异常点。该算法主要从训练数据集中随机选取一个特征,在该特征的最大值和最小值之间选取一个切分点,小于分割点的数据进入左侧分支,大于或等于分割点的数据进入右侧分支;不断重复以上过程后,直到只剩一个样本或相同样本或达到树的深度限制,然后通过路径长度来表示一个样本点被“孤立”的程度。算法步骤见表1。
表1 iForest算法
该算法的流程如图5所示。
图5 孤立森林数据分析流程图
采用孤立森林算法对数据进行划分,由于实验数据量较小,故使用IGBE等[5]使用的DNP3数据,其中的数据分布如表2所示。
表2 DNP3数据集异常数据分布
接着采用关联规则算法[7]对未知攻击进行特征提取,并生成其强关联规则,从而提升系统的攻击检测能力。同时,所获得的关联规则可用于补充现有的规则库。关联规则算法的数据分析过程[7]如图6所示。
图6 关联规则数据分析过程
在得到上述的强规则后,结合Snort规则对其进行转换,将得到的强规则添加到入侵检测系统中,由此来实现对攻击数据的检测。
4 实验分析
4.1 实验环境
本文首先使用DNP3通信协议分析及仿真软件来进行通信仿真。主站搭建在配置了Windows 7系统的主机上,使用Outstation DNP3 Simulator部分作为DNP3通信的主站,从站搭建在配置了Windows 10系统的主机上,使用DMP3 Simulator作为通信从站,通过对主、从站的配置,来实现DNP3通信。攻击者主机搭载的是Kali系统,对所搭建的通信环境发起攻击,如中间人攻击等。利用Pfsense对整个环境进行监控,并使用Snort进行攻击检测,从而完整实现基于DNP3的工控系统安全配置方案。实验环境的网络拓扑结构,如图7所示。
图7 实验环境的网络拓扑结构
4.2 Pfsense攻击防御
本文使用Ettercap来进行中间人攻击。Ettercap是针对中级攻击者的综合套件。它具有实时连接嗅探、动态内容过滤以及许多其他攻击方式。它支持许多协议的主动和被动解剖,并包括许多用于网络和主机分析的功能。
当攻击者对该网络通信主机进行攻击时,攻击行为会流经防火墙,防火墙会对数据进行捕获,而防火墙检测到的数据则会流入入侵检测系统,将其与设定好的规则进行比较。若与规则匹配,则入侵检测系统会发出预警。
Pfsense[8]是一个开源防火墙。它安装在计算机上,可以作为防火墙和路由器,稳定且可靠。它的优势在于可以通过Web页面进行配置,升级和管理的方式简单且易操作。Pfsense有多种功能,可以被部署为边界防火墙、路由器、无线接入点、DHCP服务器、DNS服务器和VPN端点等。
Snort[9]是Martin Roesch创建的开源网络入侵检测系统(NIDS)。Snort是一种数据包嗅探器,可实时监视网络流量,并仔细检查每个数据包以检测危险的有效负载或可疑的异常情况。Snort基于libpcap(用于库数据包捕获),该工具广泛用于TCP/IP流量嗅探器和分析器。通过协议分析以及内容搜索和匹配,Snort可以检测出攻击的方式,包括拒绝服务攻击、缓冲区溢出攻击、CGI攻击、隐身端口扫描和SMB探针。当检测到可疑行为时,Snort会将实时警报发送到syslog,发出单独的“警报”文件或弹出窗口。
Pfsense防火墙提供了数据流量查看的功能,可以查看监控过程中不同接口下的流量变化。如图8所示,在系统遭受到中间人攻击的期间,流量变化明显,可以看出,对目标进行攻击会导致系统资源或服务的大量消耗,从而导致系统反应迟钝或崩溃。对于实际系统而言,遭受到类似的攻击则有可能导致机器停摆,从而造成大量人力财力的损失。
(a)
4.3 实验结果分析
由于DNP3通信协议是基于TCP/IP协议的,数据通过以太网进行传输,因此大多数对以太网的攻击都能对其造成影响,如中间人攻击、DoS攻击等。本文利用Pfsense结合Snort插件,搭建安全防护环境,对DNP3通信过程进行保护,该防护方案可以有效地防范各种攻击,并能将预警信息进行告警,提高了试用DNP3通信协议进行通信的工控系统的安全性。
完成这一攻击过程后,访问 Pfsense 中的 Snort主页,查看 alert 界面,便可以查看到此攻击的告警信息。如图9所示,在受到攻击后,会显示“有人异常连接DNP3设备”的字样,且显示了攻击事件、使用的协议、源 IP、目标 IP 及受攻击端口的信息。对于被攻击检测到的攻击者,可以使用Blocked功能将其进行阻止,从而减少进一步的损失。
图9 告警信息
为了提高防御性,算法对数据进行分析,孤立森林算法处理数据后,得到异常和非异常数据。使用关联规则算法对异常数据进行分析,获得强规则,并将其进行修改,以扩充Snort入侵检测系统。
这一攻击检测算法的效率使用误报率来衡量。在处理数据集过程中,对阈值进行限制,并对照式(3)计算检测准确率:
(3)
所计算出来的检测率如表2所示。当阈值取0.095时,所得到的准确率较高,而当阈值为0.075时,准确率较低。
表2 数据处理的检测准确率
5 总结
本文讨论了作为智能电网的一部分,在监控和数据采集系统中运行DNP3的各种威胁和漏洞,搭建了基于DNP3通信协议的通信系统,并对系统遭受的中间人攻击。架设了Pfsense防火墙,将Snort作为插件,实现攻击检测,在对数据的处理上使用了孤立森林算法,用来检测异常数据,再结合关联规则算法生成异常数据的强规则,从而对Snort入侵检测系统进行规则扩充,加强了工业控制系统的安全。下一步研究会将这一部署方案结合在数字孪生系统上,用来提升数字孪生系统的安全性。