硬體黑客技術——擴展你滲透的攻擊面

一、前言

為了充分利用待評估的硬體,您應該熟悉多種安全測試領域——基礎設施、網路、移動應用程序——因為這些現代設備都為我們提供了豐富的攻擊面。硬體黑客技術可以極大擴展我們的滲透能力,不僅能夠帶來一些新的攻擊方式,同時,還能增加我們的攻擊深度。

二、動機

1. 持久性的問題

目前,漏洞的「半衰期」(用戶為其服務/軟體中已識別的漏洞安裝安全補丁所需的時間的一半)已經非常短暫了;對於託管的Web服務來說,可能只有幾分鐘,即使是維護可執行文件和各種服務所需的時間,也只有幾個小時;就算是對於具有嚴格的回滾測試要求的客戶來說,這個時間也只有幾周而已。但是,對於硬體的安全漏洞來說,這個半衰期可能是幾年時間,並且,如果開發人員不能正確使用相應的固件更新程序的話,那麼這個半衰期就是直到該設備報廢為止了。設備一旦安裝,它就呆在那裡長期運行,即使購買設備的人參加了相關的培訓課程,常常也是三分鐘熱度,很少會記下如何更新它——當他真的需要動手更新的時候,就傻眼了。這就是硬體安全的真實寫照。

2. 僅得到shell還遠遠不夠

在網路上面,確實有大量的「硬體黑客技術」指南,但是它們大多停留在「...現在你連接...」的階段,讓讀者自己進行相關的攻擊、測試和實驗。它們根本不會指出真正的風險在哪裡,以及如何處置。

是的,我明白(大多數)硬體黑客技術指南的價值僅限於通過UART獲得設備上的r00t shell,但坦白來說,這不是一個可行的攻擊向量!當您通過UART訪問受害者的設備的時候,難道不會引起受害者的警覺嗎?或者,為了安裝和審計開發用的頭文件,還得隨身攜帶該設備嗎?

之前,我曾經寫過一篇如何獲取廉價UART的文章(大概只需要10英鎊),不過,即使擁有了UART,這也只是萬里長征的第一步而已!話說回來,如果能夠對設備硬體進行這種低層的訪問的話,許多原先無法進行的許多事情,現在也能夠順利完成了。

我稍後會提供UART的詳細信息,但現在我只想解釋一下,在安全人員的眼裡,「硬體黑客技術」到底是什麼意思,以及為什麼該技術是有用的。

三、什麼是硬體黑客技術

首先,我們來聊聊「硬體黑客技術」到底啥意思。這是一個非常寬泛的話題——它涵蓋了電路改裝、回收再利用技術、破壞遊戲機上的DRM、訪問內置於產品PCB中的IC的調試功能,設計並獲得了一個arduino/RasPi/(通用微控制器)來完成手頭項目中的某項任務、訪問/寫入受保護的ROM區域、逆向沒有公開的數據表的IC,等等。

由於硬體黑客技術是一個很廣的話題,所以我不想陷入定義的泥潭——這些都可以稱之為「黑客技術」。

對於我來說,作為一名滲透測試人員和安全研究人員,硬體黑客就是從攻擊者的角度分析IoT/硬體,以期找到惡意利用系統的途徑。所以,我對「如果我可以使用晶元訪問調試/終端界面的話,我會做些什麼?」的回答是,使用這種深層次的許可權來測試系統的弱點和安全漏洞。這就是我的興趣之所在,並且一開始就明確表示過了。

因此,以下是我面對設備會想到的各種問題:

  1. 除了(產品說明書中)的功能之外,我還能做什麼?

  2. 我真的拿微控制器來控制燈光嗎?

  3. 我有固件控制的收音機可以回收利用嗎?

  4. 如果硬體具有許多高級功能,並且這些功能已經超出你的任務所需,那麼是否可以將其用於其他方面嗎?

  5. 我可以把它變成一個惡意敲詐設備嗎?例如用來完成竊聽、錄像、泄露敏感的用戶數據或個人身份信息(PII)等。

我可以從硬體中獲得其所有者的相關數據嗎?例如PII、用戶名、密碼、2FA密鑰、密碼私鑰等。

我可以把設備變為殭屍網路/BTC礦機嗎?這是利用黑掉的設備賺錢的最簡單的方法——讓它們將挖到的BTC發到自己的錢包,或將其添加到殭屍網路,然後出售DDoS服務。

還能想到通過這個設備和其他設備來受益的其他惡意活動嗎?

四、一些攻擊場景和常見的漏洞

假設你是一名滲透測試人員,在測試的過程中需要黑掉一部設備——那麼,現在該怎麼辦?事實上,從安全形度來看,與硬體黑客有關的攻擊對象和攻擊手法有很多,特別是:

1. 過時的軟體

對於物聯網來說,供應鏈是一個重大的問題。英國最近的一次大規模的黑客攻擊表明,設備的通用底層軟體中存在許多嚴重的安全漏洞。但這些缺陷到底是怎麼來的?在某種程度上,這是一個供應鏈問題。

