互聯網誕生之初并沒有考慮到安全問題,最早它主要是面向研究人員測試一些科學數據。起初假設只有好的人員才能訪問這個系統,最終導致了現在互聯網眾所周知的問題。自從互聯網開始向普通大眾開放以來經歷了數十年的發展,我們已經在安全方面取得了顯著的進展。但是好人與壞人之間的貓捉老鼠游戲仍在繼續。
與此同時除了計算機和服務器以外,越來越多的設備都在依賴互聯網作為通信和遠程控制中樞。這些新的設備統稱就是我們所熟悉的物聯網,它們使用的協議與我們傳遞信息或者進行金融交易的方式相同。現在互聯網與之前的區別是不僅僅再只是傳遞數據,可以控制實體對象的設備以及真實世界(或者說是物質世界)中的加工處理都在借助同一個互聯網進行通信。
從計算角度來看組成物聯網的嵌入式系統功能變得越來越強大。盡管如此,與現代電腦或者智能手機相比它們的能力還是有限的。我們需要根據有限的資源做出相應的設計,但是從安全角度看這可能不是最好的。為了向大家說明這一與生俱來的風險,我們將展示怎么向傳感器數據流中注入錯誤數據包。從“黑帽”黑客的角度來看物聯網安全的優勢和弱點都是什么呢?我們不能夠親自嘗試,只能向大家介紹這些事如何發生的。下面開始:
想象有一個假設的嵌入式平臺,我們不妨稱它為“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/.....…./temperatureReading?value=500
只要這一行命令,黑客就插入一條錯誤的傳感器數據:500℉,這是注入入侵數據包的基本格式。在我們這個例子中,溫度傳感器數據會觸發什么操作,如果在實際情況中可能真的會造成實際的破壞。比如我們正在使用類似IFTTT.com一樣的服務,并且設置相關配置,比如如果溫度超過特定值就打開窗戶。通過注入偽造的數據包,黑客就可以觸發相關操作,甚至通過打開的窗戶進入用戶房間。
大多數人不知道如何獲取入侵操作的具體信息,有些甚至不能訪問我們的計算機(盡管智能手機本質上也是32位計算機,運行不同的操作系統等),但是仍然有一些人學習如何入侵然后訪問我們的計算機,盡管道德、倫理和嘗試提示他們不要這樣做。目前全世界大概有七十億人口,在互聯網上有數百萬甚至數十億的未加密設備,很明顯可以看出我們設備被入侵的幾率很大,不要心存僥幸。
-
嵌入式設備
+關注
關注
0文章
110瀏覽量
16993 -
工業物聯網
+關注
關注
25文章
2384瀏覽量
64717 -
云服務器
+關注
關注
0文章
721瀏覽量
13399
發布評論請先 登錄
相關推薦
評論