电力智能终端数据采集无线通信安全研究

2021-01-10 08:22王伟福韩力卢晓雄
网络空间安全 2020年12期
关键词:中间人电表基站

王伟福,韩力,卢晓雄

(国网浙江省电力有限公司杭州供电公司,浙江杭州310016)

1 引言

国家电网承载着千千万万家庭、各行各业电力输送供应的重任,安全稳定的电网是人们生活、社会生产、国家发展的基础保障。为了积极响应贯彻国家“没有网络安全就没有国家安全”的网络安全号召,国网浙江省电力有限公司杭州供电公司积极开展市区采集终端信道加密传输的安全性专项监测和研究,排除电网运营在信息化方面存在的安全隐患,为电力在信息化建设、运营上保驾护航。

本文针对市区电网终端数据在采集传输过程中的安全性问题,研究能否将智能终端采集的电力数据安全、完整、稳定地传回数据采集系统,在数据的传输过程中能否抵御监听、篡改、破坏等网络攻击行为,并证实远程自动抄表智能终端将数据传输到电力信息采集系统的无线传输过程中存在信息安全风险。

开展相关研究内容并取得的成果:

(1)开展杭州市区电力采集终端数据传输安全性验证并形成报告;

(2)开展杭州市区电力采集终端与用电信息采集系统平台联动安全性验证并形成报告;

(3)开展杭州市区电力采集终端数据无线网络传输的安全性研究和探讨并形成报告。

2 电力数据采集系统

研究电力终端数据采集无线通信安全,了解电力终端数据采集系统的网络架构、数据采集流程、数据采集方式方法是必备条件。

电力数据采集系统主要由智能电表、采集模块、终端采集器、集中器、信息采集系统组成。

智能电表作为电力计量单位主要负责用户用电量的计量。

采集模块作为智能电表的一个终端硬件采集通讯功能模块,集成在智能电表上面,负责采集智能电表的数据,然后通过电力线的载波或者RS-485通讯接口将采集到的数据传输给采集终端。

采集器的位置处于电表和集中器之间,即“电表-采集器-集中器”,承上启下负责双向数据交互,向下通过RS-485或者电力线连接能电表采集电表的数据,向上通过RS-485接口、载波或者短距离无线,将采集到的数据传输给集中器。

集中器作为集中抄表系统中的关键设备,能够通过下行信道自动抄收,存储各种具有载波通信功能的智能仪表、采集终端或采集模块以及各类载波通信终端的电量数据,并能采集外部485表数据,其下行信道可以是低压电力线载波及RS-485串行通信通道。同时,能通过上行信道与主站或手持设备进行数据交换,其上行信道采用公用通讯网,支持GPRS、CDMA 等通信方式,并且采用模块化设计,可通过更换通信模块直接改变通信方式。

信息采集系统集中化管理由各个集中器采集传输过来的采集信息,对接电力营销系统,为基础的数据提供数据支撑。

3 智能电表终端数据采集网络架构

通常终端信息采集网络架构分为二层架构和三层架构,具体如图1所示。

图 1 智能电表终端数据采集网络架构

由于现实应用场景复杂,无法统一使用一种方式实现信息采集,不同的应用场景需要采用相应的采集方案。但是,无论数据采集实现的哪一种网络架构,最终采集到的数据都需要通过集中器,或者数据采集终端通过GPRS,或者4G LTE无线通信模块,将数据发送给电力信息采集系统保存。

二层架构:智能电表上面的采集模块将采集到的数据通过RS-485或者电力线载波传输给集中器,然后直接由集中器通过自带的GPRS或者4G LTE模块将数据发送给电力信息采集系统。这是最为常见的架构模式。

三层架构:集中器下发数据采集指令给采集器,采集器通过RS-485或者电力线载波,采集智能电表数据,将采集到的数据通过RS-485、电力线载波或者短距离无线传输给集中器,然后由集中器通过自带的GPRS或者4G LTE模块,将数据发送给电力信息采集系统。

4 GSM MITM中间人嗅探劫持攻击

4.1 中间人攻击

中间人(Man-in-the-middle attack,MITM)一般在正常的客户端和服务端通信之间,利用各种手段进入一个具有双重身份的攻击者,这个攻击者的身份就是中间人。对于客户端,攻击者伪装成为正常的服务器;对于服务器,攻击者伪装成正常的客户端,将正常的客户端和服务器通信的流量劫持,然后转发,客户端和服务器整个过程的通信数据都经过中间人,所以中间人可以查看并修改客户端和服务器的通信流量。

GPRS中间人嗅探劫持攻击只是中间人攻击的一个应用场景,中间人在各个通信领域都有应用。中间人在攻击期间获得的信息,可用于多种目的,例如身份信息盗取、敏感信息获取、信息资料篡改等,如图2所示。