這裡的軟體通常(不正確地)指的是ZyXEL(Allegrosoft為嵌入式系統製造的軟體),包括非常受歡迎的RomPager伺服器軟體。很明顯,在這次黑客攻擊之後,人們才發現這個軟體存在安全問題。不過據消息人士透露,Allegro早在2005年就修復了這個漏洞,根據checkpoint披露的「misfortune cookie」漏洞來看,它們在本質上是相似的。

那麼,究竟是什麼地方出了問題?嗯,像任何其他公司一樣,Allegro公司也是要賺錢的,所以他們直接向IC廠商出售其軟體。反過來,這些製造商開發出一款晶元後,會隨晶元銷售/贈送一套相應的SDK,這樣公司就能迅速將產品推向市場。所以,問題就出在製造商從未進行升級,所以產品設計師也從未升級過,但是年復一年,這些這些設備一直在生產、銷售和應用中——所以這個漏洞從2005年開始就存在了,直到2017年攻擊事件發生才引起人們的注意,所以問題主要出在供應鏈的延遲線效應上面。

有時候,您會見到一些從未聽說過的網路伺服器(因為早在2003年它們就已經停產了,如D-Link的Boa webserver),而且有些DNS伺服器比您內衣品牌的歷史都要悠久,許多內核版本都是屬於博物館級別的,更不要說它們正在運行的busybox的版本了。

2. Wi-Fi之痛

在已經發現的攻擊中,許多都是針對商業Wi-Fi環境的。但從這點來看,你從少年時起的Wi-Fi經驗倒是沒有浪費。

3. 遠程命令執行(RCE)

許多情況下,您可以通過互聯網發送命令,並在本地設備上以r00t身份來運行各種命令。這顯然是非常糟糕的——這種漏洞是許多攻擊的源頭。許多設備也通過BASH腳本運行所有的東西(甚至網頁),因為可以省去PHP服務的開銷。不過,這樣做也會帶來安全方面的風險:通過注入RCE字元串,攻擊者就可能從管理設備的Web應用程序的某處找到某些有用的東西。

4. 遠程執行代碼

同樣,攻擊者可以連接外部設備公開的一些的服務,並向其發送精心構造的payload,以便利用其BOF、格式化字元串漏洞等發動攻擊。此外,對於這些服務來說,只需通過類似shodan這樣的搜索引擎就可以輕鬆將其找出。

5. 跨站請求偽造(CSRF)

CSRF漏洞可以在用戶的瀏覽器中連接用於管理設備的基於Web的apps/API(這些apps/API幾乎無處不在),然後執行RCE或直接修改設置——這是在基於固件的設備上的一種常見漏洞。為了緩解這種攻擊,需要進行CSRF-Token檢查,不過完成該項檢查需要大量代碼,這對於固件晶元來說代價太大了(別忘了,大多數固件晶元的最大存儲空間為16Mb)。所以,這個漏洞將來還會非常常見。

6. 跨站腳本攻擊(XSS)

XSS也是一種糟糕的漏洞,如果能夠利用存儲式或反射式XSS攻陷設備的話,用戶的瀏覽器以及設備就會隨之淪陷。關於XSS的危害,這裡就不多做介紹了,因為網上隨處可見!並且這種漏洞本身,也是非常常見的!

7. 文件上傳

各種設備上不僅有噩夢般的CSRF漏洞,並且幾乎所有的文件解析也很糟糕;如果新的上市設備提供了文件上傳功能的話,那麼它很可能含有與本地文件包含、目錄遍歷有關的漏洞,或含有可以直接黑掉它的漏洞(曾經見到過這樣的設備,它允許攻擊者以root身份將文件直接解壓縮到/目錄,包括惡意的/ bin / evil-ELF文件)。

8. 基於XML/SOAP的攻擊

越來越多的設備正在使用基於移動設備的Android/iOS應用進行設備管理。這些設備雖然聽起來很酷,不過,由於開放了基於SOAP/XML/JSON的API來與應用程序通信(很少實現任何身份驗證),因此諸如UPnP攻擊、枚舉、TR069之類的攻擊也會隨之而來了。

9. 認證/會話管理問題

默認登陸憑證無處不在! 並且,在許多使用了某些嵌入式平台的設備上面,類似admin:admin這樣可笑的用戶名和密碼也很常見。更可笑的是,大多數用戶甚至可以將密碼更改為這些設備名(許多人已經不再使用這些設備——請參閱「雲」),因此這也值得注意。同時,驗證信息(用戶名/電子郵件)枚舉攻擊也很猖獗,此外還有身份驗證繞過漏洞——我記得在一個設備上進行測試時,只需要有一個有效的cookie(您可以通過猜測或暴力方式獲取)就可以繞過用戶名/密碼認證。

10. 信息泄露

如果用戶的大部分數據都經由某設備(如客戶終端設備),萬一該設備存在漏洞的話,那麼這些數據也會處於風險之中。並且,這些設備還可以為進一步的惡意活動做好準備(轉儲CC數據,通過網路攝像頭查看家裡是否有人等)。不要忘了,客戶終端一旦淪陷,在上面設置惡意的DNS伺服器是非常非常簡單的事情——但是,大多數用戶(甚至技術精湛的IT人員)是不會注意到這個方面的,從來都不會。

