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