1. 程式人生 > >物聯網安全研究之二:IoT系統攻擊面定義分析

物聯網安全研究之二:IoT系統攻擊面定義分析

前文中,我們瞭解了IoT技術的基本架構,本文我將來說說IoT安全,在此過程中,我們會嘗試定義一種新方法來理解IoT安全,同時也會建立一個結構化流程來方便認知IoT相關的攻擊研究和滲透測試。

依據前文我們定義的IoT體系結構,現在我們可以非常清晰地分離出物聯網系統的各種元件,並嘗試為每種元件定義攻擊面,各種元件的攻擊面組合將形成一個整體的物聯網生態系統攻擊面。

我之所以把它稱為物聯網生態系統而不是物聯網產品,是因為它確實是一個由不同元件組成的生態系統,它們相互通訊並解決特定的現實問題。 我們先來詳細討論每種元件的攻擊面,如果我們把通訊作為一種攻擊面的話,總體攻擊面可分為以下四類:

移動端

雲端

通訊層面

裝置層面

OWASP在IoT安全方面也做了很多工作,他們也給IoT架構定義了攻擊面,值得認真研讀一番(點此檢視),你可以綜合不同觀點形成自己的看法。

移動端攻擊面

移動端是IoT使用者瞭解物理裝置狀態的一個重要介面,移動App與IoT系統之間的命令傳送和資料讀取,是與IoT通訊的視窗。以下IoT系統移動端可能面臨的一些攻擊面:

儲存介質

認證方式

加密手段

通訊方式

原生移動端系統漏洞

雲端攻擊面

IoT系統不只包括硬體,雲端服務對IoT服務來說同樣重要,它是產品線的各種例項匯聚,而例項中又包含了所有終端使用者使用者的相關資料,同時雲端服務還具備一定的命令執行許可權,攻擊者一旦成功滲透,就能對相關部署裝置形成管理控制,危害甚大。總體來說,雲端服務攻擊面主要體現在所提供服務的介面上:

儲存介質

認證方式

加密手段

通訊方式

APIs介面

原生Web端和雲端架構漏洞

硬體裝置攻擊面

接下來就是IoT技術的關鍵角色-硬體裝置,它是物理世界的介面體現也是虛擬數字世界的通訊媒介。相關的資料轉換會首先經過硬體裝置,由於它本身儲存了使用者相關的敏感資訊(例如家庭統計資料、身體統計資訊、個人資訊等),所以這種使用者隱私儲存機制也存在一些爭議。而在未來,不同硬體裝置還能使用使用者的電子錢包或繫結賬戶實現商品購買或遠端維護等服務。其存在的攻擊面可能有:

儲存介質

認證方式

加密手段

通訊方式

感應介面

外設介面

硬體介面

人機互動介面

通訊方式攻擊面

儘管通訊攻擊不是一種有形的攻擊,其理想的有形攻擊面將是通訊介面和負責通訊的各個驅動器和韌體,但這只是其中的一部份,因為無數通訊協議會共同在有線和無線介質上作用於物聯網生態系統。以下是通訊方式可能存在的攻擊面:

認證方式

加密手段

偏離協議標準

協議實現異常

硬體介面允許通訊互動,然後實際的資料通訊分組是由上層的軟體實現定義的,因此,通訊攻擊面的問題我們就只討論一些協議,雖然各種協議缺陷可能導致對移動裝置、硬體裝置或雲端服務的端點攻擊,但為了理解清晰,我們仍將其作為單獨的攻擊面來討論,我會列出各種物聯網產品中使用的一些通用協議。如下:

WEB

Web或HTTP(S)技術是常用的通訊協議,由於Web端的攻擊面非常廣泛,但好在攻擊面、漏洞和緩解技術很多都已經標準化了。網上有很多攻擊描述和防護的詳細資源。可以參考OWASP的Web Top 10、測試指南和各種開源工具。

其它

除了WEB端外還存在其它很多特定通用或高效的協議,為了簡潔起見,我只列出一些通用協議供參考學習,經驗告訴我們,所有協議都存在實施缺陷、協議設計缺陷和配置缺陷,這些缺陷則需要在深入的滲透測試中進行分析驗證。

以上這些為你提供了有關物聯網生態系統攻擊面的一些全域性概述,現在我們就嘗試來對硬體裝置定義一種詳細的攻擊面,以便我們知曉標準的物聯網滲透測試攻擊目標,這也有利於物聯網安全架構師為物聯網產品建立威脅模型。但請注意,我就不具體定義移動端和雲端的攻擊面了,因為可在網際網路上找到大量的類似相關資源,該部落格系列旨在為安全研究人員建立一個物聯網安全研究的入門通道,所以我們只重點討論硬體裝置這種當前在IoT安全中未成型的知識。

具體定義硬體裝置攻擊面

以下就是根據我個人理解來定義的一些硬體相關的分離和結構化的IoT攻擊面:

儲存介質

涉及硬體裝置使用的各種內部、外部、 永續性和易失性儲存。它們包含:

