APP下载

一种针对智能电表DL/T645—2007协议的中间人攻击

2017-10-10潘玺廷

上海电力大学学报 2017年4期
关键词:中间人通信协议电表

陈 武, 潘玺廷,2, 向 上, 王 勇, 刘 蔚

(1.上海电力学院 计算机科学与技术学院, 上海 200090; 2.上海斗象信息科技有限公司 科技能力中心, 上海 201203; 3.上海云剑信息技术有限公司 科学技术部, 上海 200433)

一种针对智能电表DL/T645—2007协议的中间人攻击

陈 武1, 潘玺廷1,2, 向 上1, 王 勇1, 刘 蔚3

(1.上海电力学院 计算机科学与技术学院, 上海 200090; 2.上海斗象信息科技有限公司 科技能力中心, 上海 201203; 3.上海云剑信息技术有限公司 科学技术部, 上海 200433)

利用协议的攻击实验分析和改进协议的安全性,确保智能电表通信安全.首先在熟悉通信协议的基础上,挖掘其存在的漏洞;然后实施arp欺骗,伪造成中间人嗅探电表与采集终端的通信流量,达到篡改电能数据的目的.实验表明,协议的脆弱性会带来中间人篡改数据的风险,最终威胁智能电表的信息安全.

智能电表; 中间人攻击; 协议; 篡改

继2015年乌克兰电力系统遭受黑客攻击导致大面积停电后,国内外针对电网信息安全的关注持续增加.随着智能电网在我国的实施,智能电表正逐步取代传统的电子式电能表.智能电表作为用户和电网通信的桥梁,承担着电网采集终端与用户数据交互的重要任务,而这一任务的实现依赖于通信协议的支持[1].国内智能电表大部分采用DL/T 645—2007协议,该协议在设计之初只考虑了功能的完整性和传输的可靠性,并未考虑其安全性.因此,研究DL/T 645—2007协议的安全漏洞对于发现智能电表存在的安全风险具有重要意义,应采取适当的安全措施,提高通信协议的安全等级,为我国智能电网的建设构筑一道坚强的壁垒.

1 DL/T 645—2007协议的基本原理

该协议为主—从结构的半双工通信方式.手持单元或其他数据终端为主站,多功能电能表为从站.每个多功能电能表均有各自的地址编码.通信链路的建立和解除均由主站发出的信息帧来控制.每帧由帧起始符、从站地址域、控制码、数据域长度、数据域、帧信息纵向校验码及帧结束符7个域组成,每部分由若干字节组成.

1.1 字节格式

字节传输序列如图1所示.

每字节含8位二进制码,传输时加上一个起始位(0)、一个偶校验位和一个停止位(1),共11位.D0是字节的最低有效位,D7是字节的最高有效位.先传低位,后传高位.

图1 字节传输序列

1.2 信息帧

帧是传送信息的基本单位,DL/T 645—2007协议定义了一个数据链路层的协议数据单元,所有信息帧均工作在数据链路层上,因此可以实现同一协议在不同物理介质上的传输.其帧格式如表1所示.

表1 数据帧格式

常用的控制码及其功能如图2所示.一帧信息从帧起始符开始,其值为68H=01101000B.地址域由6个字节构成,每字节 2 位 BCD 码,地址长度可达12位十进制数.每块表具有惟一的通信地址,且与物理层信道无关.当使用的地址码长度不足6B时,高位用“0”补足6B.通信地址999999999999H为广播地址,只针对特殊命令有效,如广播校时、广播冻结等.广播命令不要求从站应答.数据域包括数据标识、密码、操作者代码、数据、帧序号等,其结构随控制码的功能而改变.传输时发送方按字节进行加33H处理,接收方按字节进行减33H处理.

校验码为从第一个帧起始符开始到校验码之前的所有各字节的模256的和,即各字节二进制算术和,不计超过 256 的溢出值.最后,结束符16H=00010110B标识一帧信息的结束.

