當前位置:
首頁 > 新聞 > 探索:大疆Spark無人機劫持分析

探索:大疆Spark無人機劫持分析

簡介

大疆無人機曾一度成為黑客論壇的焦點。他們討論的主要是如何解除無人機的一些限制,將無人機的控制信道設置為更高的頻率,移除飛行高度的限制等。很多資料都備份在github上,地址:https://github.com/MAVProxyUser/P0VsRedHerring,有興趣的同學可以查看。

DJI Spark是2017年發布的一款無人機,而且技術相對成熟。但是,在一些性能方面上不及其他機型,比如續航只有16分鐘,與Phantom 4和Mavic相比,Spark的價格也相對便宜,只有499美元。

Spark的核心是Leadcore LC1860C ARMv7-一個運行Android 4.4系統的CPU,升級更新的文件擴展為.sig。升級更新的文件是用RSA-SHA256簽名的,這些升級的文件中有些部分是有AES演算法加密的。一些黑客和網路安全愛好者已經發現了文件的格式,並獲取了AES密鑰,任何人都可以用一些工具來從升級的文件中提取數據並解密。在無人機的固件中,有一些本地應用來確保設備的正常運行。

DJI Spark的外部介面集如下:

·USB介面,連接PC;

·Flash連接器,用於內存擴展;

·通過DJI GO 4智能手機應用連接2.4 GHz Wi-Fi來控制設備;

·2.412-2.462 GHz的無線連接來遠程控制和管理設備。

為了能夠通過桌面端操作無人機,DJI設計了DJI助手2應用程序。應用對通過USB介面連接到計算機的設備進行操作,更新固件,改變wi-fi網路設定等。在瀏覽了黑客論壇的材料後,研究人員發現了一個腳本文件websocket_tool.py, 這是一個無人機能達到的最大高度的腳本。通過一個到web-socket伺服器的請求,一個新的高度參數被寫入。而該web-socket伺服器是通過DJI助手2應用啟動的。該應用有兩個介面:

·圖像UI;

·web-socket介面。

從一個可信的計算機感染無人機系統是一種容易且可信的方式。所以就有了不同的惡意軟體允許攻擊者通過感染連接到PC的手機來感染無人機。所以呢,攻擊者也可能用應用介面將惡意目的變為現實。所以,研究人員決定檢查這個場景並且深入分析web-socket伺服器介面。

Web-socket伺服器

研究人員啟動了最新的DJI Assistant 2 1.1.6版本,並連接到開機的DJI Spark(固件版本V01.00.0600)。然後訪問web-socket伺服器,可以用wsdump.py工具來操作web socket。

伺服器響應說明在URL ws://victim:19870/上沒有服務。通過web_socket_tool.py腳本,研究人員發現一個有效的URL -/general

很明顯伺服器需要授權才能工作,但響應消息是加密的,也就是說該介面從設計上就是給DJI軟體使用的,而不是給普通用戶。有一個問題就是傳遞了什麼內容?可以看一下伺服器和客戶端的消息是如何加密的。在分析過程中,研究人員發現早期的DJI Assistant 2版本與伺服器的通信是明文的。從1.1.6版本開始加入了加密機制,所以論壇中一些資料中的腳本是沒有加密的。

逆向加密演算法

首先,檢查加密的文本特徵。加密的文本中每次應用程序重新運行的時候都是系統的,而且無人機重啟是不影響這些文件的。在Mac的電腦上運行應用也是同樣的結果。這就可以得出一個結論,加密密鑰是不依賴於會話和使用的操作系統的。所以,研究人員推測密鑰是硬編碼的。

然後,嘗試尋找硬編碼的密鑰。Web-socket伺服器的代碼是保存在DJIWebSocketServer.dll庫中。在可以尋找加密演算法簽名的工具的幫助下,研究人員成功找出了加密的演算法AES,並定位了加密的過程。

加密的模式可以根據AES的特徵來判斷,唯一需要做的就是比較反編譯的源碼和Github的開源代碼。通過比較發現使用的CBC模式。通過交叉分析,研究人員發現了加密密鑰的初始化過程。

加密密鑰確實是硬編碼的,而且是32位元組的字元串。一共有兩個,第一個是用來向伺服器發出請求的,另一個用來響應。現在就有了與web-socket伺服器通信所必須的源數據。

介面

現在需要做的就是將傳輸的數據加密/解密到wsdump.py腳本中,就可以獲取應用揭秘的數據了。研究人員對該腳本進行了修改,存放在github上,地址https://github.com/embedi/dji-ws-tools/blob/master/dji_wsdump.py。

除應用版本,設備類型等信息外,還有一個無人機管理服務的URL列表。這些服務可以通過web-socket介面遠程處理。

/adsb/log/1d9776fab950ec3f441909deafe56b1226ca5889 - data export from the ADS-B modules

/controller/appreciation/1d9776fab950ec3f441909deafe56b1226ca5889 - license information

/controller/config/user/1d9776fab950ec3f441909deafe56b1226ca5889 - a wide range of settings, including maximum flight altitude

/controller/flight_record/1d9776fab950ec3f441909deafe56b1226ca5889 - flight information