图2 中间人攻击图解

4.2 伪基站

伪基站就是假基站,是伪装成运营商合法基站的非法通信设备。它利用通信网络的一些技术漏洞,劫持正常用户的手机通讯,骗取用户信息,强行发送广告、诈骗等信息,嗅探和劫持正常用户的通信流量,以此达到非法目的,伪基站原型如图3所示。

图3 伪基站原型

4.3 GSM伪基站原理

由于全球移动通信系统(Global System for Mobile Communications,GSM)通信网络设计的缺陷,GSM网络是单向验证,即基站验证手机;手机不验证基站,而且盲目相信基站广播的信息。

手机(MS)在开机时会优先驻留(Camping)SIM卡允许的运营商网络里的信号最强的基站,因此伪基站信号强是有意义的,但是用户并不会经常开关机,所以即使信号不是最强也影响不大。

比开关机更经常发生的是位置更新(Location Update),伪基站主要靠Location Update流程来吸引MS驻留。

伪基站工作时通常伪装成相邻基站列表里的在当前位置信号最弱的基站以减少同频干扰,但是LAC(Location Area Code)会设置成 跟正常网络不冲突的数字范围,还会改变Cell Reselection参数。

MS在Location Update时,伪基站会发出身份认证请求(Identity Request)给MS, 要求MS提交IMSI,国际移动用户识别码捕获器(Stingray/IMSI Catcher)还会再次发出 Identity Request,要求MS提交IMEI。

为了少惊动目标,目的达到后,伪基站记录该IMSI,然后尽可能快地把该MS弹回(Reject)原网络。这会在MS再次提交 Location Updating Request时完成。为了能尽快地让MS再次提交Location Updating Request,伪基站有两个办法,一是频繁改变 LAC,二是广播更短的位置更新周期,比如把T3212设为1分钟。

4.4 GSM MITM攻击原理

即在运营商基站和目标手机之间插入一台伪基站和一部攻击手机,诱导目标手机附着到伪基站,然后攻击手机以目标手机身份在运营商网络注册,使得目标手机的所有进出通信都经过伪基站和攻击手机中转,以此能够拦截、修改、仿冒各种通信内容。

4.5 GSM MITM攻击流程

(1)取得目标的手机号码(MSISDN);

(2)通过HLR Lookup查得目标的IMSI;

(3)通过Paging/HLR Lookup/社工确定目标所在的蜂窝小区(Cell ID);

(4)肉身到目标附近,50m~300m;

(5)打开伪基站,吸引周围手机前来附着,Reject除目标IMSI外的所有手机;

(6)目标手机附着后,启动攻击手机进行身份劫持;

(7)拦截目标手机的短信和流量。

5 GPRS 通信中间人攻击试验

通用分组无线服务技术(General Packet Radio Service,GPRS)是GSM移动电话用户可用的一种移动数据业务,属于第二代移动通信中的数据传输技术,服务由国内的运营商提供。如果攻击者想要进行GPRS中间人攻击,就必须劫持手机终端与运营商基站之间的通信流量,再将流量进行转发。如何才能在手机终端和运营商基站之间,伪装成一个具有双重身份的中间人劫持手机终端和运营商基站之间的通信流量?攻击者会采用技术手段,自己搭建一套和运营商无线通信网络一样的通信网络,俗称伪基站。

5.1 试验需要的硬件和软件

硬件:

(1)BladeRF〔带天线和电缆(USB 3)连接到PC〕;

(2)带SIM卡功能的智能电表或II型集中器;

(3)SIM卡;

(4)笔记本电脑。

软件:

(1)OpenBTS或者(YateBTS);

(2)SipauthServ;

(3)Smqueue (可选—如果你想发短信);

(4)Asterisk (可选—如果你想打电话);

(5)Ubuntu 12.04.5 LTS (Precise Pangolin)。

5.2 配置网络环境及设备入网

使用以上的硬件和软件,搭建好运行环境,开启设备,运行软件,设置网络参数,复制和运营商网络一样的参数配置,就能模拟和运营相同的网络环境,设备开机就能自动接入我们搭建的网络,实现让设备自动联网。

图4 使用BladeRF搭建测试平台

5.2.1 启动OpenBTS和组件

构建安装软硬件之后,就可以启动OpenBTS了。为此,需要按以下顺序执行以下命令(需要使用root权限在命令行窗口中执行):

● ./OpenBTS(启动OpenBTS)

openbts@strcpy.info:~$ sudo su

root@strcpy.info:/home/openbts# cd OpenBTS-Nuand-bladeRF/OpenBTS-v5.0/openbts/apps

root@strcpy.info:/home/openbts/OpenBTSNuand-bladeRF/OpenBTS-v5.0/openbts/apps# ./OpenBTS

