一、概述
智能电表作为智能配电网中关键的数据采集设备,不仅负责原始电能数据的收集、计量和传输,还为信息集成、优化分析和信息展示提供了基础支持。相比传统电能表的基本用电量计量功能,智能电表在应对智能电网及新能源需求方面,具备了更为先进的双向多费率计量功能、用户端控制功能、多种数据传输模式的双向数据通信功能,以及防止窃电等多种智能化功能。
早在2014年,安全研究人员Javier Vazquez和Alberto Garcia就发现了西班牙所使用的智能电表存在安全漏洞,该漏洞可以导致电费欺诈甚至进入电力系统导致大面积停电。当时西班牙主要有三大电力公司—Endesa, Iberdrola 和 E.ON,据统计,三家中大约安装有800万存在漏洞的智能电表,该数目占到近30%。中国警方披露的首起物联网黑客案件的主角也是智能电表。2017年的除夕夜,黑客入侵了一批智能电表,导致河南郑州的部分住户遭遇断电。
在复杂的现实环境里,智能电表面临的威胁仍不能小视,基于此,我们将从通信协议、硬件设备、固件分析、漏洞挖掘等多个方向对智能电表进行分析和研究,并与大家分享。鉴于篇幅,本篇仅对智能电表的原理和通信协议进行剖析,梳理攻击面,并进行一些攻击论证。
二、原理分析
2.1 智能电表原理图:
智能电表原理图
智能电表工作时,电压、电流经取样电路分别取样后,送至放大电路缓冲放大,再由计量芯片转换为数字信号,高性能微控制器负责对数据进行分析处理并转化为脉冲输出。由于采用高精度计量芯片,计量芯片自行完成前端高速采样,计量算法稳定,微控制器仅需要管理和控制计量芯片的工作状态。
2.2 硬件拆解
智能电表的市场里厂商云集,我们分析过多款智能电表,其核心结构并没太大变化。
以某款国产单相智能电表为例,进行拆解后布局如下:
拆解—正面
拆解—背面
此外,芯片上的SWD引脚也直接暴露在PCB上,方便我们对MCU进行调试(避免飞线),如图所示:
暴露在外的SWD接口
2.3 物理接口
目前,智能电表使用的通信接口有RS485和HPLC,相比前者HPLC更为流行。
RS-485是一种广泛使用的串行通信标准,其原理是通过平衡差分信号来传输数据,从而在长距离传输和噪声环境中保证数据的完整性。相比于单端通信,RS-485的优点在于其强抗干扰能力和长距离传输能力,通常可以达到1200米的距离。RS-485支持多点通信,允许在一条总线上连接多达32个设备,这使其非常适合于工业自动化、楼宇控制等应用。该标准的电气参数包括差分信号的电压范围在-7V到+12V之间,通常使用的波特率从2400bps到115200bps不等,具体取决于传输距离和环境噪声情况。RS-485的差分信号通过A、B两根线进行传输,这种设计使其在信号传输过程中能够有效抵消共模噪声,从而提高了数据传输的可靠性。与RS-232相比,RS-485具有更高的传输速度和更长的传输距离,更适用于高性能和高可靠性的通信系统。
HPLC是宽带电力载波的简称,由电力载波通信(PLC)进化而来,PLC是一种通过现有电力线传输数据的通信技术,其原理是将高频信号叠加在电力线上,实现数据和电力的共缆传输。PLC的优点在于无需铺设新的通信线路,利用现有的电力基础设施即可实现数据传输,降低了网络建设成本。此外,PLC具有覆盖范围广、穿透力强的特点,适用于复杂环境下的通信需求。PLC的传输速率和稳定性依赖于电力线的质量和环境噪声,通常传输速率在几百kbps到几Mbps之间。HPLC比PLC速率更快,通常采用OFDM调制技术,智能电表常用0.7MHz~3MHz频段。
三、通信协议
该部分内容参考自《多功能电能表通信协议》、《面向对象的数据交换协议》。
3.1 DL/T645-2007
协议为主-从结构的半双工通信方式。主站为手持单元或其它数据终端,从站为多功能电能表。协议为每个多功能电能表提供了相应的地址编码。通信链路的建立与解除均由主站发出的信息帧来控制。每帧由帧起始符、从站地址域、控制码、数据域长度、数据域、帧信息纵向校验码及帧结束符7个域组成。每部分由若干字节组成。
最小传输单元
645协议帧结构
数据帧由帧起始字符、地址域、控制码、数据域长度、数据域、校验码、结束符组成。
控制码由传送方向、应答标志、后续帧标志和功能码构成,格式如下:
645协议数据帧
数据域的数据在发送侧会逐字节加上33H的扰码,接受侧会逐字节减去33H。
信息帧扰码封装
在部分操作中还有密码字段和操作员代码字段。操作员代码对应具体的操作员,表示操作是由哪一位操作员完成。密码字段的开头是密码权限PA,权限从0~9,最高权限是0级,数字越大权限越低。4级是编程权限,2级是清零权限。
校验码是除自身和结束符以外所有字节之和模256。
综上分析,可见包括密码在内的所有数据都相当于明文传输,极易受到中间人攻击。
3.2 DL/T698.45
698协议又叫面向对象的数据交换协议。该协议将物理设备抽象为了若干个逻辑设备,每个逻辑设备由若干个可访问的接口类对象构成,数据交换使用请求——响应、通知——确认的模式。
相较于DL/T645——2007,698协议的帧结构变得更加完善了,校验位新增了一个帧头校验,且两个校验位都扩展到了2字节,地址域的组成也分为了可变字节数的服务器地址SA和1字节的客户机地址CA。
698协议帧结构
在链路层传输APDU(应用层数据单元)或APDU分段时采用了4种分帧类型,起始帧、末位帧、确认帧、中间帧。
分帧类型
由服务器或客户机启动的数据分帧传输过程如下:
数据分帧传输过程1
服务器响应客户机请求的数据分帧传输过程如下:
数据分帧传输过程2
698协议的应用层定义了许多数据类型,APDU的标记规则遵循ASN.1的抽象语法,编码规则遵循A-XDR,限于篇幅限制,这里不再赘述,详细可以参考该协议的技术文档。
四、面临的威胁
4.1 攻击面梳理
1.密码爆破:常用密码只有3个字节,且多数密码采用纯数字,理论上仅需爆破1e6次。但大部分电表在收到了一定次数校验失败或密码认证失败的指令后都会进入挂起状态,直到次日0点才会解除挂起。
2.固件提取:智能电表通常采用低功耗芯片,例如复旦微、stm32、瑞萨等,如果未对固件代码进行保护(芯片读保护、代码加密等),攻击者可以很轻易提取固件并逆向分析。即使芯片开启了读保护,还可通过一些漏洞、侧信道等方式进行破解。
3.协议漏洞:智能电表在解析协议的时候可能存在漏洞,如果构造特定协议数据发送给电表,可能导致电表复位重启,干扰电表正常运行。
4.中间人攻击:RS-485接口和HPLC载波模块都暴露在外部,且协议流量几乎以明文传输,非常容易被近源攻击,攻击者利用中间人实现数据篡改和流量嗅探,干扰主站指令下发。
4.2 RS485攻击
首先是对RS-485接口的中间人攻击。
RS-485通讯中间人攻击环境模拟
攻击者将电脑接入集中器到电表之间的RS-485线路上,可以嗅探和篡改所有协议流量。
为了方便接下来的演示,我们分别为645和698协议开发了中间人攻击程序,在攻击电脑上运行。
协议嗅探效果如下:
645协议流量嗅探
在嗅探的基础上,还能对特定协议内容做hook:抓到带有密码的流量时解码并记录、屏蔽跳闸指令并向上游返回正常结果、修改查询电量返回的值等。
645协议密码嗅探1
645协议密码嗅探2
对698协议也是如此,程序运行日志如下:
698协议流量嗅探
所有协议流量都可以嗅探并篡改。
698协议流量篡改
在集中器上下发抄表指令,正常情况得到的回复如下:
查询电能-无篡改
启用中间人程序的篡改功能后:
查询电能-篡改后
4.2 HPLC攻击
支持HPLC的载波模块众多,我们随意挑选了一款用于此次攻击测试。如图所示,右下角的2x2排针为强电排针,用于传输调制后的电力载波信号。左上角的2x6为弱电排针,用于和电表基板进行通信。PCB板上还包括一些MCU和Flash芯片用于处理载波信号。
载波模块拆解
2x6弱电排针里包含有一组UART串口,与智能电表MCU通信并传输电表协议数据。因此可以利用UART串口来完成流量嗅探和中间人攻击,通过万用表和逻辑分析仪,我们也能很轻松找到TX/RX引脚。如果攻击者劫持了串口,就可以实时采集数据,也可以利用中间人方式进行数据篡改或者屏蔽一些指令下发。
最终为了验证攻击的可行性,我们设计出了一块微型嗅探模块,隐藏在载波的外壳里,可以获取集中器下发的协议流量,窃取密码等敏感信息,并且可以借助载波模块自身供电,而无需外部电池,实现常驻运行。
攻击示意图
对于PCB绘制,电阻电容的封装采用了0603,既保证了尺寸大小又兼顾了焊接难度。供电采用载波模块的供电12V,通过稳压电路将电压控制在相应的范围内,程序可通过Type-C自动下载烧录。
原理图
安装后的外观上与之前完全一致,对于攻击者而言这无疑提升了隐蔽性,不易被发现。插上被改装的载波模块后,嗅探模块会自动连接到手机WIFI热点,并转发嗅探数据。
为了方便演示,我们用python开发了一款嗅探工具,用于解析并打印关键数据,如图所示:
HPLC通讯流量嗅探
五、总结
智能电表是深入千家万户的重要基础设备,但是从硬件到协议实现上可能存在薄弱之处,黑客可以通过各种方式进行流量嗅探和中间人攻击,对用电基础设施造成巨大的破坏。在如今的高安全防御体系下,也会存在一定的盲区,尤其是在这个智能设备大为普及的时代,一旦基础设施被攻击,就可能造成严重的后果。事无巨细,我们应当树立安全防范意识,时刻警惕恶意行为,在科技为我们带来便利的同时,也应该确保这些设施不被威胁,从而构建一个安全可靠的智能社会。
(来源:珞安科技投稿)
声明:本文来自工业信息安全产业发展联盟,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。