图2 控制码格式

1.3 传输方式

每次通信都是由主站向按信息帧地址域选择的从站发出请求命令帧开始,被请求的从站接收到命令后作出响应.在主站发送数据帧之前会先发送4个字节的FEH,以唤醒接收方.从站收到命令帧后的响应延时Td在20~500 ms之间,字节之间的停顿时间Tb不能超过500 ms.

传输过程中的差错控制有两种,一种是字节的偶校验,另一种是数据帧的纵向信息累加和校验.接收方无论检测到偶校验出错或纵向信息累加和校验出错,均放弃该信息帧,不予响应.

2 DL/T 645—2007协议的安全性分析

2.1 缺乏身份认证和权限区分

当智能电表连接网络时,通常是使用协议转换器将DL/T 645—2007协议转换成TCP/IP协议,数据传输的路径从原来的RS485通道变成RJ45通道,然后就可以连通到网络和终端设备上.在网络连接方面,它是封装在TCP协议之下,利用TCP进行数据传输,只要知道目标IP地址,就可以通过502端口发起和建立通信连接[2].如果应用层数据单元携带的控制码满足DL/T 645—2007协议的格式和规范,就可以建立起一个合法的DL/T 645会话,并且这种通信对任何连接到电表设备上的用户都是可行的.因此,攻击者很容易利用网络攻击手段发动中间人攻击.例如,攻击者通过ARP或DNS欺骗技术,将通信双方的数据流量全都引到攻击者的机器上,这时攻击者就可以监听甚至修改数据了,而这种改变对于会话双方来说是完全透明的.

以常见的DNS欺骗为例,目标将其DNS请求发送到攻击者处,然后攻击者伪造DNS响应,将正确的IP地址替换为其他IP地址,之后用户就登陆了这个攻击者指定的IP,而攻击者早就在这个IP中安排好了一个伪造的网站.如果攻击者想实施更彻底的破坏,可以在这个网站中植入恶意代码来传播病毒,从而制造更严重的攻击.

2.2 未采取加密通信

DL/T645—2007协议在网络上采用明文进行数据传输,攻击者能轻松实施嗅探,通过抓包软件就可以截获并解析出里面的数据.一旦网络上存在中间人攻击,通信双方的数据都将经过攻击者的机器进行转发,这时攻击者可以很轻易地拦截数据信息,并对数据内容做篡改再传给对方,以便达到其攻击的目的[3].

在网络活动中,如果通信数据被中间人窃取,会造成用户重要隐私的泄露,包括账户、密码等敏感信息.在智能电网中,如果电表与控制中心的数据指令被中间人获取并遭到修改,可能导致窃电事故的发生,更为严重的可能会引起电表的误动作和更大的安全风险.

如果协议改进后,可以将机密信息加密后再传输,这样即使被中间人截取也难以破解.例如,采用TLS加密通信,只要会话初始化完成,想要进行中间人攻击是非常困难的,除非在加密会话的初始化阶段就进行攻击[4].

2.3 校验方式简单

所谓数据校验,就是为保证数据的完整性,用一种指定算法对原始数据计算出一个校验值,接收方用同样的算法计算一次校验值,如果两个校验值相等,就说明数据是完整的.

DL/T 645—2007协议传输数据的差错控制只有两种校验方式:一种是传输数据的每一个字节的偶校验位(P);另一种就是在数据链路层上传输一帧信息的校验码(CS).这两种方式都比较简单,对于攻击者来说,只要伪造正确的校验码就可以制造虚假的数据通过协议进行传输,从而对电网实施攻击,威胁电网的安全.因此,协议固有的差错控制方式很容易成为攻击的弱点.

如果想让攻击者难以篡改和伪造数据校验码,可以添加其他更复杂和安全的校验方式,比如数字水印技术[5].

3 DL/T 645—2007协议的攻击实验

3.1 实验环境

