胡 姣 李岳洪 吳 根 周鋒華
(威凱檢測技術(shù)有限公司 廣州 510663)
全球家電行業(yè)正在向高端化、智能化、場景化方向快速發(fā)展,物聯(lián)網(wǎng)場景引發(fā)新的發(fā)展機(jī)遇,助力品質(zhì)生活服務(wù)規(guī)模擴(kuò)大。
智能家電如果與公共數(shù)據(jù)網(wǎng)絡(luò)連接,那么可能被不法分子或產(chǎn)品漏洞所利用。如果存在安全漏洞,那么其可能變身為“間諜”,成為不法分子控制偷窺的工具。圍繞智能家電相關(guān)的網(wǎng)絡(luò)安全問題不容忽視。
本文從智能家電的遠(yuǎn)程通信系統(tǒng)模型,系統(tǒng)設(shè)備端、控制軟件、Web云服務(wù)端等可能存在的網(wǎng)絡(luò)與信息安全隱患風(fēng)險,以及對應(yīng)風(fēng)險測評方法和防護(hù)措施進(jìn)行分析和探討。
智能家電種類繁多,絕大部分智能家電遠(yuǎn)程通信系統(tǒng)模型的組成可以概括為三部分:設(shè)備端、控制軟件端和web云服務(wù),各組成之間由通信協(xié)議進(jìn)行數(shù)據(jù)傳輸,系統(tǒng)模型如圖1所示。
圖1 智能家電遠(yuǎn)程通信系統(tǒng)模型
智能家電設(shè)備端通常由硬件電路和軟件系統(tǒng)組成,存在的常見風(fēng)險有:
1)暴露硬件調(diào)試接口,設(shè)備在制造設(shè)計(jì)時,為了測試方便,往往會在PCB板上開啟如JTAG、UART等調(diào)試接口。
2)設(shè)備端開啟遠(yuǎn)程服務(wù)調(diào)試端口,基于一些業(yè)務(wù)需求,設(shè)備端開啟SSH、Telnet等遠(yuǎn)程登錄服務(wù),使用默認(rèn)口令或者常用易破解的口令“admin” 等。
3)固件安全升級時,固件下載傳輸通道未采用https安全加密傳輸,升級包未進(jìn)行數(shù)字簽名驗(yàn)證,且未有固件升級失敗防回退能力。
為了使智能家電操作便捷,大部分智能家電都是通過APP移動應(yīng)用來實(shí)現(xiàn)某些功能的控制和管理。移動應(yīng)用存在的常見風(fēng)險有:
1)逆向反編譯,用戶獲取APK文件后,通過反編譯工具對APK包開展逆向分析進(jìn)而實(shí)現(xiàn)敏感信息數(shù)據(jù)篡改,同時對安裝軟件包未進(jìn)行真實(shí)性校驗(yàn)。
2)安全傳輸,在與設(shè)備終端傳輸時,敏感數(shù)據(jù)使用明文傳輸未進(jìn)行加密,導(dǎo)致被攻擊者截獲。
在IoT產(chǎn)品中傳統(tǒng)的Web安全問題依然存在,大多都會造成大量用戶、設(shè)備信息泄露等嚴(yán)重后果。而智能家電采用Web應(yīng)用與Web服務(wù)實(shí)現(xiàn)對設(shè)備的遠(yuǎn)程訪問并對設(shè)備進(jìn)行管理。最常見的漏洞包括:跨站腳本(XSS)、會話劫持、敏感信息泄露、SQL注入漏洞、目錄遍歷漏洞、默認(rèn)口令漏洞等。
2.1.1 硬件接口測試
查看設(shè)備的硬件電路PCB并分析通信接口,通常PCB板的通信接口包括UART
JTAG、SPI和I2C等。UART是嵌入式設(shè)備中常用的通信協(xié)議之一,采用波特率表示數(shù)據(jù)的傳輸速率,通信過程中雙方對波特率進(jìn)行協(xié)商,以確保接受方能夠以正確的格式接收數(shù)據(jù)。在UART接口包括數(shù)據(jù)傳輸Tx引腳、數(shù)據(jù)接收Rx引腳。通信中數(shù)據(jù)從發(fā)送UART的Tx引腳流到接收UART的Rx引腳。此外用到另外兩個引腳,一個是接地(GND),一個用于供電(Vcc)。拆解設(shè)備,取出PCB并識別板子上的芯片。通過借助于顯微鏡查看芯片的標(biāo)簽信息,獲取芯片的型號,運(yùn)用網(wǎng)絡(luò)搜索引擎搜索對應(yīng)的芯片數(shù)據(jù)書冊,查看芯片對應(yīng)的引腳數(shù)據(jù)。
通過PCB板電路圖分析和芯片引腳分析,借助于萬用表工具來識別設(shè)備的UART接口引腳 Tx、Rx、GND和Vcc。
如果設(shè)備開啟了UART調(diào)試接口,那么也就意味著提供了shell訪問權(quán)限,用戶就可以利用該接口獲取Shell權(quán)限,最終獲的Root Shell。對于硬件接口漏洞,如果存在調(diào)試接口,建議使用身份鑒別機(jī)制或者去除掉設(shè)備上的調(diào)試接口,防止設(shè)備被Root。
2.1.2 遠(yuǎn)程端口掃描
端口掃描,是一種網(wǎng)絡(luò)掃描的測試,可以理解為是一種嗅探。其目的是為了發(fā)現(xiàn)目標(biāo)設(shè)備服務(wù)器或工作站的IP地址,是否存在打開的端口,并利用分配的服務(wù)中的漏洞進(jìn)行攻擊,從而識別目標(biāo)網(wǎng)絡(luò)的脆弱性。端口號的范圍從0到65535,常用的端口比如用于文件傳輸?shù)?1 端口,用于遠(yuǎn)程登錄的23端口,用于簡單郵件傳輸?shù)?5端口,用于瀏覽網(wǎng)頁服務(wù)的80端口等等。
登錄無線路由器后臺查看設(shè)備的IP地址或通過移動應(yīng)用APP查看設(shè)備連網(wǎng)的IP等途徑獲取設(shè)備的IP地址。使用Nmap對設(shè)備的IP進(jìn)行端口掃描,查看是否存在開放的端口如圖2所示。
圖2 Nmap端口掃描
端口是設(shè)備與外界通信的接口,開啟的端口越多,那么面臨的威脅越大。針對設(shè)備商遵循最小安裝的原則,關(guān)閉與業(yè)務(wù)無關(guān)的服務(wù)或端口。如應(yīng)業(yè)務(wù)需要必須開啟,應(yīng)支持身份鑒別機(jī)制且設(shè)置口令為復(fù)雜度口令,禁止使用弱口令。
2.1.3 固件更新
固件是控制IoT設(shè)備的核心,基本所有的嵌入式IoT設(shè)備都包含固件。通俗地說,固件是嵌入在硬件中的軟件。固件更新如同軟件更新一樣其目的可以是修復(fù)BUG、優(yōu)化功能以及增加新的功能等。
固件更新的方式有很多種,如:在線的OTA、離線燒錄等。不安全的固件升級,將會給用戶帶來很多安全隱患,如個人信息泄露、身份信息識別、毀癱設(shè)備和網(wǎng)絡(luò)欺詐攻擊等。
通常制作商會將升級的固件包存儲到遠(yuǎn)程 “服務(wù)器”的固定路徑中,采用HTTP協(xié)議和私有分包協(xié)議兩種傳輸方式,當(dāng)設(shè)備連接網(wǎng)路后,依據(jù)當(dāng)前固件更新判定標(biāo)志對設(shè)備固件進(jìn)行升級。設(shè)備通過手機(jī)應(yīng)用APP使服務(wù)端與終端之間的互聯(lián)互通,APP與設(shè)備配對連接后,一種方式APP將本地下載的固件包通過網(wǎng)絡(luò)形式傳輸給終端設(shè)備;另一種方式將存儲在本地的WIFI密碼和賬號以及升級IP及端口發(fā)送給終端設(shè)備,設(shè)備從遠(yuǎn)程服務(wù)端遠(yuǎn)程獲取升級包,進(jìn)行固件版本更新。
獲取固件的方式有很多。如果制造商提供可下載的固件網(wǎng)站,可以依據(jù)對應(yīng)設(shè)備的型號從官網(wǎng)下載。但是大部分制造商并不支持固件下載,我們就需要通過其他方式獲取固件。當(dāng)設(shè)備固件在升級流程時,使用Wireshark等流量轉(zhuǎn)發(fā)工具對升級的流量包進(jìn)行監(jiān)測,從中提取固件的下載地址。比較容易捕獲的升級固件的傳輸方式包括HTTP、UDP、FTP等,但是如果固件升級采用TLSV1.2加密的安全傳輸(如圖3所示),那么我們很難獲取到固件的下載地址。則需要嘗試使用另一種方式即通過拆解設(shè)備并找到設(shè)備中閃存芯片,嘗試通過UART或者JTAG等接口直接轉(zhuǎn)存固件。
圖3 TLSV1.2加密傳輸包
固件升級,除了需要增加安全的傳輸外,還需要對下載的固件包進(jìn)行完整性校驗(yàn)和來源可靠性驗(yàn)證, 即固件簽名驗(yàn)證,只有校驗(yàn)通過的固件包才允許升級。使用010 Editor工具打開固件包(如圖4所示),搜索如域名或IP等常量字符串,在對應(yīng)的hex值中任意修改一位并保存生成新固件,使用已經(jīng)修改固件包代替原有更新的固件包進(jìn)行升級,監(jiān)控升級完成后,設(shè)備啟動狀態(tài),如果設(shè)備啟動成功說明未對固件包進(jìn)行簽名校驗(yàn),反之則進(jìn)行了簽名驗(yàn)證。 當(dāng)固件升級失敗時,不損壞設(shè)備功能,且設(shè)備仍然可正常工作。
圖4 010 Editor搜索IP
固件安全問題,固件應(yīng)具備自身防護(hù)的能力,如固件代碼混淆機(jī)制、安全加固防篡改。固件下載傳輸通道采用了https安全加密傳輸,防止中間人劫持或者嗅探;對升級包進(jìn)行數(shù)字簽名驗(yàn)證,且不允許固件升級到比當(dāng)前版本更低的版本。
2.2.1 APK包反編譯
IoT設(shè)備通過移動應(yīng)用來提高用戶體驗(yàn)和實(shí)現(xiàn)某些操作功能,比如遠(yuǎn)程操控、設(shè)備管理、權(quán)限管理等。移動應(yīng)用APP操作系統(tǒng)一般分為IOS和Android系統(tǒng)。我們通過應(yīng)用商城下載IoT設(shè)備對應(yīng)APP的APK包。對獲取的Android系統(tǒng)的APK包,使用Apktools 工具對APK包進(jìn)行反編譯(如圖5所示),修改APK包的后綴名改為.zip或者.rar并解壓獲取classes.dex等文件,使用dex2jar,將可運(yùn)行文件classes.dex反編譯為jar源碼文件,借助JD-GUI工具,打開生成的jar文件查看java資源文件,再對java文件進(jìn)行代碼逆向分析,查看是否存在硬編碼的敏感信息、不安全的數(shù)據(jù)存儲與傳輸?shù)劝踩┒?,同時修改包的數(shù)據(jù)并進(jìn)行二次編譯后打包、安裝,校驗(yàn)APP是否有簽名校驗(yàn)保護(hù)。
除了人工的靜態(tài)代碼分析外,我們還可以采用移動開源測試工具M(jìn)obSF進(jìn)行自動化靜態(tài)分析,只需要上傳APK包到平臺,測試包會自動執(zhí)行掃描,它可以對源代碼進(jìn)行審計(jì)分析,其靜態(tài)分析的工作原理同上述手動反編譯方式一樣,解析APK包中的文件AndroidManifest.xml得到應(yīng)用程序的各類相關(guān)信息,然后對APK進(jìn)行反編譯得到j(luò)ava代碼,而利用正則表達(dá)式對java源碼進(jìn)行匹配找出關(guān)鍵詞來提取敏感數(shù)據(jù)信息包括:賬號、URL以及使用到的方法等。
對于APK包防反編譯可以通過對關(guān)鍵代碼進(jìn)行混淆,使用簡短的字母替代原有的類名和屬性名(如圖6所示),使攻擊者難以閱讀和理解,增加對源代碼理解難度,并且對于敏感信息不應(yīng)存在硬編碼,以防止攻擊者通過提取反編譯文件獲取敏感信息,從而提高安全級別。同時要求在安裝軟件時,應(yīng)對安裝包進(jìn)行真實(shí)性校驗(yàn)。
圖6 使用簡短的字母替代原有的類名進(jìn)行代碼混淆
2.2.2 APP通信安全防重放
用戶通過移動應(yīng)用APP來操作設(shè)備的業(yè)務(wù)功能,那么重要業(yè)務(wù)數(shù)據(jù)和重要個人信息數(shù)據(jù)在傳輸中是否安全呢?可以借助Fiddler 、Burp Suite等代理工具抓取查看通信是否采用SSL/TLS 安全協(xié)議、通信中關(guān)鍵信息數(shù)據(jù)是否加密處理以及對數(shù)據(jù)包是否具有防重復(fù)能力。
使用Burp Suite,開啟proxy代理模式。攔截設(shè)備控制APP的數(shù)據(jù)信息并截獲所有通信數(shù)據(jù)包分析報文。通過修改報文內(nèi)容,進(jìn)行數(shù)據(jù)包篡改和重放攻擊測試,觀察設(shè)備是否會做出響應(yīng)。
通過在設(shè)備APP端、機(jī)器人端和云端對關(guān)鍵信息和指令數(shù)據(jù)包使用https加密傳輸且加時間戳、隨機(jī)數(shù)等措施,可對指令重放具有一定的防御能力。
Web應(yīng)用測試,有很多可供選擇的測試工具如:SQL注入工具SqlMap、Burp Suite滲透測試工具、TcpDump、XSSF等以及一些自動化掃描工具Nessus、IBM APPScan等。
命令注入漏洞可以選擇一些配置頁面如:FTP服務(wù)、郵件服務(wù)以及網(wǎng)絡(luò)設(shè)置頁面等,使用Burp Suite重放功能對抓取的數(shù)據(jù)報文進(jìn)行更改,測試建議使用如“ping reboot”等之類的基本命令(如圖7所示),來查看命令是否在目標(biāo)設(shè)備中執(zhí)行。
圖7 Burp Suite進(jìn)行篡改并進(jìn)行重放
其他Web漏洞如XSS、文件上傳漏洞、CSRF等通過一些自動化測試工具開展。其實(shí)Web漏洞,大部分都是在Web應(yīng)用開發(fā)中,開發(fā)者沒有對用戶輸入的參數(shù)進(jìn)行檢測或者檢測不嚴(yán)格造成的。對用于輸入的參數(shù)進(jìn)行嚴(yán)格校驗(yàn)是web漏洞預(yù)防的重要關(guān)鍵。
本文筆者研究了物聯(lián)網(wǎng)框架下的智能家電各端可能存在的常見網(wǎng)絡(luò)安全風(fēng)險,并研究了一些測評方法和防護(hù)對策。目前智能家電行業(yè)的安全意識和有效解決方案好比較缺乏,智能家電網(wǎng)絡(luò)與信息安全標(biāo)準(zhǔn)還不完善,后續(xù)還需要結(jié)合具體案例進(jìn)行進(jìn)一步研究和探討。