/controller/module_activate/1d9776fab950ec3f441909deafe56b1226ca5889 - operations with hardware modules, e.g., Intelligent Flight Battery

/controller/nfz_upgrade/1d9776fab950ec3f441909deafe56b1226ca5889 - no-fly zone updating

/controller/p4_ext/1d9776fab950ec3f441909deafe56b1226ca5889 - the Phantom 4 drones service

/controller/simulator/1d9776fab950ec3f441909deafe56b1226ca5889 - managing the simulator built in DJI Assistant 2

/controller/upgrade/1d9776fab950ec3f441909deafe56b1226ca5889 - firmware updating

/controller/user_feedback/1d9776fab950ec3f441909deafe56b1226ca5889 - user"s feedback to the DJI company

/controller/vision_calibration/1d9776fab950ec3f441909deafe56b1226ca5889 - camera calibration

/controller/vison_simulator/1d9776fab950ec3f441909deafe56b1226ca5889 - managing the simulator (uses the commands similar to those of the simulator service)

/controller/wifi/1d9776fab950ec3f441909deafe56b1226ca5889 - managing Wi-Fi hotspot

/controller/zenmuse_debug_data/1d9776fab950ec3f441909deafe56b1226ca5889 - handling debugging information from Zenmuse cameras

攻擊

通過智能手機在沒有其他特殊的控制器的情況下控制DJI無人機。對DJI Spark來說,控制器是可以單獨售賣也可以與Spark Combo一起售賣。在沒有控制器的情況下,手機應用就是唯一可以控制DJI Spark的。無人機會創建一個Wi-Fi熱點來供應用連接。熱點是用WPA2協議確保安全的,並且同時只允許一個用戶連接。

web-socket介面可以完全訪問Wi-Fi網路設定,通過建立到web-socket伺服器的網路連接,攻擊者可以看到Wi-Fi網路的設定並與另一個人的無人機建立連接。但是如果改變了設置,無人機就會與用戶斷開連接,攻擊者就會變成無人機的獨有者。

為了執行一次成功的攻擊,攻擊者需要感染受害者的系統,或遠程追蹤USB或者DJI助手2應用連接到無人機的時刻。具體的時間可以通過19870埠開啟的時間來確定,通過執行下面的動作可以連接到web-socket伺服器ws://victim:19870,改變無人機Wi-Fi熱點的密碼:

1.請求URL ws://victim:19870/general 時,從伺服器響應中得到文件hash值:

"FILE":"1d9776fab950ec3f441909deafe56b1226ca5889"

2. 發送下面的命令到ws://victim:19870/controller/wifi/

3. 改變Wi-Fi密碼

前:

後:

4. 重啟Wi-Fi模塊來使用對Wi-Fi密碼的改變生效:

5. 用智能手機連接到無人機

6. 等USB線拔掉後,劫持無人機。

研究人員在DJI Spark無人機上進行了攻擊測試,但該攻擊對所有用DJI助手2應用適配的用Wi-Fi管理的無人機都是可行的。

下面是DJI助手2的固件發布記錄。

這類攻擊支持所有的操作系統和默認防火牆設定,可以在有線和公共無線網路上執行。POC:https://github.com/embedi/dji-ws-tools/blob/master/dji_ws_exploit.py

USB和IoT

在日常生活中,幾乎所有的智能設備都是USB連接的,上傳文件,更新固件,甚至充電都用的是USB介面。很少有人懷疑這個日常的動作(介面)會給我們帶來多大的威脅,但是USB卻很容易被用來感染其他的設備。惡意軟體如果不破壞系統的安全機制的話,是不會被檢測到的。用這種方式的話,攻擊者就可以無形中感染其他的智能設備。攻擊者可以先更改設備的一些設定,最後再上傳惡意固件到設備上。當設備連接到PC或筆記本時,感染就會傳播開來。

在IOT時代,因為IOT設備的體量,這個問題會迅速擴大。這就是為什麼智能設備開發者會關注設備連接到電腦的場景,並應用認證,授權和簽名固件的可信啟動等機制。

結論

DJI是全球領先的無人飛行器控制系統及無人機解決方案的研發和生產商,市場份額約為50%,預計產量到2021年為400萬。這也就是為什麼對無人機的攻擊會有這麼大的危害了,會影響大量的用戶和企業的一些機密信息。而且利用SSL密鑰和XSS漏洞進行攻擊的案例在現實中已經有了。

上面提到的攻擊方法之所以奏效是因為DJI軟體存在一些安全漏洞,總結如下:

1.Web-socket伺服器會監聽所有的網路介面;

2.使用硬編碼密鑰的方式來與web-socket伺服器進行通信,這是一種弱消息加密機制;

3.Web-socket介面沒有授權機制;

4.機密信息沒有額外的保護措施。

針對Wi-Fi的攻擊可以劫持無人機,但是場景可能不至於此。Web-socket有很多的介面可以讓攻擊者改變無人機的設定,並且獲取一些機密信息。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 嘶吼RoarTalk 的精彩文章:

如何追蹤勒索軟體的贖金,找到幕後首腦
評估網路犯罪規模的7大關鍵數據

TAG:嘶吼RoarTalk |