本实验以单相费控智能电表为例,电表下面接有用电负载,电表可以对用电数据进行实时采集和监控,采集到的数据通过RS485接口线传送至协议转换器的相应端口,转换成TCP/IP后再经过RJ45网线传送到路由器上,路由器将智能电表的数据转发到采集终端(终端计算机)上.

电表和终端计算机(以下简称终端)通过串口进行通信,电表支持虚拟串口,终端配备虚拟串口和设备管理工具,一键式搜索局域网设备,手动可添加Internet上的设备,方便配置和修改串口参数.终端上装有电表通信软件,可以通过串口与电表进行通信,例如,读取电表的总电能和对电表数据进行清零等.

整个实验环境如图3所示.

另外,本实验采用Wireshark对协议数据进行抓包和分析.为保证终端与智能电表可以正常通信,需要根据协议的要求将虚拟串口的参数配置为一致.

表2列出了设备中关于网络和串口的具体配置信息.

图3 实验环境

网络设备IP模式IP地址端 口工作模式子网掩码网 关目的IP串口设置目的端口波特率数据位校验位停止位流 控静态192.168.0.10513800TCP服务器255.255.255.0192.168.0.1192.168.0.103419624008偶校验1无

3.2 实验过程

3.2.1 配置攻击者Iptables

Iptables可用于设置、维护和检查Linux内核的IP包过滤规则.本实验根据数据转发需求配置Iptables的命令如下:

iptables--flush

iptables-t nat--flush

iptables--zero

iptables-A FORWARD--in-interface wlan0-j ACCEPT

Iptables-t nat--append POSTROUTING--out-interface wlan0-j MASQUERADE

iptables-t nat-A PRESROUTING-p tcp--dport 80--jump DNAT--to 192.168.0.114

iptables-t nat-APRESROUTING-p tcp--dport 4196--jump DNAT--to 192.168.0.114

3.2.2 ARP欺骗伪造中间人

所谓中间人攻击就是指攻击者与通讯的两端分别建立独立的联系,并交换其所收到的数据,使通讯的两端认为他们正在通过一个私密的连接与对方直接对话,但事实上整个会话都被攻击者完全控制[6].例如,当你在咖啡馆上网检查你的账户信息时,也许黑客就拦截了你电脑和WiFi之间的通信,监视着你的一举一动.这种方法就是中间人攻击,而这种攻击还仅仅是黑客用于网络攻击的众多方法之一.

由于TCP协议和645协议都没有认证方法对通讯双方的身份进行验证,这为攻击者将自己伪装成每一个参与会话的终端提供了有利条件.实现中间人攻击的方式有很多种,比如DNS欺骗、会话劫持和代理服务器等.随着计算机通信技术的不断发展,交换机代替集线器后,简单的嗅探攻击已经不能成功,必须先进行ARP欺骗才能成功.

ARP欺骗也称为ARP缓存中毒和ARP欺骗攻击,这是在内网的中间人攻击.ARP欺骗分为两种:一种是对路由器arp表的欺骗;另一种是对内网PC网关的欺骗.无论哪一种欺骗,其原理都是一样的,都是通过向被欺骗主机发送ARP的reply包来实现的[7].图4为局域网arp双向欺骗伪装成网关的原理图.

图4 ARP双向欺骗原理

有许多工具能够用来实施ARP欺骗,比如Dsniff,ettercap等,但攻击工具可以实现的功能固定并且有局限性.本实验网络环境配置如下:攻击者IP为192.168.0.114,物理地址(MAC)为10-0b-a9-b3-9a-34;被欺骗主机(目标主机)IP为192.168.0.103;路由(网关)IP为192.168.0.2,物理地址(MAC)为8c-a6-df-98-7d-73.

选择Python语言编写的部分函数如下.

def restore_target(gateway_ip,gateway_mac,target_ip,target_mac):

print ′[*] Restoring targets…′

send(ARP(op=2,psrc=gateway_ip,pdst=target_ip,hwdst=′ff:ff:ff:ff:ff:ff′, hwsrc=gateway_mac),count=5)