SD卡:SD卡是一種典型的資料和配置儲存介質,它們也可用來儲存韌體更新,利用SD卡可形成有意思的攻擊面,後期我會在部落格中作具體技術分析。

USB載體:某些IoT產品會使用USB載體代替SD卡,來儲存和讀寫某些下載好或預先配置好的的資料。USB載體和SD卡的攻擊手段相似。

非易失性記憶體:大量的感應讀寫資料、啟動引導、韌體、密碼憑據等資訊都利用這種記憶體進行儲存,當測試硬體電路板時,儲存在晶片上的資料至關重要。我們可以對儲存器和微控制器之間的通訊執行執行分析,以判斷不同操作中儲存/讀取的不同資料型別。例如通過一個邏輯分析儀去嗅探匯流排通訊,進而發現觸發特定操作的各種讀寫資料。該種記憶體有不同型別的晶片:

EPROM(可擦除可程式設計只讀儲存器)

EEPROM(帶電可擦除可程式設計只讀儲存器)

FLASH – (非易失性快閃記憶體,具備快速高效特點)

以下為一個I2C序列EEPROM:

易失性記憶體:這種記憶體也就是我們會想起的RAM(隨機存取儲存器), 它廣泛應用於電腦電路板和一些嵌入式系統中的隨機資料儲存,當斷電後其不能儲存資料,它分為以下兩類:

SRAM (靜態隨機存取儲存器) – 晶片斷電後不儲存資料

DRAM (動態隨機存取儲存器) – 資料只能被短時儲存,為了保持資料必須短時重新整理,否則儲存資訊會丟失,且晶片斷電後同樣不儲存資料

微控制器記憶體:微控制器或微控制器內部一樣具備儲存資料的記憶體,這種記憶體通常在使用JTAG等除錯工具時可以訪問到,這種微控制器記憶體一般為以下型別儲存:

SRAM (靜態隨機存取儲存器)

EEPROM(帶電可擦除可程式設計只讀儲存器)

FLASH – (非易失性快閃記憶體)

硬體通訊介面

一塊電路板上的不同硬體之間以及電路板與外部世界之間都需要進行相互通訊,這些通訊都基於定義好的標準硬體通訊協議,從一個攻擊者角度來看,可以通過嗅探或惡意資料注入等方式來了解這種實際的通訊過程,從以下描述的通用介面中我們可以具體來分析一些安全問題:

UART:UART (通用非同步收發傳輸器) 是一種硬體外設之間的非同步通訊收發器,它可用於同一電路板上(例如微控制器與電機或LED螢幕通訊)或兩個不同裝置(如微控制器與PC通訊)之間的通訊。這是一個有意思的攻擊面,它可能允許序列方式對裝置進行讀/寫訪問。 在許多裝置中,電路板上的UART埠是開放的,任何人都可以通過序列連線和訪問,以獲得某種型別的shell控制權、自定義命令列控制端、日誌輸出等,為了傳送和接收序列資料,這種裝置通常具有一組輸出連線到微控制器UART的RX和TX引腳,後續我會發文討論如何識別和訪問裝置的UART埠。以下為一個標準的4引腳輸出UART埠電路:

微控制器除錯埠:微控制器在執行時都能利用特定的引腳和輸出對進行除錯,這些引腳輸出(埠)是為開發和設計者預留的,利用它們可以進行裝置除錯、韌體記憶體讀寫、後期引腳控制測試等,因此,基於攻擊者角度的許可權來說,這類除錯埠可能會成為最致命的攻擊面。以下是包含除錯埠的幾類標準介面:

1.JTAG(聯合測試工作組):隨著微控制器和電路板設計越來越小,成型產品的後期測試變得非常困難。因此,為了對電路板執行高效的後期測試,多家主要電子製造商聯合成立了該組織,並確定了一系列電路板後期測試方法標準,後成為IEEE 1149.1,也稱為JTAG測試協議,它具體定義了微控制器除錯的標準介面和命令。 標準的JTAG介面包括4個引腳介面和1個額外可選的TRST引腳介面:

TMS – 測試模式選擇

TCK – 測試時鐘

TDI – 測試資料輸入

TDO – 測試資料輸出

TRST – 測試復位 (可選)

除了晶片除錯之外,偵錯程式還能利用這些引腳與微控制器上的測試訪問埠(TAP)進行通訊,從安全形度來看,識別JTAG埠並與之連線,攻擊者可以實施韌體提取、邏輯逆向、惡意韌體植入等非法目的。

2.cJTAG (緊湊型JTAG): 這是一種新的JTAG測試協議(IEEE 1149.7),它不是對JTAG(1149.1)的取代,而是在其基礎上的一個向後相容擴充套件測試協議, 它定義了TCK和TMS兩個引腳介面和TAP的一些實現特性。

3. SWD (序列線除錯): 這是微控制器除錯的另一種方法,它定義了SWDIO(雙向)和SWCLK (時鐘)引腳介面,它是基於ARM技術的ARM CPU雙向線標準除錯協議,來源於V5版本的ARM除錯介面定義,其中說明了SWD是一種比JTAG更高效的除錯方法。

以下為一個電路板上的JTAG介面位置:

