网络完全触目惊心,专家详解工业物联网安全措施(转)
与此同时除了计算机和服务器以外,越来越多的设备都在依赖互联网作为通信和远程控制中枢。这些新的设备统称就是我们所熟悉的物联网,它们使用的协议与我们传递信息或者进行金融交易的方式相同。现在互联网与之前的区别是不仅仅再只是传递数据,可以控制实体对象的设备以及真实世界(或者说是物质世界)中的加工处理都在借助同一个互联网进行通信。
从计算角度来看组成物联网的嵌入式系统功能变得越来越强大 。尽管如此,与现代电脑或者智能手机相比它们的能力还是有限的。我们需要根据有限的资源做出相应的设计,但是从安全角度看这可能不是最好的。为了向大家说明这一与生俱来的风险,我们将展示怎么向传感器数据流中注入错误数据包。从“黑帽”黑客的角度来看物联网安全的优势和弱点都是什么呢?我们不能够亲自尝试,只能向大家介绍这些事如何发生的。下面开始:
想象有一个假设的嵌入式平台,我们不妨称它为“HEP(Hypothetical Embedded Platform)”。它采用32位处理器核心,大量的模拟和数字I/O管脚,并且集成了Wi-Fi功能。除此之外有完善的API文档,我们可以将设备连接到HEP计算云服务器,上面存储的数据用于后续加工处理。
将嵌入式设备连接到互联网
首先我们要实现HEP与Wi-Fi网络之间的通信,因此我们要提供无线网络的SSID名称和加密秘钥。除此以外我们还需要明确网络服务的服务器地址和端口号(这里我们虚构一个HEP云计算服务平台)。最后我们还需要鉴定谁可以访问HEP云计算服务器。在实际应用中我们一般会为每个嵌入式设备分配唯一的一个ID(这里我们假设为HEP_DEVICE_ID)。与此同时我们也要分配事件名称因为一个嵌入式设备可以具备不同的功能,而且事件名称还可以帮助我们将不同功能情况下日志数据保存到不同的日志文件中,不至于混在一起。
#include<”WiFi.h”>
#include<”TemperatureSensor.h”>
const char * SSID = “mynetwork”;
const char * WPA_KEY = “ABC123”;
const char * HEP_DEVICE_ID = “A7FG390H463”;
const char * EVENT_NAME = “temperatureReading”;
const char * SERVER = "api.hep.com";
uint16_t PORT = 80;
WiFiTCPConnection;
TemperatureSensor tempSensor1
TCPConnection.networkConnect(SSID, WPA_KEY);
向云服务器发送数据
现在HEP嵌入式设备应该已经能够接入到我们的本地无线网络。但是我们还没有进行一些实质性的工作,例如读取传感器的数据并将数据上传到云服务器,为了实现这一功能,下面给出了API函数的使用方法,具体介绍了如何使用POST命令。
InttemperatureReading = tempSensor1.getTemp();
TCPConnection.serverConnect(SERVER, PORT);
String temperatureMessage = "POST /trigger/”+HEP_DEVICE_ID+”/event/”+EVENT_NAME+”?value="+temperatureReading+" HTTP/1.1\r\nHost:api.hep.com\r\nUser-Agent:HEP\r\n\r\n";
TCPConnection.sendMessage(temperatureMessage);
TCPConnection.disconnect();
理想情况下这段代码会一直运行下去,不断更新服务器端的日志数据,服务器会认为我们已经在代码里面实现了安全防护功能(例如无线WiFi WPA2加密机制、唯一的随机生成的数字和字母组成的设备ID以及用户自定义的事件名称),因此服务器认为所有接收到的数据都是嵌入式设备发送过来的。
入侵(仅需要简单的三个步骤)
遗憾的是情况并不是我们想象的那样美好,如果黑客们想入侵我们的HEP温度传感器设备,我们根本不能够阻止他们。攻击的方式需要我们的一些假设,虽然不一定非常相似,但也是大同小异。
1.当一个黑如入侵我们的无线网络后,他就可以借助一些免费的数据包嗅探工具来监测传输过程中的所有数据包信息。
他们的目的是破解WPA2加密秘钥,所以他们会读取数据包中相关信息。只要他们获取到了加密秘钥,他们就可以读取我们无线网络上传输的所有数据包内容。
下一步黑客会收集数据包并判断哪些数据包包含HEP温度相关信息。只要他们获取了HEP设备的IP地址,他们就能够一直收集这些数据包直到他们明白我们发送的POST命令信息格式。或者他们可以直接参考相关API文档,一般在网上都能够找到。
两条最重要的信息是HEP_DEVICE_ID和EVENT_NAME,有了这些信息他们就可以想做什么就做什么,接入任何一个网络,介入命令传输接口并且发送伪造指令,如下面所示:
- curl–X POST https://api.hep.com/.....<insert stuff here>…./temperatureReading?value=500
只要这一行命令,黑客就插入一条错误的传感器数据:500℉,这是注入入侵数据包的基本格式。在我们这个例子中,温度传感器数据会触发什么操作,如果在实际情况中可能真的会造成实际的破坏。比如我们正在使用类似IFTTT.com一样的服务,并且设置相关配置,比如如果温度超过特定值就打开窗户。通过注入伪造的数据包,黑客就可以触发相关操作,甚至通过打开的窗户进入用户房间。
大多数人不知道如何获取入侵操作的具体信息,有些甚至不能访问我们的计算机(尽管智能手机本质上也是32位计算机,运行不同的操作系统等),但是仍然有一些人学习如何入侵然后访问我们的计算机,尽管道德、伦理和尝试提示他们不要这样做。目前全世界大概有七十亿人口,在互联网上有数百万甚至数十亿的未加密设备,很明显可以看出我们设备被入侵的几率很大,不要心存侥幸。
上面这个例子只是冰山一角,我们还面临着很多挑战,让我们的IoT设备保持安全还有很多工作要做。
作者:Michael Parks,产品工程师(PE),“Green Shoe Garage”公司和网站创始人,它是一个位客户定制电子设计的工作室,并且提供技术咨询服务,位于美国马里兰州南部。他创建的S.T.E.A.M视频博科想提高公众对于技术和科学问题的关注。Michael也是马里兰州注册的专业工程师,美国约翰霍普金斯大学系统工程专业硕士学位。
出处:贸泽电子公众号
微信号:mouserelectronics
不用担心那么多 ,这虽然有安全隐患但是并没有到电影上的那么危言耸听,隔行如隔山。说实话我不信懂计算机的人能对通信,嵌入式,各种传感器都能耳熟能详。
似乎很有道理呢