● ./smqueue(执行Smqueue,启用短信服务)

openbts@strcpy.info:~$ sudo su

root@strcpy.info:/home/openbts# cd OpenBTS-Nuand-bladeRF/OpenBTS-v5.0/smqueue/smqueue

root@strcpy.info:/home/openbts/OpenBTSNuand-bladeRF/OpenBTS-v5.0/smqueue/smqueue# ./smqueue

ALERT 29938:29938 2018-11-30T16:22:07.0 smqueue.cpp:2798:main:

smqueue (re)starting

smqueue logs to syslogd facility LOCAL7, so there's not much to see here

● ./sipauthserve(执行Sipauthserve,启用鉴权服务)

openbts@strcpy.info:~$ sudo su

root@strcpy.info:/home/openbts# cd OpenBTS-Nuand-bladeRF/OpenBTS-v5.0/subscriberRegistry/apps

root@strcpy.info:/home/openbts/OpenBTS-Nuand-bladeRF/OpenBTS-v5.0/subscriberRegistry/apps# ./sipauthserve

ALERT 29948:29948 2018-11-30T16:22:19.5 sipauthserve.cpp:328:main: ./sipauthserve (re)starting

● ./asterisk(配置asterisk)

openbts@strcpy.info:~$ sudo su

root@strcpy.info:/home/openbts# asterisk-vvv

● ./OpenBTSCLI(启动OpenBTS终端控制台)

openbts@strcpy.info:~$ sudo su

root@strcpy.info:/home/openbts# cd OpenBTS-Nuand-bladeRF/OpenBTS-v5.0/openbts/apps

root@strcpy.info:/home/openbts/OpenBTSNuand-bladeRF/OpenBTS-v5.0/openbts/apps# ./OpenBTSCLI

OpenBTS Command Line Interface (CLI)utility

Copyright 2012, 2013, 2014 Range Networks,Inc.

Licensed under GPLv2.

Includes libreadline, GPLv2.

Connecting to 127.0.0.1:49300...

Remote Interface Ready.

Type:

"help" to see commands,

"version" for version information,

"notices" for licensing information,

"quit" to exit console interface.

OpenBTS>。

图5 运行OpenBTS

5.2.2 查看GSM基站信息

通过手机查看运营商基站频点信息,可以将搭建的伪基站配置成和运营商网络一致的网络,也可以对当前网络已知的频点进行监听。

当手机连接到GSM基站时,可以通过某些方法找出基站信息和ARFCN。对于2G中的Android或者iPhone手机,可以在拨号键盘中键入以下命令:

Android:*#*#4636#*#* or *#0011#

iPhone(all):*3001#12345#*dial

以iPhone手机为例,查看GSM基站详情,记录下基站的网络参数,接下来在配置我们模拟的运营商网络环境的时候会用到。以下是网络配置关键的参数以及名词解释:

MCC:Mobile Country Code,移动国家代码(中国为460);

MNC:Mobile Network Code,移动网络号码(中国移动为0,中国联通为1,中国电信为2);

LAC:Location Area Code,位置区域码;

CID:Cell Identity,基站编号。

图6 查看基站编号及信道信息

图7 查看基站区域位置信息

5.2.3 配置OpenBTS参数