send(ARP(op=2,psrc=target_ip,pdst=gateway_ip,hwdst="ff:ff:ff:ff:ff:ff", hwsrc=target_mac),count=5)

os.kill(os.getpid(),signal.SIGINT)

运行欺骗程序之后,目标主机的arp缓存列表变化情况如图5所示.

图5 欺骗前后目标主机arp缓存列表

从目标主机缓存列表的变化可以看出,目标主机arp缓存列表里网关的MAC地址由攻击之前本身真实的物理地址变成了攻击者所在主机的MAC地址.也就是说,攻击者成功地欺骗了目标主机和智能电表,在两者中间充当了第三人,攻击者在目标主机与电表之间形成伪造的网关,主站与从站之间所有的通信数据流量都将被攻击者所窃听.

3.2.3 篡改通信协议数据

一旦攻击者掌握了主从站的通信数据,就可以利用各种手段对数据包为所欲为,例如修改数据内容和代理转发.本实验以篡改从站应答主站的电能数据包为例,首先,找到要攻击的目标数据包,为此应对截获的协议报文进行解析和筛选,依据就是协议数据帧格式的控制码和数据标识;然后,替换掉帧格式里的数据部分.需要注意的是,修改数据后,数据帧后面的校验码也要做相应的修改,否则主站收到不正确的校验码会直接丢弃掉数据帧.

代理主机通过sock的输入和输出功能进行数据包的接收和转发.在这里我们可以对接收的数据包进行加工处理,然后转发到目的主机.图6是代理主机篡改电表的电能(当前有功总电能)数据包的示意图.

3.2.4 抓包分析与验证

程序运行完成后,最后一步就是对数据进行抓包分析.调用wireshark在攻击者主机的Wlan0口上对转发的数据包进行截获,并将抓包结果保存在results.pcap文件里.实验开始前,在终端机上用wireshark捕获从站发往主站的原始电能数据包,为了更快地找到需要的协议数据包,使用下面的过滤器:ip.srt_host==192.168.0.105 && ip_proto==TCP,结果如图7所示.

由图7可以看出,实施中间人攻击后,数据流经过中间人的篡改,再转发到数据的采集终端.从站应答主站的有功总电能数据项的值由原来的33333333变为44444444,意味着电表发往终端的有功总电能遭受篡改,所有数据项的数据包均可在wireshark生成的results.pcap文件中找到.在捕获结果里未发现数据包的内容被替换,这说明电表返回的有功电能没有被篡改成功.

图6 篡改有功电能数据帧

图7 攻击前捕获的数据报文

3.3 实验结果

从攻击实验前后抓取的数据包内容来看,在数据流从电表传输到终端的过程中,通过arp欺骗将数据包引入攻击者的主机,并利用Python代码对数据包内容实施修改,虽然最终未能将电能数据包按照我们的意图篡改掉,但这种攻击行为在电网的用电信息采集终端是很难被发现的.一旦攻击者找到突破点,这种中间人攻击成功的可能性很大,其造成的经济损失也是非常巨大的[8].

645协议本身具有局限性,如缺乏身份认证、明文传输数据、检验方式简单等,本实验利用了其安全性漏洞才成功地模拟中间人对协议数据包进行攻击.实际运用中可能存在黑客对电表进行攻击、篡改数据甚至偷电等违法行为,本文旨在将DL/T 645协议存在的安全威胁暴露出来,为维护国家电力工业的信息安全提供借鉴[9-10].

4 结 语

