IoT安全系列-如何發現攻擊面并進行測試
IoT是物聯網的代名詞,然而隨著這些智能設備的安全性得到越來越多人的關注。要想對物聯網設備安全性進行評估,需要先了解它所涉及的各種“組件”,以確定哪部分“組件”可能發生什么樣的安全問題。
IoT架構基礎設施可分為三大類
1.嵌入式設備
2.軟件和應用程序
3.無線電通信
設備
設備是任何物聯網架構的關鍵,這里的設備指的是架構中所涉及的任何硬件設備(網關、傳感器、遙控器等)。
在多數IoT智能環境中,設備通常包括網關和操作設備,網關作為其他設備的控制中心,而操作設備是執行實際動作的設備(如按鍵遙控器)或監控傳感器(煙霧探測器、水浸傳感器、紅外探測器等)。
設備漏洞指的是嵌入式設備中常見的漏洞,比如:串口root權限訪問,閃存中提取固件等…
軟件和云組件
物聯網設備中的軟件和云組件包括以下元素:
1.設備固件
2.WEB應用
3.用于控制、配置和監控設備的移動應用程序
IoT架構中每個“組件”部分都有特定的漏洞,后面將詳細介紹固件部分以及基于IoT的WEB和移動應用漏洞。
無線電通信
無線電通信是IoT架構安全的重要方面,基于無線電通信,簡單說任何通信都是發生于設備與設備或應用程序與設備之間。IoT中常用的通信協議有:WiFi、BLE、ZigBee、ZWave、6LowPAN和蜂窩數據等。
對于本套IoT安全系列文章,我們將看看IoT使用哪些主要通信方式和針對它們的具體攻擊方法。
如何發現物聯網設備的攻擊面
到目前為止在日常的工作當中我已經完成了大量的IoT測試業務,依據個人經驗,有效的物聯網設備的安全測試,你需要對于給定設備進行綜合評估并發現所有的攻擊面。評估IoT攻擊面的技術相比于評估WEB應用程序、移動應用程序并沒有改變很多,多數仍是以WEB攻擊面為主,比如市面上常見的網關+路由器的組合,然而這里將涉及很多IoT架構中的“組件”攻擊面析。
常見IoT架構
遵循以下步驟可以更快的發現IoT的攻擊面:
1.首先了解整個物聯網設備架構,通過各種途徑或在廠商文檔信息中發現更多的相關細節。
2.對指定設備的每個架構組件建立一個體系結構圖,如果是兩個“組件”之間的通信,用導向線畫出并指定正在使用的通信協議等詳細信息,如果應用程序是使用API與云端發送和接收數據,那就在體系結構圖中標記它并記錄使用的是哪個API。
3.當完整的體系結構圖準備好時就開始像攻擊者一樣去思考,如果你必須攻擊某個特定“組件”的話你需要確定使用什么樣的技術并提取哪些輔助攻擊的相關信息,在表格中列出IoT架構中的組件和所需做的測試。
下表是IoT架構中一個“組件”的攻擊面分析:
上述分析步驟完成,我們就可以執行實際的測試攻擊,既然我們已經有了明確的想法接下來看看我們可以使用什么樣的攻擊技術。
1.IoT網關
基于硬件的攻擊向量-串口通信,固件導出等…..獲得訪問固件的權限并提取存儲在其中的敏感信息。
嗅探發送到云端的通信數據。
重放和偽造通信數據并發送到云端。
2.設備
基于硬件的攻擊向量-串口通信,固件導出等…..獲得訪問固件的權限并提取存儲在其中的敏感信息。
設備和網關之間的無線電通信分析攻擊如:Zigbee, zWave, 6LoWPAN。
BLE(藍牙低功耗技術)攻擊。
3.移動應用程序
嗅探發送和接收的數據。
重放和偽造通信數據并發送到云端或設備。
移動應用程序逆向分析及敏感數據提取。
4.云端/WEB程序
常見WEB漏洞等…
簡單案例分析
下面內容記錄了對某款物聯網設備的攻擊面及安全分析,包括網關、設備、云端、移動客戶端之間的通信安全,云端API接口邏輯、網關與設備綁定和解綁等關鍵操作的安全情況。
通信安全
網關-云端-移動客戶端:
在套用上面的攻擊面分析模型后可以發現待測設備的機密性得到了良好的保護。聯合報警網關、設備、云端系統、移動客戶端四者之間的通信,除了日志統計信息(對于與 logs.***.com
服務器的通信)外全部是加密通信,TCP 鏈接使用 TLS1.2 通信,使用 HTTPS 傳輸,UDP 數據使用 AES-128-ECB 加密后傳輸。
完整性通用得到了良好的保護。HmacSHA256,HmacSHA1,HmacMd5 的方式保護,Hmac 的 Key 來自于用戶登錄之后服務端下發的 token,聯合報警設備的舊系統固件將數據本地明文存儲在 xml 文件中,新版本中本地數據是加密存儲的。雖然保證了機密性和完整性但仍存在安全問題,云端接口無法抵御重放攻擊。
- POST /api/*****/version/check HTTP/1.1
- Host: api.******.com
api.******.com無防重放機制,通過api.******.version.check獲取當前APP版本,通過更改客戶端版本到較低版本,再重放該請求,可以返回需要升級的Response包。
- POST /api/*****/login HTTP/1.1
- Host: api.*****.com
api.*****.login通過傳輸用戶名和加密的密碼和短信驗證碼結合才可登錄,該接口可以重放,通過分析業務安全防護邏輯可發現雖然云端有IP登錄次數限制,但在次數限制內更換代理IP可以持續爆破用戶名和密碼。
- POST /api/*****/getit HTTP/1.1
- Host: api.*****.com
api.*****.getit仍可以重放,客戶端退出賬戶,云端未將客戶端sessionid做過期處理,導致云端還可以接受該sessionid并且返回相應的返回值。
類似這樣的接口還很多在此不一一列舉。
客戶端與服務端的通信安全:
客戶端逆向分析通信的系統和認證方式:
身份認證
移動客戶端訪問云端系統使用不同的認證方式,有 token 和 session 校驗這兩種。在IoT架構設計層面,云端為了驗證每次移動客戶端的請求都要求附帶token,而每次移動客戶端向云端請求token將增加云端服務的壓力,故該聯合網關報警產品允許單次批量獲取token存儲本地供請求時調用。默認每次申請10個token,將count值改為100甚至更多仍可獲取相應數量的token。
交互安全
如果你接觸過IoT設備,你會知道聯合報警網關可搭配:煙霧探測器、水浸傳感器、紅外探測器等使用。實際上傳感器與網關設備的綁定、解綁也存在安全問題。
射頻信號重放
遙控、傳感器與網關通信的頻率為868MHZ,如下圖所示:
抓取到的報警信號如下圖所示:
休眠模式波形如下:
靜默模式:
使用HackRF抓取傳感器向聯合報警網關發送的告警信號并重放,發現聯合報警網關沒有防重放機制,將抓取到的信號重放警報聲馬上響起。