使用OpenBTS命令行界面(CLI)实用程序开始配置BTS。设置GSM网络的参数和运营商基站网络配置相同(//后面的注释是解释说明参数的含义)。

(1)设置GSM网络参数

OpenBTS> config GSM.Radio.Band 900 //设置移动网络频率

OpenBTS> config GSM.Radio.C0 51 //设置基站编号

OpenBTS> config GSM.Radio.ARFCNs 1//设置基站信道

OpenBTS> config GSM.Identity.MCC 001//设置移动网络国家编码

OpenBTS> config GSM.Identity.MNC 01 //设置移动网络运营商编码

OpenBTS> config GSM.Identity.CI 10

//设置基站编号

OpenBTS> config GSM.Identity.LAC 1000//设置基站区域位置编码

OpenBTS> config GSM.Radio.PowerManager.MaxAttenDB 35 //发射的最大功率

OpenBTS>config GSM.Radio.PowerManager.MinAttenDB 35 //发射的最小功率

(2)配置允许所有设备注册到该网络

OpenBTS> config Control.LUR.OpenRegistration。*

//允许所有设备注册到该网络

(3)设置网络监听

启用GSM和GPRS网络之后,启用以下选项,可以通过GSMTAP捕获 L1 / L2接口中的GSM(信令)和GPRS(信令和流量)。

OpenBTS> config Control.GSMTAP.GSM 1

OpenBTS> config Control.GSMTAP.GPRS 1

(4)设置GPRS上网功能

首先,配置IPTABLES,开启数据转发和网络地址转换。

注意:将eth0网络接口替换为连接到Internet的环境网络接口。

openbts@strcpy.info:~ $ sudo su

root@strcpy.info:/home/ openbts #sysctl -w net.ipv4.ip_forward = 1

root@strcpy.info:/home/openbt

#iptables -t nat -A POSTROUTING -o eth0-j MASQUERADE

(5)设置GPRS参数

OpenBTS> config GPRS.Enable 1

//开启GPRS上网功能

OpenBTS> config GGSN.Firewall.Enable 0//关闭防火墙

OpenBTS> config GGSN.MS.IP.Base 192.168.1.20 //设置GGSN网关

OpenBTS> config GGSN.MS.IP.MaxCount 5//设置最大连接数(用户数)

5.2.4 设备入网

配置好以上GSM的参数设置之后,搭建的测试网络就完全是模拟了运营商真实网络。插入SIM卡的设备开机即可自动注册接入搭建的GSM网络。

使用如下命令在OpenBTSCLI命令窗口中查看注册到网络上的设备:

OpenBTS> tmsis //查看注册到该网络的设备。

图8 设备成功连接到测试平台

5.3 篡改通信协议数据

一旦设备成功接入搭建的中间人测试平台,就可以对经过的流量进行任意操作,例如修改数据内容和代理转发。实验以篡改终端发送到服务端的电能数据包为例:首先,找到要攻击的目标数据包,为此应对截获的协议报文进行解析和筛选,依据就是协议数据帧格式的控制码和数据标识;然后,替换掉帧格式里的数据部分,需要注意的是,修改数据后,数据帧后面的校验码也要做相应的修改,否则服务端收到不正确的校验码会直接丢弃掉数据帧。这里可以对接收的数据包进行加工处理,最后转发到服务端,篡改电表电能数据包示意图,如图9所示。

5.4 流量嗅探与分析

篡改完数据以后,使用Wireshark抓包分析。实施中间人攻击后,数据流经过中间人的篡改,再转发到数据的采集终端。终端发送的有功总电能数据项的值由原来的33333333变成44444444,意味着电表发往服务端的有功总电能遭受篡改。但是,从返回的数据包结果来看返回的有功电能没有被篡改成功,意味着随意篡改数据帧并没有实际效果,如图10所示。

图9 篡改有功电能数据帧

图10 Wireshark捕获通信数据

5.5 采集终端数据报文解析

通过解读Q/GDW 376.1主站与采集终端通信协议规约,了解了规约的数据格式和编码方式,再通过编写工具对通信数据报文进行解析,得到还原后的明文数据格式,既方便阅读,也可以对数据进行修改,并且成功发送数据包,如图11和图12所示。

图11 数据报文修改

图12 数据报文修改后发送

6 结束语

通过终端数据采集通信中间人攻击试验,总结了终端数据采集通信存在的安全风险。

(1)数据在网络传输层面是不安全的,网络可以被劫持、干扰,接入非法的伪基站网络,数据通信流量存在被嗅探、监听,修改的风险。

(2)数据在终端采集发送到主站的过程中是明文传输的,不法分子如果伪造终端向主站发送伪造的数据,主站无法鉴别数据的真伪,从而通过此方法修改采集的电能数据,达到逃费、窃电的目的。

(3)只有数据在主站到数据采集系统的传输过程中,采用的是对称加密算法进行加密传输。随着攻击技术的提升,如果日后对称加密的密钥一旦泄露,就可以通过数据的加密算法和密钥还原加密的数据,安全措施将不复存在。

通过搭建测试网络环境测试试验,在数据流从电表传输到服务端的过程中,通过中间人攻击的方式拦截流量,对数据包内容进行修改再转发,然后模拟终端向主站直接发送数据,证明智能电表数据在终端采集发送到服务端的网络通信过程中,数据传输是不够安全的。但是,不能依赖网络层面的安全防护,也不能完全将安全寄托于运营商,运营商只提供了一个网络传输通道,管道里面传输的数据还需要靠自身提高安全防护能力。

综上所述,虽然国网在网络安全方面现已经有安全防护技术方案,但仍然还有很大的改进空间。在网络安全防护能力提升方面,从细节入手,防微杜渐,堵住每一个细小的安全缺陷,为电网系统高效、稳定、安全的运行提供坚实的安全保障。

猜你喜欢
中间人电表基站
基于NETMAX的基站网络优化
5G基站辐射对人体有害?
5G基站辐射对人体有害?
5G辐射比4G小
“蹦叭”跳动电表数
法国人抗议智能电表或监控隐私
跟杨绛学做“中间人”
停电那点事儿
MOOC“中间人”:从课堂到网络
如何测电表的量程