此外,如果設備提供其管轄範圍下的服務(SIP/VOIP,FemtoCell或IPTV接入)的訪問許可權的話,則這些設備上的內部機制一旦公開,就會外泄用於加密的私鑰、通用共享密鑰或憑證(通常是未加密/未經哈希處理的)、認證和加密訪問證書、DRM信息和訪問方法,等等。

11. 「雲端」

除了所有上面介紹的問題(它可能比其他地方處理得更好)外,雲服務還面臨另一個問題。在這種一夜未眠直到凌晨四點寫完,並趕在西弗吉尼亞州最後一個公民投票給民主黨時完成更新(與美國有關的笑話......我多麼國際化)的混亂情況下,引進現代化的時髦服務也是一件非常糟糕的事情。

我可以說的是,即使用戶從地球的另一邊(通過互聯網)修改了他們的路由器上的防火牆設置,但無法阻止廠商努力「解決」人們未知的問題,從而引入更多的問題。

五、硬體方面的問題

還有一些與硬體設備本身有關的具體問題:

1. 更多的供應鏈困擾

例如,U-Boot就不支持安全引導。早在2005年的時候,ARM處理器就開始支持安全引導模式了,但是直到現有,最常見的引導載入程序也不支持安全引導。這意味著您的引導程序可能無法檢查固件是否是惡意的。因此,如果與CSRF漏洞相結合的話,你可以上傳一個惡意的固件文件(這一點我會專門寫一篇文章加以介紹)。

我們知道,ARM是在許可證模式下銷售的,因此許多最便宜的晶元使用的都是舊晶元的設計許可證。所以這個問題跟之前的完全相同——Jazelle模式是一種歷史悠久的ARM exec模式,它支持本機Java位元組碼執行(是的,你沒看錯)。後來,它被ARMv7中稱為「ThumbEE」的新模式所「替換」,但是在全球範圍內,您仍然可以看到數十萬顆支持Jazelle的晶元。

2. 開發用的頭文件

這個問題從一開始就是顯而易見的,之所以懸而未決,是因為製作確保「消費者安全」的電路板的成本是非常高昂的。原型設計本身可能就需要幾周的時間,而如果再加上創建PCB布局的「安全」版本的耗時,那整體時間就要翻倍了,因此,大多數項目經理都會以成本為由擱置這樣的想法。

此外,如果從開發板到生產板只是「省略」了一個連接電阻的話,也算不上欺騙任何人...

3. Bootlog神諭

Bootlog簡直是太棒了,其內容之豐富,從便利貼式的注釋,到作為默認Wi-Fi密碼的MAC地址,應有盡有。它不僅會告訴我們處理器的版本、晶元ID(它們通常被散熱器覆蓋)、內核版本、精確的軟體版本,同時還會告訴我們在/at/on中運行的代碼的所有模式。我將來會對bootlog做一些詳細的解釋,以說明其工作機制。

六、看一個簡單的實例

我們來看一個簡單的例子——許多CPE(消費者設備,對於家用設備來說,包括路由器、機頂盒、無線中繼器等)都使用一些基於Linux的操作系統。假設我們已經在該類設備上連接了一個UART shell。

假設我們知道用於管理設備的Web應用程序的參數列表(藉助於Burp Suite的話,這並非難事),並且有一個python腳本,可以用來遍歷它們並注入一個自定義的payload(這很難嗎?你可以用google搜啊)——那麼,接下來呢?

現在,我們可以使用這個payload:

  1. ";echo-n"PWNED!">/dev/ttyS0

它是做什麼的?實際上,它會將短語「PWNED!」列印到串列埠(雖然該埠並非總是/dev/ttyS0,但對於Allegrosoft RomPager-esque固件來說通常如此)。也許還應該添加一個計數器,以便讓它列印「PWNED! 1」,「PWNED! 2」等等,並列印到屏幕上,從而指出將其輸出到哪裡了。

去吃午飯吧。

吃完午飯後,你(也許)會從串口發現一些美味的漏洞——有BASH腳本遠程命令執行(RCE)漏洞的任何東西都會向串口列印輸出PWNED! X。你剛才發現了一個嚴重的漏洞。

七、那麼下一步呢?

我想知道的是,如果該RCE具有CSRF能力的話,您多久才能將這個「相鄰網路RCE」變成「互聯網RCE」。果真如此的話,那麼可以將其嵌入到一個javascript payload中,並利用一個非常簡單的javascript代碼來啟動它。

八、那麼,接下來怎麼辦?

推薦閱讀:

大家都在投資VR 硬體很多 內容在哪?
硬體章 輸出節 膠片項--反轉片沖洗
探秘香港廉政公署:硬體過硬 不輕易亮「傢伙」(圖)
在美國當總統,都要啥硬體? | 千趣

TAG:硬體 | 技術 | 黑客 | 擴展 |