I2C(內建積體電路):I2C是飛利浦公司發明的,同塊電路板上晶片之間進行短距離通訊的協議,它具備主從架構和以下二線匯流排:

SDA – 序列資料訊號線

SCL – 序列時鐘訊號線

I2C的典型應用就是在EEPROM(帶電可擦除可程式設計只讀儲存器)晶片上連線I2C引腳並進行資料和程式碼儲存,對這種協議的攻擊包括資料嗅探、敏感資訊提取、資料破壞等,我們可以對EEPROM晶片進行靜態資料分析,也可對I2C通訊進行動態嗅探來分析其行為和安全問題,後續我會發文討論I2C的通訊安全問題。

序列外設介面(SPI):序列外設介面也是晶片間的一種短距離通訊協議,由摩托羅拉公司發明,它具備全雙工和主從架構特點,比I2C吞吐量更高,並使用了以下四線串列埠匯流排:

SCLK – 序列時鐘訊號線或SCL

MOSI – 序列資料輸出訊號線

MISO – 序列資料輸入訊號線

SS – 從選擇訊號線

SPI應用於多種外設間的通訊,快閃記憶體Flash和EEPROM同樣使用SPI, 其測試分析方法類似I2C,只是匯流排介面不同。

USB:USB介面一般用於充電和資料通訊,後期出於方便也用於問題除錯,可進行動態資料嗅探和靜態資料FUZZ來分析其中的安全問題。

感測器:它是物理裝置的外部介面,但不僅限於溫度計之類的感應類介面,還包括一些開關控制按鈕。按照其實現操作可分為三類:

監控器: 這是最接近感測器意思表達的裝置了,感應和監控外部世界變化,如溫度、行為、脈博、血壓和胎壓等。

控制器: 多為控制外部裝置的開關和行為,如開關、分發器等。

混合控制器: 是監控器和控制器的兩種混合裝置,如溫度控制器、燈光感應器等,由於這類控制器的感應資料會被髮往遠端雲服務端或其它控制端,所以其介面安全至關重要,攻擊者可以向該類控制器傳送畸形資料進行混淆干擾,進而對整個IoT系統形成影響,可以導致IoT系統癱瘓、產生執行異常甚至形成物理破壞。

人機互動介面(HMI):與感測器介面類似, HMI不侷限於工控系統應用,它也被定義為IoT架構中使用者與裝置之間的通訊介面,使用者可以通過它來直接對裝置進行操控,如觸屏、按下按鈕、觸控板等,HMI也會存在一些繞過機制和安全設定問題。

其它硬體通訊介面:還存在其它與硬體裝置的通訊方式,作為滲透測試人員,要積極分析並擅於發現介面的一些安全繞過和設定錯誤問題,其它硬體通訊介面包括(但不限於):

D-Subminiature – 顯示器VGA類介面

ecommended Standards (RS232, RS485 etc)  – 一些推薦性標準介面

On-board Diagnostics (OBD) – 汽車線上診斷介面

網路通訊介面

該介面允許裝置與包括感測器網路、雲端和移動裝置的其它數字裝置進行網路通訊,而負責網路通訊的硬體介面可能包含自主獨立的微控制器/韌體等,所以,這種情況的攻擊面可能為底層通訊實現的韌體或驅動程式程式碼。

無線網路通訊:無線網路通訊介面存在一些已知的安全問題,從攻擊角度看,可對無線晶片形成攻擊乃至物理破壞、DOS、安全驗證繞過或程式碼執行等。

乙太網介面:乙太網裝置介面如wifi介面等都存在一些底層TCP/IP通訊漏洞、硬體實現漏洞和其它攻擊向量。

無線電通訊介面:由於很多IoT產品都整合或轉向無線電通訊方式,無線電通訊介面將會是一個關鍵的攻擊面,在很多情況下,無線通訊要比有線通訊更加高效,這毋庸置疑。我之所以把無線通訊單獨列出,就是為了把它和需要閘道器裝置的無線網路通訊和有線通訊區分開來,無線電通訊與它們完全不同,它可以分為以下兩類:

1.簡單/非結構化:通常用於簡單產品,如百葉窗、鎖、門鈴等。簡單非結構化也即是它使用簡單資料流,並通過無線介面進行傳送。 作為滲透測試人員,需要對通訊過程進行逆向,去發現其中的執行漏洞,可使用無線電嗅探硬體工具(如SDR等)對無線電通訊流量進行抓包嗅探。

2.複雜/結構化:這種通訊意味著它使用結構化資料包進行無線電通訊,除了資料之外,它們在通訊中攜帶了關於協議的附加資訊和元資料,稍顯複雜。 由於高效、標準、成本低廉、執行方便等原因,這類協議已物聯網領域應用廣泛,針對該類協議有多種嗅探和分析工具可以提取其中的通訊資料。常見的該類協議包括:

Bluetooth (and BLE)

ZigBee

Zwave

NFC

RFID

LoRA

Wireless HART

以上就是我對IoT安全和其攻擊面的一些個人理解和定義,不足之處,請多包涵。