純干貨!阿里安全謝君:如何黑掉無人機
雷鋒網編者按:無人機曾一度用來基礎的地面偵查或是快餐店送披薩……然而從去年開始,無人機被用來搭載炸彈運送到戰場,甚至是被用來攻擊智能手機。
正是因為普及面的提高,無人機也被眾多黑客盯上,他們熱衷于找尋相關漏洞劫持無人機。而最近,在看雪安全開發者峰會上,阿里安全 IoT 安全研究團隊 Leader 謝君發表了“如何黑掉無人機”這一議題演講,內容卻另辟蹊徑講到如何不利用漏洞 root 無人機。以下為謝君演講實錄,雷鋒網 (公眾號:雷鋒網) 宅客頻道(微信公眾號:letshome)整理。
謝君:我分享的議題是如何黑掉某品牌無人機。我在研究過程中從物理接觸和非物理接觸兩個方面對整個無人機進行系統化的學習,今天我將分享研究過程中的一些收獲以及學到的東西。
無人機是一個復雜的系統工程,涉及結構工程、自動化控制,空氣動力學,計算機視覺處理以及各種傳感器、無線通訊,以及與人工智能相關的深度學習。
我將整個系統全部拆開,發現其中應用了哪些硬件、傳感器、芯片。其中涉及到不同傳感器及控制系統,很多嵌入式芯片沒有 OS 的概念,所有代碼直接上位機執行,通過實時中斷以及計時器和 IO 的控制來完成整個系統的實時操作。
模塊間通信
我在此基于某品牌的無人機進行分析,包括無線通訊、飛行控制、微機電傳感器、機器視覺處理。實際上這些微控制芯片來自不同廠商,要實現傳感器芯片間的通訊,必須滿足相應的通信規范,才能協同自如。所以產商設計了一套無人機各模塊間的通信協議,協議滿足全系列消費級無人機的產品,定義不超過 32 個硬件功能模塊,硬件功能模塊下面則可以定義子功能模塊。
比如飛控系統用 03 表示,06 表示飛控系統下的子控制功能,如支持的飛機起降功能等。再比如攝像頭采集系統是用 01編號,云臺控制系統是用 04 編號。在傳輸過程中,這些編號將會通過算法來編碼。
這些不同傳感器間通訊鏈路有多種,通訊協議可劃分為本地的、通過串口的、區域網絡等,其中運用多的通訊協議分別是 logic 和 V1。logic 像進程間通訊的方式,V1 是不同硬件間遠程通訊的協議方式。模塊間通信也采用了相應的隔離,類似現在的汽車系統,汽車有不同 ECU 模塊,各個模塊通訊有一定的通訊協議和格式,以及網關隔離某些子系統不允許公共訪問。而無人機里的 GPS 模塊,只允許飛控系統訪問,其他應用系統則不被允許。
整個無人機的通訊結構,類似下圖,不同傳感器間通訊存在一定路徑,且有一定限制。這是無人機通訊格式,可以看出存在一定規范比如一定以 55 開頭,每一個包的長度不能超過固定字節,以及控制命令設置有一些校驗位,且對每一個子系統的編碼需要通過一定算法來計算。
無人機的核心中心橋的控制板,主要是基于 LC1860?SoC 所做的控制板,其主要功能是負責整個系統協調以及固件更新和攝像內容采集、攝像內容數據壓縮、編碼和圖象深度學習,IOR 檢測等。
這個 LC1860 芯片運行嵌入式 Linux 系統,下面是三星的 EMCP,其是集 LPDDR 和 eMMc 于一體的存儲芯片,也是操作系統存放地方。
下面這一塊芯片 intel Movidus MA2155,是英特爾圖像深度學習芯片,因為無人機不能聯網,在需要做實時機器視覺分析時,需要用到大量的矢量運行。而此芯片在無人機上面的應用有視覺測距,障礙物識別以及 ROI。當該無人機進行跟隨飛行時,可通過 CNN 建立好的深度學習模型,進行精確判斷。
LATTICE 的 FPGA 芯片,主要用于雙目避障功能,通過可見光反射回來檢測障礙物的存在。
root 無人機
在研究 IOT 設備時談到最多的詞就是能否 root 這臺設備,root 設備意味著可以獲得系統很高的控制權。為什么要 root 無人機?目的是擴大攻擊面,更好的研究無人機。
而在研究的過程中,我們發現 root 無人機最好的辦法是利用合適的漏洞,執行打開 Adb 接口功能,就能得到系統的 root shell 了。如果沒有漏洞該怎么辦?有意思的是我們發現不用漏洞也可以 root 無人機。
其實此方法可以運用到諸多領域,比如某些路由器。研究過程中我們發現啟動腳本里有一個變量控制 ADB 功能能否打開,默認出廠 ADB 不能打開。ADB 功能接口在安卓手機應用廣泛,怎樣打開此 ADB 功能,一種是利用漏洞執行 ADB_en.sh 的腳本,另一種方法是直接修改該啟動腳本的變量。
同樣,我們不通過漏洞的方式 root 無人機,因為安卓系統存在三星 EMCP 里面,是集內存和存儲于一體的 EMCP 芯片,如果我們可以修改這個芯片里面的內容就可以直接root無人機了。
具體操作步驟是:首先找到這塊存儲芯片的位置,用電熱風槍把它吹下來,然后用 eMMC的讀書卡讀取內容,此時即找到 eMMC 讀卡器,把 eMMC 插到電腦可以看到一個彈出顯示存儲器里面的空間和內容,找到設置調試變量的地方,修改后再寫到 eMCP 里面焊回來。
有一個小細節是,因為存儲器里的內容有分區,需要將這些系統分區用 Ext4 的方式掛載,修改后保存,再剪輯切回 EMCP 的芯片里,后續我們需要把它焊回去。再運行直接 ADB 打開,就可以得到 root 權限,成功后可以看到它的系統信息和進程。
這一過程涉及到許多復雜問題,比如要手工脫焊和焊接的過程,此芯片是 BGA 封裝,引腳多,引腳間距小,且芯片底座里面人為灌入黑膠,對操作過程帶來很大不便,操作不當易使芯片廢掉,手工操作難度極高。
飛控系統
飛控系統,是無人機里面的核心。因為會搜集到無人機各個傳感器模塊的一系列數據,通過一些綜合算法來判斷飛控系統應該如何操作。
飛控系統核心芯片是 ATSAME70Q21,其不需要外置存儲器存儲它的部件以及算法,與之相關有兩塊 IMU 陀螺儀以及加速度計,檢測飛機處于什么狀態。
氣壓計,主要為了檢測飛機的高度,作為一個飛機高度的判斷因素。
Ublox GPS模塊,是一個可編程的模塊,因為飛控和 GPS 通訊有一個協議交互,并不是說任何一個 GPS模塊都可以替換它,但可以做一些欺騙 GPS 的事情。
指南針模塊,主要用于方向的定位。
智能電源,智能電源是用德州儀器 MSP430G2755 16 位的微控制芯片,它主要是收集電源現在狀態,保持了何時放電,何時通過飛控系統在電量低于某值時返航。
電調芯片,因為無人機有四個螺旋槳,四個馬達,每一個馬達需要一個電調的芯片控制轉速,控制不同的馬達的轉速,來達到控制飛行姿態以及速度的操作。
視覺系統
視覺系統,這是無人機里面非常重要的功能,里面核心處理芯片是英特爾的 MA2155 深度學習處理芯片。
飛機搭載攝像頭首先可以進行視頻錄制、拍照,圖像內容輸出給視覺處理芯片來完成視覺識別等功能,其中一個功能是飛行跟隨,即在手機屏幕上選點跟隨飛行的目標,無人機可以跟隨他/它飛行,此時時候就利用芯片強大的深度學習能力,對感興趣的區域進行識別。
還有一個功能是測距,通過 MA2155 這塊深度學習芯片來完成視覺測距的功能,飛機前后障礙物的距離通過圖象識別的方式識別出來。
另一個功能是雙目避障,這是觀測傾斜度 70 度是否有障礙物,通過發射端發射出去的光反射回來在接收端接受。
超聲波可檢測下方障礙物以及檢測地面。
無線通信系統架構
無線通訊,是無人機里面最核心的一塊功能,也是最復雜的一塊功能,涉及到控制系統和圖象傳輸。基本原理就是前端的收發器收到信號,通過基帶系統進行解碼,解碼后通過搖控器的 LPC1549 芯片處理進而通過 Cypress 的 USB 芯片反饋到手機上。
無線通訊是通過 OFDM 方式進行圖傳以及數控的傳輸,其特點是控制通道數據通過遙控器通過 1Mhz 帶寬的跳頻發送,飛機回傳的圖象和控制通道回傳數據通過 10Mhz 帶寬進行定頻傳輸。
為了保證數控通道及時性,采取定時跳頻的方式。因為有可能信號會被干擾,在某一個特定頻點時會被干擾,如果被干擾的話,飛機可能收不到遙控器的一些數據,此時我們需要切換不同的頻點,找信噪比高的地方,保證它的可靠性。
它在 FCCID 通信管理局申請的 5G 頻段的頻寬執照在 5727-5821Mhz,但實際上,其操作已超過通訊管理局規定的頻段。在我們研究過程中發現濫用這個頻段的資源已達 5845Mhz。遙控器與飛機如何進行識別,需要配對及連接過程。
配對的唯一信息來自遙控器,所有信息都是遙控發給無人機,配對成功后可以在操作過程中識別到哪個是我控制的無人機,且這些控制配對信息皆通過搖控器芯片 LPC1549 的序列號生成。
基本上無線通訊架構的過程,首先是搖控器先初始化芯片,然后初始化基站系統各個寄存器,寄存器里存入了唯一可以配對碼的信息。這個配對碼有五個字節,寫入到寄存器里面,真正用到只有三個字節,所以就有可能無線期劫持無人機。
無線通訊傳輸的過程其實是非對稱傳輸,無人機遙控器發的信息跳頻傳輸給飛機,接收端也是跳頻接收,但是圖傳和下行通道是由飛機以定頻的方式發送,且這些跳頻算法都是通過代碼來實現的。
下圖即遙控器用于檢測飛機是否配對的算法檢測基帶芯片 SPI 地址 0xE4、0xE5、0xE6進行比較。所以劫持一臺無人機,我們可以通過暴力破解的方式,用所有的密鑰空間進行離線的破解,找到配對碼,去控制無人機,在控中時候就可以動態改掉配對碼,讓這個無人機屬于你。
無人機反調對抗技術
我們也發現了一些硬件的反調技術和軟件的反調技術,比如說用 atmel 芯片的安全位置1,可以阻止外置硬件仿真器的掛載調試,遙控器的 LPC1549 通過 ADC 的粒度檢測來檢測調試器,LightBridge 用的 stm32F103 芯片通過 remap SWD?IO 來使用 swd 調試接口失效,通過遙控器的硬件開關電路來阻止 LPC1549 芯片硬件仿真調試。
最后還有很多工作還沒有來得及做,未來我們會更加深入的研究各個硬件模塊的功能 hacking 以及進行一些想法的驗證工作。
雷鋒網原創。
。
