看雪編輯按:目前 IoT
裝置的安全問題主要受限於硬體和軟體。很多時候如果配置跟不上,那麼就算開發人員想應對安全問題也會顯得力不從心,而就軟體層面,系統自帶的保護機制尤為關鍵,特別是基於許可權的防護。我們知道漏洞中專門有一類是用於提權操作的,其在漏洞組合利用中的地位不言而喻,畢竟在系統許可權下執行可以輕鬆繞過很多安全策略,相應的,對
IoT 裝置而言 root 許可權也就成了兵家的必爭之地。本次議題是由騰訊反病毒實驗室楊經宇帶來的有關 root IoT
裝置的討論,演講者不僅從多維度分析了 IoT 裝置的攻擊面,同時還在現場公開了兩個報送 CNNVD 的漏洞作為案例來講解,為我們獻上了一場
IoT 安全知識盛宴。以下內容為楊經宇演講實錄,由看雪學院(微信公眾號:ikanxue)整理。
楊經宇(Jingle)畢業於倫敦大學資訊保安專業,現就職於騰訊反病毒實驗室,從事惡意程式碼研究工作。開發的騰訊哈勃分析系統開源版入選過BlackHat兵器譜。熱愛IoT安全,病毒分析等領域的研究。
導語
2017年是IoT蓬勃發展的一年,同時也是IoT相關安全問題爆發的一年。在這個機遇與挑戰並存的時代裡,我們需要去主動面對未知的世界。今天我給大家帶來了關於IoT裝置root許可權相關的一個技術分享。題目中的上帝模式,就是指獲得了IoT系統root許可權之後的狀態,因為進入root模式後,大量的保護機制可以被繞過,能夠開啟之前被禁用的功能,能夠獲得至高無上的許可權,所以將root模式稱之為上帝模式。
一、簡介
1.1 作者介紹
首先介紹一下我自己。我叫jingle,碩士畢業於倫敦大學資訊保安專業,本科畢業於北京師範大學計算機專業。現在就職於騰訊反病毒實驗室,從事安全研究工作。參與開發的騰訊哈勃分析系統開源版(HaboMalHunter)入選過BlackHat兵器譜。我個人非常熱愛安全技術,希望能夠和大家相互交流和學習。
1.2 議題大綱
接著介紹一下,本次議題的大綱。IoT安全的範圍非常廣泛,涉及技術和非技術等多方面的交叉,但是我們今天會聚焦在技術方面,會專注於討論IoT裝置 root相關的安全問題。包括root IoT裝置的常用方法,獲得root許可權後的安全威脅,和對應的緩解措施。
另外需要說明的是,本次議題介紹的漏洞案例,都向CNNVD進行了報送,並得到了確認。其次因為我們只關心技術,就隱去了相關廠商的名字。
1.3 背景介紹
因為IoT安全屬於新興安全領域研究,我準備首先簡單介紹一下一些相關的背景知識。
大眾眼中的IoT
在大眾看來,IoT就是萬物互聯,IoT讓生活變得更便捷。比如智慧開關,讓人和家用電器之間突破了空間的限制,例如透過自動定時,在我下班前,電暖氣就會自動啟動,一回家整個屋子是溫暖的,等到白天上班,電暖氣就會自動斷電,這樣就不會擔心家裡沒人,萬一失火的問題。從這裡例子,大家也能看出,其實安全會是大家非常關心的一個方面,大家會擔心用電安全,使用攝像頭會擔心隱私的安全,這些都是我們作為安全研究人員應該去考慮改進的方向。
程式設計師眼中的IoT
在座的各位大部分都是搞技術的,我們轉換一下視角,看一下程式設計師眼中的IoT是什麼樣子的。在程式設計師看來,IoT裝置就是具備聯網功能的嵌入式裝置。所謂嵌入式裝置,主要由嵌入式CPU,一般是ARM或者是MIPS,硬體外設,例如記憶體、USB、網路卡和感測器等,和嵌入式作業系統,大部分是Linux系統,這三部分組成。聯網功能主要涉及一些通訊協議,例如WIFI、藍芽、3G和目前最新的NB-IoT協議等。
這些裝置首先透過感測器採集資訊,例如溫度、溼度、影像和聲音等,其次將這些資訊透過通訊協議上傳至雲端伺服器,雲端伺服器對資料進行錄入、整理、挖掘,然後將結果反饋給使用者,同時這些IoT裝置也能夠接收來自使用者和伺服器的指令,做出相應的動作,例如開關電路、移動攝像頭等。
安全研究人員眼中的IoT
接著我們聊一聊,安全研究人員眼中的IoT。第一印象,就是一座金礦,因為只要去挖,就一定有漏洞。造成目前IoT安全現狀的原因有哪些呢?首先,IoT技術目前處於高速發展的階段,安全基礎設施建設的速度沒有跟上,現在還處於發現漏洞,修補漏洞這種後知後覺的狀態。
其次,由於IoT裝置計算資源的限制,導致已有的安全機制很難平移到IoT上。例如一個家用攝像頭,記憶體64MB,rom flash 32 MB, 很難將IDS、IPS和防火牆這些成熟的網路安全服務植入進去,例如一個規則庫都要比整個記憶體還大。
今天我們就來關注一下IoT安全中非常重要的一環,root相關的安全問題。這裡首先想和大家一起思考一下本次分享最關鍵的一個問題:
為什麼要root
首先使用者有root
IoT裝置的需求,因為能夠突破限制,例如很多使用者將品牌路由器刷韌體,換成openwrt。其次開發人員也有需求,比如分析競品的功能。需求最多的是安全研究人員,為了更好的研究IoT裝置,需要獲得系統的root許可權,例如可以提取韌體,進行靜態分析,也能夠獲得系統的執行引數,例如Linux分割槽資訊,啟動引數等,甚至能夠直接在裝置上動態除錯。這一切都是為了更早的發現漏洞,讓IoT裝置更安全。最後,需求最強烈的是黑產,因為有利益的原動力在支援,獲得root許可權後能夠更方便的刷流量、薅羊毛、DDOS和挖礦。我們安全研究人員每天都在和黑產進行對抗,進行賽跑,就是為了比攻擊者更早的發現漏洞,為大家提供一個更安全的環境。
二、Root 方法
接著我們來聊一下,root IoT裝置的方法。首先,需要對IoT裝置的進行攻擊建模,然後分析各個攻擊面,最後從這些攻擊面中找出薄弱環節。
如圖所示,一個IoT裝置模型可以分為硬體層、網路層、系統層、應用層這四大攻擊面,每個攻擊面中的任何微小的漏洞都有可能成為獲得root許可權的關鍵點。
硬體層
首先我們來看一下硬體層,硬體層安全其實是IoT安全與傳統的軟體安全、web安全差異最大的一層。因為在傳統安全觀念中,硬體層面的安全問題獲得的關注度比較低,爆出的漏洞評分也不會很高,甚至某些漏洞提交要求中,明確要求非物理接觸,需要遠端攻擊。但是,IoT安全不同於傳統安全,物理層的安全非常重要。因為無論是從哪個途徑獲得了root許可權,最後帶來的安全威脅都是非常大的。
對於物理層的攻擊,今天主要介紹兩個方法,第一個是串列埠(UART)除錯,第二個是SPI flash程式設計器。
對於串列埠除錯,這是一個非常直接的獲取IoT裝置root許可權的方法,只需要找到電路板中的一些關鍵詞,例如VCC,3.3V,GND,RX,TX甚至直接有標明UART的介面,然後用萬能表測量一下啟動階段的電壓,找出接地和VCC,然後嘗試一下RX,TX,一般就能確定串列埠介面,接著用遠端終端連線串列埠,就能直接獲得一個Linux
shell,而且使用者絕大多數情況就是root。串列埠除錯,能夠獲得非常重要的執行時引數,例如MTD的分割槽表,Linux系統的啟動引數,獲得root許可權後,能夠讀取/dev/mtdN這個裝置檔案,將IoT的rom資料讀出,其中就包含了非常重要的韌體資料。
對於SPI
flash程式設計器,如果接觸過嵌入式開發的朋友會非常熟悉。SPI flash程式設計器配合這個晶片夾子,繞過了CPU,直接針對IoT裝置的nor
flash進行讀寫,因為這個時候,裝置都沒有啟動,所以任何在軟體層面的安全措施都阻擋不了透過程式設計器讀寫韌體的操作。在我實際研究過程中,大約20多款IoT裝置都能夠成功讀寫韌體,只有一個sop16的nor
flash晶片,只能讀取,寫入的時候出現亂碼,造成裝置變磚。透過程式設計器dump出的韌體,可以用於後續的靜態分析,找到root的方法。
這裡友情提示,兩種基於硬體的攻擊手段都有可能損壞裝置,尤其是燒錄韌體。幸虧IoT裝置大多數都比較便宜,所以目前我還沒有破產。
網路層
接著我們將注意力轉移到網路層。在這一層中,既有傳統安全的用武之地,又有IoT安全的特殊之處。
首先,大部分IoT裝置使用了wifi,另外有一些使用了有線網路。那麼,對於這些基於TCP/IP的裝置,傳統的滲透測試技術仍然能夠發現大量的漏洞。
其次,IoT裝置的聯網協議,不只有TCP/IP。還會涉及藍芽,3G和NB-IOT等無線協議。這裡每一個新功能,新協議都會多多少少暴露出一些安全問題。這裡有廣闊的空間留給大家去探索。例如今年爆發的針對藍芽的Blueborne[1]。
系統層
接著我們來看一下系統層有哪些安全問題。大部分IoT裝置是一個安裝了Linux的嵌入式裝置。這裡Linux系統出現的問題,都會被引入到IoT裝置中。例如shellshock、dirtycow這些漏洞,會被惡意軟體用來攻擊IoT裝置,獲得root許可權。另外一些系統設計的問題也會造成嚴重的後果。
這裡和大家分享一個騰訊反病毒實驗室提交給CNNVD的漏洞。
這個漏洞非常好理解,但是因為產品已經發布,而且有多個版本,修改的成本和難度可想而知會非常高。
應用層
最後我們來關注一下應用層的安全,應用層因為承載著非常多的需求,每種IoT的功能也不一樣,很難有一些通用的攻擊手段。這裡需要掌握ARM和MIPS的逆向和動態除錯技術才能更好的挖掘應用層的漏洞。這裡用騰訊反病毒實驗室報送給CNNVD的另一個漏洞來介紹一下應用層的安全分析方法。
至此,我們發現IoT的四大層面,物理層、網路層、系統層和應用層都有安全問題,都有可能導致攻擊者獲得root許可權。那麼,接下來,我們一起思考一下,當攻擊者獲得了IoT裝置的root許可權後,會引發多麼嚴重的安全威脅呢。
三、安全威脅
從一名Linux程式設計師的角度來看,獲得了root許可權就是獲得了至高無上的權利,這也就是本次分享上帝模式的由來。簡單來說,如果是攻擊者發動遠端攻擊,獲得了IoT裝置的root許可權,那麼除了攻擊者抱不走你的裝置,他可以在軟體層面做任何事情。
相比傳統的Linux安全,IoT安全面臨的威脅會非常大。首先由於IoT計算能力的限制,IoT裝置就無法抵禦一些之前常見的網路攻擊,更不要提0day攻擊,導致針對IoT裝置的蠕蟲會在近些年大量爆發。其次,由於IoT特殊的使用場景,導致韌體更新是一個成本非常高的操作。大量的使用者不會主動更新韌體,這就導致即使廠商針對漏洞進行了修補,由於使用者沒有及時更新韌體,導致IoT裝置仍然被已知漏洞入侵,獲得root許可權。最後,因為IoT裝置得天獨厚的執行環境,7*24小時不間斷工作,實時接入網際網路,甚至具備錄音錄影功能,一旦IoT裝置被攻擊者控制,就能夠持續不斷的進行惡意行為。
這些惡意行為包括傳統的DDOS,就是將IoT裝置作為肉雞,對目標網站發起網路攻擊,導致目標網站癱瘓。
其次是近年來流行的挖礦,因為IoT裝置一般不會斷電,電費也不是攻擊者出,即使CPU運算能力十分有限,但是如果形成規模,也是攻擊者青睞的一種惡意行為。
最後不要忽略,內網中IoT裝置被攻擊帶來的新的威脅。傳統安全防禦看重的是外網和內網的邊界防禦,部署大量的防火牆,IDS和IPS禦敵於千里之外。但是萬萬沒有想到,城牆固若金湯,裡面的IoT裝置被攻擊者入侵後,直接從內網發動攻擊,去入侵同一網段下的裝置。
這裡想和大家分享另一個提交給CNNVD的漏洞,這個漏洞非常有意思。
四、緩解措施
前面討論了IoT裝置被root之後的安全威脅。接下來我們聊一聊相應的緩解措施。目前IoT安全處於攻強守弱,很大程度是因為已有的緩解措施沒有很好的利用,這些方法因為人為忽略,或者因為裝置效能的問題,無法適配到IoT裝置上。今天不作太多的發散,只是提出一些能夠針對性的解決方案,用於緩解之前提到的一些漏洞。
首先關於韌體校驗,這裡推薦使用數字簽名技術,在釋出韌體的時候對韌體進行簽名,在升級,以及之後的每次執行時,進行簽名驗證。這就解決了CRC被攻擊者替換的問題。TI提供了基於RSA的韌體數字簽名方案,大家可以深入瞭解。
其次關於密碼生成的問題,生成隨機密碼是可行的,但是隨機的種子需要特別的保護好,不要被攻擊者獲得。
最後是wifi功能無中生有的漏洞,這裡最好透過物理手段對IoT功能進行限制,或者直接購買合適的硬體,來避免這種問題的發生。
五、總結
今天非常有幸能夠和大家分享關於IoT
root許可權相關的安全話題。不知大家有沒有這種體會,IoT的安全發展也會符合一種自然規律,就是前期攻強守弱,中期焦灼,後期守強攻弱的規律。這種規律在整個網際網路發展史上多次出現,例如整個Windows安全的進化,從win2000和Win
XP可謂是軟體安全的練兵場,到現在Win10每個漏洞都是價值千金。又如web安全的進化,從XSS,SQL
注入,經常是整站脫庫,到現在WAF基本是標配。目前IoT安全還處於攻方非常強勢的階段,但是隨著IoT安全事件的大量爆發和IoT廠商安全意識的提高,很快就會進入焦灼期,最後隨著政策法規的執行和資訊保安工作者的努力,整體IoT會朝更安全更可靠的方向發展。非常感謝大家。
六、參考資料
1.https://www.armis.com/blueborne/
2.https://wikidevi.com/wiki/Ralink_RT5350
3.http://processors.wiki.ti.com/index.php/Basic_Secure_Boot_for_OMAP-L138_C6748
4.http://www.cnnvd.org.cn/web/xxk/ldxqById.tag?CNNVD=CNNVD-201708-1472
本演講PPT連結:https://bbs.pediy.com/thread-223004.htm