智能电表作为我国智能电网建设的基础元件和核心设备,其通信协议的安全性也越来越受到各行各业以及政府部门的关注.因此,如何保证智能电表通信数据的信息安全以及用户的隐私显得十分重要.本文通过分析电力行业标准DL/T 645协议存在的安全威胁,探讨了一种针对通信协议脆弱性进行中间人攻击的方法,实验虽然尚未成功,但不代表这种通信协议不能被攻击.从协议暴露出的安全漏洞来看,将来的研究工作可以继续关注智能电表DL/T 645通信协议的安全性,针对已知的漏洞完成中间人攻击的篡改实验,甚至可以尝试中间人的其他类型攻击.智能电表的协议种类繁多,攻击对象也可以转移到其他电表协议上,逐步完善智能电表通信协议的攻击方法和改进措施,使智能电表传输数据更加安全和可靠,为智能电网的健康稳定发展保驾护航.

[1] 中国电力科学研究院.DL/T645—2007 多功能电能表通讯规约[S].北京:中国电力企业联合会标准化中心,2007.

[2] 张明远,徐人恒,张秋月,等.智能电能表数据通讯安全性分析[J].电测与仪表,2014(23):24-27.

[3] 赵兵,翟峰,李涛永,等.适用于智能电表双向互动系统的安全通信协议[J].电力系统自动化,2016(17):93-98.

[4] 王媛媛.智能电表通信测试系统分析与研究[J].现代工业经济和信息化,2016(9):98-99.

[5] 杨正和.智能电网用户侧信息安全问题研究[D].南京:东南大学,2016.

[6] 单高林.用电信息采集系统与数据采集技术[D].济南:山东大学,2016.

[7] 李敏,王刚,石磊,等.智能电网信息安全风险分析[J].华北电力技术,2017(1):62-65.

[8] 李志强,高大兵,苏盛,等.基于大数据的智能电表入侵检测方法[J].电力科学与技术学报,2016:121-126.

[9] 路保辉.AMI通信系统及其数据安全策略研究[D].北京:华北电力大学,2014.

[10] 曹聪聪,蒋亚平,郭浩.SSL协议安全性能分析及改进措施研究[J].湖北民族学院学报(自然科学版),2016(4):446-450.

(编辑 白林雪)

AnIntermediateAttackAgainstSmartMeterDL/T645—2007Protocol

CHENWu1,PANXiting1,2,XIANGShang1,WANGYong1,LIUWei3

(1.SchoolofComputerScienceandTechnology,ShanghaiUniversityofElectricPower,Shanghai200090,China;2.TechnologyCapabilityCenter,ShanghaiTopphantInformationTechnologyCo.,Ltd.,Shanghai201203,China;3.MinistryofScienceandTechnology,ShanghaiCloudSwordInformationTechnologyCo.,Ltd.,Shanghai200433,China)

Protocol attack experiments are used to analyze and improve the protocol security so as to ensure the communication safety of smart meters.Firstly,on the basis of understanding the communication protocol,its loopholes are tapped,and then ARP spoofing is implemented to induce the communication flow between the sniffer and the acquisition terminal,and to achieve the purpose of tampering with electric energy data.

smart-meter; intermediate; protocol; tamper

10.3969/j.issn.1006-4729.2017.04.014

2017-03-09

陈武(1993-),男,在读硕士,湖南郴州人.主要研究方向为智能电表安全.E-mail:1933819849@qq.com.

上海科学技术委员会地方能力建设项目(15110500700);上海市浦江人才计划资助项目(16PJ1433100);上海市自然科学基金(16ZR1436300);上海市科学技术委员会中小企业创新基金(1501H1B7700,1601H1E2600).

TM933.4;TP309

A

1006-4729(2017)04-0378-07

猜你喜欢

中间人通信协议电表
巧判电表测量对象
电表“对”与“错”归类巧掌握
夹在妻子和弟弟中间,怎样当好中间人?
基于Z-Stack通信协议栈的红外地温采集电路设计
无线网络的中间人攻击研究
《天盛律令》对买卖借典“中间人”的规制
基于DMX512通信协议的多路转发器设计与研究
基于NS-3的PLC多频通信协议仿真平台设计与实现
RSSP-I、RSSP-Ⅱ及SAHARA三种安全通信协议实现技术简介
一种电表模拟软件的应用研究